33 #include <QRegExpValidator>
36 #include "../../../../../../third-party/qt/propertybrowser/qtvariantproperty.h"
37 #include "../../../../../../third-party/qt/propertybrowser/qteditorfactory.h"
46 m_variantPropertyEditorManager(0),
48 m_hasGridWindows(false)
57 delete m_propertyEditor;
61 if(m_variantPropertyEditorManager)
63 delete m_variantPropertyEditorManager;
64 m_variantPropertyEditorManager = 0;
69 delete m_strDlgManager;
77 m_propertyEditor =
new QtTreePropertyBrowser;
79 m_variantPropertyEditorManager =
new QtVariantPropertyManager;
80 connect(m_variantPropertyEditorManager, SIGNAL(valueChanged(QtProperty*,
const QVariant &)),
81 this, SLOT(propertyEditorValueChanged(QtProperty *,
const QVariant &)));
83 m_strDlgManager =
new QtStringPropertyManager();
85 QtVariantEditorFactory* variantPropertyEditorFactory =
new QtVariantEditorFactory;
87 QtDlgEditorFactory* dlgFactory =
new QtDlgEditorFactory();
89 connect(dlgFactory, SIGNAL(internalDlg(QWidget *, QtProperty *)),
this, SLOT(onSetDlg(QWidget *, QtProperty *)));
91 m_propertyEditor->setFactoryForManager(m_strDlgManager, dlgFactory);
92 m_propertyEditor->setFactoryForManager(m_variantPropertyEditorManager, variantPropertyEditorFactory);
93 m_propertyEditor->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
94 m_propertyEditor->setResizeMode(QtTreePropertyBrowser::ResizeToContents);
99 QList<QtBrowserItem *> list = m_propertyEditor->items(property);
100 changePropertyValue(property, list);
102 Property prop = getProperty(property->propertyName().toStdString());
103 changePropertyValue(prop);
108 QList<QtBrowserItem *> list = m_propertyEditor->topLevelItems();
109 QListIterator<QtBrowserItem *> it(list);
110 while (it.hasNext()) {
111 QtBrowserItem *item = it.next();
112 QtProperty *prop = item->property();
113 m_idToExpanded[m_propertyToId[prop]] = m_propertyEditor->isExpanded(item);
121 QMap<QtProperty *, QString>::ConstIterator itProp = m_propertyToId.constBegin();
122 while (itProp != m_propertyToId.constEnd()) {
126 m_propertyToId.clear();
127 m_idToProperty.clear();
132 m_propertyToId[property] = id;
133 m_idToProperty[id] = property;
134 QtBrowserItem *item = m_propertyEditor->addProperty(property);
135 if (m_idToExpanded.contains(
id))
136 m_propertyEditor->setExpanded(item, m_idToExpanded[
id]);
142 QString search_text = filter;
143 bool doesContain =
false;
144 search_text.replace(
" ",
"|");
145 rx.setPattern(search_text);
146 rx.setCaseSensitivity(Qt::CaseInsensitive);
148 QList<QtProperty*> list = m_propertyEditor->properties();
149 foreach( QtProperty* prop, list)
154 doesContain = prop->propertyName().contains(rx);
155 changeVisibility(m_propertyEditor->items(prop), doesContain);
162 foreach(QtBrowserItem* item, items)
166 m_propertyEditor->setItemVisible(item, visible);
173 return m_propertyEditor;
178 return m_variantPropertyEditorManager;
183 QtVariantProperty* vproperty = 0;
197 vproperty = m_variantPropertyEditorManager->addProperty(QtVariantPropertyManager::enumTypeId(), tr(property.
getName().c_str()));
198 addAttribute(vproperty, property);
206 vproperty = m_variantPropertyEditorManager->addProperty(QVariant::Int, tr(property.
getName().c_str()));
210 vproperty = m_variantPropertyEditorManager->addProperty(QVariant::Bool, tr(property.
getName().c_str()));
214 vproperty = m_variantPropertyEditorManager->addProperty(QVariant::Color, tr(property.
getName().c_str()));
215 color =
property.getValue().toColor();
216 qcolor.setRed(color.
getRed());
218 qcolor.setBlue(color.
getBlue());
219 vproperty->setValue(qcolor);
227 addPropertyItem(vproperty, QLatin1String(property.
getName().c_str()));
235 std::vector<Variant> vrt =
property.getOptionChoices();
239 strList.push_back(v.
toString().c_str());
244 vproperty->setAttribute(
"enumNames", strList);
257 QVariant variant = findPropertyValue(name);
258 QtProperty*
property = findProperty(name);
261 QtVariantProperty* vproperty = 0;
264 vproperty =
dynamic_cast<QtVariantProperty*
>(property);
276 prop.
setValue(variant.toString().toStdString(), type);
280 prop.
setValue(variant.toString().toStdString(), type);
283 list = variant.toStringList();
284 value = list.value(vproperty->value().toInt()).toStdString();
286 foreach(QString s, list)
291 if(value.compare(s.toStdString()) == 0)
299 prop.
setValue(variant.toDouble(), type);
302 prop.
setValue(variant.toInt(), type);
305 prop.
setValue(variant.toBool(), type);
308 prop.
setValue(variant.toString().toStdString(), type);
311 qcolor = variant.value<QColor>();
314 color.
setColor(qcolor.red(), qcolor.green(), qcolor.blue(), 255);
327 QtVariantProperty* vproperty = 0;
328 QtProperty* prop = m_idToProperty[name.c_str()];
332 vproperty =
dynamic_cast<QtVariantProperty*
>(prop);
335 variant = checkComplexType(vproperty);
339 variant.setValue(prop->valueText());
348 QtProperty* prop = m_idToProperty[name.c_str()];
359 variant =
property->value();
361 if(QtVariantPropertyManager::enumTypeId() == property->propertyType())
363 variant =
property->attributeValue(
"enumNames");
364 QStringList list = variant.toStringList();
366 variant = QVariant(list);
376 QList<QtProperty*> props = m_propertyEditor->properties();
377 foreach( QtProperty* prop, props)
379 Property property = getProperty(prop->propertyName().toStdString());
390 QtVariantProperty* vproperty = 0;
400 if(name.compare(
"") != 0)
402 QVariant variant = m_strDlgManager->property(name.c_str());
403 if(!variant.isNull())
405 if(name.compare(m_propGridSettingsName) == 0)
413 case QVariant::StringList:
414 vproperty =
dynamic_cast<QtVariantProperty*
>(m_idToProperty[name.c_str()]);
417 if(QtVariantPropertyManager::enumTypeId() == vproperty->propertyType())
434 case QVariant::Color:
446 QVariant::Type type = QVariant::Invalid;
453 type = QVariant::Int;
459 type = QVariant::Int;
462 type = QVariant::Bool;
468 type = QVariant::Color;
471 type = QVariant::Invalid;
479 return m_propGridSettingsName;
484 m_hasGridWindows = hasWindows;
485 blockOpenGridWindows(!hasWindows);
virtual void addAttribute(QtVariantProperty *vproperty, Property property)
virtual QVariant::Type getVariantType(LayoutPropertyDataType dataType)
SimpleData< std::string, STRING_TYPE > String
virtual std::string getPropGridSettingsName()
virtual bool addProperty(Property property)
virtual LayoutPropertyDataType getLayoutType(QVariant::Type type, std::string name="")
void setColor(const std::string &hexColor)
It sets the color using a two hexadecimal RGB-encoded color.
int getRed() const
It returns the red component color value (a value from 0 to 255).
void addOption(Variant variant)
virtual QVariant findPropertyValue(std::string name)
QtTreePropertyBrowser * getPropertyEditor()
QtVariantPropertyManager * getVariantPropertyManager()
virtual void blockOpenGridWindows(bool block)
int getBlue() const
It returns the blue component color value (a value from 0 to 255).
int getGreen() const
It returns the green component color value (a value from 0 to 255).
virtual QtProperty * findProperty(std::string name)
void onChangeFilter(const QString &filter)
virtual void updateExpandState()
virtual Properties * getProperties()
void setValue(typename ValueType value, LayoutPropertyDataType type)
void setValue(typename ValueType value, LayoutPropertyDataType type)
virtual void createManager()
virtual bool removeProperty(Property property)
virtual bool addProperty(Property property)
SimpleData< double, DOUBLE_TYPE > Double
A helper class for 32-bit RGBA (Red-Green-Blue-Alpha channel) color.
virtual void changeVisibility(QList< QtBrowserItem * > items, bool visible)
virtual QVariant checkComplexType(QtVariantProperty *property)
virtual void addPropertyItem(QtProperty *property, const QString &id)
virtual Property getProperty(std::string name)
LayoutPropertyDataType getType()
PropertyBrowser(QObject *parent=0)
virtual void setHasGridWindows(bool hasWindows=false)
void propertyEditorValueChanged(QtProperty *property, const QVariant &value)
virtual ~PropertyBrowser()
void setName(std::string name)
LayoutPropertyDataType
Enum LayoutPropertyDataType.
void setOptionChoice(Variant variant)