[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:
|
if not self.available_plugins:
|
||||||
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"""
|
"""Load all plugins present in the plugins/ directory in our module"""
|
||||||
if self.done:
|
if self.done and (not force):
|
||||||
dbg('Already loaded')
|
dbg('Already loaded')
|
||||||
return
|
return
|
||||||
|
|
||||||
|
dbg('loading plugins, force:(%s)' % force)
|
||||||
|
|
||||||
config = Config()
|
config = Config()
|
||||||
|
|
||||||
for plugindir in self.path:
|
for plugindir in self.path:
|
||||||
|
@ -93,8 +95,8 @@ class PluginRegistry(borg.Borg):
|
||||||
try:
|
try:
|
||||||
module = __import__(plugin[:-3], None, None, [''])
|
module = __import__(plugin[:-3], None, None, [''])
|
||||||
for item in getattr(module, 'AVAILABLE'):
|
for item in getattr(module, 'AVAILABLE'):
|
||||||
if item not in list(self.available_plugins.keys()):
|
|
||||||
func = getattr(module, item)
|
func = getattr(module, item)
|
||||||
|
if item not in list(self.available_plugins.keys()):
|
||||||
self.available_plugins[item] = func
|
self.available_plugins[item] = func
|
||||||
|
|
||||||
if item not in config['enabled_plugins']:
|
if item not in config['enabled_plugins']:
|
||||||
|
@ -102,6 +104,14 @@ class PluginRegistry(borg.Borg):
|
||||||
continue
|
continue
|
||||||
if item not in self.instances:
|
if item not in self.instances:
|
||||||
self.instances[item] = func()
|
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:
|
except Exception as ex:
|
||||||
err('PluginRegistry::load_plugins: Importing plugin %s \
|
err('PluginRegistry::load_plugins: Importing plugin %s \
|
||||||
failed: %s' % (plugin, ex))
|
failed: %s' % (plugin, ex))
|
||||||
|
|
|
@ -156,6 +156,13 @@ class Terminal(Gtk.VBox):
|
||||||
dbg('composite_support: %s' % self.composite_support)
|
dbg('composite_support: %s' % self.composite_support)
|
||||||
|
|
||||||
self.vte.show()
|
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.update_url_matches()
|
||||||
|
|
||||||
self.terminalbox = self.create_terminalbox()
|
self.terminalbox = self.create_terminalbox()
|
||||||
|
@ -285,6 +292,10 @@ class Terminal(Gtk.VBox):
|
||||||
|
|
||||||
return(terminalbox)
|
return(terminalbox)
|
||||||
|
|
||||||
|
def load_plugins(self, force = False):
|
||||||
|
registry = plugin.PluginRegistry()
|
||||||
|
registry.load_plugins(force)
|
||||||
|
|
||||||
def _add_regex(self, name, re):
|
def _add_regex(self, name, re):
|
||||||
match = -1
|
match = -1
|
||||||
if regex.FLAGS_PCRE2:
|
if regex.FLAGS_PCRE2:
|
||||||
|
|
Loading…
Reference in New Issue