[orca/570658] Allow the getting the rolename to be forced



commit b46453b754a7999c68a1716166c205627122690e
Author: Willie Walker <william walker sun com>
Date:   Thu May 21 17:51:27 2009 -0400

    Allow the getting the rolename to be forced
---
 .../scripts/toolkits/Gecko/speech_generator.py     |   18 +++++++++++-------
 src/orca/scripts/toolkits/Gecko/where_am_i.py      |   10 ++++++----
 src/orca/where_am_I.py                             |   19 ++++++++++---------
 3 files changed, 27 insertions(+), 20 deletions(-)

diff --git a/src/orca/scripts/toolkits/Gecko/speech_generator.py b/src/orca/scripts/toolkits/Gecko/speech_generator.py
index f3028e8..f0aa590 100644
--- a/src/orca/scripts/toolkits/Gecko/speech_generator.py
+++ b/src/orca/scripts/toolkits/Gecko/speech_generator.py
@@ -172,6 +172,7 @@ class SpeechGenerator(speechgenerator.SpeechGenerator):
         """Prevents some roles from being spoken."""
         result = []
         role = args.get('role', obj.getRole())
+        force = args.get('force', False)
 
         # Saying "menu item" for a combo box can confuse users. Therefore,
         # speak the combo box role instead.  Also, only do it if the menu
@@ -185,14 +186,17 @@ class SpeechGenerator(speechgenerator.SpeechGenerator):
             if comboBox:
                 return self._getRoleName(comboBox, **args)
 
-        doNotSpeak = [pyatspi.ROLE_FORM,
-                      pyatspi.ROLE_LABEL,
-                      pyatspi.ROLE_MENU_ITEM,
-                      pyatspi.ROLE_PARAGRAPH,
-                      pyatspi.ROLE_SECTION,
-                      pyatspi.ROLE_UNKNOWN]
+        if not force:
+            doNotSpeak = [pyatspi.ROLE_FORM,
+                          pyatspi.ROLE_LABEL,
+                          pyatspi.ROLE_MENU_ITEM,
+                          pyatspi.ROLE_PARAGRAPH,
+                          pyatspi.ROLE_SECTION,
+                          pyatspi.ROLE_UNKNOWN]
+        else:
+            doNotSpeak = []
 
-        if self._script.inDocumentContent(obj):
+        if not force and self._script.inDocumentContent(obj):
             doNotSpeak.append(pyatspi.ROLE_TABLE_CELL)
             if not self._script.isAriaWidget(obj):
                 doNotSpeak.append(pyatspi.ROLE_LIST_ITEM)
diff --git a/src/orca/scripts/toolkits/Gecko/where_am_i.py b/src/orca/scripts/toolkits/Gecko/where_am_i.py
index 2a7ebaa..d473d2b 100644
--- a/src/orca/scripts/toolkits/Gecko/where_am_i.py
+++ b/src/orca/scripts/toolkits/Gecko/where_am_i.py
@@ -83,14 +83,16 @@ class GeckoWhereAmI(where_am_I.WhereAmI):
                 and not self._script.isAriaWidget(orca_state.locusOfFocus)):
             where_am_I.WhereAmI._speakDefaultButton(self, obj)
 
-    def _getSpeechForRoleName(self, obj, role=None):
+    # pylint: disable-msg=W0142
+
+    def _getSpeechForRoleName(self, obj, **args):
         """Returns the rolename to be spoken for the object. Overridden
         here because there are times when we do not want the speech
         generator returning a role to speak (e.g. navigating within
         a document), but other times when we would (e.g. during a
         whereAmI).
         """
-
+        role = args.get('role', None)
         objRole = obj.getRole()
         if not role and objRole in [pyatspi.ROLE_DOCUMENT_FRAME,
                                     pyatspi.ROLE_FORM,
@@ -100,8 +102,8 @@ class GeckoWhereAmI(where_am_I.WhereAmI):
                                     pyatspi.ROLE_SECTION,
                                     pyatspi.ROLE_TABLE_CELL]:
             role = objRole
-
-        return where_am_I.WhereAmI._getSpeechForRoleName(self, obj, role)
+        args['role'] = role
+        return where_am_I.WhereAmI._getSpeechForRoleName(self, obj, **args)
 
     def _speakObjDescription(self, obj):
         """Speaks the object's description if it is not the same as the
diff --git a/src/orca/where_am_I.py b/src/orca/where_am_I.py
index e102291..abe3441 100644
--- a/src/orca/where_am_I.py
+++ b/src/orca/where_am_I.py
@@ -399,8 +399,8 @@ class WhereAmI:
         """
 
         utterances = []
-        text = self.getObjLabelAndName(obj.parent) + " " + \
-               self._getSpeechForRoleName(obj.parent)
+        text = self.getObjLabelAndName(obj.parent) + " " \
+               + self._getSpeechForRoleName(obj.parent, force=True)
         utterances.append(text.strip())
 
         text = self.getObjLabelAndName(obj)
@@ -1154,19 +1154,20 @@ class WhereAmI:
 
         return text.strip()
 
-    def _getSpeechForRoleName(self, obj, role=None):
+    # pylint: disable-msg=W0142
+
+    def _getSpeechForRoleName(self, obj, **args):
         """Returns the rolename to be spoken for the object.
         """
 
         try:
-            if role:
-                result = self._script.speechGenerator.getRoleName(obj,
-                                                                  role=role)
-            else:
-                result = self._script.speechGenerator.getRoleName(obj)
+            result = self._script.speechGenerator.getRoleName(obj, **args)
             if result:
                 result = result[0]
+            else:
+                result = ""
         except:
+            debug.printException(debug.LEVEL_WARNING)
             result = ""
 
         return result
@@ -1369,7 +1370,7 @@ class WhereAmI:
                     break
 
         if isToggle:
-            text = self._getSpeechForRoleName(obj, pyatspi.ROLE_CHECK_BOX)
+            text = self._getSpeechForRoleName(obj, role=pyatspi.ROLE_CHECK_BOX)
             text = text + " " + self._getCheckBoxState(obj)
         else:
             descendant = self._script.getRealActiveDescendant(obj)



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