Salome HOME
INT PAL 0052660: Plot2D Viewer: Plot2d_Curve can't be selected
[modules/gui.git] / src / CAM / CAM_Application.cxx
index 0f742ad8781eec026f6cf4d225f5e6f11bc229e9..e45d4a8cdf24950d56b0d38690062d21b45dd272 100755 (executable)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2012  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2015  CEA/DEN, EDF R&D, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@ -6,7 +6,7 @@
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
 // License as published by the Free Software Foundation; either
-// version 2.1 of the License.
+// version 2.1 of the License, or (at your option) any later version.
 //
 // This library is distributed in the hope that it will be useful,
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
@@ -44,6 +44,7 @@
 #endif
 
 #include <cstdio>
+#include <iostream>
 
 namespace
 {
@@ -384,7 +385,7 @@ CAM_Module* CAM_Application::loadModule( const QString& modName, const bool show
 */
 bool CAM_Application::activateModule( const QString& modName )
 {
-  if ( !modName.isEmpty() && !activeStudy() || myBlocked )
+  if ( (!modName.isEmpty() && !activeStudy()) || myBlocked )
     return false;
 
   // VSR 25/10/2011: prevent nested activation/deactivation
@@ -457,6 +458,67 @@ bool CAM_Application::activateModule( CAM_Module* mod )
   return true;
 }
 
+/*!
+  \brief Load module \a modName and activate its operation, corresponding to \a actionId.
+  This method is dedicated to run operations of some module from any other module.
+  \param modName module name
+  \param actionId is a numerical unique operation identifier
+  \return \c true in case of success and \c false otherwise
+*/
+bool CAM_Application::activateOperation( const QString& modName, int actionId )
+{
+  if (isModuleAccessible(modName)) {
+    CAM_Module* mod = loadModule(modName, false);
+    if (mod) {
+      addModule(mod);
+      return mod->activateOperation(actionId);
+    }
+  }
+  return false;
+}
+
+/*!
+  \brief Load module \a modName and activate its operation, corresponding to \a actionId.
+  This method is dedicated to run operations of some module from any other module.
+  \param modName module name
+  \param actionId is a string unique operation identifier
+  \return \c true in case of success and \c false otherwise
+*/
+bool CAM_Application::activateOperation( const QString& modName, const QString& actionId )
+{
+  if (isModuleAccessible(modName)) {
+    CAM_Module* mod = loadModule(modName, false);
+    if (mod) {
+      addModule(mod);
+      return mod->activateOperation(actionId);
+    }
+  }
+  return false;
+}
+
+/*!
+  \brief Load module \a modName and activate its operation,
+         corresponding to \a actionId and \a pluginName.
+  This method is dedicated to run operations of some module from any other module.
+  \param modName module name
+  \param actionId is a string unique operation identifier
+  \param pluginName is a name of a plugin where the operation is implemented
+  \return \c true in case of success and \c false otherwise
+*/
+bool CAM_Application::activateOperation( const QString& modName,
+                                         const QString& actionId,
+                                         const QString& pluginName )
+{
+  if (isModuleAccessible(modName)) {
+    CAM_Module* mod = loadModule(modName, false);
+    if (mod) {
+      addModule(mod);
+      return mod->activateOperation(actionId, pluginName);
+    }
+  }
+  return false;
+}
+
 /*!
   \brief Create new study.
   \return study object pointer