diff options
author | Eitan Isaacson <eitan@monotonous.org> | 2010-08-16 09:50:43 -0700 |
---|---|---|
committer | Eitan Isaacson <eitan@monotonous.org> | 2010-08-16 09:58:45 -0700 |
commit | 75ad6b94f583d55f30eac5cdab518dbec1c421ea (patch) | |
tree | 517f268a630d5c5a16556bf68a693f8a55caa46e /caribou | |
parent | 3ece6cb86d98a87e0d80f79a2f2c4627e2c5c72e (diff) | |
download | caribou-75ad6b94f583d55f30eac5cdab518dbec1c421ea.tar.gz |
Proper highlight colors.
https://bugzilla.gnome.org/show_bug.cgi?id=622246
Diffstat (limited to 'caribou')
-rw-r--r-- | caribou/ui/keyboard.py | 65 |
1 files changed, 55 insertions, 10 deletions
diff --git a/caribou/ui/keyboard.py b/caribou/ui/keyboard.py index 67d580d..0590924 100644 --- a/caribou/ui/keyboard.py +++ b/caribou/ui/keyboard.py @@ -71,12 +71,30 @@ class KeyboardPreferences: mouse_over_color_button = builder.get_object("mouse_over_color_button") mouse_over_color_string = client.get_string(const.CARIBOU_GCONF + - "/mouse_over") or "yellow" + "/mouse_over_color") or "yellow" mouse_over_color = gtk.gdk.Color(mouse_over_color_string) mouse_over_color_button.set_color(mouse_over_color) mouse_over_color_button.connect("color-set", - self._on_mouse_over_color_set, + self._on_mouse_over_color_set, client) + + default_colors_checkbox = builder.get_object("default_colors_checkbox") + use_defaults = client.get_bool(const.CARIBOU_GCONF + '/default_colors') + if use_defaults is None: + use_defaults = True + + default_colors_checkbox.set_active(use_defaults) + + self._on_default_colors_toggled(default_colors_checkbox, + client, normal_color_button, + mouse_over_color_button) + + default_colors_checkbox.connect('toggled', + self._on_default_colors_toggled, + client, normal_color_button, + mouse_over_color_button) + + kbds = self._fetch_keyboards() for kbddef in kbds: @@ -107,6 +125,15 @@ class KeyboardPreferences: self.window.show_all() + def _on_default_colors_toggled(self, default_colors_checkbox, gconf_client, + normal_color_button, + mouse_over_color_button): + use_defaults = default_colors_checkbox.get_active() + gconf_client.set_bool(const.CARIBOU_GCONF + '/default_colors', + use_defaults) + normal_color_button.set_sensitive(not use_defaults) + mouse_over_color_button.set_sensitive(not use_defaults) + def destroy(self, widget, data = None): self.window.destroy() @@ -164,8 +191,18 @@ class Key(gtk.Button): self.set_size_request(int(size * self.width), int(size)) def set_color(self, normal_color, mouse_over_color): - self.modify_bg(gtk.STATE_NORMAL, gtk.gdk.Color(normal_color)) - self.modify_bg(gtk.STATE_PRELIGHT, gtk.gdk.Color(mouse_over_color)) + rcstyle = self.get_modifier_style() + + rcstyle.bg[gtk.STATE_NORMAL] = gtk.gdk.Color(normal_color) + rcstyle.bg[gtk.STATE_PRELIGHT] = gtk.gdk.Color(mouse_over_color) + + self.modify_style(rcstyle) + + def reset_color(self): + rcstyle = self.get_modifier_style() + rcstyle.bg[gtk.STATE_NORMAL] = None + rcstyle.bg[gtk.STATE_PRELIGHT] = None + self.modify_style(rcstyle) def _get_value(self): return self._value @@ -322,12 +359,15 @@ class CaribouKeyboard(gtk.Notebook): self._colors_changed) self.client.notify_add(const.CARIBOU_GCONF + "/mouse_over_color", self._colors_changed) + self.client.notify_add(const.CARIBOU_GCONF + "/default_colors", + self._colors_changed) + def load_kb(self, kb_location): kb_deserializer = KbLayoutDeserializer() layouts = kb_deserializer.deserialize(kb_location) self._set_layouts(layouts) - self._update_colors() + self._update_key_style() def _set_layouts(self, layout_list): self._clear() @@ -350,11 +390,13 @@ class CaribouKeyboard(gtk.Notebook): key.set_relative_size(self.key_size) def _colors_changed(self, client, connection_id, entry, args): - self._update_colors() + self._update_key_style() - def _update_colors(self): + def _update_key_style(self): + default_colors = self.client.get_bool(const.CARIBOU_GCONF + + '/default_colors') normal_color = self.client.get_string(const.CARIBOU_GCONF + - "/normal_color") or "grey80" + "/normal_color") mouse_over_color = self.client.get_string(const.CARIBOU_GCONF + "/mouse_over_color") or \ "yellow" @@ -363,8 +405,11 @@ class CaribouKeyboard(gtk.Notebook): layout = self.get_nth_page(i) for row in layout.rows: for button in row: - button.set_color(normal_color, - mouse_over_color) + if default_colors: + button.reset_color() + else: + button.set_color(normal_color, + mouse_over_color) def _clear(self): n_pages = self.get_n_pages() |