]> SALOME platform Git repositories - modules/smesh.git/commitdiff
Salome HOME
[EDF31137] : Modularize smesh python plugin
authorDUC ANH HOANG <dh77501n@dsp1043837>
Tue, 29 Oct 2024 13:58:06 +0000 (14:58 +0100)
committerDUC ANH HOANG <dh77501n@dsp1043837>
Fri, 8 Nov 2024 09:25:44 +0000 (10:25 +0100)
src/Tools/smesh_plugins.py

index fdf3c5b1fbc123b6a35004f2a88e4f2d541e1fc2..5b9194d5917fb2150751e3a6c2480518e636c2b6 100644 (file)
@@ -117,3 +117,28 @@ try:
 except Exception as e:
   salome_pluginsmanager.logger.info('ERROR: TopIIVolMesh plug-in is unavailable: {}'.format(e))
   pass
+
+import sys
+import importlib
+import importlib.util
+
+plugin_dirs = os.getenv("SMESH_PYPLUGIN_DIR").split(":")
+# reverse plugin_dirs list to call smesh python plugin in good order
+plugin_dirs.reverse()
+for plg_dir in plugin_dirs:
+  if os.path.exists(plg_dir):
+    sys.path.insert(0, plg_dir)
+    #for filename in sorted(
+    #        filter(lambda x: os.path.isfile(os.path.join(plg_dir, x)),
+    #        os.listdir(plg_dir))):
+    for filename in os.listdir(plg_dir):
+      if filename.endswith(".py"):
+          f = os.path.join(plg_dir, filename)
+          try:
+            module_name = os.path.splitext(os.path.basename(f))[0]
+            _specs = importlib.util.find_spec(module_name)
+            _module = importlib.util.module_from_spec(_specs)
+            _specs.loader.exec_module(_module)
+            _module.init()
+          except:
+            print("Can not load python plugin from {}".format(plg_dir))