diff --git a/src/common/config.py b/src/common/config.py
index b43a821a0..48e2ca130 100644
--- a/src/common/config.py
+++ b/src/common/config.py
@@ -216,7 +216,7 @@ class Config:
'grouptextcolor': [ opt_color, 'white' ],
'groupbgcolor': [ opt_color, 'black' ],
'groupfont': [ opt_str, '' ],
- 'groupfontattr': [ opt_str, '' ],
+ 'groupfontattrs': [ opt_str, '' ],
'contacttextcolor': [ opt_color, 'white' ],
'contactbgcolor': [ opt_color, 'black' ],
'contactfont': [ opt_str, '' ],
diff --git a/src/gajim_themes_window.py b/src/gajim_themes_window.py
index a055de929..6ff2d504e 100644
--- a/src/gajim_themes_window.py
+++ b/src/gajim_themes_window.py
@@ -36,6 +36,10 @@ class GajimThemesWindow:
def on_close_button_clicked(self, widget):
self.window.destroy()
+ def on_gajim_themes_window_destroy_event(self, widget):
+ ''' save settings only on exit - this makes UI faster'''
+ self.plugin.save_config()
+
def __init__(self, plugin):
self.xml = gtk.glade.XML(GTKGUI_GLADE, 'gajim_themes_window', APP)
self.window = self.xml.get_widget('gajim_themes_window')
@@ -63,6 +67,7 @@ class GajimThemesWindow:
renderer.connect('edited', self.on_theme_cell_edited)
renderer.set_property('editable', True)
self.current_theme = gajim.config.get('roster_theme')
+ self.no_update = False
self.fill_themes_treeview()
self.xml.signal_autoconnect(self)
@@ -136,6 +141,7 @@ class GajimThemesWindow:
self.plugin.windows['preferences'].update_preferences_window()
def set_theme_options(self, theme, option = 'account'):
+ self.no_update = True
self.options_combobox.set_active(self.options.index(option))
textcolor = gajim.config.get_per('themes', theme,
option + 'textcolor')
@@ -146,8 +152,7 @@ class GajimThemesWindow:
state = False
self.textcolor_checkbutton.set_active(state)
self.text_colorbutton.set_sensitive(state)
- bgcolor = gajim.config.get_per('themes', theme,
- option + 'bgcolor')
+ bgcolor = gajim.config.get_per('themes', theme, option + 'bgcolor')
if bgcolor:
state = True
self.background_colorbutton.set_color(gtk.gdk.color_parse(
@@ -156,8 +161,11 @@ class GajimThemesWindow:
state = False
self.background_checkbutton.set_active(state)
self.background_colorbutton.set_sensitive(state)
- font_name = gajim.config.get_per('themes', theme,
- option + 'font')
+
+ #get the font name before we set widgets ant it will not be overriden
+ font_name = gajim.config.get_per('themes', theme, option + 'font')
+ font_attrs = gajim.config.get_per('themes', theme, option + 'fontattrs')
+ self._set_font_widgets(font_attrs)
if font_name:
state = True
self.text_fontbutton.set_font_name(font_name)
@@ -165,8 +173,8 @@ class GajimThemesWindow:
state = False
self.textfont_checkbutton.set_active(state)
self.text_fontbutton.set_sensitive(state)
- font_attrs = gajim.config.get_per('themes', theme,
- option + 'fontattrs')
+ self.no_update = False
+ self.plugin.roster.draw_roster()
def on_textcolor_checkbutton_toggled(self, widget):
state = widget.get_active()
@@ -219,10 +227,13 @@ class GajimThemesWindow:
color_string = ''
gajim.config.set_per('themes', self.current_theme,
self.current_option + option, color_string)
+ # use faster functions for this
if self.current_option == 'banner':
self.plugin.roster.repaint_themed_widgets()
+ if self.no_update:
+ return
+ # FIXME check if this is currently selected theme
self.plugin.roster.draw_roster()
- self.plugin.save_config()
def _set_font(self):
''' set font value in prefs and update the UI '''
@@ -236,12 +247,16 @@ class GajimThemesWindow:
font_attrs = self._get_font_attrs()
gajim.config.set_per('themes', self.current_theme,
self.current_option + 'fontattrs', font_attrs)
+ # use faster functions for this
if self.current_option == 'banner':
self.plugin.roster.repaint_themed_widgets()
+ if self.no_update:
+ return
+ # FIXME check if this is currently selected theme
self.plugin.roster.draw_roster()
- self.plugin.save_config()
def _toggle_font_widgets(self, font_props):
+ ''' toggle font buttons with the bool values of font_props tuple'''
self.bold_togglebutton.set_active(font_props[0])
self.italic_togglebutton.set_active(font_props[1])
self.underline_togglebutton.set_active(font_props[2])
@@ -256,7 +271,21 @@ class GajimThemesWindow:
fd.set_style(pango.STYLE_ITALIC)
return fd
+ def _set_font_widgets(self, font_attrs):
+ ''' set the correct toggle state of font style buttons by
+ a font string of type 'BIU' '''
+ font_props = [False, False, False]
+ if font_attrs:
+ if font_attrs.find('B') != -1:
+ font_props[0] = True
+ if font_attrs.find('I') != -1:
+ font_props[1] = True
+ if font_attrs.find('U') != -1:
+ font_props[2] = True
+ self._toggle_font_widgets(font_props)
+
def _get_font_attrs(self):
+ ''' get a string with letters of font attribures: 'BUI' '''
attrs = ''
if self.bold_togglebutton.get_active():
attrs += 'B'
@@ -266,7 +295,7 @@ class GajimThemesWindow:
attrs += 'U'
return attrs
-
+
def _get_font_props(self, font_name):
''' get tuple of font properties: Weight, Style, Underline '''
font_props = [False, False, False]
diff --git a/src/gtkgui.glade b/src/gtkgui.glade
index 92deb1565..ff0cc27ac 100644
--- a/src/gtkgui.glade
+++ b/src/gtkgui.glade
@@ -15944,6 +15944,7 @@ to the Jabber network.
GDK_WINDOW_TYPE_HINT_NORMAL
GDK_GRAVITY_NORTH_WEST
True
+
diff --git a/src/gtkgui_helpers.py b/src/gtkgui_helpers.py
index 0d9b69531..7d5a50b6a 100644
--- a/src/gtkgui_helpers.py
+++ b/src/gtkgui_helpers.py
@@ -32,6 +32,7 @@ from common import helpers
screen_w = gtk.gdk.screen_width()
screen_h = gtk.gdk.screen_height()
+
def get_theme_font_for_option(theme, option):
''' return string description of the font, stored in
theme preferences'''