]> SALOME platform Git repositories - modules/shaper.git/commitdiff
Salome HOME
Issue #2566: Define option toolbar for features group.
authorvsv <vsv@opencascade.com>
Thu, 12 Jul 2018 10:52:02 +0000 (13:52 +0300)
committervsv <vsv@opencascade.com>
Thu, 12 Jul 2018 10:52:02 +0000 (13:52 +0300)
src/Config/Config_FeatureMessage.cpp
src/Config/Config_FeatureMessage.h
src/Config/Config_FeatureReader.cpp
src/Config/Config_Keywords.h
src/FeaturesPlugin/plugin-Features.xml
src/ModuleBase/ModuleBase_ActionInfo.cpp
src/ModuleBase/ModuleBase_ActionInfo.h

index c944bc6d4a0045231d48d2f7af8f758310ef9243..7220887d86fd39ee1150bf5fd50a47b5b5b56c38 100644 (file)
@@ -31,6 +31,7 @@ Config_FeatureMessage::Config_FeatureMessage(const Events_ID theId, const void*
 
   myGroupId = "";
   myWorkbenchId = "";
+  myToolBarId = "";
   myPluginLibrary = "";
 
   myInternal = false;
@@ -100,6 +101,16 @@ void Config_FeatureMessage::setGroupId(const std::string& groupId)
   myGroupId = groupId;
 }
 
+const std::string& Config_FeatureMessage::toolBarId() const
+{
+  return myToolBarId;
+}
+
+void Config_FeatureMessage::setToolBarId(const std::string& aId)
+{
+  myToolBarId = aId;
+}
+
 const std::string& Config_FeatureMessage::workbenchId() const
 {
   return myWorkbenchId;
index 4b6419f9e8e1d496a24b863d8e309dc9ed6900b7..1bd9ecff0d7e21f1845642bce7c5d845d65e7ae2 100644 (file)
@@ -45,6 +45,7 @@ class Config_FeatureMessage : public Events_Message
 
   std::string myGroupId;  ///<Id of feature's group
   std::string myWorkbenchId;  ///<Id of feature's workbench
+  std::string myToolBarId;  ///<Id of toolbar/ By default == myWorkbenchId
   std::string myDocumentKind;  ///< kind of the document of the workbench (all documents if empty)
   std::string myPluginLibrary;  ///<Name of feature's library
 
@@ -91,6 +92,8 @@ class Config_FeatureMessage : public Events_Message
   CONFIG_EXPORT const std::string& tooltip() const;
   /// Id of Feature's Group
   CONFIG_EXPORT const std::string& groupId() const;
+  /// Id of Feature's Toolbar
+  CONFIG_EXPORT const std::string& toolBarId() const;
   /// Id of Feature's Workbench
   CONFIG_EXPORT const std::string& workbenchId() const;
   /// Kind of a document which contains the feature
@@ -127,6 +130,8 @@ class Config_FeatureMessage : public Events_Message
   CONFIG_EXPORT void setTooltip(const std::string& tooltip);
   ///Set id of Feature's Group
   CONFIG_EXPORT void setGroupId(const std::string& groupId);
+  ///Set id of Feature's Group
+  CONFIG_EXPORT void setToolBarId(const std::string& aId);
   ///Set id of Feature's Workbench
   CONFIG_EXPORT void setWorkbenchId(const std::string& workbenchId);
   ///Set kind of a document which contains the feature
index 5d7e5c89ec78683bec76e2bc7a40d85b909ea83a..a340f89d551b4071211b1da90c3270bf197d93b0 100644 (file)
@@ -73,6 +73,7 @@ void Config_FeatureReader::processNode(xmlNodePtr theNode)
     //The m_last* variables always defined before fillFeature() call. XML is a tree.
   } else if (isNode(theNode, NODE_WORKBENCH, NODE_GROUP, NULL)) {
     storeAttribute(theNode, _ID);
+    storeAttribute(theNode, GROUP_TOOLBAR);
     storeAttribute(theNode, WORKBENCH_DOC, true);
   } else if (myIsProcessWidgets) {
     // widgets, like shape_selector or containers, like toolbox
@@ -180,11 +181,19 @@ void Config_FeatureReader::fillFeature(xmlNodePtr theFeatureNode,
   outFeatureMessage->setText(aText);
   std::string aToolTip = Config_Translator::translate(anId,
                                                       getProperty(theFeatureNode, FEATURE_TOOLTIP));
-  outFeatureMessage->setTooltip(aToolTip);
   outFeatureMessage->setIcon(getProperty(theFeatureNode, FEATURE_ICON));
   outFeatureMessage->setKeysequence(getProperty(theFeatureNode, FEATURE_KEYSEQUENCE));
-  outFeatureMessage->setGroupId(restoreAttribute(NODE_GROUP, _ID));
-  outFeatureMessage->setWorkbenchId(restoreAttribute(NODE_WORKBENCH, _ID));
+
+  std::string aGroupName = restoreAttribute(NODE_GROUP, _ID);
+  std::string aWBNName = restoreAttribute(NODE_WORKBENCH, _ID);
+  std::string isGroupToolbarId = restoreAttribute(NODE_GROUP, GROUP_TOOLBAR);
+  bool isGroupToolbar = false;
+  if (isGroupToolbarId.length() > 0)
+    isGroupToolbar = (isGroupToolbarId == "yes");
+  outFeatureMessage->setGroupId(aGroupName);
+  outFeatureMessage->setWorkbenchId(aWBNName);
+  outFeatureMessage->setToolBarId(isGroupToolbar ? aGroupName : aWBNName);
+
   // Get document kind of a feature, if empty set workbench's kind (might be empty too)
   std::string aDocKind = getProperty(theFeatureNode, FEATURE_DOC);
   if(aDocKind.empty()) {
index 938749424e99eefd2cbf64e33f4c34bf5e9240f2..545d738a28c0944d240d04a8bf9c17972b32d028 100644 (file)
@@ -71,6 +71,7 @@ const static char* WORKBENCH_DOC = "document";
 const static char* SOURCE_FILE = "path";
 // NODE_FEATURE properties
 const static char* FEATURE_TOOLTIP = "tooltip";
+const static char* GROUP_TOOLBAR = "toolbar";
 const static char* FEATURE_ICON = "icon";
 const static char* FEATURE_TEXT = "title";
 const static char* FEATURE_KEYSEQUENCE = "keysequence";
index b09cf282b0819a0fa28f5634dffc31db17a74715..6b466e29d779200d27f474e71b88b340d77fa239 100644 (file)
@@ -53,7 +53,7 @@ email : webmaster.salome@opencascade.com<mailto:webmaster.salome@opencascade.com
         <source path="pipe_widget.xml"/>
       </feature>
     </group>
-    <group id="Boolean">
+    <group id="Boolean" toolbar="yes">
       <feature id="Cut" title="Cut" tooltip="Perform boolean cut operation with objects" icon="icons/Features/bool_cut.png"
                auto_preview="false">
           <source path="boolean_widget.xml"/>
index 427b7d93e312eb4e0c8c50569ce585e348411f29..6c494850fcc51e4de5174cd8b3ab7487703e1c31 100644 (file)
@@ -72,6 +72,7 @@ void ModuleBase_ActionInfo::initFrom(std::shared_ptr<Config_FeatureMessage> theM
   }
   text = QString::fromUtf8(theMessage->text().c_str());
   toolTip = QString::fromUtf8(theMessage->tooltip().c_str());
+  toolBar = QString::fromStdString(theMessage->toolBarId());
   QString aShortcutStr = QString::fromStdString(theMessage->keysequence());
   if (!aShortcutStr.isEmpty()) {
     shortcut = QKeySequence(aShortcutStr);
index 15a081ae23f641c7bb62e24f68da4f83d65e1c13..347d1613705c9ccdba189f60a1b77ca5926be098 100644 (file)
@@ -49,6 +49,7 @@ struct MODULEBASE_EXPORT ModuleBase_ActionInfo
   QString iconText; //!< action's descriptive icon text
   QString iconFile; //!< path to icon's file. Can not be initialized from QAction
   QString toolTip; //!< action's tooltip
+  QString toolBar;  //!< A name of toolbar. By default = group of features name
   // QString statusTip;
   // QString whatsThis;
   QKeySequence shortcut; //!< action's primary shortcut key