]> SALOME platform Git repositories - modules/shaper.git/commitdiff
Salome HOME
"Export to NewGeom" enabled only in SALOME mode.
authorsbh <sergey.belash@opencascade.com>
Fri, 26 Dec 2014 13:40:58 +0000 (16:40 +0300)
committersbh <sergey.belash@opencascade.com>
Fri, 26 Dec 2014 13:40:58 +0000 (16:40 +0300)
src/Config/Config_Common.cpp
src/Config/Config_Common.h
src/Config/Config_Keywords.h
src/Config/Config_ModuleReader.cpp
src/Config/Config_ModuleReader.h
src/Config/plugins.xml
src/ConnectorPlugin/plugin-Connector.xml
src/PartSet/PartSet_icons.qrc
src/PartSet/icons/geom_export.png [new file with mode: 0644]

index 634a4337ff73b7c0eb0c92d9eedf9581eece9798..2da152dccd3c9ea4271fb4066786e624f68c62af 100644 (file)
@@ -130,8 +130,7 @@ std::string getProperty(xmlNodePtr theNode, const char* thePropName)
 \r
 bool getBooleanAttribute(xmlNodePtr theNode, const char* theAttributeName, bool theDefault)\r
 {\r
-  std::string prop = getProperty(theNode, theAttributeName);\r
-  std::transform(prop.begin(), prop.end(), prop.begin(), ::tolower);\r
+  std::string prop = normalize(getProperty(theNode, theAttributeName));\r
   bool result = theDefault;\r
   if (prop == "true" || prop == "1") {\r
     result = true;\r
@@ -140,3 +139,17 @@ bool getBooleanAttribute(xmlNodePtr theNode, const char* theAttributeName, bool
   }\r
   return result;\r
 }\r
+\r
+CONFIG_EXPORT std::string normalize(const char* theString)\r
+{\r
+  if (!theString)\r
+    return std::string();\r
+  return normalize(std::string(theString));\r
+}\r
+\r
+CONFIG_EXPORT std::string normalize(const std::string& theString)\r
+{\r
+  std::string result = theString;\r
+  std::transform(result.begin(), result.end(), result.begin(), ::tolower);\r
+  return result;\r
+}\r
index 05e2024fd2d049eee678883a1fd34b9d6da8c4dd..a2cc7884378b87a13006242531dc20f146aa88fb 100644 (file)
@@ -93,4 +93,11 @@ CONFIG_EXPORT bool getBooleanAttribute(xmlNodePtr theNode,
                                        const char* theAttributeName,
                                        bool theDefault);
 
+/*
+ * Returns normalized (lower case) version of string.
+ * Should be used for case insensitive string matching.
+ */
+CONFIG_EXPORT std::string normalize(const char* theString);
+CONFIG_EXPORT std::string normalize(const std::string& theString);
+
 #endif
index bc9f4e419bae005781f5767e4311b8ba6526534d..9fe94e769dc6cbd07a3c6da72937277dcafa1c6f 100644 (file)
@@ -84,5 +84,11 @@ const static char* PLUGINS_MODULE = "module";
 const static char* PLUGIN_CONFIG = "configuration";
 const static char* PLUGIN_LIBRARY = "library";
 const static char* PLUGIN_SCRIPT = "script";
+const static char* PLUGIN_PLATFORM = "platform";
+
+const static char* PLUGIN_PLATFORM_SALOME = "salome";
+const static char* PLUGIN_PLATFORM_NEWGEOM = "openparts";
+
+
 
 #endif /* CONFIG_KEYWORDS_H_ */
index 21925af599b1b91fca64131371d931ed98ad6443..d0da80ba0a8f0914a27ea7baa8706096f209f066 100644 (file)
 
 //Necessary for cerr
 #include <iostream>
+#include <algorithm>
 
 #ifdef WIN32
 #include <windows.h>
+#pragma warning(disable : 4996) // for getenv
 #else
 #include <dlfcn.h>
 #endif
@@ -34,6 +36,13 @@ Config_ModuleReader::Config_ModuleReader(const char* theEventGenerated)
     : Config_XMLReader(PLUGIN_FILE),
       myEventGenerated(theEventGenerated)
 {
+  myHaveSalome = false;
+  char* anEnv = getenv("SALOME_ROOT_DIR");
+  std::string value = normalize(anEnv);
+  if (!value.empty()) {
+    myHaveSalome = true;
+  }
+
 }
 
 Config_ModuleReader::~Config_ModuleReader()
@@ -61,6 +70,9 @@ std::string Config_ModuleReader::getModuleName()
 void Config_ModuleReader::processNode(xmlNodePtr theNode)
 {
   if (isNode(theNode, NODE_PLUGIN, NULL)) {
+    bool isAvailable = isAvaliableOnThisPlatform(getProperty(theNode, PLUGIN_PLATFORM));
+    if (!isAvailable)
+      return;
     std::string aPluginConf = getProperty(theNode, PLUGIN_CONFIG);
     std::string aPluginLibrary = getProperty(theNode, PLUGIN_LIBRARY);
     std::string aPluginScript = getProperty(theNode, PLUGIN_SCRIPT);
@@ -111,8 +123,8 @@ std::string Config_ModuleReader::addPlugin(const std::string& aPluginLibrary,
   }
   if(!aPluginName.empty()) {
     myPluginTypes[aPluginName] = aType;
-
   }
+
   return aPluginName;
 }
 
@@ -134,6 +146,29 @@ void Config_ModuleReader::loadPlugin(const std::string thePluginName)
   }
 }
 
+bool Config_ModuleReader::isAvaliableOnThisPlatform(const std::string& thePluginPlatform)
+{
+  bool result = true;
+  PluginPlatform aPlatform = All;
+  std::string aPlatformName = normalize(thePluginPlatform) ;
+  if (aPlatformName == PLUGIN_PLATFORM_SALOME) {
+    aPlatform = Salome;
+  } else if (aPlatformName == PLUGIN_PLATFORM_NEWGEOM) {
+    aPlatform = OpenParts;
+  } else if (!thePluginPlatform.empty()) {
+    Events_Error::send("Unknown platform: " + thePluginPlatform);
+  }
+  if (aPlatform == All) {
+    result = true;
+  } else if (myHaveSalome) {
+    result = aPlatform == Salome;
+  } else {
+    result = aPlatform == OpenParts;
+  }
+  return result;
+
+}
+
 void Config_ModuleReader::loadScript(const std::string theFileName)
 {
   /* aquire python thread */
index 2281eb5cd33910e46bd16949e25b8b8b7afe6f7e..c32eb37d96f566b537068a45f614dbef66e513e9 100644 (file)
@@ -24,6 +24,11 @@ class Config_ModuleReader : public Config_XMLReader
     Intrenal = 1,
     Python = 2
   };
+  enum PluginPlatform {
+    All = 0,
+    OpenParts = 1,
+    Salome = 2
+  };
 
  public:
   CONFIG_EXPORT Config_ModuleReader(const char* theEventGenerated = 0);
@@ -43,6 +48,7 @@ class Config_ModuleReader : public Config_XMLReader
   void processNode(xmlNodePtr aNode);
   bool processChildren(xmlNodePtr aNode);
 
+  bool isAvaliableOnThisPlatform(const std::string& thePluginPlatform);
   std::list<std::string> importPlugin(const std::string& thePluginLibrary,
                                       const std::string& thePluginFile);
   std::string addPlugin(const std::string& aPluginLibrary,
@@ -53,6 +59,7 @@ class Config_ModuleReader : public Config_XMLReader
   std::map<std::string, std::string> myFeaturesInFiles;
   static std::map<std::string, PluginType> myPluginTypes;
   const char* myEventGenerated;
+  bool myHaveSalome;
 
 };
 
index 00f45dba9e9c5d1a49d53e88c56292926a490c36..0f4a255863c57a284c85359a9f0025f3b850b54f 100644 (file)
@@ -6,7 +6,7 @@
   <plugin library="ConstructionPlugin" configuration="plugin-Construction.xml"/>
   <plugin library="FeaturesPlugin" configuration="plugin-Features.xml"/>
   <plugin library="ExchangePlugin" configuration="plugin-Exchange.xml"/>
-  <plugin script="ConnectorPlugin" configuration="plugin-Connector.xml"/>
+  <plugin script="ConnectorPlugin" configuration="plugin-Connector.xml" platform="Salome"/>
   <plugin library="SketchSolver"/>
   <plugin library="GeomValidators"/>
   <plugin library="DFBrowser" internal="true"/>
index 2ba73b20330f1ba8a84f9565c96d9e67e16a8d53..638d4ecb74bfcc5949b60c7b486abab6ceaeac9a 100644 (file)
@@ -5,7 +5,7 @@
         id="ExportToGEOM"
         title="Export to GEOM"
         tooltip="Exports all bodies into GEOM module"
-        icon=":pictures/part_ico.png"/>
+        icon=":icons/geom_export.png"/>
     </group>
   </workbench>
 </plugin>
\ No newline at end of file
index b0bffcc5ae59cd015c706a1ed2578748543181fb..796ec88ef9ccfdc1f81f2ec25c7355ab86cc9f95 100644 (file)
@@ -28,5 +28,6 @@
      <file>icons/shape_group.png</file>
      <file>icons/fixed.png</file>
      <file>icons/placement.png</file>
+     <file>icons/geom_export.png</file>
  </qresource>
  </RCC>
diff --git a/src/PartSet/icons/geom_export.png b/src/PartSet/icons/geom_export.png
new file mode 100644 (file)
index 0000000..07ec5dd
Binary files /dev/null and b/src/PartSet/icons/geom_export.png differ