[master/rhel7-branch][PATCH] Pass layout and variant in specific format to Gkbd (#1011155)

Vratislav Podzimek vpodzime at redhat.com
Fri Sep 27 17:21:52 UTC 2013


For some reason, the Gkbd requires to get layout and variant in a specific
format nothing else uses. We need to make parse_layout_variant function public
to use it from the Keyboard spoke.

Signed-off-by: Vratislav Podzimek <vpodzime at redhat.com>
---
 pyanaconda/keyboard.py                  | 12 ++++++------
 pyanaconda/ui/gui/spokes/keyboard.py    |  4 +++-
 tests/pyanaconda_tests/keyboard_test.py | 16 ++++++++--------
 3 files changed, 17 insertions(+), 15 deletions(-)

diff --git a/pyanaconda/keyboard.py b/pyanaconda/keyboard.py
index 3cc540f..1911198 100644
--- a/pyanaconda/keyboard.py
+++ b/pyanaconda/keyboard.py
@@ -83,7 +83,7 @@ class InvalidLayoutVariantSpec(Exception):
 
     pass
 
-def _parse_layout_variant(layout_variant_str):
+def parse_layout_variant(layout_variant_str):
     """
     Parse layout and variant from the string that may look like 'layout' or
     'layout (variant)'.
@@ -136,7 +136,7 @@ def normalize_layout_variant(layout_str):
 
     """
 
-    layout, variant = _parse_layout_variant(layout_str)
+    layout, variant = parse_layout_variant(layout_str)
     return _join_layout_variant(layout, variant)
 
 def populate_missing_items(keyboard):
@@ -612,7 +612,7 @@ class XklWrapper(object):
 
         try:
             #we can get 'layout' or 'layout (variant)'
-            (layout, variant) = _parse_layout_variant(layout)
+            (layout, variant) = parse_layout_variant(layout)
         except InvalidLayoutVariantSpec as ilverr:
             raise XklWrapperError("Failed to add layout: %s" % ilverr)
 
@@ -640,7 +640,7 @@ class XklWrapper(object):
         """
 
         #we can get 'layout' or 'layout (variant)'
-        (layout, variant) = _parse_layout_variant(layout)
+        (layout, variant) = parse_layout_variant(layout)
 
         layouts_variants = zip(self._rec.layouts, self._rec.variants)
 
@@ -674,7 +674,7 @@ class XklWrapper(object):
         new_variants = list()
 
         for layout_variant in layouts_list:
-            (layout, variant) = _parse_layout_variant(layout_variant)
+            (layout, variant) = parse_layout_variant(layout_variant)
             new_layouts.append(layout)
             new_variants.append(variant)
 
@@ -855,7 +855,7 @@ class LocaledWrapper(object):
         variants = []
 
         for layout_variant in layouts_variants:
-            (layout, variant) = _parse_layout_variant(layout_variant)
+            (layout, variant) = parse_layout_variant(layout_variant)
             layouts.append(layout)
             variants.append(variant)
 
diff --git a/pyanaconda/ui/gui/spokes/keyboard.py b/pyanaconda/ui/gui/spokes/keyboard.py
index 849981e..f7c8c99 100644
--- a/pyanaconda/ui/gui/spokes/keyboard.py
+++ b/pyanaconda/ui/gui/spokes/keyboard.py
@@ -504,9 +504,11 @@ class KeyboardSpoke(NormalSpoke):
         if not layout_row:
             return
 
+        layout, variant = keyboard.parse_layout_variant(layout_row[0])
+        lay_var_spec = "%s\t%s" % (layout, variant)
         dialog = Gkbd.KeyboardDrawing.dialog_new()
         Gkbd.KeyboardDrawing.dialog_set_layout(dialog, self._xkl_wrapper.configreg,
-                                               layout_row[0])
+                                               lay_var_spec)
         dialog.set_size_request(750, 350)
         dialog.set_position(Gtk.WindowPosition.CENTER_ALWAYS)
         with enlightbox(self.window, dialog):
diff --git a/tests/pyanaconda_tests/keyboard_test.py b/tests/pyanaconda_tests/keyboard_test.py
index 1b8974d..8bad3f6 100644
--- a/tests/pyanaconda_tests/keyboard_test.py
+++ b/tests/pyanaconda_tests/keyboard_test.py
@@ -26,34 +26,34 @@ class ParsingAndJoiningTests(unittest.TestCase):
         """Should correctly parse keyboard layout and variant string specs."""
 
         # valid layout variant specs
-        layout, variant = keyboard._parse_layout_variant("cz (qwerty)")
+        layout, variant = keyboard.parse_layout_variant("cz (qwerty)")
         self.assertEqual(layout, "cz")
         self.assertEqual(variant, "qwerty")
 
-        layout, variant = keyboard._parse_layout_variant("cz (dvorak-ucw)")
+        layout, variant = keyboard.parse_layout_variant("cz (dvorak-ucw)")
         self.assertEqual(layout, "cz")
         self.assertEqual(variant, "dvorak-ucw")
 
         # a valid layout variant spec with no variant specified
-        layout, variant = keyboard._parse_layout_variant("cz")
+        layout, variant = keyboard.parse_layout_variant("cz")
         self.assertEqual(layout, "cz")
         self.assertEqual(variant, "")
 
         # an invalid layout variant spec (missing layout)
         with self.assertRaises(keyboard.InvalidLayoutVariantSpec):
-            layout, variant = keyboard._parse_layout_variant("")
+            layout, variant = keyboard.parse_layout_variant("")
 
         # another invalid layout variant spec (invalid layout)
         with self.assertRaises(keyboard.InvalidLayoutVariantSpec):
-            layout, variant = keyboard._parse_layout_variant("&*&%$")
+            layout, variant = keyboard.parse_layout_variant("&*&%$")
 
         # another invalid layout variant spec (square brackets)
         with self.assertRaises(keyboard.InvalidLayoutVariantSpec):
-            layout, variant = keyboard._parse_layout_variant("cz [qwerty]")
+            layout, variant = keyboard.parse_layout_variant("cz [qwerty]")
 
         # another invalid layout variant spec (invalid variant)
         with self.assertRaises(keyboard.InvalidLayoutVariantSpec):
-            layout, variant = keyboard._parse_layout_variant("cz (&*&*)")
+            layout, variant = keyboard.parse_layout_variant("cz (&*&*)")
 
     def layout_variant_joining_test(self):
         """Should correctly join keyboard layout and variant to a string spec."""
@@ -70,7 +70,7 @@ class ParsingAndJoiningTests(unittest.TestCase):
 
         specs = ("cz", "cz (qwerty)")
         for spec in specs:
-            (layout, variant) = keyboard._parse_layout_variant(spec)
+            (layout, variant) = keyboard.parse_layout_variant(spec)
             self.assertEqual(spec, keyboard._join_layout_variant(layout, variant))
 
     def layout_variant_normalize_test(self):
-- 
1.7.11.7



More information about the anaconda-patches mailing list