From: caremoli Date: Fri, 9 Apr 2010 17:24:34 +0000 (+0000) Subject: CCAR: remove geom_pluginsmanager.py now uses salome_pluginsmanager.py X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;h=f078b7f5de802b4da0afda095095b1eda4c74496;p=modules%2Fgeom.git CCAR: remove geom_pluginsmanager.py now uses salome_pluginsmanager.py --- diff --git a/src/GEOMGUI/GeometryGUI.cxx b/src/GEOMGUI/GeometryGUI.cxx index bd04b4191..5d9f7c09d 100644 --- a/src/GEOMGUI/GeometryGUI.cxx +++ b/src/GEOMGUI/GeometryGUI.cxx @@ -1101,12 +1101,12 @@ bool GeometryGUI::activateModule( SUIT_Study* study ) // import Python module that manages GEOM plugins (need to be here because SalomePyQt API uses active module) PyGILState_STATE gstate = PyGILState_Ensure(); - PyObject* pluginsmanager=PyImport_ImportModule((char*)"geom_pluginsmanager"); + PyObject* pluginsmanager=PyImport_ImportModule((char*)"salome_pluginsmanager"); if(pluginsmanager==NULL) PyErr_Print(); else { - PyObject* result=PyObject_CallMethod( pluginsmanager, (char*)"initialize", (char*)""); + PyObject* result=PyObject_CallMethod( pluginsmanager, (char*)"initialize", (char*)"isss",1,"geom","New Entity","Other"); if(result==NULL) PyErr_Print(); Py_XDECREF(result); diff --git a/src/GEOMGUI/Makefile.am b/src/GEOMGUI/Makefile.am index 3ec76948c..331483c78 100644 --- a/src/GEOMGUI/Makefile.am +++ b/src/GEOMGUI/Makefile.am @@ -29,8 +29,6 @@ include $(top_srcdir)/adm_local/unix/make_common_starter.am # Libraries targets lib_LTLIBRARIES = libGEOM.la -salomepython_PYTHON = geom_pluginsmanager.py - # header files salomeinclude_HEADERS = \ GeometryGUI.h \ diff --git a/src/GEOMGUI/geom_pluginsmanager.py b/src/GEOMGUI/geom_pluginsmanager.py deleted file mode 100644 index 7120fcd65..000000000 --- a/src/GEOMGUI/geom_pluginsmanager.py +++ /dev/null @@ -1,171 +0,0 @@ -""" -This module is imported from C++ (GeometryGUI.cxx) -and initialized (call to initialize function) - -A plugins manager is created at import (singleton object). - -The plugins manager creates a submenu Plugins in the "New Entity" menu. - -The plugins manager searches all files named geom_plugins.py in special directories and executes them. - -The directories are : -- $HOME/.salome/Plugins -- $HOME/$APPLI/Plugins -- the directory where this file is installed -- a list of directories given by SALOME_PLUGINS_PATH environment variable (paths separated by ":") - -These files should contain python code that register functions into the plugins manager. - -geom_plugins.py example:: - - import geom_pluginsmanager - - def about(context): - from PyQt4.QtGui import QMessageBox - QMessageBox.about(None, "About GEOM pluginmanager", "GEOM plugins manager in GEOM module ") - - geom_pluginsmanager.AddFunction('AboutGEOM','About GEOM plugins manager',about) - -First import the python module geom_pluginsmanager -Second write a function with one argument context (it's an object with 3 attributes) -Third register the function with a call to AddFunction (entry in menu plugins, tooltip, function) - -context attributes: -- sg : the SALOME Swig interface -- studyId : the SALOME studyId that must be used to execute the plugin -- study : the SALOME study object that must be used to execute the plugin - -""" - -import os,sys,traceback -from PyQt4 import QtGui -from PyQt4 import QtCore - -import salome - -SEP=":" -if sys.platform == "win32": - SEP = ";" - -# Get SALOME PyQt interface -import SalomePyQt -sgPyQt = SalomePyQt.SalomePyQt() - -# Get SALOME Swig interface -import libSALOME_Swig -sg = libSALOME_Swig.SALOMEGUI_Swig() - -def initialize(): - plugins.activate() - -class Context: - def __init__(self,sg): - self.sg=sg - self.studyId=salome.sg.getActiveStudyId() - self.study= salome.myStudyManager.GetStudyByID(self.studyId) - -class Plugins: - def __init__(self): - self.registry={} - self.handlers={} - self.lasttime=0 - self.plugindirs=[] - self.plugins_files=[] - - # USER plugins directory - user_dir = os.path.expanduser("~/.salome/Plugins") - self.plugindirs.append(user_dir) - - # APPLI plugins directory - appli=os.getenv("APPLI") - if appli: - appli_dir=os.path.join(os.path.expanduser("~"),appli,"Plugins") - self.plugindirs.append(appli_dir) - - #SALOME_PLUGINS_PATH environment variable (list of directories separated by ":") - pluginspath=os.getenv("SALOME_PLUGINS_PATH") - if pluginspath: - for directory in pluginspath.split(SEP): - self.plugindirs.append(directory) - - #Add also the directory GEOMGUI - self.plugindirs.append(os.path.dirname(__file__)) - - a=QtGui.QAction("Plugins",sgPyQt.getPopupMenu("New Entity")) - self.menu=QtGui.QMenu("Plugins",sgPyQt.getPopupMenu("New Entity")) - a.setMenu(self.menu) - mid=sgPyQt.createMenu(a,"New Entity") - self.menu.connect(self.menu,QtCore.SIGNAL("aboutToShow()"),self.importPlugins) - - def AddFunction(self,name,description,script,script_type=None): - """ Add a plugin function - """ - self.registry[name]=script,description,script_type - - def handler(obj=self,script=script): - try: - script(Context(sgPyQt)) - except: - s=traceback.format_exc() - QtGui.QMessageBox.warning(None,"Exception occured",s) - - self.handlers[name]=handler - - def importPlugins(self): - """Import the geom_plugins module that contains plugins definition """ - if self.lasttime ==0: - studyId=sg.getActiveStudyId() - salome.salome_init(embedded=1) - - lasttime=0 - - plugins_files=[] - for directory in self.plugindirs: - plugins_file = os.path.join(directory,"geom_plugins.py") - if os.path.isfile(plugins_file): - plugins_files.append((directory,plugins_file)) - lasttime=max(lasttime,os.path.getmtime(plugins_file)) - - plugins_files.sort() - - if not plugins_files: - self.registry.clear() - self.handlers.clear() - self.lasttime=0 - self.menu.clear() - return - - if self.plugins_files != plugins_files or lasttime > self.lasttime: - self.registry.clear() - self.handlers.clear() - self.lasttime=lasttime - for directory,salome_plugins_file in plugins_files: - if directory not in sys.path: - sys.path.insert(0,directory) - try: - execfile(salome_plugins_file,globals(),{}) - except: - print "Error while loading plugins from file:",salome_plugins_file - traceback.print_exc() - - self.updateMenu() - - def updateMenu(self): - """Update the Plugins menu""" - self.menu.clear() - for name,handler in self.handlers.items(): - act=self.menu.addAction(name,handler) - - def activate(self): - """Add the Plugins menu to the specified menu""" - - def deactivate(self): - """Remove the Plugins menu from Tools menu (not implemented)""" - -plugins=Plugins() - -def AddFunction(name,description,script,script_type=None): - """ Add a plugin function - Called by a user to register a function (script) - """ - return plugins.AddFunction(name,description,script,script_type) diff --git a/src/GEOM_SWIG/Makefile.am b/src/GEOM_SWIG/Makefile.am index 6cfc0eb64..11862eb9a 100644 --- a/src/GEOM_SWIG/Makefile.am +++ b/src/GEOM_SWIG/Makefile.am @@ -35,8 +35,6 @@ include $(top_srcdir)/adm_local/unix/make_common_starter.am # =============================================================== # -salomepython_PYTHON=geom_plugins.py - # Scripts to be installed. dist_salomescript_DATA = \ geompy.py \ diff --git a/src/GEOM_SWIG/geom_plugins.py b/src/GEOM_SWIG/geom_plugins.py deleted file mode 100644 index 33a40e8b7..000000000 --- a/src/GEOM_SWIG/geom_plugins.py +++ /dev/null @@ -1,9 +0,0 @@ - -import geom_pluginsmanager - -def about(context): - from PyQt4.QtGui import QMessageBox - QMessageBox.about(None, "About GEOM pluginmanager", """GEOM plugins manager in GEOM module """) - -geom_pluginsmanager.AddFunction('AboutGEOM','About GEOM plugins manager',about) -