Salome HOME
add GUI preference for automatic loading of Light modules at study opening
[modules/gui.git] / src / SalomeApp / salome_pluginsmanager.py
index 90a592db45c85e09fa126459e9d27e39a425bd09..482d9d3ee7205ed1c67fc5809268e7b4cb8b2388 100644 (file)
@@ -1,4 +1,5 @@
-# Copyright (C) 2007-2014  CEA/DEN, EDF R&D, OPEN CASCADE
+# -*- coding: utf-8 -*-
+# Copyright (C) 2007-2015  CEA/DEN, EDF R&D, OPEN CASCADE
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
 
 """
 This module is imported from C++ SalomeApp_Application and initialized
-(call to initialize function with 4 parameters) module : 0 if it's
-plugins manager at the application level 1 if it is at the module
-level name : the name of the plugins manager. This name is used to
-build the name of the plugins files basemenuname : the name of the
-menu into we want to add the menu of the plugins ("Tools" for example)
-menuname : the name of plugins menu
+(call to initialize function with 4 parameters)
+module :       0 if it is plugins manager at the application level, 1 if it is at the module level
+name :         the name of the plugins manager. This name is used to build the name of the plugins files
+basemenuname : the name of the menu into we want to add the menu of the plugins ("Tools" for example)
+menuname :     the name of plugins menu
 
 A plugins manager is created when calling initialize.
 
@@ -54,8 +54,7 @@ AddFunction.  It is possible to customize this presentation by getting
 the entries list (salome_pluginsmanager.entries()) and modifying it in
 place. For example, you can do that :
 salome_pluginsmanager.entries().sort() to order them alphabetically or
-salome_pluginsmanager.entries().remove("a") to remove the entry named
-"a".
+salome_pluginsmanager.entries().remove("a") to remove the entry named "a".
 
 It is possible to put entries in submenus. You only need to give a
 name with / to the entry. for example::
@@ -111,9 +110,9 @@ def initialize(module,name,basemenuname,menuname):
     else:
       plugins[name]=[]
   if module:
-    studyId=sg.getActiveStudyId()
-    if plugins[name].has_key(studyId):return
-    plugins[name][studyId]=PluginsManager(module,name,basemenuname,menuname)
+    d=sgPyQt.getDesktop()
+    if plugins[name].has_key(d):return
+    plugins[name][d]=PluginsManager(module,name,basemenuname,menuname)
   else:
     plugins[name].append(PluginsManager(module,name,basemenuname,menuname))
 
@@ -125,13 +124,13 @@ class Context:
 
 def find_menu(smenu):
   lmenus=smenu.split("|")
-  main=lmenus.pop(0).strip()
+  main=lmenus.takeFirst().trimmed()
   menu=sgPyQt.getPopupMenu(main)
   return findMenu(lmenus,menu)
 
 def findMenu(lmenu,menu):
   if not lmenu:return menu
-  m=lmenu.pop(0).strip()
+  m=lmenu.takeFirst().trimmed()
   for a in menu.actions():
     if a.menu():
       if a.text() == m:
@@ -149,8 +148,8 @@ logger=Logger("PluginsManager") #,color=GREEN)
 class PluginsManager:
     def __init__(self,module,name,basemenuname,menuname):
         self.name=name
-        self.basemenuname=basemenuname
-        self.menuname=menuname
+        self.basemenuname=QtCore.QString.fromUtf8(basemenuname)
+        self.menuname=QtCore.QString.fromUtf8(menuname)
         self.module=module
         self.registry={}
         self.handlers={}
@@ -244,7 +243,7 @@ class PluginsManager:
           self.menu.clear()
           self.menu.menuAction().setVisible(False)
           return
-        elif self.lasttime ==0:
+        elif self.lasttime ==0 or salome.myStudy == None:
           salome.salome_init(embedded=1)
 
         lasttime=0
@@ -276,8 +275,10 @@ class PluginsManager:
           self.entries=[]
           self.lasttime=lasttime
           for directory,plugins_file in plugins_files:
+            logger.debug("look for python path: %s"%directory)
             if directory not in sys.path:
               sys.path.insert(0,directory)
+              logger.debug("The directory %s has been added to PYTHONPATH"%directory)
             try:
               execfile(plugins_file,globals(),{})
             except: