void InstrumentWidgetMaskTab::setProperties() { clearProperties(); m_userEditing = false; // bounding rect property QtProperty *boundingRectGroup = m_groupManager->addProperty("Bounding Rect"); m_browser->addProperty(boundingRectGroup); m_left = addDoubleProperty("left"); m_top = addDoubleProperty("top"); m_right = addDoubleProperty("right"); m_bottom = addDoubleProperty("bottom"); boundingRectGroup->addSubProperty(m_left); boundingRectGroup->addSubProperty(m_top); boundingRectGroup->addSubProperty(m_right); boundingRectGroup->addSubProperty(m_bottom); // point properties QStringList pointProperties = m_instrWidget->getSurface()->getCurrentPointNames(); foreach (QString name, pointProperties) { QtProperty *point = m_groupManager->addProperty(name); QtProperty *prop_x = addDoubleProperty("x"); QtProperty *prop_y = addDoubleProperty("y"); point->addSubProperty(prop_x); point->addSubProperty(prop_y); m_browser->addProperty(point); m_pointComponentsMap[prop_x] = name; m_pointComponentsMap[prop_y] = name; m_pointPropertyMap[name] = point; }
QtProperty *CrossCommonPropertyGroup::extrackViewProperty(QtVariantPropertyManager *manager, QHash<QString, QtVariantProperty *> &propertyTable) { QtProperty *parameters; QtVariantProperty *item; parameters = manager->addProperty(QtVariantPropertyManager::groupTypeId(), QString(QObject::tr("外观属性"))); item = manager->addProperty(QVariant::Color, QString(QObject::tr("背景颜色"))); item->setValue(QColor(0, 0, 0, 255)); parameters->addSubProperty(item); propertyTable.insert("/map_key/view/backgroud_color", item); item = manager->addProperty(QVariant::Color, QString(QObject::tr("边框颜色"))); item->setValue(QColor(0, 0, 0, 255)); parameters->addSubProperty(item); propertyTable.insert("/map_key/view/border_color", item); item = manager->addProperty(QVariant::Double, QString(QObject::tr("边框宽度"))); item->setValue(1); parameters->addSubProperty(item); propertyTable.insert("/map_key/view/border_line_width", item); return parameters; }
QtProperty *CrossCommonPropertyGroup::extrackCategoryAxisProperty(QtVariantPropertyManager *manager, QHash<QString, QtVariantProperty *> &propertyTable) { QtProperty *parameters; QtVariantProperty *item; parameters = manager->addProperty(QtVariantPropertyManager::groupTypeId(), QString(QObject::tr("类型轴属性"))); item = manager->addProperty(QVariant::String, QString(QObject::tr("名称"))); item->setValue(QObject::tr("类型轴")); parameters->addSubProperty(item); propertyTable.insert("/map_key/category_axis/name", item); item = manager->addProperty(QVariant::Color, QString(QObject::tr("颜色"))); item->setValue(QColor(0, 0, 0, 255)); parameters->addSubProperty(item); propertyTable.insert("/map_key/category_axis/color", item); item = manager->addProperty(QVariant::Bool, QString(QObject::tr("标签可见"))); item->setValue(true); parameters->addSubProperty(item); propertyTable.insert("/map_key/category_axis/label_is_visible", item); return parameters; }
/** Utility function for creating and inserting layer properties @param layer Spacescape layer @param insertAfter Property to insert after @param minimize Minimize this layer @return The created / inserted property */ QtProperty* QtSpacescapeMainWindow::insertLayerProperties(Ogre::SpacescapeLayer* layer, QtProperty *insertAfter, bool minimize) { // turn refreshing flag on so we don't process valueChanged events mRefreshing = true; // get layer params Ogre::NameValuePairList params = layer->getParams(); // create the layer properties object QtProperty *layerProperties = mPropertyManager->addProperty( QtVariantPropertyManager::groupTypeId(), QLatin1String(layer->getName().c_str()) ); // insert it into the property tree early so we can minize items inside ui->layerProperties->insertProperty(layerProperties, insertAfter); // minimize the layer - speeds things up! if(minimize) { ui->layerProperties->setExpanded(ui->layerProperties->topLevelItem(layerProperties), false); } // add the common layer params to the subproperties first layerProperties->addSubProperty(createProperty( "name", layer->getName())); layerProperties->addSubProperty(createProperty( "type", layer->getLayerTypeName())); layerProperties->addSubProperty(createProperty( "visible", "true")); layerProperties->addSubProperty(createProperty( "seed", params["seed"])); // now add all the remaining layer params to the subproperties Ogre::NameValuePairList::iterator pl; for(pl = params.begin(); pl != params.end(); pl++) { // skip common params that come first if(pl->first == "name" || pl->first == "type" || pl->first == "visible" || pl->first == "seed") { continue; } // create the sub property QtVariantProperty* subProperty = createProperty(pl->first, pl->second); if(!subProperty) { continue; } // add this sub property parameter layerProperties->addSubProperty(subProperty); // special auto hide for color types if(getPropertyType(pl->first) == QVariant::Color) { QList<QtBrowserItem *> bi = ui->layerProperties->items(subProperty); ui->layerProperties->setExpanded(bi.first(),false); } } // done adding properties mRefreshing = false; return layerProperties; }
QtProperty *IqtFit::createExponential(const QString &name) { QtProperty *expGroup = m_grpManager->addProperty(name); m_properties[name + ".Intensity"] = m_dblManager->addProperty("Intensity"); m_dblManager->setDecimals(m_properties[name + ".Intensity"], NUM_DECIMALS); m_properties[name + ".Tau"] = m_dblManager->addProperty("Tau"); m_dblManager->setDecimals(m_properties[name + ".Tau"], NUM_DECIMALS); expGroup->addSubProperty(m_properties[name + ".Intensity"]); expGroup->addSubProperty(m_properties[name + ".Tau"]); return expGroup; }
QtProperty *CrossCommonPropertyGroup::extrackValueAxisProperty(QtVariantPropertyManager *manager, QHash<QString, QtVariantProperty *> &propertyTable) { QtProperty *parameters; QtVariantProperty *item; parameters = manager->addProperty(QtVariantPropertyManager::groupTypeId(), QString(QObject::tr("数值轴属性"))); item = manager->addProperty(QVariant::String, QString(QObject::tr("名称(单位)"))); item->setValue(QObject::tr("数值轴")); parameters->addSubProperty(item); propertyTable.insert("/map_key/value_axis/name", item); item = manager->addProperty(QVariant::Color, QString(QObject::tr("颜色"))); item->setValue(QColor(0, 0, 0, 255)); parameters->addSubProperty(item); propertyTable.insert("/map_key/value_axis/color", item); item = manager->addProperty(QVariant::Double, QString(QObject::tr("起始值"))); item->setValue(0); parameters->addSubProperty(item); propertyTable.insert("/map_key/value_axis/lower", item); item = manager->addProperty(QVariant::Double, QString(QObject::tr("结束值"))); item->setValue(100); parameters->addSubProperty(item); propertyTable.insert("/map_key/value_axis/upper", item); item = manager->addProperty(QVariant::Double, QString(QObject::tr("主刻度间隔"))); item->setValue(10); parameters->addSubProperty(item); propertyTable.insert("/map_key/value_axis/major_tick_size", item); item = manager->addProperty(QVariant::Int, QString(QObject::tr("副刻度数量"))); item->setValue(5); parameters->addSubProperty(item); propertyTable.insert("/map_key/value_axis/minor_tick_count", item); item = manager->addProperty(QVariant::Bool, QString(QObject::tr("主刻度可见"))); item->setValue(true); parameters->addSubProperty(item); propertyTable.insert("/map_key/value_axis/major_tick_is_visible", item); item = manager->addProperty(QVariant::Bool, QString(QObject::tr("副刻度可见"))); item->setValue(true); parameters->addSubProperty(item); propertyTable.insert("/map_key/value_axis/minor_tick_is_visible", item); item = manager->addProperty(QVariant::Bool, QString(QObject::tr("标签可见"))); item->setValue(true); parameters->addSubProperty(item); propertyTable.insert("/map_key/value_axis/label_is_visible", item); return parameters; }
QtProperty *IqtFit::createStretchedExp(const QString &name) { QtProperty *prop = m_grpManager->addProperty(name); m_properties[name + ".Intensity"] = m_dblManager->addProperty("Intensity"); m_properties[name + ".Tau"] = m_dblManager->addProperty("Tau"); m_properties[name + ".Beta"] = m_dblManager->addProperty("Beta"); m_dblManager->setRange(m_properties[name + ".Beta"], 0, 1); m_dblManager->setDecimals(m_properties[name + ".Intensity"], NUM_DECIMALS); m_dblManager->setDecimals(m_properties[name + ".Tau"], NUM_DECIMALS); m_dblManager->setDecimals(m_properties[name + ".Beta"], NUM_DECIMALS); prop->addSubProperty(m_properties[name + ".Intensity"]); prop->addSubProperty(m_properties[name + ".Tau"]); prop->addSubProperty(m_properties[name + ".Beta"]); return prop; }
QtProperty *CrossCommonPropertyGroup::extrackGridProperty(QtVariantPropertyManager *manager, QHash<QString, QtVariantProperty *> &propertyTable) { QtProperty *parameters; QtVariantProperty *item; parameters = manager->addProperty(QtVariantPropertyManager::groupTypeId(), QString(QObject::tr("网格属性"))); item = manager->addProperty(QVariant::Color, QString(QObject::tr("颜色"))); item->setValue(QColor(0, 0, 0, 255)); parameters->addSubProperty(item); propertyTable.insert("/map_key/grid/color", item); item = manager->addProperty(QVariant::Double, QString(QObject::tr("粗细"))); item->setValue(1); parameters->addSubProperty(item); propertyTable.insert("/map_key/grid/line_width", item); return parameters; }
void IqtFit::fixItem() { QtBrowserItem *item = m_ffTree->currentItem(); // Determine what the property is. QtProperty *prop = item->property(); QtProperty *fixedProp = m_stringManager->addProperty(prop->propertyName()); QtProperty *fprlbl = m_stringManager->addProperty("Fixed"); fixedProp->addSubProperty(fprlbl); m_stringManager->setValue(fixedProp, prop->valueText()); item->parent()->property()->addSubProperty(fixedProp); m_fixedProps[fixedProp] = prop; item->parent()->property()->removeSubProperty(prop); }
QtProperty *CrossCommonPropertyGroup::extrackBaseProperty(QtVariantPropertyManager *manager, QHash<QString, QtVariantProperty *> &propertyTable) { QtProperty *parameters; QtVariantProperty *item; parameters = manager->addProperty(QtVariantPropertyManager::groupTypeId(), QString(QObject::tr("基本属性"))); #ifdef QT_DEBUG item = manager->addProperty(QVariant::Int, QString(QObject::tr("id(发布版本无此项)"))); item->setValue("0"); item->setEnabled(false); parameters->addSubProperty(item); propertyTable.insert("/map_key/base/id", item); #endif item = manager->addProperty(QVariant::String, QString(QObject::tr("图名"))); item->setValue(QObject::tr("交会图")); parameters->addSubProperty(item); propertyTable.insert("/map_key/base/title", item); item = manager->addProperty(QVariant::Double, QString(QObject::tr("宽度"))); item->setValue(400); item->setAttribute(QLatin1String("minimum"), 0); parameters->addSubProperty(item); propertyTable.insert("/map_key/base/width", item); item = manager->addProperty(QVariant::Double, QString(QObject::tr("高度"))); item->setValue(300); item->setAttribute(QLatin1String("minimum"), 0); parameters->addSubProperty(item); propertyTable.insert("/map_key/base/height", item); item = manager->addProperty(QVariant::Double, QString(QObject::tr("x"))); item->setValue(0); item->setAttribute(QLatin1String("minimum"), 0); parameters->addSubProperty(item); propertyTable.insert("/map_key/base/x", item); item = manager->addProperty(QVariant::Double, QString(QObject::tr("y"))); item->setValue(0); item->setAttribute(QLatin1String("minimum"), 0); parameters->addSubProperty(item); propertyTable.insert("/map_key/base/y", item); return parameters; }
int main(int argc, char **argv) { QApplication app(argc, argv); QtVariantPropertyManager *variantManager = new QtVariantPropertyManager(); int i = 0; QtProperty *topItem = variantManager->addProperty(QtVariantPropertyManager::groupTypeId(), QString::number(i++) + QLatin1String(" Group Property")); QtVariantProperty *item = variantManager->addProperty(QVariant::Bool, QString::number(i++) + QLatin1String(" Bool Property")); item->setValue(true); topItem->addSubProperty(item); item = variantManager->addProperty(QVariant::Int, QString::number(i++) + QLatin1String(" Int Property")); item->setValue(20); item->setAttribute(QLatin1String("minimum"), 0); item->setAttribute(QLatin1String("maximum"), 100); item->setAttribute(QLatin1String("singleStep"), 10); topItem->addSubProperty(item); item = variantManager->addProperty(QVariant::Double, QString::number(i++) + QLatin1String(" Double Property")); item->setValue(1.2345); item->setAttribute(QLatin1String("singleStep"), 0.1); item->setAttribute(QLatin1String("decimals"), 3); topItem->addSubProperty(item); item = variantManager->addProperty(QVariant::String, QString::number(i++) + QLatin1String(" String Property")); item->setValue("Value"); topItem->addSubProperty(item); item = variantManager->addProperty(QVariant::Date, QString::number(i++) + QLatin1String(" Date Property")); item->setValue(QDate::currentDate().addDays(2)); topItem->addSubProperty(item); item = variantManager->addProperty(QVariant::Time, QString::number(i++) + QLatin1String(" Time Property")); item->setValue(QTime::currentTime()); topItem->addSubProperty(item); item = variantManager->addProperty(QVariant::DateTime, QString::number(i++) + QLatin1String(" DateTime Property")); item->setValue(QDateTime::currentDateTime()); topItem->addSubProperty(item); item = variantManager->addProperty(QVariant::KeySequence, QString::number(i++) + QLatin1String(" KeySequence Property")); item->setValue(QKeySequence(Qt::ControlModifier | Qt::Key_Q)); topItem->addSubProperty(item); item = variantManager->addProperty(QVariant::Char, QString::number(i++) + QLatin1String(" Char Property")); item->setValue(QChar(386)); topItem->addSubProperty(item); item = variantManager->addProperty(QVariant::Locale, QString::number(i++) + QLatin1String(" Locale Property")); item->setValue(QLocale(QLocale::Polish, QLocale::Poland)); topItem->addSubProperty(item); item = variantManager->addProperty(QVariant::Point, QString::number(i++) + QLatin1String(" Point Property")); item->setValue(QPoint(10, 10)); topItem->addSubProperty(item); item = variantManager->addProperty(QVariant::PointF, QString::number(i++) + QLatin1String(" PointF Property")); item->setValue(QPointF(1.2345, -1.23451)); item->setAttribute(QLatin1String("decimals"), 3); topItem->addSubProperty(item); item = variantManager->addProperty(QVariant::Size, QString::number(i++) + QLatin1String(" Size Property")); item->setValue(QSize(20, 20)); item->setAttribute(QLatin1String("minimum"), QSize(10, 10)); item->setAttribute(QLatin1String("maximum"), QSize(30, 30)); topItem->addSubProperty(item); item = variantManager->addProperty(QVariant::SizeF, QString::number(i++) + QLatin1String(" SizeF Property")); item->setValue(QSizeF(1.2345, 1.2345)); item->setAttribute(QLatin1String("decimals"), 3); item->setAttribute(QLatin1String("minimum"), QSizeF(0.12, 0.34)); item->setAttribute(QLatin1String("maximum"), QSizeF(20.56, 20.78)); topItem->addSubProperty(item); item = variantManager->addProperty(QVariant::Rect, QString::number(i++) + QLatin1String(" Rect Property")); item->setValue(QRect(10, 10, 20, 20)); topItem->addSubProperty(item); item->setAttribute(QLatin1String("constraint"), QRect(0, 0, 50, 50)); item = variantManager->addProperty(QVariant::RectF, QString::number(i++) + QLatin1String(" RectF Property")); item->setValue(QRectF(1.2345, 1.2345, 1.2345, 1.2345)); topItem->addSubProperty(item); item->setAttribute(QLatin1String("constraint"), QRectF(0, 0, 50, 50)); item->setAttribute(QLatin1String("decimals"), 3); item = variantManager->addProperty(QtVariantPropertyManager::enumTypeId(), QString::number(i++) + QLatin1String(" Enum Property")); QStringList enumNames; enumNames << "Enum0" << "Enum1" << "Enum2"; item->setAttribute(QLatin1String("enumNames"), enumNames); item->setValue(1); topItem->addSubProperty(item); item = variantManager->addProperty(QtVariantPropertyManager::flagTypeId(), QString::number(i++) + QLatin1String(" Flag Property")); QStringList flagNames; flagNames << "Flag0" << "Flag1" << "Flag2"; item->setAttribute(QLatin1String("flagNames"), flagNames); item->setValue(5); topItem->addSubProperty(item); item = variantManager->addProperty(QVariant::SizePolicy, QString::number(i++) + QLatin1String(" SizePolicy Property")); topItem->addSubProperty(item); item = variantManager->addProperty(QVariant::Font, QString::number(i++) + QLatin1String(" Font Property")); topItem->addSubProperty(item); item = variantManager->addProperty(QVariant::Cursor, QString::number(i++) + QLatin1String(" Cursor Property")); topItem->addSubProperty(item); item = variantManager->addProperty(QVariant::Color, QString::number(i++) + QLatin1String(" Color Property")); topItem->addSubProperty(item); QtVariantEditorFactory *variantFactory = new QtVariantEditorFactory(); QtTreePropertyBrowser *variantEditor = new QtTreePropertyBrowser(); variantEditor->setFactoryForManager(variantManager, variantFactory); variantEditor->addProperty(topItem); variantEditor->setPropertiesWithoutValueMarked(true); variantEditor->setRootIsDecorated(false); variantEditor->show(); int ret = app.exec(); delete variantManager; delete variantFactory; delete variantEditor; return ret; }
void ObjectControllerPrivate::addClassProperties(const QMetaObject *metaObject) { if (!metaObject) return; addClassProperties(metaObject->superClass()); QtProperty *classProperty = m_classToProperty.value(metaObject); if (!classProperty) { QString className = QLatin1String(metaObject->className()); classProperty = m_manager->addProperty(QtVariantPropertyManager::groupTypeId(), className); m_classToProperty[metaObject] = classProperty; m_propertyToClass[classProperty] = metaObject; for (int idx = metaObject->propertyOffset(); idx < metaObject->propertyCount(); idx++) { QMetaProperty metaProperty = metaObject->property(idx); int type = metaProperty.userType(); QtVariantProperty *subProperty = 0; if (!metaProperty.isReadable()) { subProperty = m_readOnlyManager->addProperty(QVariant::String, QLatin1String(metaProperty.name())); subProperty->setValue(QLatin1String("< Non Readable >")); } else if (metaProperty.isEnumType()) { if (metaProperty.isFlagType()) { subProperty = m_manager->addProperty(QtVariantPropertyManager::flagTypeId(), QLatin1String(metaProperty.name())); QMetaEnum metaEnum = metaProperty.enumerator(); QMap<int, bool> valueMap; QStringList flagNames; for (int i = 0; i < metaEnum.keyCount(); i++) { int value = metaEnum.value(i); if (!valueMap.contains(value) && isPowerOf2(value)) { valueMap[value] = true; flagNames.append(QLatin1String(metaEnum.key(i))); } subProperty->setAttribute(QLatin1String("flagNames"), flagNames); subProperty->setValue(flagToInt(metaEnum, metaProperty.read(m_object).toInt())); } } else { subProperty = m_manager->addProperty(QtVariantPropertyManager::enumTypeId(), QLatin1String(metaProperty.name())); QMetaEnum metaEnum = metaProperty.enumerator(); QMap<int, bool> valueMap; // dont show multiple enum values which have the same values QStringList enumNames; for (int i = 0; i < metaEnum.keyCount(); i++) { int value = metaEnum.value(i); if (!valueMap.contains(value)) { valueMap[value] = true; enumNames.append(QLatin1String(metaEnum.key(i))); } } subProperty->setAttribute(QLatin1String("enumNames"), enumNames); subProperty->setValue(enumToInt(metaEnum, metaProperty.read(m_object).toInt())); } } else if (m_manager->isPropertyTypeSupported(type)) { if (!metaProperty.isWritable()) subProperty = m_readOnlyManager->addProperty(type, QLatin1String(metaProperty.name()) + QLatin1String(" (Non Writable)")); if (!metaProperty.isDesignable()) subProperty = m_readOnlyManager->addProperty(type, QLatin1String(metaProperty.name()) + QLatin1String(" (Non Designable)")); else subProperty = m_manager->addProperty(type, QLatin1String(metaProperty.name())); subProperty->setValue(metaProperty.read(m_object)); } else { subProperty = m_readOnlyManager->addProperty(QVariant::String, QLatin1String(metaProperty.name())); subProperty->setValue(QLatin1String("< Unknown Type >")); subProperty->setEnabled(false); } classProperty->addSubProperty(subProperty); m_propertyToIndex[subProperty] = idx; m_classToIndexToProperty[metaObject][idx] = subProperty; } } else { updateClassProperties(metaObject, false); } m_topLevelProperties.append(classProperty); m_browser->addProperty(classProperty); }
void ObjectControllerPrivate::addClassProperties(const QMetaObject *inmetaObject, bool subGroup) { if (!inmetaObject) return; // Collect a list of all sub classes in the object QList< const QMetaObject *> metaObjectsList; metaObjectsList.clear(); metaObjectsList << inmetaObject; const QMetaObject *tmpObj = inmetaObject->superClass(); metaObjectsList << tmpObj; while (tmpObj) { tmpObj = tmpObj->superClass(); if (tmpObj) metaObjectsList << tmpObj; } const QMetaObject *metaObject; for (int i = 0; i < metaObjectsList.count(); i++) { metaObject = metaObjectsList[i]; QtProperty *classProperty = m_classToProperty.value(metaObject); if (!classProperty) { QString className = QLatin1String(metaObject->className()); // Note: Skip class QObject from the property views if (className == QLatin1String("QObject")) return; // Process Class name into a user friendly view // Strip prefix C_ and process all _ to spaces QString prefix("C_"); // String to replace. QString replaceprefix(""); // Replacement string. className.replace(className.indexOf(prefix), prefix.size(), replaceprefix); className.replace(QString("_"), QString(" ")); classProperty = m_manager->addProperty(QtVariantPropertyManager::groupTypeId(), className); m_classToProperty[metaObject] = classProperty; m_propertyToClass[classProperty] = metaObject; for (int idx = metaObject->propertyOffset(); idx < metaObject->propertyCount(); idx++) { QMetaProperty metaProperty = metaObject->property(idx); int type = metaProperty.userType(); QtVariantProperty *subProperty = 0; // Note: Get the var member name and check if we want it to be writable (Enabled) QString memberVarName = QLatin1String(metaProperty.name()); bool b_SetEnabled = true; // Special case for enabling or disabling editing QString ememberVarName = "e" + QLatin1String(metaProperty.name()); QByteArray array = ememberVarName.toLocal8Bit(); char* buffer = array.data(); QVariant set = m_object->property(buffer); if (set.type() == QVariant::Bool) { b_SetEnabled = (bool &)set; } // qDebug() << "Member Name :" << memberVarName; // Note: process the first char if it contains _ then the var is read only and remove the _ char if (memberVarName.at(0) == "_") { b_SetEnabled = false; memberVarName.remove(0, 1); } // after that replace all occurance of _ with space char for display memberVarName.replace(QString("_"), QString(" ")); if (!metaProperty.isReadable()) { subProperty = m_readOnlyManager->addProperty(QVariant::String, memberVarName); subProperty->setValue(QLatin1String("< Non Readable >")); } else if (metaProperty.isEnumType()) { if (metaProperty.isFlagType()) { subProperty = m_manager->addProperty(QtVariantPropertyManager::flagTypeId(), memberVarName); QMetaEnum metaEnum = metaProperty.enumerator(); QMap<int, bool> valueMap; QStringList flagNames; for (int i = 0; i < metaEnum.keyCount(); i++) { int value = metaEnum.value(i); if (!valueMap.contains(value) && isPowerOf2(value)) { valueMap[value] = true; flagNames.append(QLatin1String(metaEnum.key(i))); } subProperty->setAttribute(QLatin1String("flagNames"), flagNames); subProperty->setValue(flagToInt(metaEnum, metaProperty.read(m_object).toInt())); } } else { subProperty = m_manager->addProperty(QtVariantPropertyManager::enumTypeId(), memberVarName); QMetaEnum metaEnum = metaProperty.enumerator(); QMap<int, bool> valueMap; // dont show multiple enum values which have the same values QStringList enumNames; for (int i = 0; i < metaEnum.keyCount(); i++) { int value = metaEnum.value(i); if (!valueMap.contains(value)) { valueMap[value] = true; enumNames.append(QLatin1String(metaEnum.key(i))); } } subProperty->setAttribute(QLatin1String("enumNames"), enumNames); subProperty->setValue(enumToInt(metaEnum, metaProperty.read(m_object).toInt())); } } else if (m_manager->isPropertyTypeSupported(type)) { if (!metaProperty.isWritable()) subProperty = m_readOnlyManager->addProperty(type, memberVarName + QLatin1String(" (Non Writable)")); if (!metaProperty.isDesignable()) subProperty = m_readOnlyManager->addProperty(type, memberVarName + QLatin1String(" (Non Designable)")); else subProperty = m_manager->addProperty(type, memberVarName); subProperty->setValue(metaProperty.read(m_object)); } else { subProperty = m_readOnlyManager->addProperty(QVariant::String, memberVarName); subProperty->setValue(QLatin1String("< Unknown Type >")); b_SetEnabled = false; } // Notes: QtVariantProperty *priority = variantManager->addProperty(QVariant::Int, "Priority"); if (subProperty) subProperty->setEnabled(b_SetEnabled); m_propertyToIndex[subProperty] = idx; m_classToIndexToProperty[metaObject][idx] = subProperty; if (subGroup) classProperty->addSubProperty(subProperty); else m_browser->addProperty(subProperty); } } else { updateClassProperties(metaObject, false); } m_topLevelProperties.append(classProperty); if (subGroup) m_browser->addProperty(classProperty); } // Loop i }
TextureProperties::TextureProperties(QWidget *parent /* = 0 */) : QtGroupBoxPropertyBrowser(parent)//QtTreePropertyBrowser(parent) , curTexture(NULL) , curTextureDescriptor(NULL) , reactOnPropertyChange(true) , texturePropertiesChanged(false) { // initialize list with string for different comboboxs { helperPVRFormats.push_back("None", DAVA::FORMAT_INVALID); helperPVRFormats.push_back(DAVA::Texture::GetPixelFormatString(DAVA::FORMAT_RGBA8888), DAVA::FORMAT_RGBA8888); helperPVRFormats.push_back(DAVA::Texture::GetPixelFormatString(DAVA::FORMAT_RGBA5551), DAVA::FORMAT_RGBA5551); helperPVRFormats.push_back(DAVA::Texture::GetPixelFormatString(DAVA::FORMAT_RGBA4444), DAVA::FORMAT_RGBA4444); helperPVRFormats.push_back(DAVA::Texture::GetPixelFormatString(DAVA::FORMAT_RGB565), DAVA::FORMAT_RGB565); helperPVRFormats.push_back(DAVA::Texture::GetPixelFormatString(DAVA::FORMAT_A8), DAVA::FORMAT_A8); helperPVRFormats.push_back(DAVA::Texture::GetPixelFormatString(DAVA::FORMAT_PVR4), DAVA::FORMAT_PVR4); helperPVRFormats.push_back(DAVA::Texture::GetPixelFormatString(DAVA::FORMAT_PVR2), DAVA::FORMAT_PVR2); helperPVRFormats.push_back(DAVA::Texture::GetPixelFormatString(DAVA::FORMAT_ETC1), DAVA::FORMAT_ETC1); helperDXTFormats.push_back("None", DAVA::FORMAT_INVALID); helperDXTFormats.push_back(DAVA::Texture::GetPixelFormatString(DAVA::FORMAT_RGBA8888), DAVA::FORMAT_RGBA8888); helperDXTFormats.push_back(DAVA::Texture::GetPixelFormatString(DAVA::FORMAT_DXT1), DAVA::FORMAT_DXT1); helperDXTFormats.push_back(DAVA::Texture::GetPixelFormatString(DAVA::FORMAT_DXT1NM), DAVA::FORMAT_DXT1NM); helperDXTFormats.push_back(DAVA::Texture::GetPixelFormatString(DAVA::FORMAT_DXT1A), DAVA::FORMAT_DXT1A); helperDXTFormats.push_back(DAVA::Texture::GetPixelFormatString(DAVA::FORMAT_DXT3), DAVA::FORMAT_DXT3); helperDXTFormats.push_back(DAVA::Texture::GetPixelFormatString(DAVA::FORMAT_DXT5), DAVA::FORMAT_DXT5); helperDXTFormats.push_back(DAVA::Texture::GetPixelFormatString(DAVA::FORMAT_DXT5NM), DAVA::FORMAT_DXT5NM); helperWrapModes.push_back("Clamp", DAVA::Texture::WRAP_CLAMP_TO_EDGE); helperWrapModes.push_back("Repeat", DAVA::Texture::WRAP_REPEAT); helperMinGLModes.push_back("Nearest", DAVA::Texture::FILTER_NEAREST); helperMinGLModes.push_back("Linear", DAVA::Texture::FILTER_LINEAR); helperMinGLModesWithMipmap.push_back("Nearest", DAVA::Texture::FILTER_NEAREST); helperMinGLModesWithMipmap.push_back("Linear", DAVA::Texture::FILTER_LINEAR); helperMinGLModesWithMipmap.push_back("Nearest, Mipmap Nearest", DAVA::Texture::FILTER_NEAREST_MIPMAP_NEAREST); helperMinGLModesWithMipmap.push_back("Linear, Mipmap Nearest", DAVA::Texture::FILTER_LINEAR_MIPMAP_NEAREST); helperMinGLModesWithMipmap.push_back("Nearest, Mipmap Linear", DAVA::Texture::FILTER_NEAREST_MIPMAP_LINEAR); helperMinGLModesWithMipmap.push_back("Linear, Mipmap Linear", DAVA::Texture::FILTER_LINEAR_MIPMAP_LINEAR); helperMagGLModes.push_back("Nearest", DAVA::Texture::FILTER_NEAREST); helperMagGLModes.push_back("Linear", DAVA::Texture::FILTER_LINEAR); } // parent widget oneForAllParent = new QWidget(); // property managers propertiesGroup = new QtGroupPropertyManager(oneForAllParent); propertiesInt = new QtIntPropertyManager(oneForAllParent); propertiesBool = new QtBoolPropertyManager(oneForAllParent); propertiesEnum = new QtEnumPropertyManager(oneForAllParent); propertiesString = new QtStringPropertyManager(oneForAllParent); // property editors editorInt = new QtSpinBoxFactory(oneForAllParent); editorBool = new QtCheckBoxFactory(oneForAllParent); editorString = new QtLineEditFactory(oneForAllParent); editorEnum = new QtEnumEditorFactory(oneForAllParent); // setup property managers with appropriate property editors setFactoryForManager(propertiesInt, editorInt); setFactoryForManager(propertiesBool, editorBool); setFactoryForManager(propertiesEnum, editorEnum); setFactoryForManager(propertiesString, editorString); // Adding properties // groups QtProperty* groupPVR = propertiesGroup->addProperty("PVR"); QtProperty* groupDXT = propertiesGroup->addProperty("DXT"); QtProperty* groupCommon = propertiesGroup->addProperty("Common"); // PVR group enumPVRFormat = propertiesEnum->addProperty("Format"); propertiesEnum->setEnumNames(enumPVRFormat, helperPVRFormats.keyList()); enumBasePVRMipmapLevel = propertiesEnum->addProperty("Base Mipmap level"); groupPVR->addSubProperty(enumPVRFormat); groupPVR->addSubProperty(enumBasePVRMipmapLevel); addProperty(groupPVR); // DXT group enumDXTFormat = propertiesEnum->addProperty("Format"); propertiesEnum->setEnumNames(enumDXTFormat, helperDXTFormats.keyList()); enumBaseDXTMipmapLevel = propertiesEnum->addProperty("Base Mipmap level"); groupDXT->addSubProperty(enumDXTFormat); groupDXT->addSubProperty(enumBaseDXTMipmapLevel); addProperty(groupDXT); // Common group // Mip maps boolGenerateMipMaps = propertiesBool->addProperty("Generate MipMaps"); groupCommon->addSubProperty(boolGenerateMipMaps); // wrapmode t enumWrapModeS = propertiesEnum->addProperty("Wrap mode S"); propertiesEnum->setEnumNames(enumWrapModeS, helperWrapModes.keyList()); groupCommon->addSubProperty(enumWrapModeS); // wrapmode s enumWrapModeT = propertiesEnum->addProperty("Wrap mode T"); propertiesEnum->setEnumNames(enumWrapModeT, helperWrapModes.keyList()); groupCommon->addSubProperty(enumWrapModeT); // min OpenGL filter enumMinGL = propertiesEnum->addProperty("Min Filter"); propertiesEnum->setEnumNames(enumMinGL, helperMinGLModes.keyList()); groupCommon->addSubProperty(enumMinGL); // mag OpenGl filter enumMagGL = propertiesEnum->addProperty("Mag Filter"); propertiesEnum->setEnumNames(enumMagGL, helperMagGLModes.keyList()); groupCommon->addSubProperty(enumMagGL); addProperty(groupCommon); QObject::connect(propertiesEnum, SIGNAL(propertyChanged(QtProperty *)), this, SLOT(propertyChanged(QtProperty *))); QObject::connect(propertiesInt, SIGNAL(propertyChanged(QtProperty *)), this, SLOT(propertyChanged(QtProperty *))); QObject::connect(propertiesBool, SIGNAL(propertyChanged(QtProperty *)), this, SLOT(propertyChanged(QtProperty *))); QObject::connect(propertiesString, SIGNAL(propertyChanged(QtProperty *)), this, SLOT(propertyChanged(QtProperty *))); }
void PropertiesMgr::initPropertyView() { QtTreePropertyBrowser * tb = (QtTreePropertyBrowser*)ViewMgr::getInstance()->getWidgetWithName("propertiesWidget"); tb->clear(); if (m_variantManager == nullptr) m_variantManager = new QtVariantPropertyManager(); else disconnect(m_variantManager, SIGNAL(valueChanged(QtProperty *, const QVariant &)), this, SLOT(propertyValueChanged(QtProperty *, const QVariant &))); m_variantManager->clear(); m_particlesSlotProperty.clear(); m_spineActionNames.clear(); m_slotsNames.clear(); QtProperty * actionGroup = m_variantManager->addProperty(QtVariantPropertyManager::groupTypeId(), tr("action properties")); m_actionNameProperty = m_variantManager->addProperty(QtVariantPropertyManager::enumTypeId(), "actionName:"); QStringList spineActionName; spineActionName << ""; m_spineActionNames.push_back(""); spine::SkeletonAnimation * pSkeleton = DocumentMgr::getInstance()->m_pSpineParticle->m_skeleton; for (int i = 0; i < pSkeleton->getSkeleton()->data->animationsCount; ++i) { spineActionName << pSkeleton->getSkeleton()->data->animations[i]->name; m_spineActionNames.push_back(pSkeleton->getSkeleton()->data->animations[i]->name); } m_actionNameProperty->setAttribute(QLatin1String("enumNames"), spineActionName); actionGroup->addSubProperty(m_actionNameProperty); int pos = 0; if (DocumentMgr::getInstance()->m_currentAction) for (auto it : m_spineActionNames) { if (DocumentMgr::getInstance()->m_currentAction->spineActionName == it) { m_actionNameProperty->setValue(pos); break; } pos++; } QtProperty *particleGroup = m_variantManager->addProperty(QtVariantPropertyManager::groupTypeId(), tr("particle properties")); QStringList slotsName; slotsName << "none"; m_slotsNames.push_back("none"); for (int i = 0; i < pSkeleton->getSkeleton()->data->slotsCount; i++) { slotsName << pSkeleton->getSkeleton()->data->spineSlots[i]->name; m_slotsNames.push_back(pSkeleton->getSkeleton()->data->spineSlots[i]->name); } for (auto & it : DocumentMgr::getInstance()->m_pSpineParticle->m_particles) { QtProperty *particleinfoGroup = m_variantManager->addProperty(QtVariantPropertyManager::groupTypeId(), it.first.c_str()); auto particleProperty = m_variantManager->addProperty(QtVariantPropertyManager::enumTypeId(),"slot"); particleProperty->setAttribute(QLatin1String("enumNames"), slotsName); particleinfoGroup->addSubProperty(particleProperty); m_particlesSlotProperty.insert(std::make_pair(particleProperty, it.first)); if (DocumentMgr::getInstance()->m_currentAction) { auto &slotsData = DocumentMgr::getInstance()->m_currentAction->slotsData; auto p = slotsData.find(it.first); if (p != slotsData.end()) { int index = 0; for (auto &name : m_slotsNames) { if (name == p->second.slotsName) { particleProperty->setValue(index); break; } index++; } } } auto offsetProperty = m_variantManager->addProperty(QVariant::PointF, tr("offset:")); offsetProperty->setAttribute(QLatin1String("decimals"), 2); if (DocumentMgr::getInstance()->m_currentAction) { auto &slotsData = DocumentMgr::getInstance()->m_currentAction->slotsData; auto p = slotsData.find(it.first); if (p != slotsData.end()) { offsetProperty->setValue(QPointF(p->second.offset.x, p->second.offset.y)); } } particleinfoGroup->addSubProperty(offsetProperty); m_particleOffsetProperty.insert(std::make_pair(offsetProperty, it.first)); particleGroup->addSubProperty(particleinfoGroup); } QtVariantEditorFactory *variantFactory = new QtVariantEditorFactory(); tb->setFactoryForManager(m_variantManager, variantFactory); tb->addProperty(actionGroup); tb->addProperty(particleGroup); connect(m_variantManager, SIGNAL(valueChanged(QtProperty *, const QVariant &)), this, SLOT(propertyValueChanged(QtProperty *, const QVariant &))); }
void CPropBrowserEngineGeneral::show(QWidget* parentWindow) { setPropertiesWithoutValueMarked(true); // so that group properties stand out setRootIsDecorated(true); // keep true, otherwise subcategories won't work correctly setAlternatingRowColors(true); setHeaderVisible(true); //setIndentation(60); //setStatusTip("bla"); //setToolTip("Bla"); setResizeMode(QtTreePropertyBrowser::Interactive); setSplitterPosition(_splitterPos); setWindowTitle("Physics Engines Properties - General"); variantManager = new QtVariantPropertyManager(); variantFactory = new QtVariantEditorFactory(); setFactoryForManager(variantManager,variantFactory); buttonManager = new ButtonEditManager(); buttonFactory = new PushButtonEditFactory(); setFactoryForManager(buttonManager,buttonFactory); QStringList configurationEnum; configurationEnum << "Very accurate" << "Accurate (default)" << "Fast" << "Very fast" << "Customized"; p_configuration = variantManager->addProperty(QtVariantPropertyManager::enumTypeId(),""); p_configuration->setAttribute("enumNames", configurationEnum); QtBrowserItem* anItem=addProperty(p_configuration); setBackgroundColor(anItem,QTPROPERTYBROWSER_COLOR_GREY); QtProperty *bulletGroup = variantManager->addProperty(QtVariantPropertyManager::groupTypeId(),"Bullet properties"); bulletGroup->theBrightness=140; bulletGroupItem=addProperty(bulletGroup); setBackgroundColor(bulletGroupItem,QTPROPERTYBROWSER_COLOR_RED); setExpanded(bulletGroupItem,_bulletPropertiesExpanded); QtProperty *odeGroup = variantManager->addProperty(QtVariantPropertyManager::groupTypeId(),"ODE properties"); odeGroup->theBrightness=140; odeGroupItem=addProperty(odeGroup); setBackgroundColor(odeGroupItem,QTPROPERTYBROWSER_COLOR_GREEN); setExpanded(odeGroupItem,_odePropertiesExpanded); QtProperty *vortexGroup = variantManager->addProperty(QtVariantPropertyManager::groupTypeId(),"Vortex properties"); vortexGroup->theBrightness=140; vortexGroupItem=addProperty(vortexGroup); setBackgroundColor(vortexGroupItem,QTPROPERTYBROWSER_COLOR_BLUE); setExpanded(vortexGroupItem,_vortexPropertiesExpanded); // Bullet: p_bulletTimeStep = variantManager->addProperty(QVariant::String,""); bulletGroup->addSubProperty(p_bulletTimeStep); p_bulletConstraintSolvIterat = variantManager->addProperty(QVariant::String,""); bulletGroup->addSubProperty(p_bulletConstraintSolvIterat); p_bulletInternalScaling = variantManager->addProperty(QVariant::String,""); bulletGroup->addSubProperty(p_bulletInternalScaling); p_bulletInternalFullScaling = variantManager->addProperty(QVariant::Bool,""); bulletGroup->addSubProperty(p_bulletInternalFullScaling); p_bulletCollMarginScaling = variantManager->addProperty(QVariant::String,""); bulletGroup->addSubProperty(p_bulletCollMarginScaling); // ODE: p_odeTimeStep = variantManager->addProperty(QVariant::String,""); odeGroup->addSubProperty(p_odeTimeStep); p_odeQuickStep = variantManager->addProperty(QVariant::Bool,""); odeGroup->addSubProperty(p_odeQuickStep); p_odeIterations = variantManager->addProperty(QVariant::String,""); odeGroup->addSubProperty(p_odeIterations); p_odeInternalScaling = variantManager->addProperty(QVariant::String,""); odeGroup->addSubProperty(p_odeInternalScaling); p_odeInternalFullScaling = variantManager->addProperty(QVariant::Bool,""); odeGroup->addSubProperty(p_odeInternalFullScaling); p_odeGlobalErp = variantManager->addProperty(QVariant::String,""); odeGroup->addSubProperty(p_odeGlobalErp); p_odeGlobalCfm = variantManager->addProperty(QVariant::String,""); odeGroup->addSubProperty(p_odeGlobalCfm); // Vortex: p_vortexTimeStep = variantManager->addProperty(QVariant::String,""); vortexGroup->addSubProperty(p_vortexTimeStep); p_vortexContactTolerance = variantManager->addProperty(QVariant::String,""); vortexGroup->addSubProperty(p_vortexContactTolerance); p_vortexInternalScaling = variantManager->addProperty(QVariant::String,""); vortexGroup->addSubProperty(p_vortexInternalScaling); p_vortexInternalFullScaling = variantManager->addProperty(QVariant::Bool,""); vortexGroup->addSubProperty(p_vortexInternalFullScaling); p_vortexAutoSleep = variantManager->addProperty(QVariant::Bool,""); vortexGroup->addSubProperty(p_vortexAutoSleep); p_vortexMultithreading = variantManager->addProperty(QVariant::Bool,""); vortexGroup->addSubProperty(p_vortexMultithreading); QtProperty* vortexConstraint = variantManager->addProperty(QtVariantPropertyManager::groupTypeId(),"Constraint properties"); vortexGroup->addSubProperty(vortexConstraint); vortexConstraintItem=getSubPropertyBrowserItem(vortexGroupItem,vortexConstraint); setExpanded(vortexConstraintItem,_vortexConstraintPropertiesExpanded); p_vortexConstraintLinearCompliance = variantManager->addProperty(QVariant::String,""); vortexConstraint->addSubProperty(p_vortexConstraintLinearCompliance); p_vortexConstraintLinearDamping = variantManager->addProperty(QVariant::String,""); vortexConstraint->addSubProperty(p_vortexConstraintLinearDamping); p_vortexConstraintLinearKinLoss = variantManager->addProperty(QVariant::String,""); vortexConstraint->addSubProperty(p_vortexConstraintLinearKinLoss); p_vortexConstraintAngularCompliance = variantManager->addProperty(QVariant::String,""); vortexConstraint->addSubProperty(p_vortexConstraintAngularCompliance); p_vortexConstraintAngularDamping = variantManager->addProperty(QVariant::String,""); vortexConstraint->addSubProperty(p_vortexConstraintAngularDamping); p_vortexConstraintAngularKinLoss = variantManager->addProperty(QVariant::String,""); vortexConstraint->addSubProperty(p_vortexConstraintAngularKinLoss); refresh(); enableNotifications(true); // setWindowFlags(Qt::CustomizeWindowHint|Qt::WindowMaximizeButtonHint|Qt::WindowCloseButtonHint); // setWindowModality(Qt::ApplicationModal); setGeometry(_dlgPosX,_dlgPosY,_dlgSizeX,_dlgSizeY); }