Philipp Hörist pushed to branch master at gajim / gajim
Commits: a606d0ed by Philipp Hörist at 2017-02-19T18:13:10+01:00 Activate PluginInstaller in plugin window init
- - - - - 8e860561 by Philipp Hörist at 2017-02-23T17:56:19+01:00 Add scanning single plugins
- - - - - 5c11e240 by Philipp Hörist at 2017-02-23T17:57:11+01:00 Reload plugins if already loaded
- - - - - a40c0784 by Philipp Hörist at 2017-02-25T15:37:33+01:00 Merge branch 'small-fixes' into 'master'
Plugin Installer Version 0.18
See merge request !61 - - - - -
2 changed files:
- src/plugins/gui.py - src/plugins/pluginmanager.py
Changes:
===================================== src/plugins/gui.py ===================================== --- a/src/plugins/gui.py +++ b/src/plugins/gui.py @@ -114,6 +114,11 @@ class PluginsWindow(object): self.plugins_notebook.set_current_page(0) self.xml.get_object('close_button').grab_focus()
+ for plugin in gajim.plugin_manager.active_plugins: + if type(plugin).__name__ == 'PluginInstaller': + plugin.on_activate(self) + break + self.window.show_all() gtkgui_helpers.possibly_move_window_in_current_desktop(self.window)
===================================== src/plugins/pluginmanager.py ===================================== --- a/src/plugins/pluginmanager.py +++ b/src/plugins/pluginmanager.py @@ -403,20 +403,25 @@ class PluginManager(metaclass=Singleton):
@staticmethod @log_calls('PluginManager') - def scan_dir_for_plugins(path, scan_dirs=True): + def scan_dir_for_plugins(path, scan_dirs=True, package=False): r''' Scans given directory for plugin classes.
:param path: directory to scan for plugins :type path: str
+ :param scan_dirs: folders inside path are processed as modules + :type scan_dirs: boolean + + :param package: if path points to a single package folder + :type package: boolean + :return: list of found plugin classes (subclasses of `GajimPlugin` :rtype: [] of class objects
:note: currently it only searches for plugin classes in '*.py' files present in given direcotory `path` (no recursion here)
- :todo: add scanning packages :todo: add scanning zipped modules ''' from plugins.plugins_i18n import _ @@ -427,7 +432,11 @@ class PluginManager(metaclass=Singleton): if not os.path.isdir(path): return plugins_found
- dir_list = os.listdir(path) + if package: + path, package_name = os.path.split(path) + dir_list = [package_name] + else: + dir_list = os.listdir(path)
sys.path.insert(0, path)
@@ -439,6 +448,8 @@ class PluginManager(metaclass=Singleton): elif os.path.isdir(file_path) and scan_dirs: module_name = elem_name file_path += os.path.sep + else: + continue
manifest_path = os.path.join(os.path.dirname(file_path), 'manifest.ini') @@ -482,11 +493,14 @@ class PluginManager(metaclass=Singleton):
module = None
- if module_name in sys.modules: - # do not load the module twice - continue try: - module = __import__(module_name) + if module_name in sys.modules: + from imp import reload + log.info('Reloading %s', module_name) + module = reload(sys.modules[module_name]) + else: + log.info('Loading %s', module_name) + module = __import__(module_name) except Exception as error: log.warning( "While trying to load {plugin}, exception occurred".format(plugin=elem_name),
View it on GitLab: https://dev.gajim.org/gajim/gajim/compare/18df7163d11c72800cb902377962d7550a...