From d1609b97e4b2f6a34cfa6756a856317b35196603 Mon Sep 17 00:00:00 2001 From: mathieui Date: Wed, 9 Apr 2014 20:10:07 +0200 Subject: Fix #2497/#2498 (/theme should return an error when loading fails) It was actually doing that for old python version but not recent onces --- src/core/commands.py | 4 ---- src/core/core.py | 10 ++++++++++ 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) -- cgit v1.2.3