-# 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.
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::
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))
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:
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={}
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
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: