[caribou] antler: Add preview sub-command to antler-keyboard



commit ad7ce6ca7a6dd7170f83130c75d0adf84c5f67f1
Author: Daiki Ueno <dueno src gnome org>
Date:   Fri Jan 16 17:48:01 2015 +0900

    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)
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]