30 #include "../../../core/property/Properties.h"
31 #include "../../../core/enum/Enums.h"
35 #include <QRegExpValidator>
43 #include <QtPropertyBrowser/QtVariantPropertyManager>
44 #include <QtPropertyBrowser/QtTreePropertyBrowser>
45 #include <QtPropertyBrowser/qteditorfactory.h>
55 m_variantPropertiesBrowser(0),
56 m_dialogPropertiesBrowser(0),
58 m_changeQtPropertyVariantValue(false)
67 if(m_variantPropertiesBrowser)
69 delete m_variantPropertiesBrowser;
70 m_variantPropertiesBrowser = 0;
73 if(m_dialogPropertiesBrowser)
75 delete m_dialogPropertiesBrowser;
76 m_dialogPropertiesBrowser = 0;
81 delete m_propertyEditor;
89 m_propertyEditor =
new QtTreePropertyBrowser;
93 connect(m_variantPropertiesBrowser->getVariantPropertyManager(), SIGNAL(valueChanged(QtProperty*,
const QVariant &)),
94 this, SLOT(propertyEditorValueChanged(QtProperty *,
const QVariant &)));
98 connect(m_dialogPropertiesBrowser, SIGNAL(changeDlgProperty(
Property)),
this, SLOT(onChangeDlgProperty(
Property)));
100 m_propertyEditor->setFactoryForManager(m_dialogPropertiesBrowser->getStringPropertyManager(), m_dialogPropertiesBrowser->getDlgEditorFactory());
101 m_propertyEditor->setFactoryForManager(m_variantPropertiesBrowser->getVariantPropertyManager(), m_variantPropertiesBrowser->getVariantEditorFactory());
102 m_propertyEditor->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
103 m_propertyEditor->setResizeMode(QtTreePropertyBrowser::ResizeToContents);
108 if(m_changeQtPropertyVariantValue)
113 QList<QtBrowserItem *> list = m_propertyEditor->items(property);
114 changePropertyValue(property, list);
116 Property prop = m_variantPropertiesBrowser->getProperty(property->propertyName().toStdString());
120 prop = m_dialogPropertiesBrowser->getProperty(property->propertyName().toStdString());
123 changePropertyValue(prop);
128 if(m_changeQtPropertyVariantValue)
132 changePropertyValue(property);
137 QList<QtBrowserItem *> list = m_propertyEditor->topLevelItems();
138 QListIterator<QtBrowserItem *> it(list);
139 while (it.hasNext()) {
140 QtBrowserItem *item = it.next();
141 QtProperty *prop = item->property();
142 m_idToExpanded[m_propertyToId[prop]] = m_propertyEditor->isExpanded(item);
148 m_dialogPropertiesBrowser->getDlgProps().clear();
152 QMap<QtProperty *, QString>::ConstIterator itProp = m_propertyToId.constBegin();
153 while (itProp != m_propertyToId.constEnd()) {
158 m_propertyToId.clear();
159 m_idToProperty.clear();
161 m_variantPropertiesBrowser->clearAll();
162 m_dialogPropertiesBrowser->clearAll();
167 m_propertyToId[property] = id;
168 m_idToProperty[id] = property;
169 QtBrowserItem *item = m_propertyEditor->addProperty(property);
170 if (m_idToExpanded.contains(
id))
171 m_propertyEditor->setExpanded(item, m_idToExpanded[
id]);
177 QString search_text = filter;
178 bool doesContain =
false;
179 search_text.replace(
" ",
"|");
180 rx.setPattern(search_text);
181 rx.setCaseSensitivity(Qt::CaseInsensitive);
183 QList<QtProperty*> list = m_propertyEditor->properties();
184 foreach( QtProperty* prop, list)
189 doesContain = prop->propertyName().contains(rx);
190 changeVisibility(m_propertyEditor->items(prop), doesContain);
197 foreach(QtBrowserItem* item, items)
201 m_propertyEditor->setItemVisible(item, visible);
208 return m_propertyEditor;
225 m_changeQtPropertyVariantValue =
true;
227 QtVariantProperty* vproperty = 0;
228 vproperty = m_variantPropertiesBrowser->addProperty(property);
231 bool is_readOnly = !
property.isEditable();
232 vproperty->setAttribute(QLatin1String(
"readOnly"), is_readOnly);
233 addPropertyItem(vproperty, QLatin1String(property.
getName().c_str()));
237 QtProperty* pproperty = 0;
238 pproperty = m_dialogPropertiesBrowser->addProperty(property);
241 addPropertyItem(pproperty, QLatin1String(property.
getName().c_str()));
248 m_changeQtPropertyVariantValue =
false;
254 QtProperty* removeProp = 0;
255 QList<QtProperty*> list = m_propertyEditor->properties();
256 foreach( QtProperty* prop, list)
258 if(property.
getName().compare(prop->propertyName().toStdString()) == 0)
267 m_propertyToId.remove(removeProp);
268 m_idToProperty.remove(removeProp->propertyName());
270 m_variantPropertiesBrowser->removeProperty(removeProp);
271 m_dialogPropertiesBrowser->removeProperty(removeProp);
273 m_propertyEditor->removeProperty(removeProp);
286 m_hasWindows = hasWindows;
287 blockOpenWindows(!hasWindows);
297 QList<QtProperty*> props = m_propertyEditor->properties();
298 foreach( QtProperty* prop, props)
302 if(name.compare(prop->propertyName().toStdString()) == 0)
304 QList<QtBrowserItem *> list = m_propertyEditor->items(prop);
305 QtBrowserItem* item = list.first();
308 m_propertyEditor->setCurrentItem(item);
317 m_changeQtPropertyVariantValue =
true;
319 bool result = m_variantPropertiesBrowser->updateProperty(property);
321 m_changeQtPropertyVariantValue =
false;
330 updateProperty(prop);
336 return m_variantPropertiesBrowser;
341 return m_dialogPropertiesBrowser;
346 m_dialogPropertiesBrowser->closeAllWindows();
353 QList<QtProperty*> props = m_propertyEditor->properties();
354 foreach( QtProperty* prop, props)
356 Property property = m_variantPropertiesBrowser->getProperty(prop->propertyName().toStdString());
358 if(property.isNull())
360 property = m_dialogPropertiesBrowser->getProperty(prop->propertyName().toStdString());
371 QtProperty* prop = 0;
373 prop = m_variantPropertiesBrowser->findProperty(name);
376 prop = m_dialogPropertiesBrowser->findProperty(name);
388 m_propertyEditor->removeProperty(subProp);
389 prop->addSubProperty(subProp);
400 QtProperty* addProp = addProperty(prop);
401 QtProperty* addSubProp = addProperty(subProp);
403 return addSubProperty(addProp, addSubProp);
std::string getName()
Method that returns the name of this property.
virtual bool addProperty(Property property)
Adds the specified property to the set of properties for this object.
virtual EnumDataType * getEnumDataType()
Returns data type enumeration.
Manage properties variants values.
virtual void selectProperty(std::string name)
QtTreePropertyBrowser * getPropertyEditor()
bool isNull()
Returns true if no value has been set, false otherwise.
The Properties class represents a persistent set of properties. The Properties can be saved to a file...
virtual std::vector< Property > getProperties()
Returns set of all properties.
virtual QtProperty * findProperty(std::string name)
VariantPropertiesBrowser * getVariantPropertiesBrowser()
Manage properties dialogs values.
virtual void setHasWindows(bool hasWindows=false)
void onChangeFilter(const QString &filter)
virtual void updateExpandState()
virtual Properties * getProperties()
virtual void createManager()
virtual void closeAllWindows()
static Enums & getInstance()
It returns a reference to the singleton instance.
Class to represent a data type enumeration. Ex.: int, double, bool, te::color::RGBAColor (color)...
virtual bool removeProperty(Property property)
virtual bool addSubProperty(QtProperty *prop, QtProperty *subProp)
virtual bool updateProperty(Property property)
Manage properties dialogs values.
Manage properties variants values.
A helper class for 32-bit RGBA (Red-Green-Blue-Alpha channel) color.
virtual void changeVisibility(QList< QtBrowserItem * > items, bool visible)
virtual void addPropertyItem(QtProperty *property, const QString &id)
virtual void blockOpenWindows(bool block)
virtual void updateProperties(Properties *props)
PropertyBrowser(QObject *parent=0)
void propertyEditorValueChanged(QtProperty *property, const QVariant &value)
virtual ~PropertyBrowser()
virtual void onChangeDlgProperty(Property property)
A property acts like a attribute member of a object and stores the state of this attribute. A set of properties stores the state of an object. Any data type, not included in the convertValue method in the class te::layout::Variant, it will be by default "std::string" value.
DialogPropertiesBrowser * getDialogPropertiesBrowser()
virtual QtProperty * addProperty(Property property)