From: vsv Date: Thu, 11 Dec 2014 13:54:29 +0000 (+0300) Subject: Merge branch 'Dev_0.6.1' of newgeom:newgeom into Dev_0.6.1 X-Git-Tag: before_slalome_7.5.1~21^2~1 X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;h=3874b57fe5aba25ff5aee2a07654fc23c1ee8eb0;hp=-c;p=modules%2Fshaper.git Merge branch 'Dev_0.6.1' of newgeom:newgeom into Dev_0.6.1 --- 3874b57fe5aba25ff5aee2a07654fc23c1ee8eb0 diff --combined src/ModuleBase/ModuleBase_IModule.cpp index 619fe0bbb,9f7da7a38..99f2fa15f --- a/src/ModuleBase/ModuleBase_IModule.cpp +++ b/src/ModuleBase/ModuleBase_IModule.cpp @@@ -1,5 -1,3 +1,5 @@@ +// Copyright (C) 2014-20xx CEA/DEN, EDF R&D + #include "ModuleBase_IModule.h" #include "ModuleBase_IViewer.h" @@@ -22,15 -20,9 +22,9 @@@ ModuleBase_IModule::ModuleBase_IModule(ModuleBase_IWorkshop* theParent) : QObject(theParent), myWorkshop(theParent) { - connect(myWorkshop, SIGNAL(operationStarted(ModuleBase_Operation*)), - SLOT(onOperationStarted(ModuleBase_Operation*))); - connect(myWorkshop, SIGNAL(operationStopped(ModuleBase_Operation*)), SLOT(onOperationStopped(ModuleBase_Operation*))); - connect(myWorkshop, SIGNAL(operationResumed(ModuleBase_Operation*)), - SLOT(onOperationResumed(ModuleBase_Operation*))); - connect(myWorkshop, SIGNAL(operationComitted(ModuleBase_Operation*)), SLOT(onOperationComitted(ModuleBase_Operation*))); diff --combined src/ModuleBase/ModuleBase_IModule.h index 4216a76dc,bf1675bfa..e0d693a59 --- a/src/ModuleBase/ModuleBase_IModule.h +++ b/src/ModuleBase/ModuleBase_IModule.h @@@ -1,5 -1,3 +1,5 @@@ +// Copyright (C) 2014-20xx CEA/DEN, EDF R&D + #ifndef ModuleBase_IModule_H #define ModuleBase_IModule_H @@@ -47,6 -45,14 +47,14 @@@ class MODULEBASE_EXPORT ModuleBase_IMod /// \param theCmdId the operation name virtual void launchOperation(const QString& theCmdId); + /// Realizes some functionality by an operation start + /// \param theOperation a started operation + virtual void operationStarted(ModuleBase_Operation* theOperation) {} + + /// Realizes some functionality by an operation resume + /// \param theOperation a resumed operation + virtual void operationResumed(ModuleBase_Operation* theOperation) {} + /// Called when it is necessary to update a command state (enable or disable it) //virtual bool isFeatureEnabled(const QString& theCmdId) const = 0; @@@ -68,14 -74,10 +76,10 @@@ public slots void onFeatureTriggered(); protected slots: - /// SLOT, that is called after the operation is started. Connect on the focus activated signal - virtual void onOperationStarted(ModuleBase_Operation* theOperation) {} - /// SLOT, that is called after the operation is stopped. Switched off the modfications performed /// by the operation start virtual void onOperationStopped(ModuleBase_Operation* theOperation) {} - virtual void onOperationResumed(ModuleBase_Operation* theOperation) {} virtual void onOperationComitted(ModuleBase_Operation* theOperation) {} diff --combined src/ModuleBase/ModuleBase_Operation.cpp index 516430bd0,798a82987..301fbcca5 --- a/src/ModuleBase/ModuleBase_Operation.cpp +++ b/src/ModuleBase/ModuleBase_Operation.cpp @@@ -1,5 -1,3 +1,5 @@@ +// Copyright (C) 2014-20xx CEA/DEN, EDF R&D + /* * ModuleBase_Operation.cpp * @@@ -171,6 -169,7 +171,7 @@@ void ModuleBase_Operation::start( startOperation(); emit started(); + } void ModuleBase_Operation::postpone() @@@ -232,16 -231,16 +233,16 @@@ void ModuleBase_Operation::setRunning(b } } - bool ModuleBase_Operation::activateByPreselection() + void ModuleBase_Operation::activateByPreselection() { if (!myPropertyPanel || myPreSelection.empty()) { myPropertyPanel->activateNextWidget(NULL); - return false; + return; } const QList& aWidgets = myPropertyPanel->modelWidgets(); if (aWidgets.empty()) { myPropertyPanel->activateNextWidget(NULL); - return false; + return; } ModuleBase_ModelWidget* aWgt, *aFilledWgt = 0; @@@ -266,14 -265,10 +267,10 @@@ } } - if (aFilledWgt) { - myPropertyPanel->activateNextWidget(aFilledWgt); + myPropertyPanel->activateNextWidget(aFilledWgt); + if (aFilledWgt) emit activatedByPreselection(); - return true; - } - else - myPropertyPanel->activateNextWidget(NULL); - return false; + } void ModuleBase_Operation::initSelection(ModuleBase_ISelection* theSelection, @@@ -357,6 -352,11 +354,11 @@@ void ModuleBase_Operation::setPropertyP myPropertyPanel->setEditingMode(isEditOperation()); //connect(myPropertyPanel, SIGNAL(widgetActivated(ModuleBase_ModelWidget*)), this, // SLOT(onWidgetActivated(ModuleBase_ModelWidget*))); + + // Do not activate widgets by default if the current operation is editing operation + // Because we don't know which widget is going to be edited. + if (!isEditOperation()) + activateByPreselection(); } bool ModuleBase_Operation::isGranted(QString theId) const diff --combined src/ModuleBase/ModuleBase_Operation.h index e617cf243,f20c7f476..4e76077f2 --- a/src/ModuleBase/ModuleBase_Operation.h +++ b/src/ModuleBase/ModuleBase_Operation.h @@@ -1,5 -1,3 +1,5 @@@ +// Copyright (C) 2014-20xx CEA/DEN, EDF R&D + /* * ModuleBase_Operation.h * @@@ -128,8 -126,8 +128,8 @@@ Q_OBJEC ModuleBase_IPropertyPanel* propertyPanel() const { return myPropertyPanel; } - /// Activates widgets by preselection if it is accepted - virtual bool activateByPreselection(); + /// Activates widgets by preselection if it is accepted. Emits signal if the activation is correct + virtual void activateByPreselection(); /// If the operation works with feature which is sub-feature of another one /// then this variable has to be initialised by parent feature diff --combined src/PartSet/PartSet_Module.cpp index 5c5da75d0,bffa6148d..cb053cf47 --- a/src/PartSet/PartSet_Module.cpp +++ b/src/PartSet/PartSet_Module.cpp @@@ -1,5 -1,3 +1,5 @@@ +// Copyright (C) 2014-20xx CEA/DEN, EDF R&D + #include "PartSet_Module.h" #include #include @@@ -180,7 -178,7 +180,7 @@@ void PartSet_Module::onOperationAborted breakOperationSequence(); } - void PartSet_Module::onOperationStarted(ModuleBase_Operation* theOperation) + void PartSet_Module::operationStarted(ModuleBase_Operation* theOperation) { if (theOperation->id().toStdString() == SketchPlugin_Sketch::ID()) { // Display all sketcher sub-Objects diff --combined src/PartSet/PartSet_Module.h index 1837a2c8a,e9a145ebb..ed87e7700 --- a/src/PartSet/PartSet_Module.h +++ b/src/PartSet/PartSet_Module.h @@@ -1,5 -1,3 +1,5 @@@ +// Copyright (C) 2014-20xx CEA/DEN, EDF R&D + #ifndef PartSet_Module_H #define PartSet_Module_H @@@ -51,6 -49,10 +51,10 @@@ public QStringList sketchOperationIdList() const; + /// Realizes some functionality by an operation start + /// \param theOperation a started operation + virtual void operationStarted(ModuleBase_Operation* theOperation); + public slots: /// SLOT, that is called by no more widget signal emitted by property panel /// Set a specific flag to restart the sketcher operation @@@ -62,8 -64,6 +66,6 @@@ protected slots virtual void onOperationAborted(ModuleBase_Operation* theOperation); - virtual void onOperationStarted(ModuleBase_Operation* theOperation); - virtual void onOperationStopped(ModuleBase_Operation* theOperation); /// Called when previous operation is finished diff --combined src/XGUI/XGUI_PropertyPanel.cpp index 29ea660da,e788d15da..8a3cf8bf1 --- a/src/XGUI/XGUI_PropertyPanel.cpp +++ b/src/XGUI/XGUI_PropertyPanel.cpp @@@ -1,5 -1,3 +1,5 @@@ +// Copyright (C) 2014-20xx CEA/DEN, EDF R&D --> + /* * XGUI_PropertyPanel.cpp * @@@ -79,6 -77,7 +79,7 @@@ void XGUI_PropertyPanel::cleanContent( myWidgets.clear(); qDeleteAll(myCustomWidget->children()); myActiveWidget = NULL; + setWindowTitle(tr("Property Panel")); } void XGUI_PropertyPanel::setModelWidgets(const QList& theWidgets) diff --combined src/XGUI/XGUI_Workshop.cpp index 58d0f8844,f8fe475ca..1661d6564 --- a/src/XGUI/XGUI_Workshop.cpp +++ b/src/XGUI/XGUI_Workshop.cpp @@@ -1,5 -1,3 +1,5 @@@ +// Copyright (C) 2014-20xx CEA/DEN, EDF R&D --> + //#include "XGUI_Constants.h" #include "XGUI_Tools.h" #include "XGUI_Workshop.h" @@@ -148,8 -146,9 +148,9 @@@ XGUI_Workshop::XGUI_Workshop(XGUI_Salom myModuleConnector = new XGUI_ModuleConnector(this); connect(myOperationMgr, SIGNAL(operationStarted(ModuleBase_Operation*)), - SLOT(onOperationStarted())); - connect(myOperationMgr, SIGNAL(operationResumed(ModuleBase_Operation*)), SLOT(onOperationStarted())); + SLOT(onOperationStarted(ModuleBase_Operation*))); + connect(myOperationMgr, SIGNAL(operationResumed(ModuleBase_Operation*)), + SLOT(onOperationResumed(ModuleBase_Operation*))); connect(myOperationMgr, SIGNAL(operationStopped(ModuleBase_Operation*)), SLOT(onOperationStopped(ModuleBase_Operation*))); connect(myMainWindow, SIGNAL(exitKeySequence()), SLOT(onExit())); @@@ -559,56 -558,34 +560,34 @@@ void XGUI_Workshop::onObjectDeletedMsg( } //****************************************************** - void XGUI_Workshop::onOperationStarted() + void XGUI_Workshop::onOperationStarted(ModuleBase_Operation* theOperation) { - ModuleBase_Operation* aOperation = myOperationMgr->currentOperation(); - if (this->isSalomeMode()) - aOperation->setNestedFeatures(mySalomeConnector->nestedActions(aOperation->id())); - else - aOperation->setNestedFeatures(myActionsMgr->nestedCommands(aOperation->id())); - - if (aOperation->getDescription()->hasXmlRepresentation()) { //!< No need for property panel - connectWithOperation(aOperation); - - showPropertyPanel(); - QString aXmlRepr = aOperation->getDescription()->xmlRepresentation(); - ModuleBase_WidgetFactory aFactory = ModuleBase_WidgetFactory(aXmlRepr.toStdString(), - myModuleConnector); - - myPropertyPanel->cleanContent(); - aFactory.createWidget(myPropertyPanel->contentWidget()); - ModuleBase_Tools::zeroMargins(myPropertyPanel->contentWidget()); - - QList aWidgets = aFactory.getModelWidgets(); - foreach (ModuleBase_ModelWidget* aWidget, aWidgets) { - aWidget->setFeature(aOperation->feature()); - aWidget->enableFocusProcessing(); - QObject::connect(aWidget, SIGNAL(valuesChanged()), this, SLOT(onWidgetValuesChanged())); - // Init default values - if (!aOperation->isEditOperation() && !aWidget->isComputedDefault()) { - aWidget->storeValue(); - } - } + setNestedFeatures(theOperation); - myPropertyPanel->setModelWidgets(aWidgets); - aOperation->setPropertyPanel(myPropertyPanel); - // Do not activate widgets by default if the current operation is editing operation - // Because we don't know which widget is going to be edited. - if ((!aOperation->isEditOperation())) { - aOperation->activateByPreselection(); - } - // Set final definitions if they are necessary - myModule->propertyPanelDefined(aOperation); + if (theOperation->getDescription()->hasXmlRepresentation()) { //!< No need for property panel + connectWithOperation(theOperation); + setPropertyPanel(theOperation); + } + updateCommandStatus(); - // Widget activation (from the previous method) may commit the current operation - // if pre-selection is enougth for it. So we shouldn't update prop panel's title - if(myOperationMgr->isCurrentOperation(aOperation)) { - myPropertyPanel->setWindowTitle(aOperation->getDescription()->description()); - } + myModule->operationStarted(theOperation); + } + + //****************************************************** + void XGUI_Workshop::onOperationResumed(ModuleBase_Operation* theOperation) + { + setNestedFeatures(theOperation); + + if (theOperation->getDescription()->hasXmlRepresentation()) { //!< No need for property panel + connectWithOperation(theOperation); + setPropertyPanel(theOperation); } updateCommandStatus(); + + myModule->operationResumed(theOperation); } + //****************************************************** void XGUI_Workshop::onOperationStopped(ModuleBase_Operation* theOperation) { @@@ -627,6 -604,44 +606,44 @@@ } } + void XGUI_Workshop::setNestedFeatures(ModuleBase_Operation* theOperation) + { + if (this->isSalomeMode()) + theOperation->setNestedFeatures(mySalomeConnector->nestedActions(theOperation->id())); + else + theOperation->setNestedFeatures(myActionsMgr->nestedCommands(theOperation->id())); + } + + void XGUI_Workshop::setPropertyPanel(ModuleBase_Operation* theOperation) + { + showPropertyPanel(); + QString aXmlRepr = theOperation->getDescription()->xmlRepresentation(); + ModuleBase_WidgetFactory aFactory = ModuleBase_WidgetFactory(aXmlRepr.toStdString(), + myModuleConnector); + + myPropertyPanel->cleanContent(); + aFactory.createWidget(myPropertyPanel->contentWidget()); + ModuleBase_Tools::zeroMargins(myPropertyPanel->contentWidget()); + + QList aWidgets = aFactory.getModelWidgets(); + foreach (ModuleBase_ModelWidget* aWidget, aWidgets) { + aWidget->setFeature(theOperation->feature()); + aWidget->enableFocusProcessing(); + QObject::connect(aWidget, SIGNAL(valuesChanged()), this, SLOT(onWidgetValuesChanged())); + // Init default values + if (!theOperation->isEditOperation() && !aWidget->isComputedDefault()) { + aWidget->storeValue(); + } + } + + myPropertyPanel->setModelWidgets(aWidgets); + theOperation->setPropertyPanel(myPropertyPanel); + + myModule->propertyPanelDefined(theOperation); + + myPropertyPanel->setWindowTitle(theOperation->getDescription()->description()); + } + bool XGUI_Workshop::event(QEvent * theEvent) { PostponeMessageQtEvent* aPostponedEv = dynamic_cast(theEvent); diff --combined src/XGUI/XGUI_Workshop.h index 80232d6bb,f8c293c5e..97dc5d64c --- a/src/XGUI/XGUI_Workshop.h +++ b/src/XGUI/XGUI_Workshop.h @@@ -1,5 -1,3 +1,5 @@@ +// Copyright (C) 2014-20xx CEA/DEN, EDF R&D --> + #ifndef XGUI_WORKSHOP_H #define XGUI_WORKSHOP_H @@@ -221,6 -219,14 +221,14 @@@ signals void closeDocument(); protected: + // Find the nested features and set them into the operation + // \param theOperation an operation + void setNestedFeatures(ModuleBase_Operation* theOperation); + // Update the property panel content by the XML description of the operation and set the panel + // into the operation + // \param theOperation an operation + void setPropertyPanel(ModuleBase_Operation* theOperation); + bool event(QEvent * theEvent); //Event-loop processing methods: void addFeature(const std::shared_ptr&); @@@ -242,7 -248,13 +250,13 @@@ private slots: /// SLOT, that is called after the operation is started. Update workshop state according to /// the started operation, e.g. visualizes the property panel and connect to it. - void onOperationStarted(); + /// \param theOpertion a started operation + void onOperationStarted(ModuleBase_Operation* theOperation); + + /// SLOT, that is called after the operation is resumed. Update workshop state according to + /// the started operation, e.g. visualizes the property panel and connect to it. + /// \param theOpertion a resumed operation + virtual void onOperationResumed(ModuleBase_Operation* theOperation); /// SLOT, that is called after the operation is stopped. Update workshop state, e.g. /// hides the property panel and udpate the command status.