Changed: #1302 Replaced VariantPropertyManager

This commit is contained in:
dnk-88 2012-06-11 00:41:02 +03:00
parent c64b75e834
commit 2a4035fa41
2 changed files with 51 additions and 15 deletions

View file

@ -37,22 +37,32 @@ PropertyEditorWidget::PropertyEditorWidget(QWidget *parent)
{ {
m_ui.setupUi(this); m_ui.setupUi(this);
m_variantManager = new QtVariantPropertyManager(this); m_stringManager = new QtStringPropertyManager(this);
m_boolManager = new QtBoolPropertyManager(this);
m_enumManager = new QtEnumPropertyManager(this); m_enumManager = new QtEnumPropertyManager(this);
m_stringArrayManager = new QtTextPropertyManager(this); m_stringArrayManager = new QtTextPropertyManager(this);
connect(m_variantManager, SIGNAL(valueChanged(QtProperty *, const QVariant &)), QtLineEditFactory *lineEditFactory = new QtLineEditFactory(this);
this, SLOT(valueChanged(QtProperty *, const QVariant &))); QtCheckBoxFactory *boolFactory = new QtCheckBoxFactory(this);
QtVariantEditorFactory *variantFactory = new QtVariantEditorFactory(this);
QtEnumEditorFactory *enumFactory = new QtEnumEditorFactory(this); QtEnumEditorFactory *enumFactory = new QtEnumEditorFactory(this);
QtTextEditorFactory *textFactory = new QtTextEditorFactory(this); QtTextEditorFactory *textFactory = new QtTextEditorFactory(this);
m_ui.treePropertyBrowser->setFactoryForManager(m_variantManager, variantFactory); m_ui.treePropertyBrowser->setFactoryForManager(m_stringManager, lineEditFactory);
m_ui.treePropertyBrowser->setFactoryForManager(m_boolManager, boolFactory);
m_ui.treePropertyBrowser->setFactoryForManager(m_enumManager, enumFactory); m_ui.treePropertyBrowser->setFactoryForManager(m_enumManager, enumFactory);
m_ui.treePropertyBrowser->setFactoryForManager(m_stringArrayManager, textFactory); m_ui.treePropertyBrowser->setFactoryForManager(m_stringArrayManager, textFactory);
m_groupManager = new QtGroupPropertyManager(this); m_groupManager = new QtGroupPropertyManager(this);
connect(m_stringManager, SIGNAL(propertyChanged(QtProperty *)), this, SLOT(propertyChanged(QtProperty *)));
connect(m_boolManager, SIGNAL(propertyChanged(QtProperty *)), this, SLOT(propertyChanged(QtProperty *)));
connect(m_enumManager, SIGNAL(propertyChanged(QtProperty *)), this, SLOT(propertyChanged(QtProperty *)));
connect(m_stringArrayManager, SIGNAL(propertyChanged(QtProperty *)), this, SLOT(propertyChanged(QtProperty *)));
connect(m_boolManager, SIGNAL(resetProperty(QtProperty *)), this, SLOT(resetProperty(QtProperty *)));
connect(m_stringManager, SIGNAL(resetProperty(QtProperty *)), this, SLOT(resetProperty(QtProperty *)));
connect(m_enumManager, SIGNAL(resetProperty(QtProperty *)), this, SLOT(resetProperty(QtProperty *)));
connect(m_stringArrayManager, SIGNAL(resetProperty(QtProperty *)), this, SLOT(resetProperty(QtProperty *)));
} }
PropertyEditorWidget::~PropertyEditorWidget() PropertyEditorWidget::~PropertyEditorWidget()
@ -71,6 +81,8 @@ void PropertyEditorWidget::updateSelection(Node *node)
if ((node == 0) || (node->type() != Node::PrimitiveNodeType)) if ((node == 0) || (node->type() != Node::PrimitiveNodeType))
return; return;
blockSignalsOfProperties(true);
// The parameter list // The parameter list
std::list<NLLIGO::CPrimitiveClass::CParameter> parameterList; std::list<NLLIGO::CPrimitiveClass::CParameter> parameterList;
@ -149,7 +161,6 @@ void PropertyEditorWidget::updateSelection(Node *node)
else if (parameter.Type == NLLIGO::CPrimitiveClass::CParameter::ConstStringArray) else if (parameter.Type == NLLIGO::CPrimitiveClass::CParameter::ConstStringArray)
prop = addConstStringArrayProperty(ligoProperty, parameter, primitive); prop = addConstStringArrayProperty(ligoProperty, parameter, primitive);
else else
// hmn?
prop = addBoolProperty(ligoProperty, parameter, primitive); prop = addBoolProperty(ligoProperty, parameter, primitive);
// Default value ? // Default value ?
@ -166,6 +177,18 @@ void PropertyEditorWidget::updateSelection(Node *node)
ite++; ite++;
} }
blockSignalsOfProperties(false);
}
void PropertyEditorWidget::propertyChanged(QtProperty *property)
{
nlinfo(QString("property %1 changed").arg(property->propertyName()).toStdString().c_str());
}
void PropertyEditorWidget::resetProperty(QtProperty *property)
{
nlinfo(QString("property %1 reset").arg(property->propertyName()).toStdString().c_str());
} }
QtProperty *PropertyEditorWidget::addBoolProperty(const NLLIGO::IProperty *property, QtProperty *PropertyEditorWidget::addBoolProperty(const NLLIGO::IProperty *property,
@ -175,11 +198,11 @@ QtProperty *PropertyEditorWidget::addBoolProperty(const NLLIGO::IProperty *prope
std::string value; std::string value;
std::string name = parameter.Name.c_str(); std::string name = parameter.Name.c_str();
primitive->getPropertyByName(name.c_str(), value); primitive->getPropertyByName(name.c_str(), value);
QtVariantProperty *prop = m_variantManager->addProperty(QVariant::Bool, name.c_str()); QtProperty *prop = m_boolManager->addProperty(name.c_str());
// if (Default) // if (Default)
{ {
//DialogProperties->setDefaultValue (this, value); //DialogProperties->setDefaultValue (this, value);
prop->setValue(bool((value=="true")?1:0)); m_boolManager->setValue(prop, bool((value=="true")?1:0));
} }
return prop; return prop;
} }
@ -242,7 +265,7 @@ QtProperty *PropertyEditorWidget::addConstStringProperty(const NLLIGO::IProperty
if (listEnums.isEmpty()) if (listEnums.isEmpty())
{ {
listEnums << tr("WRN: Check leveldesign!"); listEnums << QString(value.c_str()) + tr(" (WRN: Check leveldesign!)");
m_enumManager->setEnumNames(prop, listEnums); m_enumManager->setEnumNames(prop, listEnums);
m_enumManager->setValue(prop, 0); m_enumManager->setValue(prop, 0);
prop->setEnabled(false); prop->setEnabled(false);
@ -273,8 +296,8 @@ QtProperty *PropertyEditorWidget::addStringProperty(const NLLIGO::IProperty *pro
std::string value; std::string value;
std::string name = parameter.Name.c_str(); std::string name = parameter.Name.c_str();
primitive->getPropertyByName(name.c_str(), value); primitive->getPropertyByName(name.c_str(), value);
QtVariantProperty *prop = m_variantManager->addProperty(QVariant::String, parameter.Name.c_str()); QtProperty *prop = m_stringManager->addProperty(parameter.Name.c_str());
prop->setValue(QString(value.c_str())); m_stringManager->setValue(prop, QString(value.c_str()));
return prop; return prop;
} }
@ -320,10 +343,17 @@ QtProperty *PropertyEditorWidget::addConstStringArrayProperty(const NLLIGO::IPro
const NLLIGO::IPrimitive *primitive) const NLLIGO::IPrimitive *primitive)
{ {
std::string name = parameter.Name.c_str(); std::string name = parameter.Name.c_str();
QtVariantProperty *prop = m_variantManager->addProperty(QVariant::String, parameter.Name.c_str()); QtProperty *prop = m_stringManager->addProperty(parameter.Name.c_str());
prop->setValue("TODO: ConstStringArray"); m_stringManager->setValue(prop, "TODO: ConstStringArray");
prop->setEnabled(false); prop->setEnabled(false);
return prop; return prop;
} }
void PropertyEditorWidget::blockSignalsOfProperties(bool block)
{
m_stringManager->blockSignals(block);
m_boolManager->blockSignals(block);
m_enumManager->blockSignals(block);
m_stringArrayManager->blockSignals(block);
}
} /* namespace WorldEditor */ } /* namespace WorldEditor */

View file

@ -54,6 +54,9 @@ public Q_SLOTS:
/// Update of selections /// Update of selections
void updateSelection(Node *node); void updateSelection(Node *node);
void propertyChanged(QtProperty *property);
void resetProperty(QtProperty *property);
private: private:
QtProperty *addBoolProperty(const NLLIGO::IProperty *property, QtProperty *addBoolProperty(const NLLIGO::IProperty *property,
const NLLIGO::CPrimitiveClass::CParameter &parameter, const NLLIGO::CPrimitiveClass::CParameter &parameter,
@ -71,7 +74,10 @@ private:
const NLLIGO::CPrimitiveClass::CParameter &parameter, const NLLIGO::CPrimitiveClass::CParameter &parameter,
const NLLIGO::IPrimitive *primitive); const NLLIGO::IPrimitive *primitive);
QtVariantPropertyManager *m_variantManager; void blockSignalsOfProperties(bool block);
QtBoolPropertyManager *m_boolManager;
QtStringPropertyManager *m_stringManager;
QtEnumPropertyManager *m_enumManager; QtEnumPropertyManager *m_enumManager;
QtGroupPropertyManager *m_groupManager; QtGroupPropertyManager *m_groupManager;
QtTextPropertyManager *m_stringArrayManager; QtTextPropertyManager *m_stringArrayManager;