diff options
author | Yann Leboulanger <asterix@lagaule.org> | 2005-08-07 01:19:16 +0400 |
---|---|---|
committer | Yann Leboulanger <asterix@lagaule.org> | 2005-08-07 01:19:16 +0400 |
commit | acb2b33df7fca80c828d10a709183d53408a2a90 (patch) | |
tree | 84e61359014e813ad97af6e13a451973f0080294 /src/gajim_themes_window.py | |
parent | ed910108729bdb0775a496e59411701451a48ea5 (diff) |
theme manager is here
Diffstat (limited to 'src/gajim_themes_window.py')
-rw-r--r-- | src/gajim_themes_window.py | 127 |
1 files changed, 97 insertions, 30 deletions
diff --git a/src/gajim_themes_window.py b/src/gajim_themes_window.py index 41ad77322..c05d7e504 100644 --- a/src/gajim_themes_window.py +++ b/src/gajim_themes_window.py @@ -19,7 +19,9 @@ import gtk import gtk.glade +from config import mk_color_string +from common import gajim from common import i18n _ = i18n._ APP = i18n.APP @@ -40,48 +42,107 @@ class GajimThemesWindow: self.window.show_all() - color_widgets = { + self.color_widgets = { 'account_text_colorbutton': 'accounttextcolor', 'group_text_colorbutton': 'grouptextcolor', 'user_text_colorbutton': 'contacttextcolor', + 'banner_colorbutton': 'bannertextcolor', 'account_text_bg_colorbutton': 'accountbgcolor', 'group_text_bg_colorbutton': 'groupbgcolor', - 'user_text_bg_colorbutton': 'contactbgcolor' + 'user_text_bg_colorbutton': 'contactbgcolor', + 'banner_bg_colorbutton': 'bannerbgcolor', } - font_widgets = { + self.font_widgets = { 'account_text_fontbutton': 'accountfont', 'group_text_fontbutton': 'groupfont', - 'user_text_fontbutton': 'userfont' + 'user_text_fontbutton': 'contactfont', } + + self.themes_tree = self.xml.get_widget('themes_treeview') + model = gtk.ListStore(str) + self.themes_tree.set_model(model) + col = gtk.TreeViewColumn(_('Theme')) + self.themes_tree.append_column(col) + renderer = gtk.CellRendererText() + col.pack_start(renderer, True) + col.set_attributes(renderer, text = 0) + renderer.connect('edited', self.on_theme_cell_edited) + renderer.set_property('editable', True) + self.fill_themes_treeview() + - ''' - fonts_colors_table = self.xml.get_widget('fonts_colors_table') - if theme == 'custom': - fonts_colors_table.show() - else: - fonts_colors_table.hide() - for w in color_widgets: + self.current_theme = gajim.config.get('roster_theme') + self.set_widgets(self.current_theme) + + def on_theme_cell_edited(self, cell, row, new_name): + model = self.themes_tree.get_model() + iter = model.get_iter_from_string(row) + old_name = model.get_value(iter, 0) + if old_name == new_name: + return + if new_name in gajim.config.get_per('themes'): + #ErrorDialog() + return + gajim.config.add_per('themes', new_name) + #Copy old theme values + for option in self.color_widgets.values(): + gajim.config.set_per('themes', new_name, option, + gajim.config.get_per('themes', old_name, option)) + for option in self.font_widgets.values(): + gajim.config.set_per('themes', new_name, option, + gajim.config.get_per('themes', old_name, option)) + gajim.config.del_per('themes', old_name) + model.set_value(iter, 0, new_name) + + def fill_themes_treeview(self): + self.xml.get_widget('remove_button').set_sensitive(False) + self.xml.get_widget('fonts_colors_table').set_sensitive(False) + model = self.themes_tree.get_model() + model.clear() + for theme in gajim.config.get_per('themes'): + iter = model.append() + model.set_value(iter, 0, theme) + + def on_themes_treeview_cursor_changed(self, widget): + (model, iter) = self.themes_tree.get_selection().get_selected() + if not iter: + return + self.xml.get_widget('remove_button').set_sensitive(True) + self.xml.get_widget('fonts_colors_table').set_sensitive(True) + self.current_theme = model.get_value(iter, 0) + self.set_widgets(self.current_theme) + + def on_add_button_clicked(self, widget): + model = self.themes_tree.get_model() + iter = model.append() + i = 0 + while _('theme_name') + str(i) in gajim.config.get_per('themes'): + i += 1 + model.set_value(iter, 0, _('theme_name') + str(i)) + gajim.config.add_per('themes', _('theme_name') + str(i)) + + def on_remove_button_clicked(self, widget): + (model, iter) = self.themes_tree.get_selection().get_selected() + if not iter: + return + name = model.get_value(iter, 0) + gajim.config.del_per('themes', name) + model.remove(iter) + + def set_widgets(self, theme): + for w in self.color_widgets: widg = self.xml.get_widget(w) - if theme == 'custom': - widg.set_color(gtk.gdk.color_parse(gajim.config.get( - color_widgets[w]))) - else: - widg.set_color(gtk.gdk.color_parse(self.theme_default[theme]\ - [color_widgets[w]])) - self.on_roster_widget_color_set(widg, color_widgets[w]) - for w in font_widgets: + widg.set_color(gtk.gdk.color_parse(gajim.config.get_per('themes', + theme, self.color_widgets[w]))) + for w in self.font_widgets: widg = self.xml.get_widget(w) - if theme == 'custom': - widg.set_font_name(gajim.config.get(font_widgets[w])) - else: - widg.set_font_name(self.theme_default[theme][font_widgets[w]]) - self.on_widget_font_set(widg, font_widgets[w]) - ''' + widg.set_font_name(gajim.config.get_per('themes', theme, + self.font_widgets[w])) - def on_roster_widget_color_set(self, widget, text): + def on_roster_widget_color_set(self, widget, option): color = widget.get_color() color_string = mk_color_string(color) - gajim.config.set(text, color_string) + gajim.config.set_per('themes', self.current_theme, option, color_string) self.plugin.roster.draw_roster() self.plugin.save_config() @@ -103,9 +164,15 @@ class GajimThemesWindow: def on_user_text_bg_colorbutton_color_set(self, widget): self.on_roster_widget_color_set(widget, 'contactbgcolor') - def on_widget_font_set(self, widget, text): + def on_banner_text_colorbutton_color_set(self, widget): + self.on_roster_widget_color_set(widget, 'bannertextcolor') + + def on_banner_bg_colorbutton_color_set(self, widget): + self.on_roster_widget_color_set(widget, 'bannerbgcolor') + + def on_widget_font_set(self, widget, option): font_string = widget.get_font_name() - gajim.config.set(text, font_string) + gajim.config.set_per('themes', self.current_theme, option, font_string) self.plugin.roster.draw_roster() self.plugin.save_config() @@ -116,4 +183,4 @@ class GajimThemesWindow: self.on_widget_font_set(widget, 'groupfont') def on_user_text_fontbutton_font_set(self, widget): - self.on_widget_font_set(widget, 'userfont') + self.on_widget_font_set(widget, 'contactfont') |