Welcome to mirror list, hosted at ThFree Co, Russian Federation.

dev.gajim.org/gajim/gajim.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYann Leboulanger <asterix@lagaule.org>2005-08-07 01:19:16 +0400
committerYann Leboulanger <asterix@lagaule.org>2005-08-07 01:19:16 +0400
commitacb2b33df7fca80c828d10a709183d53408a2a90 (patch)
tree84e61359014e813ad97af6e13a451973f0080294 /src/gajim_themes_window.py
parented910108729bdb0775a496e59411701451a48ea5 (diff)
theme manager is here
Diffstat (limited to 'src/gajim_themes_window.py')
-rw-r--r--src/gajim_themes_window.py127
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')