[orca/570658] Add support for LIST_ITEM in braille formatting



commit cf7869bba1775a98fc0f86e45689cfcb5d3a1794
Author: Willie Walker <william walker sun com>
Date:   Thu Jun 25 12:11:49 2009 -0400

    Add support for LIST_ITEM in braille formatting
    
    This also involved moving the node level information to generator.py
    and moving the strings to settings.py.  Note also that the computed
    node level is now part of the generator cache.

 src/orca/default.py          |   10 +++++++++-
 src/orca/formatting.py       |    9 ++++++++-
 src/orca/generator.py        |   21 +++++++++++++++++++++
 src/orca/settings.py         |   12 ++++++++++++
 src/orca/speech_generator.py |   29 ++---------------------------
 5 files changed, 52 insertions(+), 29 deletions(-)
---
diff --git a/src/orca/default.py b/src/orca/default.py
index 6d45a6f..4454776 100644
--- a/src/orca/default.py
+++ b/src/orca/default.py
@@ -75,6 +75,7 @@ class Script(script.Script):
     DISPLAYED_LABEL = 'displayedLabel'
     DISPLAYED_TEXT = 'displayedText'
     KEY_BINDING = 'keyBinding'
+    NODE_LEVEL = 'nodeLevel'
 
     def __init__(self, app):
         """Creates a new script for the given application.
@@ -6958,6 +6959,12 @@ class Script(script.Script):
         -obj: the Accessible object
         """
 
+        try:
+            return self.generatorCache[self.NODE_LEVEL][obj]
+        except:
+            if not self.generatorCache.has_key(self.NODE_LEVEL):
+                self.generatorCache[self.NODE_LEVEL] = {}
+
         if not obj:
             return -1
 
@@ -6988,7 +6995,8 @@ class Script(script.Script):
             else:
                 done = True
 
-        return len(nodes) - 1
+        self.generatorCache[self.NODE_LEVEL][obj] = len(nodes) - 1
+        return self.generatorCache[self.NODE_LEVEL][obj]
 
     def getChildNodes(self, obj):
         """Gets all of the children that have RELATION_NODE_CHILD_OF pointing
diff --git a/src/orca/formatting.py b/src/orca/formatting.py
index 3ed6da5..0b80d9c 100644
--- a/src/orca/formatting.py
+++ b/src/orca/formatting.py
@@ -52,6 +52,7 @@ formatting = {
             'radiobutton'  : settings.speechRadioButtonIndicators,
             'togglebutton' : settings.speechToggleButtonIndicators,
             'expansion'    : settings.speechExpansionIndicators,
+            'nodelevel'    : settings.speechNodeLevelString,
             'multiselect'  : settings.speechMultiSelectString,
         },
         'braille' : {
@@ -63,6 +64,7 @@ formatting = {
             'radiobutton'  : settings.brailleRadioButtonIndicators,
             'togglebutton' : settings.brailleToggleButtonIndicators,
             'expansion'    : settings.brailleExpansionIndicators,
+            'nodelevel'    : settings.brailleNodeLevelString,
         },
     },
 
@@ -348,7 +350,12 @@ formatting = {
                                 asString(eol))]'
             },
         #pyatspi.ROLE_LIST: 'default'
-        #pyatspi.ROLE_LIST_ITEM: [[[TODO: WDW - needs to be done]]]
+        pyatspi.ROLE_LIST_ITEM: {
+            'focused':   '[Component(obj,\
+                                     asString(label + displayedText + expandableState + roleName + availability) + asString(accelerator) + (asString(nodeLevel) and (" " + asString(nodeLevel))))]',
+            'unfocused': '[Component(obj,\
+                                     asString(label + displayedText + expandableState + nodeLevel))]',
+            },
         #pyatspi.ROLE_MENU: [[[TODO: WDW - needs to be done]]]
         #pyatspi.ROLE_MENU_BAR: 'default'
         pyatspi.ROLE_MENU_ITEM: {
diff --git a/src/orca/generator.py b/src/orca/generator.py
index 85d3543..602d609 100644
--- a/src/orca/generator.py
+++ b/src/orca/generator.py
@@ -475,6 +475,27 @@ class Generator:
 
     #####################################################################
     #                                                                   #
+    # Tree interface information                                        #
+    #                                                                   #
+    #####################################################################
+
+    def _generateNodeLevel(self, obj, **args):
+        """Returns an array of strings for use by speech and braille that
+        represents the tree node level of the object, or an empty
+        array if the object is not a tree node.
+        """
+        result = []
+        if not args.get('mode', None):
+            args['mode'] = self._mode
+        args['stringType'] = 'nodelevel'
+        level = self._script.getNodeLevel(obj)
+        if level >= 0:
+            result.append(self._script.formatting.getString(**args)\
+                          % (level + 1))
+        return result
+
+    #####################################################################
+    #                                                                   #
     # Value interface information                                       #
     #                                                                   #
     #####################################################################
diff --git a/src/orca/settings.py b/src/orca/settings.py
index 38755f2..c8f8dc4 100644
--- a/src/orca/settings.py
+++ b/src/orca/settings.py
@@ -1251,6 +1251,12 @@ speechExpansionIndicators = [_("collapsed"), _("expanded")]
 #
 speechMultiSelectString = _("multi-select")
 
+# Translators: this represents the depth of a node in a tree
+# view (i.e., how many ancestors a node has).  It is meant to be
+# spoken.
+#
+speechNodeLevelString = _("tree level %d")
+
 # string to indicate end of printed line for braille displays:
 #
 disableBrailleEOL = False
@@ -1286,3 +1292,9 @@ brailleToggleButtonIndicators = ["& y", "&=y"]
 # children are not showing.
 #
 brailleExpansionIndicators = [_("collapsed"), _("expanded")]
+
+# Translators: this represents the depth of a node in a tree
+# view (i.e., how many ancestors a node has).  It is meant to
+# be presented on a braille display.
+#
+brailleNodeLevelString = _("LEVEL %d")
diff --git a/src/orca/speech_generator.py b/src/orca/speech_generator.py
index 7a99bd9..f86ce56 100644
--- a/src/orca/speech_generator.py
+++ b/src/orca/speech_generator.py
@@ -1186,22 +1186,6 @@ class SpeechGenerator(generator.Generator):
     #                                                                   #
     #####################################################################
 
-    def _generateNodeLevel(self, obj, **args):
-        """Returns an array of strings (and possibly voice and audio
-        specifications) that represents the tree node level of the
-        object, or an empty array if the object is not a tree
-        node. [[[WDW - I wonder if this string should be moved to
-        settings.py.]]]
-        """
-        result = []
-        level = self._script.getNodeLevel(obj)
-        if level >= 0:
-            # Translators: this represents the depth of a node in a tree
-            # view (i.e., how many ancestors a node has).
-            #
-            result.append(_("tree level %d") % (level + 1))
-        return result
-
     def _generateNewNodeLevel(self, obj, **args):
         """Returns an array of strings (and possibly voice and audio
         specifications) that represents the tree node level of the
@@ -1209,22 +1193,13 @@ class SpeechGenerator(generator.Generator):
         if the node level is not different from the 'priorObj'
         'priorObj' attribute of the args dictionary.  The 'priorObj'
         is typically set by Orca to be the previous object with
-        focus.  [[[WDW - I wonder if this string should be moved to
-        settings.py.]]]
+        focus.
         """
-
-        # [[[TODO: WDW - hate duplicating code from _generateNodeLevel,
-        # but don't want to call it because it will make the same
-        # self._script.getNodeLevel call again.]]]
-        #
         result = []
         oldLevel = self._script.getNodeLevel(args.get('priorObj', None))
         newLevel = self._script.getNodeLevel(obj)
         if (oldLevel != newLevel) and (newLevel >= 0):
-            # Translators: this represents the depth of a node in a tree
-            # view (i.e., how many ancestors a node has).
-            #
-            result.append(_("tree level %d") % (newLevel + 1))
+            result.extend(self._generateNodeLevel(obj, **args))
         return result
 
     #####################################################################



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