]> SALOME platform Git repositories - modules/shaper.git/commitdiff
Salome HOME
Issue #1303 Reordering menu items: Sketch action enable state
authornds <nds@opencascade.com>
Tue, 19 Apr 2016 10:20:49 +0000 (13:20 +0300)
committernds <nds@opencascade.com>
Tue, 19 Apr 2016 10:21:25 +0000 (13:21 +0300)
src/SHAPERGUI/SHAPERGUI.cpp
src/SHAPERGUI/SHAPERGUI.h
src/SHAPERGUI/SHAPERGUI_NestedButton.cpp
src/XGUI/XGUI_ActionsMgr.cpp
src/XGUI/XGUI_ActionsMgr.h
src/XGUI/XGUI_MenuMgr.cpp
src/XGUI/XGUI_SalomeConnector.h

index 8af02ae2d3729c459dde3c3deddcacd31c2ea321..78cdcb08d1b3bb7044b7a6bb3bb924ad8c2b4936 100644 (file)
@@ -375,8 +375,7 @@ CAM_DataModel* SHAPERGUI::createDataModel()
 }
 
 QAction* SHAPERGUI::addFeature(const QString& theWBName, const ActionInfo& theInfo,
-                               const bool isAddSeparator,
-                               bool isMenuAction, bool isToolAction)
+                               const bool isAddSeparator)
 {
   return addFeature(theWBName,
                     theInfo.id,
@@ -385,15 +384,14 @@ QAction* SHAPERGUI::addFeature(const QString& theWBName, const ActionInfo& theIn
                     theInfo.icon,
                     theInfo.shortcut,
                     theInfo.checkable,
-                    isAddSeparator, isMenuAction, isToolAction);
+                    isAddSeparator);
 }
 
 //******************************************************
 QAction* SHAPERGUI::addFeature(const QString& theWBName, const QString& theId,
                                const QString& theTitle, const QString& theTip,
                                const QIcon& theIcon, const QKeySequence& theKeys,
-                               bool isCheckable, const bool isAddSeparator,
-                               bool isMenuAction, bool isToolAction)
+                               bool isCheckable, const bool isAddSeparator)
 {
   static QString aLastTool = "";
   static int aNb = 0;
@@ -418,18 +416,16 @@ QAction* SHAPERGUI::addFeature(const QString& theWBName, const QString& theId,
                                   isCheckable);
   aAction->setData(theId);
 
-  if (isMenuAction) {
-    int aWBMenu = createMenu(theWBName, -1, -1, 50/*10-Window, 1000 - Help*/);
-    int aItemId = createMenu(aId, aWBMenu);
-    if (isAddSeparator)
-      createMenu(separator(), aWBMenu);
-  }
-  if (isToolAction) {
-    int aWBTool = createTool(theWBName, theWBName);
-    int aToolId = createTool(aId, aWBTool);
-    if (isAddSeparator)
-      createTool(separator(), aWBTool);
-  }
+  int aWBMenu = createMenu(theWBName, -1, -1, 50/*10-Window, 1000 - Help*/);
+  int aItemId = createMenu(aId, aWBMenu);
+  if (isAddSeparator)
+    createMenu(separator(), aWBMenu);
+
+  int aWBTool = createTool(theWBName, theWBName);
+  int aToolId = createTool(aId, aWBTool);
+  if (isAddSeparator)
+    createTool(separator(), aWBTool);
+
   return aAction;
 }
 
@@ -440,10 +436,8 @@ bool SHAPERGUI::isFeatureOfNested(const QAction* theAction)
 
 QAction* SHAPERGUI::addFeatureOfNested(const QString& theWBName,
                                        const ActionInfo& theInfo,
-                                       const QList<QAction*>& theNestedActions,
-                                       bool isMenuAction, bool isToolAction)
+                                       const QList<QAction*>& theNestedActions)
 {
-  int aId = myActionsList.size();
   myActionsList.append(theInfo.id);
   SUIT_Desktop* aDesk = application()->desktop();
   SHAPERGUI_NestedButton* anAction = new SHAPERGUI_NestedButton(aDesk, theNestedActions);
@@ -458,14 +452,12 @@ QAction* SHAPERGUI::addFeatureOfNested(const QString& theWBName,
   anAction->setShortcut(theInfo.shortcut);
   anAction->setFont(theInfo.font);
 
-  if (isMenuAction) {
-    int aWBMenu = createMenu(theWBName, -1, -1, 50);
-    int aItemId = createMenu(anAction, aWBMenu);
-  }
-  if (isToolAction) {
-    int aWBTool = createTool(theWBName, theWBName);
-    int aToolId = createTool(anAction, aWBTool);
-  }
+  int aWBMenu = createMenu(theWBName, -1, -1, 50);
+  int aItemId = createMenu(anAction, aWBMenu);
+
+  int aWBTool = createTool(theWBName, theWBName);
+  int aToolId = createTool(anAction, aWBTool);
+
   return anAction;
 }
 
@@ -524,13 +516,8 @@ QList<QAction*> SHAPERGUI::commandList() const
     if (aCmd && myActionsList.contains(aCmd->data().toString()))
       aActions.append(aCmd);
   }
-  return aActions;
-}
 
-//******************************************************
-QStringList SHAPERGUI::commandIdList() const
-{
-  return myActionsList;
+  return aActions;
 }
 
 //******************************************************
@@ -539,25 +526,6 @@ QMainWindow* SHAPERGUI::desktop() const
   return application()->desktop();
 }
 
-//******************************************************
-QString SHAPERGUI::commandId(const QAction* theCmd) const
-{
-  int aId = actionId(theCmd);
-  if (aId < myActionsList.size())
-    return myActionsList[aId];
-  return QString();
-}
-
-//******************************************************
-QAction* SHAPERGUI::command(const QString& theId) const
-{
-  int aId = myActionsList.indexOf(theId);
-  if ((aId != -1) && (aId < myActionsList.size())) {
-    return action(aId);
-  }
-  return 0;
-}
-
 void SHAPERGUI::setFeatureInfo(const QString& theFeatureId,
                                const std::shared_ptr<Config_FeatureMessage>& theMessage)
 {
index 7e1ff0b1ef7a547574876a2b0472a37f6bbe09b4..36e0f1adedb0a381f01a503c7a97b977e218053b 100644 (file)
@@ -52,13 +52,11 @@ Q_OBJECT
   virtual QAction* addFeature(const QString& theWBName, const QString& theId,
                               const QString& theTitle, const QString& theTip, const QIcon& theIcon,
                               const QKeySequence& theKeys = QKeySequence(),
-                              bool isCheckable = false, const bool isAddSeparator = false,
-                              bool isMenuAction = true, bool isToolAction = true);
+                              bool isCheckable = false, const bool isAddSeparator = false);
 
   //! Add feature (QAction) in the \a theWBName toolbar with given \a theInfo about action
   virtual QAction* addFeature(const QString& theWBName,
-                              const ActionInfo& theInfo, const bool isAddSeparator,
-                              bool isMenuAction = true, bool isToolAction = true);
+                              const ActionInfo& theInfo, const bool isAddSeparator);
 
   /// Add a nested feature
   /// \param theWBName a workbench name
@@ -66,8 +64,7 @@ Q_OBJECT
   /// \param theNestedActions a list of nested actions
   virtual QAction* addFeatureOfNested(const QString& theWBName,
                                     const ActionInfo& theInfo,
-                                    const QList<QAction*>& theNestedActions,
-                                    bool isMenuAction = true, bool isToolAction = true);
+                                    const QList<QAction*>& theNestedActions);
 
   //! Returns true if the feature action is a nested action, in other words,
   //! it is created by addNestedFeature().
@@ -94,11 +91,7 @@ Q_OBJECT
 
   virtual QMainWindow* desktop() const;
 
-  virtual QString commandId(const QAction* theCmd) const;
-
-  virtual QAction* command(const QString& theId) const;
-
-    //! Stores XML information for the feature kind
+  //! Stores XML information for the feature kind
   //! \param theFeatureId a feature kind
   //! \param theMessage a container of the feature XML properties
   virtual void setFeatureInfo(const QString& theFeatureId,
@@ -118,9 +111,6 @@ Q_OBJECT
   //! Returns list of defined actions (just by SHAPER module)
   virtual QList<QAction*> commandList() const;
 
-  //! Returns list of Ids of defined actions (just by SHAPER module)
-  virtual QStringList commandIdList() const;
-
   /// Redefinition of virtual function. 
   /// \param theClient name of pop-up client
   /// \param theMenu popup menu instance
@@ -189,6 +179,9 @@ Q_OBJECT
   /// List of registered actions
   QStringList myActionsList;
 
+  /// List of registered nested actions
+  QStringList myNestedActionsList;
+
   /// Reference to workshop
   XGUI_Workshop* myWorkshop;
 
index 0ce9e0133694861dd1a8924ac3ce54101817767c..02753ac05c74282118c423a6887f7413904b49cb 100644 (file)
@@ -11,6 +11,7 @@
 #include <QFrame>
 #include <QHBoxLayout>
 #include <QToolButton>
+#include <QToolBar>
 #include <QEvent>
 
 SHAPERGUI_NestedButton::SHAPERGUI_NestedButton(QObject* theParent,
@@ -43,6 +44,12 @@ void SHAPERGUI_NestedButton::showAdditionalButtons(bool isShow)
 
 QWidget * SHAPERGUI_NestedButton::createWidget(QWidget * theParent)
 {
+  // the action has widget only in tool bar, in menu bar, the default
+  // action presentation is shown
+  QToolBar* aToolBar = dynamic_cast<QToolBar*>(theParent);
+  if (!aToolBar)
+    return 0;
+
   myButtonFrame = new QFrame(theParent);
   QHBoxLayout* aBoxLay = new QHBoxLayout(myButtonFrame);
   aBoxLay->setContentsMargins(2, 0, 0, 0);
index 619302a9f8ba656e434472803708f573e8f58bd0..f1d5e49b15ddf7ab4de2dfc415746b13f76e4823 100644 (file)
@@ -97,7 +97,7 @@ bool XGUI_ActionsMgr::isNested(const QString& theId) const
 
 void XGUI_ActionsMgr::updateCommandsStatus()
 {
-  setAllEnabled(true);
+  setAllEnabled();
   XGUI_Selection* aSelection = myWorkshop->selector()->selection();
   if (aSelection->getSelected(ModuleBase_ISelection::Viewer).size() > 0)
     updateOnViewSelection();
@@ -281,10 +281,13 @@ ActionInfo XGUI_ActionsMgr::actionInfoById(const QString& theId)
   return aResult;
 }
 
-void XGUI_ActionsMgr::setAllEnabled(bool isEnabled)
+void XGUI_ActionsMgr::setAllEnabled()
 {
   foreach(QString eachAction, myActions.keys()) {
-    setActionEnabled(eachAction, isEnabled);
+    if (myActions.contains(eachAction)) {
+      QAction* aAction = myActions[eachAction];
+      aAction->setEnabled(true);
+    }
   }
 }
 
index d101a64cf7419552a623437175721f98e0984082..f1f4e80ca571c2203b6264128d33b71a33a9c3a3 100644 (file)
@@ -100,8 +100,8 @@ class XGUI_EXPORT XGUI_ActionsMgr : public QObject, public Events_Listener
   //! Updates actions according to current selection in the viewer
   void updateOnViewSelection();
   
-  //! Sets all actions to isEnabled state.
-  void setAllEnabled(bool isEnabled);
+  //! Sets all actions to enabled state.
+  void setAllEnabled();
   
   //! Sets all nested actions to isEnabled state for the command with given ID.
   //! If ID is empty - all nested actions will be affected.
index 6cbf91c1a97cb65be16c0d91be470d8b25af1414..9ee7ed9e972cb22cdf93c2ff6372327efa5709da 100755 (executable)
@@ -196,10 +196,7 @@ QAction* XGUI_MenuMgr::buildAction(const std::shared_ptr<Config_FeatureMessage>&
       aNestedActList << anAction;
     }
     anAction = aSalomeConnector->addFeatureOfNested(theWchName.c_str(), aFeatureInfo,
-                                                    aNestedActList, false, true);
-    QAction* aMenuAction = aSalomeConnector->addFeature(theWchName.c_str(), aFeatureInfo,
-                                                    aUseSeparator, true, false);
-    myWorkshop->module()->actionCreated(aMenuAction);
+                                                    aNestedActList);
   }
   else {
     //Issue #650: in the SALOME mode the tooltip should be same as text
index b607f73277641fb5d01b4a9efb1d0c98affb4076..4a4308c7860ce0cee7c51c4e560afb082b6a233b 100644 (file)
@@ -36,34 +36,25 @@ class XGUI_EXPORT XGUI_SalomeConnector
   //! \param isCheckable - is checkable or not
   //! \param theKeys - hot keys
   //! \param isAddSeparator boolean flag about adding separator after the action
-  //! \param isMenuAction boolean flag about adding the action to application menu bar
-  //! \param isToolAction boolean flag about adding the action to application tool bar
   //! returns created action
   virtual QAction* addFeature(const QString& theWBName, const QString& theId,
                               const QString& theTitle, const QString& theTip, const QIcon& theIcon,
-                              const QKeySequence& theKeys, bool isCheckable, const bool isAddSeparator,
-                              bool isMenuAction = true, bool isToolAction = true) = 0;
+                              const QKeySequence& theKeys, bool isCheckable, const bool isAddSeparator) = 0;
 
   //! Creates a feature (command) in SALOME desktop
   //! \param theWBName - name of toolbar (workbench)
   //! \param theInfo - information about action (icon, text, etc)
   //! \param isAddSeparator boolean flag about adding separator after the action
-  //! \param isMenuAction boolean flag about adding the action to application menu bar
-  //! \param isToolAction boolean flag about adding the action to application tool bar
   virtual QAction* addFeature(const QString& theWBName,
-                              const ActionInfo& theInfo, const bool isAddSeparator,
-                              bool isMenuAction = true, bool isToolAction = true) = 0;
+                              const ActionInfo& theInfo, const bool isAddSeparator) = 0;
 
   //! Creates a feature (command) in SALOME desktop
   //! \param theWBName - name of toolbar (workbench)
   //! \param theInfo - information about action (icon, text, etc)
   //! \param theNestedActions a list of nested actions
-  //! \param isMenuAction boolean flag about adding the action to application menu bar
-  //! \param isToolAction boolean flag about adding the action to application tool bar
   virtual QAction* addFeatureOfNested(const QString& theWBName,
                                       const ActionInfo& theInfo,
-                                      const QList<QAction*>& theNestedActions,
-                                      bool isMenuAction = true, bool isToolAction = true) = 0;
+                                      const QList<QAction*>& theNestedActions) = 0;
 
   //! Returns true if the feature action is a nested action, in other words,
   //! it is created by addFeatureOfNested().
@@ -102,18 +93,9 @@ class XGUI_EXPORT XGUI_SalomeConnector
   //! Returns desktop window of SALOME
   virtual QMainWindow* desktop() const = 0;
 
-  //! Returns command string Id by QAction instance
-  virtual QString commandId(const QAction* theCmd) const = 0;
-
-  //! Returns QAction instance by command string Id
-  virtual QAction* command(const QString& theId) const = 0;
-
   //! Returns list of defined actions (just by SHAPER module)
   virtual QList<QAction*> commandList() const = 0;
 
-  //! Returns list of Ids of defined actions (just by NewGeom module)
-  virtual QStringList commandIdList() const = 0;
-
   //! Stores XML information for the feature kind
   //! \param theFeatureId a feature kind
   //! \param theMessage a container of the feature XML properties