X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2FXGUI%2FXGUI_WidgetFactory.cpp;h=eeb6c10cde969231a91c81b772ac563ba28c4ff1;hb=a1d3e85f42aebdcf8b570ab99f5f4558612573e7;hp=b2551c62c667dd59a15d3c20ab2c5f6b960d7a2a;hpb=401394b2e312e5c4ecd6a410b90eb2c159a675bf;p=modules%2Fshaper.git diff --git a/src/XGUI/XGUI_WidgetFactory.cpp b/src/XGUI/XGUI_WidgetFactory.cpp index b2551c62c..eeb6c10cd 100644 --- a/src/XGUI/XGUI_WidgetFactory.cpp +++ b/src/XGUI/XGUI_WidgetFactory.cpp @@ -6,7 +6,9 @@ */ #include +#include +#include #include #include @@ -20,9 +22,11 @@ #include #endif -XGUI_WidgetFactory::XGUI_WidgetFactory(const std::string& theXml) +XGUI_WidgetFactory::XGUI_WidgetFactory(ModuleBase_Operation* theOperation) + : myOperation(theOperation) { - myWidgetApi = new Config_WidgetAPI(theXml); + QString aXml = myOperation->xmlRepresentation(); + myWidgetApi = new Config_WidgetAPI(aXml.toStdString()); } XGUI_WidgetFactory::~XGUI_WidgetFactory() @@ -41,8 +45,8 @@ void XGUI_WidgetFactory::fillWidget(QWidget* theParent) do { std::string aWdgType = myWidgetApi->widgetType(); QWidget* aWidget = NULL; - if (aWdgType == "value") { - aWidget = valueWidget(); + if (aWdgType == NODE_DOUBLE_WDG) { + aWidget = doubleSpinBoxWidget(); } else { #ifdef _DEBUG qDebug() << "XGUI_WidgetFactory::fillWidget: find bad widget type"; @@ -55,7 +59,7 @@ void XGUI_WidgetFactory::fillWidget(QWidget* theParent) theParent->setLayout(aWidgetLay); } -QWidget* XGUI_WidgetFactory::valueWidget() +QWidget* XGUI_WidgetFactory::doubleSpinBoxWidget() { QWidget* result = new QWidget(); QHBoxLayout* aControlLay = new QHBoxLayout(result); @@ -67,20 +71,26 @@ QWidget* XGUI_WidgetFactory::valueWidget() aControlLay->addWidget(aLabel); QDoubleSpinBox* aBox = new QDoubleSpinBox(result); + QString anObjName = QString::fromStdString(myWidgetApi->widgetId()); + aBox->setObjectName(anObjName); bool isOk = false; - double aMinVal = qs(myWidgetApi->getProperty("min")).toDouble(&isOk); + std::string aProp = myWidgetApi->getProperty(DOUBLE_WDG_MIN); + double aMinVal = qs(aProp).toDouble(&isOk); if (isOk) { aBox->setMinimum(aMinVal); } - double aMaxVal = qs(myWidgetApi->getProperty("max")).toDouble(&isOk); + aProp = myWidgetApi->getProperty(DOUBLE_WDG_MAX); + double aMaxVal = qs(aProp).toDouble(&isOk); if (isOk) { aBox->setMaximum(aMaxVal); } - double aStepVal = qs(myWidgetApi->getProperty("step")).toDouble(&isOk); + aProp = myWidgetApi->getProperty(DOUBLE_WDG_STEP); + double aStepVal = qs(aProp).toDouble(&isOk); if (isOk) { aBox->setSingleStep(aStepVal); } - double aDefVal = qs(myWidgetApi->getProperty("default")).toDouble(&isOk); + aProp = myWidgetApi->getProperty(DOUBLE_WDG_DFLT); + double aDefVal = qs(aProp).toDouble(&isOk); if (isOk) { aBox->setValue(aDefVal); } @@ -88,8 +98,18 @@ QWidget* XGUI_WidgetFactory::valueWidget() aBox->setToolTip(aTTip); aControlLay->addWidget(aBox); aControlLay->setStretch(1, 1); - result->setLayout(aControlLay); + connectWidget(aBox, NODE_DOUBLE_WDG); + return result; +} + +bool XGUI_WidgetFactory::connectWidget(QWidget* theWidget, const QString& theType) +{ + bool result = false; + if (theType == NODE_DOUBLE_WDG) { + result = QObject::connect(theWidget, SIGNAL(valueChanged(double)), + myOperation, SLOT(storeReal(double))); + } return result; }