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)