[PATCH 5/5] Add 'English (US)' and a language-related layout in the Welcome spoke

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

 



---
 pyanaconda/ui/gui/spokes/keyboard.py |   12 +++++++++++-
 pyanaconda/ui/gui/spokes/welcome.py  |   25 ++++++++++++++++++++++++-
 pyanaconda/xklavier.py               |   15 +++++++++++++--
 3 files changed, 48 insertions(+), 4 deletions(-)

diff --git a/pyanaconda/ui/gui/spokes/keyboard.py b/pyanaconda/ui/gui/spokes/keyboard.py
index bc2023c..2a634f8 100644
--- a/pyanaconda/ui/gui/spokes/keyboard.py
+++ b/pyanaconda/ui/gui/spokes/keyboard.py
@@ -131,7 +131,12 @@ class KeyboardSpoke(NormalSpoke):
         self._xkl_wrapper = xklavier.XklWrapper.get_instance()
 
     def apply(self):
-        self.data.keyboard.keyboard = None
+        # Clear and repopulate self.data with actual values
+        self.data.keyboard.layouts_list = list()
+        itr = self._store.get_iter_first()
+        while itr:
+            self.data.keyboard.layouts_list.append(self._store[itr][0])
+            itr = self._store.iter_next(itr)
         # FIXME:  Set the keyboard layout here, too.
 
     @property
@@ -163,6 +168,11 @@ class KeyboardSpoke(NormalSpoke):
     def refresh(self):
         NormalSpoke.refresh(self)
 
+        # Clear and repopulate addedLayoutStore with values from self.data
+        self._store.clear()
+        for layout in self.data.keyboard.layouts_list:
+            self._addLayout(self._store, layout)
+
         self._upButton = self.builder.get_object("upButton")
         self._downButton = self.builder.get_object("downButton")
         self._removeButton = self.builder.get_object("removeLayoutButton")
diff --git a/pyanaconda/ui/gui/spokes/welcome.py b/pyanaconda/ui/gui/spokes/welcome.py
index 0a6953f..8f82745 100644
--- a/pyanaconda/ui/gui/spokes/welcome.py
+++ b/pyanaconda/ui/gui/spokes/welcome.py
@@ -28,6 +28,7 @@ from pyanaconda.ui.gui.utils import enlightbox
 
 from pyanaconda.localization import Language, LOCALE_PREFERENCES
 from pyanaconda.product import productName, productVersion
+from pyanaconda import xklavier
 
 __all__ = ["WelcomeLanguageSpoke"]
 
@@ -38,15 +39,37 @@ class WelcomeLanguageSpoke(StandaloneSpoke):
     preForHub = SummaryHub
     priority = 0
 
+    def __init__(self, *args):
+        StandaloneSpoke.__init__(self, *args)
+        self._xklwrapper = xklavier.XklWrapper.get_instance()
+
     def apply(self):
         selected = self.builder.get_object("languageViewSelection")
         (store, itr) = selected.get_selected()
 
         lang = store[itr][2]
         self.language.select_translation(lang)
-
         self.data.lang.lang = lang
 
+        if self.data.keyboard.layouts_list:
+            #do not add layouts if there are any specified in the kickstart
+            return
+
+        #get language name without any additional specifications
+        #e.g. 'English (United States)' -> 'English'
+        lang_name = store[itr][1]
+        lang_name = lang_name.split()[0]
+
+        #add one language-related and 'English (US)' layouts by default
+        new_layouts = ['us']
+        language_layout = self._xklwrapper.get_default_language_layout(lang_name)
+        if language_layout:
+            new_layouts.append(language_layout)
+
+        for layout in new_layouts:
+            if layout not in self.data.keyboard.layouts_list:
+                self.data.keyboard.layouts_list.append(layout)
+
     @property
     def completed(self):
         return self.data.lang.lang and self.data.lang.lang != ""
diff --git a/pyanaconda/xklavier.py b/pyanaconda/xklavier.py
index d0ac444..386dea2 100755
--- a/pyanaconda/xklavier.py
+++ b/pyanaconda/xklavier.py
@@ -105,7 +105,7 @@ class XklWrapper(object):
 
         c_reg.foreach_language_variant(lang_name, self._get_variant, lang_desc)
 
-        self._language_keyboard_variants[(lang_name, lang_desc)] = self._variants_list
+        self._language_keyboard_variants[lang_desc] = self._variants_list
 
     def _get_country_variants(self, c_reg, item, user_data=None):
         #helper "global" variable
@@ -119,7 +119,18 @@ class XklWrapper(object):
     def get_available_layouts(self):
         """A generator yielding layouts (no need to store them as a bunch)"""
 
-        for (lang_name, lang_desc), variants in sorted(self._language_keyboard_variants.items()):
+        for lang_desc, variants in sorted(self._language_keyboard_variants.items()):
             for layout in variants:
                 yield layout.name
 
+    def get_default_language_layout(self, language):
+        """Get the default layout for a given language"""
+
+        language_layouts = self._language_keyboard_variants.get(language, None)
+
+        if not language_layouts:
+            return None
+
+        #first layout (should exist for every language)
+        return language_layouts[0].name
+
-- 
1.7.4.4

_______________________________________________
Anaconda-devel-list mailing list
Anaconda-devel-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/anaconda-devel-list


[Index of Archives]     [Kickstart]     [Fedora Users]     [Fedora Legacy List]     [Fedora Maintainers]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [Yosemite Photos]     [KDE Users]     [Fedora Tools]
  Powered by Linux