[orca] Move speech generation of localized rolenames to the speech generator



commit 1e66a7c5634db8c68aebf7e05bf9ad089f985f4d
Author: Joanmarie Diggs <jdiggs igalia com>
Date:   Thu Feb 23 13:23:56 2012 -0500

    Move speech generation of localized rolenames to the speech generator

 src/orca/bookmarks.py                              |    3 +-
 src/orca/flat_review.py                            |    6 ++--
 src/orca/rolenames.py                              |   14 -----------
 src/orca/scripts/toolkits/Gecko/bookmarks.py       |    3 +-
 src/orca/scripts/toolkits/Gecko/script.py          |   14 ++++++-----
 .../scripts/toolkits/Gecko/speech_generator.py     |   13 +++++-----
 .../scripts/toolkits/WebKitGtk/speech_generator.py |   11 ++++-----
 src/orca/speech_generator.py                       |   24 +++++++++++++++++--
 8 files changed, 45 insertions(+), 43 deletions(-)
---
diff --git a/src/orca/bookmarks.py b/src/orca/bookmarks.py
index 3bdb437..b5929e1 100644
--- a/src/orca/bookmarks.py
+++ b/src/orca/bookmarks.py
@@ -22,7 +22,6 @@
 import pickle
 import os
 
-import rolenames
 import speech
 import settings
 import orca_state
@@ -123,7 +122,7 @@ class Bookmarks:
         p = cur_obj.parent
         while p:
             if bookmark_ancestors.count(p) > 0:
-                rolename = rolenames.getSpeechForRoleName(p)
+                rolename = p.getLocalizedRoleName()
                 # Translators: this announces that the bookmark and the current
                 # object share a common ancestor
                 #
diff --git a/src/orca/flat_review.py b/src/orca/flat_review.py
index 54a9cf5..acd68d9 100644
--- a/src/orca/flat_review.py
+++ b/src/orca/flat_review.py
@@ -440,11 +440,11 @@ class ValueZone(Zone):
             except:
                 percentValue = 0
 
+            rolename = self.accessible.getLocalizedRoleName()
             if orientation:
-                speechValue = orientation + " " + \
-                              rolenames.getSpeechForRoleName(self.accessible)
+                speechValue = orientation + " " + rolename
             else:
-                speechValue = rolenames.getSpeechForRoleName(self.accessible)
+                speechValue = rolename
                 
             # Translators: this is the percentage value of a slider, 
             # progress bar or other component that displays a value as 
diff --git a/src/orca/rolenames.py b/src/orca/rolenames.py
index e2c8153..1a08161 100644
--- a/src/orca/rolenames.py
+++ b/src/orca/rolenames.py
@@ -1217,20 +1217,6 @@ def getLocalizedRoleName(obj, role=None):
 
     return Atk.role_get_localized_name(atkRole)
 
-def getSpeechForRoleName(obj, role=None):
-    """Returns the localized name of the given Accessible object; the name is
-    suitable to be spoken.  If a localized name cannot be discovered, this
-    will return the string as defined by the at-spi.
-
-    Arguments:
-    - obj: an Accessible object
-
-    Returns a string containing the localized name of the object suitable
-    to be spoken.
-    """
-
-    return getLocalizedRoleName(obj, role)
-
 def getShortBrailleForRoleName(obj, role=None):
     """Returns the localized name of the given Accessible object; the name is
     a short string suitable for a Braille display.  If a localized name cannot
diff --git a/src/orca/scripts/toolkits/Gecko/bookmarks.py b/src/orca/scripts/toolkits/Gecko/bookmarks.py
index 40eb8f8..8c33639 100644
--- a/src/orca/scripts/toolkits/Gecko/bookmarks.py
+++ b/src/orca/scripts/toolkits/Gecko/bookmarks.py
@@ -34,7 +34,6 @@ import urlparse
 
 import orca.speech as speech
 import orca.bookmarks as bookmarks
-import orca.rolenames as rolenames
 
 from orca.orca_i18n import _
 
@@ -127,7 +126,7 @@ class GeckoBookmarks(bookmarks.Bookmarks):
         p = cur_obj.parent
         while p:
             if bookmark_ancestors.count(p) > 0:
-                rolename = rolenames.getSpeechForRoleName(p)
+                rolename = p.getLocalizedRoleName()
                 # Translators: this announces that the bookmark and the current
                 # object share a common ancestor
                 #
diff --git a/src/orca/scripts/toolkits/Gecko/script.py b/src/orca/scripts/toolkits/Gecko/script.py
index 904b418..9de0308 100644
--- a/src/orca/scripts/toolkits/Gecko/script.py
+++ b/src/orca/scripts/toolkits/Gecko/script.py
@@ -41,7 +41,6 @@ __date__      = "$Date$"
 __copyright__ = "Copyright (c) 2010 Orca Team."
 __license__   = "LGPL"
 
-from gi.repository import Atk
 from gi.repository import Gtk
 import pyatspi
 import re
@@ -1438,7 +1437,8 @@ class Script(default.Script):
            and event.source.getRole() in [pyatspi.ROLE_SCROLL_PANE,
                                           pyatspi.ROLE_FRAME]:
             utterances = []
-            utterances.append(rolenames.getSpeechForRoleName(event.any_data))
+            utterances.append(
+                self.speechGenerator.getLocalizedRoleName(event.any_data))
             verbosity = _settingsManager.getSetting('speechVerbosityLevel')
             if verbosity == settings.VERBOSITY_LEVEL_VERBOSE:
                 utterances.extend(
@@ -1619,8 +1619,9 @@ class Script(default.Script):
             linkText = text.getText(0, -1)
             speech.speak(linkText, self.voices[settings.HYPERLINK_VOICE])
         else:
-            speech.speak(rolenames.getSpeechForRoleName(event.source),
-                         self.voices[settings.HYPERLINK_VOICE])
+            speech.speak(
+                self.speechGenerator.getLocalizedRoleName(event.source),
+                self.voices[settings.HYPERLINK_VOICE])
 
         self.updateBraille(event.source)
 
@@ -1671,7 +1672,7 @@ class Script(default.Script):
                         keyEvent = orca_state.lastNonModifierKeyEvent
                         speakIt = (keyEvent.event_string == ("Down"))
                     if speakIt:
-                        speech.speak(rolenames.getSpeechForRoleName(\
+                        speech.speak(self.speechGenerator.getLocalizedRoleName(\
                                 event.source, pyatspi.ROLE_AUTOCOMPLETE))
 
         # We care when the document frame changes it's busy state.  That
@@ -1971,7 +1972,8 @@ class Script(default.Script):
             if self.flatReviewContext:
                 self.toggleFlatReviewMode()
             self.updateBraille(newLocusOfFocus)
-            speech.speak(rolenames.getSpeechForRoleName(newLocusOfFocus))
+            speech.speak(
+                self.speechGenerator.getLocalizedRoleName(newLocusOfFocus))
             return
 
         default.Script.locusOfFocusChanged(self,
diff --git a/src/orca/scripts/toolkits/Gecko/speech_generator.py b/src/orca/scripts/toolkits/Gecko/speech_generator.py
index 2f48c92..864f066 100644
--- a/src/orca/scripts/toolkits/Gecko/speech_generator.py
+++ b/src/orca/scripts/toolkits/Gecko/speech_generator.py
@@ -33,7 +33,6 @@ __license__   = "LGPL"
 import pyatspi
 
 import orca.orca as orca
-import orca.rolenames as rolenames
 import orca.speech_generator as speech_generator
 
 from orca.orca_i18n import _
@@ -248,7 +247,7 @@ class SpeechGenerator(speech_generator.SpeechGenerator):
                 link = self._script.utilities.ancestorWithRole(
                     obj, [pyatspi.ROLE_LINK], [pyatspi.ROLE_DOCUMENT_FRAME])
                 if link:
-                    result.append(rolenames.getSpeechForRoleName(link))
+                    result.append(self.getLocalizedRoleName(link))
 
             if role == pyatspi.ROLE_HEADING:
                 level = self._script.getHeadingLevel(obj)
@@ -259,12 +258,12 @@ class SpeechGenerator(speech_generator.SpeechGenerator):
                     # translated rolename for the heading.
                     #
                     result.append(_("%(role)s level %(level)d") % {
-                        'role': rolenames.getSpeechForRoleName(obj, role),
+                        'role': self.getLocalizedRoleName(obj, role),
                         'level': level})
                 else:
-                    result.append(rolenames.getSpeechForRoleName(obj, role))
+                    result.append(self.getLocalizedRoleName(obj, role))
             else:
-                result.append(rolenames.getSpeechForRoleName(obj, role))
+                result.append(self.getLocalizedRoleName(obj, role))
 
             if result:
                 result.extend(acss)
@@ -275,7 +274,7 @@ class SpeechGenerator(speech_generator.SpeechGenerator):
                 # want to indicate that.
                 #
                 acss = self.voice(speech_generator.HYPERLINK)
-                result.append(rolenames.getSpeechForRoleName(obj[0]))
+                result.append(self.getLocalizedRoleName(obj[0]))
                 result.extend(acss)
 
         return result
@@ -425,7 +424,7 @@ class SpeechGenerator(speech_generator.SpeechGenerator):
             if not _settingsManager.getSetting('onlySpeakDisplayedText'):
                 acss = self.voice(speech_generator.SYSTEM)
                 if not (role in dontSpeakRoles) and len(newResult):
-                    roleInfo = rolenames.getSpeechForRoleName(parent)
+                    roleInfo = self.getLocalizedRoleName(parent)
                     if roleInfo:
                         result.extend(acss)
                         result.append(roleInfo)
diff --git a/src/orca/scripts/toolkits/WebKitGtk/speech_generator.py b/src/orca/scripts/toolkits/WebKitGtk/speech_generator.py
index 923c8fe..a9d781d 100644
--- a/src/orca/scripts/toolkits/WebKitGtk/speech_generator.py
+++ b/src/orca/scripts/toolkits/WebKitGtk/speech_generator.py
@@ -31,7 +31,6 @@ import pyatspi
 
 import orca.keynames as keynames
 import orca.orca as orca
-import orca.rolenames as rolenames
 import orca.settings as settings
 import orca.speech_generator as speech_generator
 
@@ -105,7 +104,7 @@ class SpeechGenerator(speech_generator.SpeechGenerator):
                 link = self._script.utilities.ancestorWithRole(
                     obj, [pyatspi.ROLE_LINK], [pyatspi.ROLE_DOCUMENT_FRAME])
                 if link:
-                    result.append(rolenames.getSpeechForRoleName(link))
+                    result.append(self.getLocalizedRoleName(link))
 
             if role == pyatspi.ROLE_HEADING:
                 level = self._script.utilities.headingLevel(obj)
@@ -116,12 +115,12 @@ class SpeechGenerator(speech_generator.SpeechGenerator):
                     # translated rolename for the heading.
                     #
                     result.append(_("%(role)s level %(level)d") % {
-                        'role': rolenames.getSpeechForRoleName(obj, role),
+                        'role': self.getLocalizedRoleName(obj, role),
                         'level': level})
                 else:
-                    result.append(rolenames.getSpeechForRoleName(obj, role))
+                    result.append(self.getLocalizedRoleName(obj, role))
             else:
-                result.append(rolenames.getSpeechForRoleName(obj, role))
+                result.append(self.getLocalizedRoleName(obj, role))
 
             if result:
                 result.extend(acss)
@@ -132,7 +131,7 @@ class SpeechGenerator(speech_generator.SpeechGenerator):
                 # want to indicate that.
                 #
                 acss = self.voice(speech_generator.HYPERLINK)
-                result.append(rolenames.getSpeechForRoleName(obj[0]))
+                result.append(self.getLocalizedRoleName(obj[0]))
                 result.extend(acss)
 
         return result
diff --git a/src/orca/speech_generator.py b/src/orca/speech_generator.py
index 1667215..a82a552 100644
--- a/src/orca/speech_generator.py
+++ b/src/orca/speech_generator.py
@@ -25,12 +25,12 @@ __date__      = "$Date:$"
 __copyright__ = "Copyright (c) 2005-2009 Sun Microsystems Inc."
 __license__   = "LGPL"
 
+import pyatspi
 import urlparse, urllib2
+from gi.repository import Atspi, Atk
 
 import generator
-import pyatspi
 import orca
-import rolenames
 import settings
 import sound
 import text_attribute_names
@@ -253,7 +253,7 @@ class SpeechGenerator(generator.Generator):
         acss = self.voice(SYSTEM)
         role = args.get('role', obj.getRole())
         if (role != pyatspi.ROLE_UNKNOWN):
-            result.append(rolenames.getSpeechForRoleName(obj, role))
+            result.append(self.getLocalizedRoleName(obj, role))
             result.extend(acss)
         return result
 
@@ -267,6 +267,24 @@ class SpeechGenerator(generator.Generator):
         """
         return self._generateRoleName(obj, **args)
 
+    @staticmethod
+    def getLocalizedRoleName(obj, role=None):
+        """Returns the localized name of the given Accessible object; the name
+        is suitable to be spoken.
+
+        Arguments:
+        - obj: an Accessible object
+        - role: an optional pyatspi role to use instead
+        """
+
+        if not isinstance(role, pyatspi.Role):
+            return obj.getLocalizedRoleName()
+
+        nonlocalized = Atspi.role_get_name(role)
+        atkRole = Atk.role_for_name(nonlocalized)
+
+        return Atk.role_get_localized_name(atkRole)
+
     def _generateUnrelatedLabels(self, obj, **args):
         """Returns, as an array of strings (and possibly voice
         specifications), all the labels which are underneath the obj's



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