[pykickstart] [PATCHv2] Add support for layout switching options

Vratislav Podzimek vpodzime at redhat.com
Tue Oct 23 11:02:01 UTC 2012


Second version of the patch. I will also bump pykickstartver in anaconda.spec.in
once I push this patch set.

Signed-off-by: Vratislav Podzimek <vpodzime at redhat.com>
---
 pykickstart/commands/keyboard.py | 19 ++++++++++++++-----
 tests/commands/keyboard.py       |  4 ++++
 2 files changed, 18 insertions(+), 5 deletions(-)

diff --git a/pykickstart/commands/keyboard.py b/pykickstart/commands/keyboard.py
index 40f7882..a93314f 100644
--- a/pykickstart/commands/keyboard.py
+++ b/pykickstart/commands/keyboard.py
@@ -63,6 +63,7 @@ class F18_Keyboard(FC3_Keyboard):
         self._keyboard = kwargs.get("_keyboard", "")
         self.vc_keymap = kwargs.get("vc_keymap", "")
         self.x_layouts = kwargs.get("x_layouts", [])
+        self.switch_options = kwargs.get("switch_options", [])
 
     def __str__(self):
         if not any((self._keyboard, self.x_layouts, self.vc_keymap)):
@@ -92,18 +93,26 @@ class F18_Keyboard(FC3_Keyboard):
                 layouts_str += ",'%s'" % layout
             retval += " --xlayouts=%s" % layouts_str
 
+        if self.switch_options:
+            switch_str = "'%s'" % self.switch_options[0]
+            for opt in self.switch_options[1:]:
+                switch_str += ",'%s'" % opt
+            retval += " --switch=%s" % switch_str
+
         return retval
 
     def _getParser(self):
-        def x_layouts_callback(option, opt_str, value, parser):
-            for layout in value.split(","):
-                if layout:
-                    parser.values.ensure_value(option.dest, []).append(layout)
+        def csv_parse_callback(option, opt_str, value, parser):
+            for item in value.split(","):
+                if item:
+                    parser.values.ensure_value(option.dest, []).append(item)
 
         op = FC3_Keyboard._getParser(self)
         op.add_option("--vckeymap", dest="vc_keymap", action="store", default="")
         op.add_option("--xlayouts", dest="x_layouts", action="callback",
-                      callback=x_layouts_callback, nargs=1, type="string")
+                      callback=csv_parse_callback, nargs=1, type="string")
+        op.add_option("--switch", dest="switch_options", action="callback",
+                      callback=csv_parse_callback, nargs=1, type="string")
 
         return op
 
diff --git a/tests/commands/keyboard.py b/tests/commands/keyboard.py
index a847233..98a7520 100644
--- a/tests/commands/keyboard.py
+++ b/tests/commands/keyboard.py
@@ -49,6 +49,10 @@ class F18_TestCase(FC3_TestCase):
         self.assert_parse("keyboard --xlayouts=cz sk")
         self.assert_parse("keyboard --vckeymap=us --xlayouts=cz")
         self.assert_parse("keyboard --vckeymap=us --xlayouts=cz,'cz (qwerty)' sk")
+        self.assert_parse("keyboard --vckeymap=us --xlayouts=cz "
+                          "--switch=grp:alt_shift_toggle")
+        self.assert_parse("keyboard --vckeymap=us --xlayouts=cz "
+                          "--switch=grp:alt_shift_toggle,grp:switch")
 
         # fail
         self.assert_parse_error("keyboard", KickstartValueError)
-- 
1.7.11.7



More information about the anaconda-patches mailing list