[orca] Fix for bgo#536827 - Provide configuration GUI option to set the Orca key/modifier



commit c40e456ec8f7c32d5d7252904dc7f499ad9ec5ed
Author: Joanmarie Diggs <joanmarie diggs gmail com>
Date:   Sat Jul 10 18:18:18 2010 -0400

    Fix for bgo#536827 - Provide configuration GUI option to set the Orca key/modifier
    
    Adheres to the KISS principle and provides a combo box so that users do not
    have to hand-edit settings files.

 src/orca/orca-setup.ui     |   40 +++++++++++++++++++++++++++++++++-------
 src/orca/orca_gui_prefs.py |   22 +++++++++++++++++-----
 src/orca/orca_prefs.py     |    5 +----
 3 files changed, 51 insertions(+), 16 deletions(-)
---
diff --git a/src/orca/orca-setup.ui b/src/orca/orca-setup.ui
index 46ea8a6..ccb9957 100644
--- a/src/orca/orca-setup.ui
+++ b/src/orca/orca-setup.ui
@@ -226,6 +226,26 @@
       </row>
     </data>
   </object>
+  <object class="GtkListStore" id="model8">
+    <columns>
+      <!-- column-name gchararray -->
+      <column type="gchararray"/>
+    </columns>
+    <data>
+      <row>
+        <col id="0">Insert, KP_Insert</col>
+      </row>
+      <row>
+        <col id="0">KP_Insert</col>
+      </row>
+      <row>
+        <col id="0">Insert</col>
+      </row>
+      <row>
+        <col id="0">Caps_Lock</col>
+      </row>
+    </data>
+  </object>
   <object class="GtkListStore" id="liststore2">
     <columns>
       <!-- column-name gchararray1 -->
@@ -3588,9 +3608,9 @@
                             <property name="visible">True</property>
                             <property name="label" translatable="yes">Orca _Modifier Key(s):</property>
                             <property name="use_underline">True</property>
-                            <property name="mnemonic_widget">orcaModKeyEntry</property>
+                            <property name="mnemonic_widget">orcaModifierComboBox</property>
                             <accessibility>
-                              <relation type="label-for" target="orcaModKeyEntry"/>
+                              <relation type="label-for" target="orcaModifierComboBox"/>
                             </accessibility>
                           </object>
                           <packing>
@@ -3600,14 +3620,20 @@
                           </packing>
                         </child>
                         <child>
-                          <object class="GtkEntry" id="orcaModKeyEntry">
+                          <object class="GtkComboBox" id="orcaModifierComboBox">
                             <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="tooltip_text" translatable="yes">Orca Modifier Keys</property>
-                            <property name="editable">False</property>
-                            <property name="invisible_char">&#x25CF;</property>
+                            <property name="model">model8</property>
+                            <signal name="changed" handler="orcaModifierChanged"/>
+                            <child>
+                              <object class="GtkCellRendererText" id="orcaModifierRenderer"/>
+                              <attributes>
+                              <attribute name="text">0</attribute>
+                              </attributes>
+                            </child>
                           </object>
                           <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
                             <property name="position">1</property>
                           </packing>
                         </child>
diff --git a/src/orca/orca_gui_prefs.py b/src/orca/orca_gui_prefs.py
index 6f4040d..2256dc0 100644
--- a/src/orca/orca_gui_prefs.py
+++ b/src/orca/orca_gui_prefs.py
@@ -153,7 +153,6 @@ class OrcaSetupGUI(orca_gtkbuilder.GtkBuilderWrapper):
         self.keyBindingsModel = None
         self.keyBindView = None
         self.newBinding = None
-        self.orcaModKeyEntry = None
         self.pendingKeyBindings = None
         self.planeCellRendererText = None
         self.pronunciationModel = None
@@ -2126,6 +2125,11 @@ class OrcaSetupGUI(orca_gtkbuilder.GtkBuilderWrapper):
         self.get_widget("autostartOrcaCheckButton").set_active( \
                          self.enableAutostart)
 
+    def _updateOrcaModifier(self):
+        combobox = self.get_widget("orcaModifierComboBox")
+        keystring = ", ".join(self.prefsDict["orcaModifierKeys"])
+        combobox.set_active(self.getComboBoxIndex(combobox, keystring))
+
     def populateComboBox(self, combobox, items):
         """Populates the combobox with the items provided.
 
@@ -2509,10 +2513,7 @@ class OrcaSetupGUI(orca_gtkbuilder.GtkBuilderWrapper):
         if not self.keyBindingsModel.iter_has_child(iterUnbound):
             self.keyBindingsModel.remove(iterUnbound)
 
-        self.orcaModKeyEntry = self.get_widget("orcaModKeyEntry")
-        self.orcaModKeyEntry.set_text(
-            str(settings.orcaModifierKeys)[1:-1].replace("'",""))
-
+        self._updateOrcaModifier()
         self._markModified()
 
         # Translators: an external braille device has buttons on it that
@@ -2890,6 +2891,17 @@ class OrcaSetupGUI(orca_gtkbuilder.GtkBuilderWrapper):
                 self.prefsDict["verbalizePunctuationStyle"] = \
                     settings.PUNCTUATION_STYLE_ALL
 
+    def orcaModifierChanged(self, widget):
+        """Signal handler for the changed signal for the orcaModifierComboBox
+           Set the 'orcaModifierKeys' preference to the new value.
+
+        Arguments:
+        - widget: the component that generated the signal.
+        """
+
+        orcaModifier = widget.get_active_text()
+        self.prefsDict["orcaModifierKeys"] = orcaModifier.split(', ')
+
     def progressBarVerbosityChanged(self, widget):
         """Signal handler for the changed signal for the progressBarVerbosity
            GtkComboBox widget. Set the 'progressBarVerbosity' preference to
diff --git a/src/orca/orca_prefs.py b/src/orca/orca_prefs.py
index 3ed534f..fae2b03 100644
--- a/src/orca/orca_prefs.py
+++ b/src/orca/orca_prefs.py
@@ -229,10 +229,7 @@ class OrcaPrefs:
     def _getOrcaModifierKeysString(self, orcaModifierKeys):
         """Returns a string that represents the Orca modifier keys passed in."""
 
-        if orcaModifierKeys == settings.DESKTOP_MODIFIER_KEYS:
-            return "orca.settings.DESKTOP_MODIFIER_KEYS"
-        else:
-            return "orca.settings.LAPTOP_MODIFIER_KEYS"
+        return "%s" % orcaModifierKeys
 
     def _getSpokenTextAttributesString(self, enabledSpokenTextAttributes):
         """ Returns a string that represents the enabled spoken text attributes 



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