diff options
-rw-r--r-- | src/core/commands.py | 4 | ||||
-rw-r--r-- | src/core/core.py | 10 | ||||
-rw-r--r-- | src/theming.py | 2 |
3 files changed, 11 insertions, 5 deletions
diff --git a/src/core/commands.py b/src/core/commands.py index 5be95207..68a6eacf 100644 --- a/src/core/commands.py +++ b/src/core/commands.py @@ -173,10 +173,6 @@ def command_theme(self, arg=''): args = arg.split() if args: self.command_set('theme %s' % (args[0],)) - warning = theming.reload_theme() - if warning: - self.information(warning, 'Warning') - self.refresh_window() def command_win(self, arg): """ diff --git a/src/core/core.py b/src/core/core.py index 4b9a2e22..c3090bf6 100644 --- a/src/core/core.py +++ b/src/core/core.py @@ -250,6 +250,7 @@ class Core(object): self.add_configuration_handler("connection_timeout_delay", self.xmpp.set_keepalive_values) self.add_configuration_handler("connection_check_interval", self.xmpp.set_keepalive_values) self.add_configuration_handler("themes_dir", theming.update_themes_dir) + self.add_configuration_handler("theme", self.on_theme_config_change) self.add_configuration_handler("", self.on_any_config_change) def on_any_config_change(self, option, value): @@ -305,6 +306,15 @@ class Core(object): path = os.path.expanduser(value) self.plugin_manager.on_plugins_conf_dir_change(path) + def on_theme_config_change(self, option, value): + """ + Called when the theme option is changed + """ + error_msg = theming.reload_theme() + if error_msg: + self.information(error_msg, 'Warning') + self.refresh_window() + def sigusr_handler(self, num, stack): """ Handle SIGUSR1 (10) diff --git a/src/theming.py b/src/theming.py index 4a578ca7..8576a2a0 100644 --- a/src/theming.py +++ b/src/theming.py @@ -491,7 +491,7 @@ def reload_theme(): else: loader = finder.find_module(theme_name, load_path) if not loader: - return + return 'Failed to load the theme %s' % theme_name new_theme = loader.load_module() except Exception as e: log.error('Failed to load the theme %s', theme_name, exc_info=True) |