summaryrefslogtreecommitdiff
path: root/caribou
diff options
context:
space:
mode:
authorDaniel Baeyens <dbaeyens@warp.es>2010-06-20 15:37:19 +0200
committerEitan Isaacson <eitan@monotonous.org>2010-07-12 10:53:19 -0700
commit3c806de0ffb482116315fbb25332514ee63b1229 (patch)
tree8ae3a5fe1e53b80c8a07f96591297312e5d0a35e /caribou
parent62911917da4d65a4c5fce2907d9c6275061a647d (diff)
downloadcaribou-3c806de0ffb482116315fbb25332514ee63b1229.tar.gz
Support for key color configuration
https://bugzilla.gnome.org/show_bug.cgi?id=622246
Diffstat (limited to 'caribou')
-rw-r--r--caribou/ui/keyboard.py44
1 files changed, 43 insertions, 1 deletions
diff --git a/caribou/ui/keyboard.py b/caribou/ui/keyboard.py
index 6ef8565..4601d29 100644
--- a/caribou/ui/keyboard.py
+++ b/caribou/ui/keyboard.py
@@ -55,11 +55,21 @@ class KeyboardPreferences:
close.connect("clicked", self.destroy)
client = gconf.client_get_default()
- client.add_dir("/apps/caribou/osk", gconf.CLIENT_PRELOAD_NONE)
+ client.add_dir(const.CARIBOU_GCONF, gconf.CLIENT_PRELOAD_NONE)
layout_combo = builder.get_object("combobox_layout")
layout_combo.connect("changed", self._on_layout_changed, client)
+ normal_state_color_button = builder.get_object("normal_state_color_button")
+ normal_color = gtk.gdk.Color(client.get_string(const.CARIBOU_GCONF + "/normal_color"))
+ normal_state_color_button.set_color(normal_color)
+ normal_state_color_button.connect("color-set", self._on_normal_state_color_set, client)
+
+ mouse_over_color_button = builder.get_object("mouse_over_color_button")
+ mouse_over_color = gtk.gdk.Color(client.get_string(const.CARIBOU_GCONF + "/mouse_over_color"))
+ mouse_over_color_button.set_color(mouse_over_color)
+ mouse_over_color_button.connect("color-set", self._on_mouse_over_color_set, client)
+
#TODO: List the layouts in the data dir
#for kbddef in keyboards.kbds:
# layout_combo.append_text(kbddef)
@@ -98,6 +108,15 @@ class KeyboardPreferences:
if kbdname:
client.set_string("/apps/caribou/osk/layout", kbdname)
+ def _on_normal_state_color_set(self, colorbutton, client):
+ color = colorbutton.get_color().to_string()
+ client.set_string(const.CARIBOU_GCONF + "/normal_color", color)
+
+ def _on_mouse_over_color_set(self, colorbutton, client):
+ color = colorbutton.get_color().to_string()
+ client.set_string(const.CARIBOU_GCONF + "/mouse_over_color", color)
+
+
class Key(gtk.Button):
def __init__(self, label = '', value = '', key_type = 'normal',
@@ -127,6 +146,10 @@ class Key(gtk.Button):
def set_relative_size(self, size):
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))
+
def _get_value(self):
return self._value
@@ -276,11 +299,16 @@ class CaribouKeyboard(gtk.Notebook):
self.key_size = 30
self.current_mask = 0
self.current_page = 0
+ self.client = gconf.client_get_default()
+
+ self.client.notify_add(const.CARIBOU_GCONF + "/normal_color", self._colors_changed)
+ self.client.notify_add(const.CARIBOU_GCONF + "/mouse_over_color", 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()
def _set_layouts(self, layout_list):
self._clear()
@@ -302,6 +330,20 @@ class CaribouKeyboard(gtk.Notebook):
self._pressed_normal_key)
key.set_relative_size(self.key_size)
+ def _colors_changed(self, client, connection_id, entry, args):
+ self._update_colors()
+
+ def _update_colors(self):
+ normal_color = self.client.get_string(const.CARIBOU_GCONF + "/normal_color")
+ mouse_over_color = self.client.get_string(const.CARIBOU_GCONF + "/mouse_over_color")
+ n_pages = self.get_n_pages()
+ for i in range(n_pages):
+ layout = self.get_nth_page(i)
+ for row in layout.rows:
+ for button in row:
+ button.set_color(normal_color,
+ mouse_over_color)
+
def _clear(self):
n_pages = self.get_n_pages()
for i in range(n_pages):