summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaiki Ueno <dueno@src.gnome.org>2015-01-16 17:48:01 +0900
committerDaiki Ueno <dueno@src.gnome.org>2015-01-16 18:23:18 +0900
commitad7ce6ca7a6dd7170f83130c75d0adf84c5f67f1 (patch)
treefc92e97f0f039461e09f1b724b926c7c3a2b5845
parent927311ecc396ecfed66c4da29cd45cdf5155d24f (diff)
downloadcaribou-ad7ce6ca7a6dd7170f83130c75d0adf84c5f67f1.tar.gz
antler: Add preview sub-command to antler-keyboard
As suggested by Bastien Nocera in https://bugzilla.gnome.org/show_bug.cgi?id=690436#c4, a previewer would come in handy for designers to tweak auto-generated / imported layout files. This adds 'preview' sub-command to antler-keyboard. To use: ./bin/antler-keyboard -c preview -f data/layouts/touch/us.xml
-rw-r--r--caribou/antler/keyboard_view.py9
-rw-r--r--caribou/antler/main.py17
-rw-r--r--caribou/antler/window.py2
3 files changed, 22 insertions, 6 deletions
diff --git a/caribou/antler/keyboard_view.py b/caribou/antler/keyboard_view.py
index c3fe7f2..dc7ed72 100644
--- a/caribou/antler/keyboard_view.py
+++ b/caribou/antler/keyboard_view.py
@@ -215,7 +215,7 @@ class AntlerLayout(Gtk.Box):
self.add_row([c.get_children() for c in row.get_columns()], row_num)
class AntlerKeyboardView(Gtk.Notebook):
- def __init__(self, keyboard_type):
+ def __init__(self, keyboard_type='touch', keyboard_file=None):
GObject.GObject.__init__(self)
settings = AntlerSettings()
self.set_show_tabs(False)
@@ -244,10 +244,11 @@ class AntlerKeyboardView(Gtk.Notebook):
Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION + 1)
self.scanner = Caribou.Scanner()
- self.set_keyboard_model(keyboard_type)
+ self.set_keyboard_model(keyboard_type, keyboard_file)
- def set_keyboard_model(self, keyboard_type):
- self.keyboard_model = Caribou.KeyboardModel(keyboard_type=keyboard_type)
+ def set_keyboard_model(self, keyboard_type, keyboard_file):
+ self.keyboard_model = Caribou.KeyboardModel(keyboard_type=keyboard_type,
+ keyboard_file=keyboard_file)
self.scanner.set_keyboard(self.keyboard_model)
self.keyboard_model.connect("notify::active-group", self._on_group_changed)
diff --git a/caribou/antler/main.py b/caribou/antler/main.py
index 251678b..f79fd92 100644
--- a/caribou/antler/main.py
+++ b/caribou/antler/main.py
@@ -1,4 +1,4 @@
-from gi.repository import Caribou, GLib, GObject
+from gi.repository import Caribou, GLib, GObject, Gtk
from .window import AntlerWindowEntry
from .keyboard_view import AntlerKeyboardView
import sys
@@ -33,6 +33,19 @@ class AntlerKeyboardService(Caribou.KeyboardService, AntlerKeyboardCommand):
sys.stderr.write("Another service acquired %s, quitting..\n" % name)
sys.exit(0)
+class AntlerKeyboardPreview(Gtk.Window, AntlerKeyboardCommand):
+ def __init__(self, args=None):
+ GObject.GObject.__init__(self)
+ if not args or not args.file:
+ sys.stderr.write("Specify keyboard file with -f option.\n")
+ sys.exit(1)
+ self.window = Gtk.Window()
+ self.window.add(AntlerKeyboardView(keyboard_file=args.file))
+
+ def run(self):
+ self.window.show_all()
+ Gtk.main()
+
if __name__ == "__main__":
import argparse
import signal
@@ -43,6 +56,8 @@ if __name__ == "__main__":
parser = argparse.ArgumentParser(description='antler-keyboard')
parser.add_argument('-c', '--command', type=str, default='service',
help='command (service or preview, default: service)')
+ parser.add_argument('-f', '--file', type=str,
+ help='keyboard file')
args = parser.parse_args()
command = globals().get('AntlerKeyboard%s' % args.command.capitalize())
diff --git a/caribou/antler/window.py b/caribou/antler/window.py
index d4950c3..959b825 100644
--- a/caribou/antler/window.py
+++ b/caribou/antler/window.py
@@ -218,7 +218,7 @@ class AntlerWindow(ProximityWindowBase):
self.add(self._vbox)
self.keyboard_view_factory = keyboard_view_factory
- self.keyboard_view = keyboard_view_factory (settings.keyboard_type.value)
+ self.keyboard_view = keyboard_view_factory (keyboard_type=settings.keyboard_type.value)
self._vbox.pack_start(self.keyboard_view, True, True, 0)