[bug 808] Plugins-dont-receive-keboard-signals-on-newly-opened-windows
- code separated for force loading of plugins on every terminal instance
This commit is contained in:
parent
0fea7d47e5
commit
3b4d32cda3
@ -69,12 +69,14 @@ class PluginRegistry(borg.Borg):
|
||||
if not self.available_plugins:
|
||||
self.available_plugins = {}
|
||||
|
||||
def load_plugins(self):
|
||||
def load_plugins(self, force=False):
|
||||
"""Load all plugins present in the plugins/ directory in our module"""
|
||||
if self.done:
|
||||
if self.done and (not force):
|
||||
dbg('Already loaded')
|
||||
return
|
||||
|
||||
dbg('loading plugins, force:(%s)' % force)
|
||||
|
||||
config = Config()
|
||||
|
||||
for plugindir in self.path:
|
||||
@ -93,8 +95,8 @@ class PluginRegistry(borg.Borg):
|
||||
try:
|
||||
module = __import__(plugin[:-3], None, None, [''])
|
||||
for item in getattr(module, 'AVAILABLE'):
|
||||
func = getattr(module, item)
|
||||
if item not in list(self.available_plugins.keys()):
|
||||
func = getattr(module, item)
|
||||
self.available_plugins[item] = func
|
||||
|
||||
if item not in config['enabled_plugins']:
|
||||
@ -102,6 +104,14 @@ class PluginRegistry(borg.Borg):
|
||||
continue
|
||||
if item not in self.instances:
|
||||
self.instances[item] = func()
|
||||
elif force:
|
||||
#instead of multiple copies of loaded
|
||||
#plugin objects, unload where plugins
|
||||
#can clean up and then re-init so there
|
||||
#is one plugin object
|
||||
self.instances[item].unload()
|
||||
self.instances.pop(item, None)
|
||||
self.instances[item] = func()
|
||||
except Exception as ex:
|
||||
err('PluginRegistry::load_plugins: Importing plugin %s \
|
||||
failed: %s' % (plugin, ex))
|
||||
|
@ -156,6 +156,13 @@ class Terminal(Gtk.VBox):
|
||||
dbg('composite_support: %s' % self.composite_support)
|
||||
|
||||
self.vte.show()
|
||||
|
||||
#force to load for new window/terminal use case loading plugin
|
||||
#and connecting signals, note the line update_url_matches also
|
||||
#calls load_plugins, but it won't reload since already loaded
|
||||
|
||||
self.load_plugins(force = True)
|
||||
|
||||
self.update_url_matches()
|
||||
|
||||
self.terminalbox = self.create_terminalbox()
|
||||
@ -285,6 +292,10 @@ class Terminal(Gtk.VBox):
|
||||
|
||||
return(terminalbox)
|
||||
|
||||
def load_plugins(self, force = False):
|
||||
registry = plugin.PluginRegistry()
|
||||
registry.load_plugins(force)
|
||||
|
||||
def _add_regex(self, name, re):
|
||||
match = -1
|
||||
if regex.FLAGS_PCRE2:
|
||||
|
Loading…
Reference in New Issue
Block a user