diff options
author | Joaquim Rocha <jrocha@igalia.com> | 2010-05-24 17:18:18 +0200 |
---|---|---|
committer | Eitan Isaacson <eitan@monotonous.org> | 2010-06-10 08:47:39 -0700 |
commit | 17ab0497f70832992037c4cf44517c2d6e9486cf (patch) | |
tree | 181bcea9f3b50cebfc59dbb5647bfac04c53b15a /caribou | |
parent | 72c38159db214c1c063aa275dce9c262a62cf898 (diff) | |
download | caribou-17ab0497f70832992037c4cf44517c2d6e9486cf.tar.gz |
Add KeyboardLayout class
Diffstat (limited to 'caribou')
-rw-r--r-- | caribou/keyboard.py | 52 |
1 files changed, 17 insertions, 35 deletions
diff --git a/caribou/keyboard.py b/caribou/keyboard.py index 92f53ab..da89ca5 100644 --- a/caribou/keyboard.py +++ b/caribou/keyboard.py @@ -160,41 +160,23 @@ class Key(gtk.Button): value = property(_get_value, _set_value) - def __init__(self): - gtk.Frame.__init__(self) - self.set_shadow_type(gtk.SHADOW_NONE) - - # FIXME: load from stored value, default to locale appropriate - kbdloc = "caribou.keyboards.qwerty" - __import__(kbdloc) - kbdlayout = self._KeyboardLayout(sys.modules[kbdloc]) - self._set_kbd_layout(kbdlayout) - # end FIXME - - def _change_layer(self, widget, data): - self.remove(self.get_child()) - self.add(data) - self.show_all() - - def _set_kbd_layout(self, layout): - # FIXME: set kbd name properly - self._kbd_name = "qwerty" - # connect the change layer buttons - for button in layout.switch_layer_buttons: - for layer in layout.layers: - if button.get_name() == layer.get_name(): - button.connect("clicked", self._change_layer, layer) - button.set_name("") - break - else: - print "ERROR" # TODO: throw exception - - # add the first layer and make it visible - self.add(layout.layers[0]) - self.show_all() - - def get_layout(self): - return self._kbd_name +class KeyboardLayout(gtk.Alignment): + + def __init__(self, name): + super(KeyboardLayout, self).__init__(0, 0, 0, 0) + self.layout_name = name + self.rows = [] + self.vbox = gtk.VBox() + self.add(self.vbox) + + def add_row(self, row): + self.rows.append(row) + alignment = gtk.Alignment(0.5, 0.5, 0, 0) + hbox = gtk.HBox() + for key in row: + hbox.pack_start(key, expand = True, fill = key.fill) + alignment.add(hbox) + self.vbox.pack_start(alignment) |