[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