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@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):
On 09/27/2013 01:21 PM, Vratislav Podzimek wrote:
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@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):
Ack.
anaconda-patches@lists.fedorahosted.org