From: nds Date: Mon, 23 Jun 2014 15:25:17 +0000 (+0400) Subject: refs #80 - Sketch base GUI: create/draw point, circle and arc X-Git-Tag: V_0.4.4~263^2~2 X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;h=a3b2736968186ac435b1e05e530c40becbc82301;p=modules%2Fshaper.git refs #80 - Sketch base GUI: create/draw point, circle and arc Undoes the modification of the isEdit state of operation using. The default value of the feature is set after the operation is started --- diff --git a/src/ModuleBase/ModuleBase_IOperation.cpp b/src/ModuleBase/ModuleBase_IOperation.cpp index 30af6ccc1..bcc697dcb 100644 --- a/src/ModuleBase/ModuleBase_IOperation.cpp +++ b/src/ModuleBase/ModuleBase_IOperation.cpp @@ -42,7 +42,7 @@ bool ModuleBase_IOperation::isGranted(ModuleBase_IOperation* /*theOperation*/) c return false; } -void ModuleBase_IOperation::setModelWidgets(const std::string& theXmlRepresentation, +/*void ModuleBase_IOperation::setModelWidgets(const std::string& theXmlRepresentation, QList theWidgets) { QList::const_iterator anIt = theWidgets.begin(), aLast = theWidgets.end(); @@ -50,7 +50,7 @@ void ModuleBase_IOperation::setModelWidgets(const std::string& theXmlRepresentat QObject::connect(*anIt, SIGNAL(valuesChanged()), this, SLOT(storeCustomValue())); } getDescription()->setModelWidgets(theXmlRepresentation, theWidgets); -} +}*/ boost::shared_ptr ModuleBase_IOperation::document() const { diff --git a/src/ModuleBase/ModuleBase_IOperation.h b/src/ModuleBase/ModuleBase_IOperation.h index 5c753c728..77e01083c 100644 --- a/src/ModuleBase/ModuleBase_IOperation.h +++ b/src/ModuleBase/ModuleBase_IOperation.h @@ -19,7 +19,7 @@ class ModelAPI_Document; class ModuleBase_OperationDescription; -class ModuleBase_ModelWidget; +//class ModuleBase_ModelWidget; /*! \class ModuleBase_IOperation @@ -73,8 +73,8 @@ public: /// Sets a list of model widgets, according to the operation feature xml definition /// \param theXmlRepresentation an xml feature definition /// \param theWidgets a list of widgets - void setModelWidgets(const std::string& theXmlRepresentation, - QList theWidgets); + //void setModelWidgets(const std::string& theXmlRepresentation, + // QList theWidgets); signals: void started(); /// the operation is started diff --git a/src/ModuleBase/ModuleBase_Operation.cpp b/src/ModuleBase/ModuleBase_Operation.cpp index 223bf59e2..4b7e3c78c 100644 --- a/src/ModuleBase/ModuleBase_Operation.cpp +++ b/src/ModuleBase/ModuleBase_Operation.cpp @@ -104,11 +104,11 @@ FeaturePtr ModuleBase_Operation::createFeature(const bool theFlushMessage) if (aFeature) { // TODO: generate an error if feature was not created aFeature->execute(); // Init default values - QList aWidgets = getDescription()->modelWidgets(); + /*QList aWidgets = getDescription()->modelWidgets(); QList::const_iterator anIt = aWidgets.begin(), aLast = aWidgets.end(); for (; anIt != aLast; anIt++) { (*anIt)->storeValue(aFeature); - } + }*/ } if (theFlushMessage) diff --git a/src/ModuleBase/ModuleBase_OperationDescription.cpp b/src/ModuleBase/ModuleBase_OperationDescription.cpp index a97d11816..ffffe6922 100644 --- a/src/ModuleBase/ModuleBase_OperationDescription.cpp +++ b/src/ModuleBase/ModuleBase_OperationDescription.cpp @@ -32,7 +32,7 @@ void ModuleBase_OperationDescription::setDescription(const QString& theDescripti myDescription = theDescription; } -void ModuleBase_OperationDescription::setModelWidgets(const std::string& theXmlRepresentation, +/*void ModuleBase_OperationDescription::setModelWidgets(const std::string& theXmlRepresentation, const QList& theWidgets) { myWidgets.clear(); @@ -40,14 +40,24 @@ void ModuleBase_OperationDescription::setModelWidgets(const std::string& theXmlR for (; anIt != aLast; anIt++) myWidgets.push_back(*anIt); myXmlRepresentation = theXmlRepresentation; -} +}*/ -const QList& ModuleBase_OperationDescription::modelWidgets() const +/*const QList& ModuleBase_OperationDescription::modelWidgets() const { return myWidgets; +}*/ + +const QString& ModuleBase_OperationDescription::xmlRepresentation() const +{ + return myXmlRepresentation; +} + +void ModuleBase_OperationDescription::setXmlRepresentation(const QString& theXMLRepresentation) +{ + myXmlRepresentation = theXMLRepresentation; } bool ModuleBase_OperationDescription::hasXmlRepresentation() const { - return !myWidgets.empty() || !myXmlRepresentation.empty(); + return /*!myWidgets.empty() || */!myXmlRepresentation.isEmpty(); } diff --git a/src/ModuleBase/ModuleBase_OperationDescription.h b/src/ModuleBase/ModuleBase_OperationDescription.h index 11b4abc10..79a730110 100644 --- a/src/ModuleBase/ModuleBase_OperationDescription.h +++ b/src/ModuleBase/ModuleBase_OperationDescription.h @@ -17,7 +17,7 @@ #include -class ModuleBase_ModelWidget; +//class ModuleBase_ModelWidget; /*! * \class ModuleBase_OperationDescription @@ -50,12 +50,20 @@ public: /// Sets a list of model widgets, according to the operation feature xml definition /// \param theWidgets a list of widgets - void setModelWidgets(const std::string& theXmlRepresentation, - const QList& theWidgets); + //void setModelWidgets(const std::string& theXmlRepresentation, + // const QList& theWidgets); /// Sets a list of model widgets, according to the operation feature xml definition /// \param theWidgets a list of widgets - const QList& modelWidgets() const; + //const QList& modelWidgets() const; + + /// Returns XML representation of the operation's widget. + /// \return XML QString + const QString& xmlRepresentation() const; + + /// Sets XML representation of the operation's widget. + /// \param theXMLRepresentation - XML QString + void setXmlRepresentation(const QString& theXMLRepresentation); /// Returns true if there are no model widgets /// \return the boolean value @@ -65,8 +73,8 @@ private: //!< Next fields could be extracted into a subclass; QString myOperationId; /// the operation identifier QString myDescription; /// the short description of the opertaion - std::string myXmlRepresentation; /// the xml definition - QList myWidgets; /// the list of operation widgets + QString myXmlRepresentation; /// the xml definition + //QList myWidgets; /// the list of operation widgets }; #endif //ModuleBase_OperationDescription_H diff --git a/src/PartSet/PartSet_Module.cpp b/src/PartSet/PartSet_Module.cpp index 30be9bac2..ab790298f 100644 --- a/src/PartSet/PartSet_Module.cpp +++ b/src/PartSet/PartSet_Module.cpp @@ -364,16 +364,17 @@ ModuleBase_Operation* PartSet_Module::createOperation(const std::string& theCmdI std::string aXmlCfg = aWdgReader.featureWidgetCfg(aFeatureKind); std::string aDescription = aWdgReader.featureDescription(aFeatureKind); - QString aXmlRepr = QString::fromStdString(aXmlCfg); - ModuleBase_WidgetFactory aFactory = ModuleBase_WidgetFactory(aXmlRepr.toStdString(), - myWorkshop->moduleConnector()); - QWidget* aContent = myWorkshop->propertyPanel()->contentWidget(); - qDeleteAll(aContent->children()); - aFactory.createWidget(aContent); + //QString aXmlRepr = QString::fromStdString(aXmlCfg); + //ModuleBase_WidgetFactory aFactory = ModuleBase_WidgetFactory(aXmlRepr.toStdString(), + // myWorkshop->moduleConnector()); + //QWidget* aContent = myWorkshop->propertyPanel()->contentWidget(); + //qDeleteAll(aContent->children()); + //aFactory.createWidget(aContent); anOperation->getDescription()->setDescription(QString::fromStdString(aDescription)); + anOperation->getDescription()->setXmlRepresentation(QString::fromStdString(aXmlCfg)); - anOperation->setModelWidgets(aXmlRepr.toStdString(), aFactory.getModelWidgets()); + //anOperation->setModelWidgets(aXmlRepr.toStdString(), aFactory.getModelWidgets()); // connect the operation PartSet_OperationSketchBase* aPreviewOp = dynamic_cast(anOperation); diff --git a/src/XGUI/XGUI_Workshop.cpp b/src/XGUI/XGUI_Workshop.cpp index affbac1a1..00446f23b 100644 --- a/src/XGUI/XGUI_Workshop.cpp +++ b/src/XGUI/XGUI_Workshop.cpp @@ -281,8 +281,7 @@ void XGUI_Workshop::processEvent(const Events_Message* theMessage) //An operation passed by message. Start it, process and commit. const Config_PointerMessage* aPartSetMsg = dynamic_cast(theMessage); if (aPartSetMsg) { - // TODO: Clear previous content - //myPropertyPanel->cleanContent(); + myPropertyPanel->cleanContent(); ModuleBase_Operation* anOperation = (ModuleBase_Operation*)(aPartSetMsg->pointer()); @@ -312,16 +311,25 @@ void XGUI_Workshop::onOperationStarted() connectWithOperation(aOperation); showPropertyPanel(); - // TODO: Clear previous content - /* QString aXmlRepr = aOperation->getDescription()->xmlRepresentation(); ModuleBase_WidgetFactory aFactory = ModuleBase_WidgetFactory(aXmlRepr.toStdString(), myModuleConnector); QWidget* aContent = myPropertyPanel->contentWidget(); qDeleteAll(aContent->children()); aFactory.createWidget(aContent); - myPropertyPanel->setModelWidgets(aFactory.getModelWidgets()); - */ - myPropertyPanel->setModelWidgets(aOperation->getDescription()->modelWidgets()); + + QList aWidgets = aFactory.getModelWidgets(); + QList::const_iterator anIt = aWidgets.begin(), aLast = aWidgets.end(); + ModuleBase_ModelWidget* aWidget; + for (; anIt != aLast; anIt++) { + aWidget = *anIt; + QObject::connect(aWidget, SIGNAL(valuesChanged()), aOperation, SLOT(storeCustomValue())); + // Init default values + if (!aOperation->isEditOperation()) { + aWidget->storeValue(aOperation->feature()); + } + } + + myPropertyPanel->setModelWidgets(aWidgets); myPropertyPanel->setWindowTitle(aOperation->getDescription()->description()); } updateCommandStatus();