From ad7ce6ca7a6dd7170f83130c75d0adf84c5f67f1 Mon Sep 17 00:00:00 2001 From: Daiki Ueno Date: Fri, 16 Jan 2015 17:48:01 +0900 Subject: 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 --- caribou/antler/keyboard_view.py | 9 +++++---- caribou/antler/main.py | 17 ++++++++++++++++- caribou/antler/window.py | 2 +- 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) -- cgit v1.2.1