]> SALOME platform Git repositories - modules/shaper.git/commitdiff
Salome HOME
Synchronize AcceptAll actions state between Tool bar and property panel.
authornds <nds@opencascade.com>
Tue, 25 Aug 2015 14:06:15 +0000 (17:06 +0300)
committernds <nds@opencascade.com>
Tue, 25 Aug 2015 14:06:15 +0000 (17:06 +0300)
Default enabled state of AcceptAll button is disabled. An attempt to update the state on Undo/Redo/Delete sketch feature operations.

src/PartSet/PartSet_Module.cpp
src/XGUI/XGUI_ActionsMgr.cpp
src/XGUI/XGUI_ActionsMgr.h
src/XGUI/XGUI_OperationMgr.h
src/XGUI/XGUI_Workshop.cpp

index 992e821cb038e34b4b7d526b1590afd91273d137..c23c23beb914c0bccacf95ad71b3045f61caa111 100755 (executable)
@@ -627,6 +627,8 @@ bool PartSet_Module::deleteObjects()
     // 5. stop operation
     aWorkshop->displayer()->updateViewer();
     aMgr->finishOperation();
+    XGUI_OperationMgr* anOpMgr = aConnector->workshop()->operationMgr();
+    anOpMgr->updateApplyOfOperations();
   } else {
     bool isPartRemoved = false;
     // Delete part with help of PartSet plugin
index 8cf0c02c12f682e2198c8cb6fdf4ce0f6f2ec64b..fd872f417f40943bbbddddd99ee8948127f39328 100644 (file)
@@ -171,6 +171,14 @@ void XGUI_ActionsMgr::updateOnViewSelection()
   }
 }
 
+void XGUI_ActionsMgr::onAcceptAllToggled(bool theState)
+{
+  if (!theState) {
+    QAction* anAcceptAllAction = operationStateAction(XGUI_ActionsMgr::AcceptAll, NULL);
+    anAcceptAllAction->setEnabled(theState);
+  }
+}
+
 QKeySequence XGUI_ActionsMgr::registerShortcut(const QKeySequence& theKeySequence)
 {
   if (theKeySequence.isEmpty()) {
@@ -236,10 +244,9 @@ QAction* XGUI_ActionsMgr::operationStateAction(OperationStateActionId theId, QOb
       case Accept:
       case AcceptAll:
         aResult = new QAction(QIcon(":pictures/button_ok.png"), "", theParent);
-        // the default value is disabled, some modifications should be performed in order
-        // to update enable state of this action.
-        // AcceptAll is blinked when sketch is started from enabled to disabled.
-        aResult->setEnabled(false);
+        // the default value is disabled, so the next connect is used to restore this
+        // default state by untoggle this action
+        connect(this, SIGNAL(toggled(bool)), this, SLOT(onAcceptAllToggled(bool)));
         break;
       case Abort:
       case AbortAll: {
index 9191021ad42650baaae1df0944df3cea0f5d55ee..8be19e49ddc77ab93a48a990865e2b8ffb87d27b 100644 (file)
@@ -96,6 +96,9 @@ public slots:
   void updateCheckState();
   //! Updates actions according to current selection in the viewer
   void updateOnViewSelection();
+  //! Update the default enable state of the action by untoggle it. The default value is disabled.
+  //! \param theState the new state of the AcceptAll action
+  void onAcceptAllToggled(bool theState);
 
  protected:
   //! Sets all actions to isEnabled state.
index 7f6e26b931dc4d8b1e37f7340e44044eef46d613..4c4514981cd20ac991ee9b02764e576bd9e8283e 100644 (file)
@@ -154,10 +154,12 @@ signals:
   /// \param theEnabled the state value
   void setApplyEnabled(const bool theEnabled);
 
+public: // TEMPORARY, it should be protected and be performed automatically
   /// Emits nestedStateChange for operations with an information about validity of the operation
   /// \param theOperation the sent operation. If it is NULL, all operations in the stack are sent.
   void updateApplyOfOperations(ModuleBase_Operation* theOperation = 0);
 
+protected: // TEMPORARY
   /// Commits the current operatin if it is valid
   bool commitOperation();
 
index e08bae76c1f1e8c7bd3a758ceada5fde9bc86812..a66f445985eee738a49c90c4f3aa82fdfa00345f 100644 (file)
@@ -663,6 +663,8 @@ void XGUI_Workshop::onUndo(int theTimes)
   for (int i = 0; i < theTimes; ++i) {
     aMgr->undo();
   }
+
+  operationMgr()->updateApplyOfOperations();
   updateCommandStatus();
 }
 
@@ -686,6 +688,7 @@ void XGUI_Workshop::onRedo(int theTimes)
   for (int i = 0; i < theTimes; ++i) {
     aMgr->redo();
   }
+  operationMgr()->updateApplyOfOperations();
   updateCommandStatus();
 
   // unblock the viewer update functionality and make update on purpose
@@ -1038,6 +1041,7 @@ void XGUI_Workshop::deleteObjects()
   if (deleteFeatures(anObjects, anIgnoredFeatures, aDesktop, true)) {
     myDisplayer->updateViewer();
     aMgr->finishOperation();
+    operationMgr()->updateApplyOfOperations();
     updateCommandStatus();
   }
   else {