From 495af26c9c5c93d089821e852f5bfbfce675bb12 Mon Sep 17 00:00:00 2001 From: Dimitur Kirov Date: Sat, 25 Mar 2006 01:40:49 +0000 Subject: [PATCH] *.GtkFrame.GtkEventBox.* style for discon banner (#1731) --- src/disco.py | 44 ++++++++++++++++++++++++++++++++++++++------ 1 file changed, 38 insertions(+), 6 deletions(-) diff --git a/src/disco.py b/src/disco.py index 234069ec4..ec7edb00e 100644 --- a/src/disco.py +++ b/src/disco.py @@ -441,6 +441,8 @@ _('Without a connection, you can not browse available services')).get_response() self.banner = self.xml.get_widget('banner_agent_label') self.banner_icon = self.xml.get_widget('banner_agent_icon') self.banner_eventbox = self.xml.get_widget('banner_agent_eventbox') + self.style_event_id = 0 + self.banner.ensure_style() self.paint_banner() self.filter_hbox = self.xml.get_widget('filter_hbox') self.filter_hbox.set_no_show_all(True) @@ -534,20 +536,50 @@ _('Without a connection, you can not browse available services')).get_response() theme = gajim.config.get('roster_theme') bgcolor = gajim.config.get_per('themes', theme, 'bannerbgcolor') textcolor = gajim.config.get_per('themes', theme, 'bannertextcolor') + self.disconnect_style_event() if bgcolor: color = gtk.gdk.color_parse(bgcolor) + self.banner_eventbox.modify_bg(gtk.STATE_NORMAL, color) + default_bg = False else: - color = None - self.banner_eventbox.modify_bg(gtk.STATE_NORMAL, color) - + default_bg = True + if textcolor: color = gtk.gdk.color_parse(textcolor) + self.banner.modify_fg(gtk.STATE_NORMAL, color) + default_fg = False else: - color = None - self.banner.modify_fg(gtk.STATE_NORMAL, color) + default_fg = True + if default_fg or default_bg: + self._on_style_set_event(self.banner, None, default_fg, default_bg) if self.browser: self.browser.update_theme() - + + def disconnect_style_event(self): + if self.style_event_id: + self.banner.disconnect(self.style_event_id) + self.style_event_id = 0 + + def connect_style_event(self, set_fg = False, set_bg = False): + self.disconnect_style_event() + self.style_event_id = self.banner.connect('style-set', + self._on_style_set_event, set_fg, set_bg) + + def _on_style_set_event(self, widget, style, *opts): + ''' set style of widget from style class *.Frame.Eventbox + opts[0] == True -> set fg color + opts[1] == True -> set bg color ''' + + self.disconnect_style_event() + if opts[1]: + bg_color = widget.style.bg[gtk.STATE_SELECTED] + self.banner_eventbox.modify_bg(gtk.STATE_NORMAL, bg_color) + if opts[0]: + fg_color = widget.style.fg[gtk.STATE_SELECTED] + self.banner.modify_fg(gtk.STATE_NORMAL, fg_color) + self.banner.ensure_style() + self.connect_style_event(opts[0], opts[1]) + def destroy(self, chain = False): '''Close the browser. This can optionally close it's children and propagate to the parent. This should happen on actions like register,