summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/core/commands.py4
-rw-r--r--src/core/core.py10
-rw-r--r--src/theming.py2
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)