]> SALOME platform Git repositories - modules/shaper.git/commitdiff
Salome HOME
refs #176: The extrusion operation is available even if no part is active
authornds <natalia.donis@opencascade.com>
Tue, 28 Oct 2014 07:53:26 +0000 (10:53 +0300)
committernds <natalia.donis@opencascade.com>
Tue, 28 Oct 2014 07:53:26 +0000 (10:53 +0300)
The document kind is saved in the NewGeom module for each action.

src/NewGeom/NewGeom_Module.cpp
src/NewGeom/NewGeom_Module.h
src/XGUI/XGUI_ActionsMgr.cpp
src/XGUI/XGUI_SalomeConnector.h
src/XGUI/XGUI_Workshop.cpp

index dae250cc3290d778e64485c4169fcf3e4c640c72..6bb769fdafa20b1bfe402eca040e8418232c6361 100644 (file)
@@ -342,6 +342,21 @@ QStringList NewGeom_Module::nestedActions(const QString& theId) const
   return QStringList();
 }
 
+//******************************************************
+void NewGeom_Module::setDocumentKind(const QString& theId, const QString& theKind)
+{
+  myDocumentType[theId] = theKind;
+}
+
+//******************************************************
+QString NewGeom_Module::documentKind(const QString& theId) const
+{
+  if (myDocumentType.contains(theId))
+    return myDocumentType[theId];
+  return QString();
+
+}
+
 //******************************************************
 void NewGeom_Module::selectionChanged()
 {
index eab0275afc184cf369ae5b485ee49ee6274fd0d0..11a2e10355d209d230d91c66fc519d26a77c8779 100644 (file)
@@ -58,6 +58,14 @@ Q_OBJECT
   //! Returns list of nested actions according to the given command ID
   virtual QStringList nestedActions(const QString& theId) const;
 
+  //! Set the document kind of the action by the given command Id
+  //! \param theId - the command ID
+  //! \param theKind - the document kind
+  virtual void setDocumentKind(const QString& theId, const QString& theKind);
+
+  //! Returns the document kind of the action by the given command ID
+  virtual QString documentKind(const QString& theId) const;
+
   //! Returns interface to Salome viewer
   virtual ModuleBase_IViewer* viewer() const
   {
@@ -102,6 +110,7 @@ Q_OBJECT
   NewGeom_SalomeViewer* myProxyViewer;
 
   QMap<QString, QStringList> myNestedActions;
+  QMap<QString, QString> myDocumentType;
 
   bool myIsOpened;
   bool myIsStorePositions;
index c3a35fe7cbc534739d8db3a16a52ed3ed00ccef4..081ab537f9c7a6ab02e2b24ab4873b78388813f9 100644 (file)
@@ -129,14 +129,22 @@ void XGUI_ActionsMgr::updateByDocumentKind()
 {
   std::string aStdDocKind = ModelAPI_Session::get()->activeDocument()->kind();
   QString aDocKind = QString::fromStdString(aStdDocKind);
+  XGUI_Workshop* aWorkshop = static_cast<XGUI_Workshop*>(parent());
   foreach(QAction* eachAction, myActions.values()) {
     XGUI_Command* aCmd = dynamic_cast<XGUI_Command*>(eachAction);
+    QString aCmdDocKind;
     if(aCmd) {
-      QString aCmdDocKind = aCmd->documentKind();
-      if(!aCmdDocKind.isEmpty() && aCmdDocKind != aDocKind) {
-        eachAction->setEnabled(false);
+      aCmdDocKind = aCmd->documentKind();
+    }
+    else {
+      QString aId = eachAction->data().toString();
+      if (!aId.isEmpty()) {
+        aCmdDocKind = aWorkshop->salomeConnector()->documentKind(aId);
       }
     }
+    if(!aCmdDocKind.isEmpty() && aCmdDocKind != aDocKind) {
+      eachAction->setEnabled(false);
+    }
   }
 }
 
index e4a0276dbf2f728bb19a93653407966d8a26a7c8..0c36dada2d5113a860c4ca6e388abb3b0bd2a4f5 100644 (file)
@@ -67,6 +67,14 @@ class XGUI_EXPORT XGUI_SalomeConnector
   //! Returns list of nested actions according to the given command ID
   virtual QStringList nestedActions(const QString& theId) const = 0;
 
+  //! Set the document kind of the action by the given command Id
+  //! \param theId - the command ID
+  //! \param theKind - the document kind
+  virtual void setDocumentKind(const QString& theId, const QString& theKind) = 0;
+
+  //! Returns the document kind of the action by the given command ID
+  virtual QString documentKind(const QString& theId) const = 0;
+
   //! Returns interface to Salome viewer
   virtual ModuleBase_IViewer* viewer() const = 0;
 
index 8a60b2e4a264fe0e42a24eba2018206e49b194f3..6fd3bd0f3b02ab2d7175a6451fb563be63a8c845 100644 (file)
@@ -585,6 +585,8 @@ void XGUI_Workshop::addFeature(const boost::shared_ptr<Config_FeatureMessage>& t
                                                      QKeySequence(),
                                                      isUsePropPanel);
     salomeConnector()->setNestedActions(aFeatureId, aNestedFeatures.split(" ", QString::SkipEmptyParts));
+    salomeConnector()->setDocumentKind(aFeatureId, QString::fromStdString(theMessage->documentKind()));
+
     myActionsMgr->addCommand(aAction);
     myModule->featureCreated(aAction);
   } else {