[orca] Fix for bgo#618728 - Orca should have short and detailed messages in both speech and braille



commit 1dbf97a9c1ebd5228555bf56aa452a8be451f0e7
Author: Joanmarie Diggs <joanmarie diggs gmail com>
Date:   Sat May 22 19:38:36 2010 -0400

    Fix for bgo#618728 - Orca should have short and detailed messages in both speech and braille

 src/orca/default.py               |  158 ++++++++++++----
 src/orca/settings.py              |   17 ++
 src/orca/structural_navigation.py |  366 +++++++++++++++++++++++++++++-------
 3 files changed, 431 insertions(+), 110 deletions(-)
---
diff --git a/src/orca/default.py b/src/orca/default.py
index 07ac58b..b89b811 100644
--- a/src/orca/default.py
+++ b/src/orca/default.py
@@ -1812,12 +1812,19 @@ class Script(script.Script):
                 try:
                     eventsynthesizer.routeToObject(orca_state.locusOfFocus)
                 except:
-                    # Translators: Orca has a command that allows the user
-                    # to move the mouse pointer to the current object. If
-                    # for some reason Orca cannot identify the current
-                    # location, it will speak this message.
+                    # Translators: Orca has a command that allows the user to
+                    # move the mouse pointer to the current object. This is a
+                    # detailed message which will be presented if for some
+                    # reason Orca cannot identify/find the current location.
                     #
-                    self.presentMessage(_("Could not find current location."))
+                    full = _("Could not find current location.")
+                    # Translators: Orca has a command that allows the user to
+                    # move the mouse pointer to the current object. This is a
+                    # brief message which will be presented if for some reason
+                    # Orca cannot identify/find the current location.
+                    #
+                    brief = C_("location", "Not found")
+                    self.presentMessage(full, brief)
 
         return True
 
@@ -1966,12 +1973,20 @@ class Script(script.Script):
                 try:
                     eventsynthesizer.clickObject(orca_state.locusOfFocus, 3)
                 except:
-                    # Translators: Orca has a command that allows the user
-                    # to move the mouse pointer to the current object. If
-                    # for some reason Orca cannot identify the current
-                    # location, it will speak this message.
+                    # Translators: Orca has a command that allows the user to
+                    # move the mouse pointer to the current object. This is a
+                    # detailed message which will be presented if for some
+                    # reason Orca cannot identify/find the current location.
+                    #
+                    full = _("Could not find current location.")
+                    # Translators: Orca has a command that allows the user to
+                    # move the mouse pointer to the current object. This is a
+                    # brief message which will be presented if for some reason
+                    # Orca cannot identify/find the current location.
                     #
-                    self.presentMessage(_("Could not find current location."))
+                    brief = C_("location", "Not found")
+                    self.presentMessage(full, brief)
+
         return True
 
     def spellCurrentItem(self, itemString):
@@ -2510,57 +2525,94 @@ class Script(script.Script):
 
         settings.enableSpeechIndentation = not settings.enableSpeechIndentation 
         if settings.enableSpeechIndentation :
-            # Translators: A message indicating that
+            # Translators: This is a detailed message indicating that
             # indentation and justification will be spoken.
             #
-            line = _("Speaking of indentation and justification enabled.")
+            full = _("Speaking of indentation and justification enabled.")
+            # Translators: This is a brief message that will be presented
+            # to the user who has just enabled/disabled the speaking of
+            # indentation and justification information.
+            #
+            brief = C_("indentation and justification", "Enabled")
         else:
-            # Translators: A message indicating that
+            # Translators: This is a detailed message indicating that
             # indentation and justification will not be spoken.
             #
-            line = _("Speaking of indentation and justification disabled.")
+            full = _("Speaking of indentation and justification disabled.")
+            # Translators: This is a brief message that will be presented
+            # to the user who has just enabled/disabled the speaking of
+            # indentation and justification information.
+            #
+            brief = C_("indentation and justification", "Disabled")
 
-        self.presentMessage(line)
+        self.presentMessage(full, brief)
 
         return True
 
-
     def cycleSpeakingPunctuationLevel(self, inputEvent=None):
         """ Cycle through the punctuation levels for speech. """
 
         currentLevel = settings.verbalizePunctuationStyle 
         if currentLevel == settings.PUNCTUATION_STYLE_NONE:
             newLevel = settings.PUNCTUATION_STYLE_SOME
-
-            # Translators: This message will be presented
-            # when user cycles through the available punctuation levels.
+            # Translators: This detailed message will be presented as the
+            # user cycles through the different levels of spoken punctuation.
+            # The options are: All puntuation marks will be spoken, None
+            # will be spoken, Most will be spoken, or Some will be spoken.
             #
-            line = _("Punctuation level set to some.")
+            full = _("Punctuation level set to some.")
+            # Translators: This brief message will be presented as the user
+            # cycles through the different levels of spoken punctuation.
+            # The options are: All puntuation marks will be spoken, None
+            # will be spoken, Most will be spoken, or Some will be spoken.
+            #
+            brief = C_("spoken punctuation", "Some")
         elif currentLevel == settings.PUNCTUATION_STYLE_SOME:
             newLevel = settings.PUNCTUATION_STYLE_MOST
-
-            # Translators: This message will be presented
-            # when user cycles through the available punctuation levels.
+            # Translators: This detailed message will be presented as the
+            # user cycles through the different levels of spoken punctuation.
+            # The options are: All puntuation marks will be spoken, None
+            # will be spoken, Most will be spoken, or Some will be spoken.
             #
-            line = _("Punctuation level set to most.")
+            full = _("Punctuation level set to most.")
+            # Translators: This brief message will be presented as the user
+            # cycles through the different levels of spoken punctuation.
+            # The options are: All puntuation marks will be spoken, None
+            # will be spoken, Most will be spoken, or Some will be spoken.
+            #
+            brief = C_("spoken punctuation", "Most")
         elif currentLevel == settings.PUNCTUATION_STYLE_MOST:
             newLevel = settings.PUNCTUATION_STYLE_ALL
-
-            # Translators: This message will be presented
-            # when user cycles through the available punctuation levels.
+            # Translators: This detailed message will be presented as the
+            # user cycles through the different levels of spoken punctuation.
+            # The options are: All puntuation marks will be spoken, None
+            # will be spoken, Most will be spoken, or Some will be spoken.
             #
-            line = _("Punctuation level set to all.")
+            full = _("Punctuation level set to all.")
+            # Translators: This brief message will be presented as the user
+            # cycles through the different levels of spoken punctuation.
+            # The options are: All puntuation marks will be spoken, None
+            # will be spoken, Most will be spoken, or Some will be spoken.
+            #
+            brief = C_("spoken punctuation", "All")
         else: 
             # the all case, so cycle to none.
             newLevel = settings.PUNCTUATION_STYLE_NONE
-
-            # Translators: This message will be presented
-            # when user cycles through the available punctuation levels.
+            # Translators: This detailed message will be presented as the
+            # user cycles through the different levels of spoken punctuation.
+            # The options are: All puntuation marks will be spoken, None
+            # will be spoken, Most will be spoken, or Some will be spoken.
             #
-            line = _("Punctuation level set to none.")
+            full = _("Punctuation level set to none.")
+            # Translators: This brief message will be presented as the user
+            # cycles through the different levels of spoken punctuation.
+            # The options are: All puntuation marks will be spoken, None
+            # will be spoken, Most will be spoken, or Some will be spoken.
+            #
+            brief = C_("spoken punctuation", "None")
 
         settings.verbalizePunctuationStyle = newLevel
-        self.presentMessage(line)
+        self.presentMessage(full, brief)
         speech.updatePunctuationLevel()
         return True
 
@@ -5097,26 +5149,54 @@ class Script(script.Script):
     ############################################################################
 
     @staticmethod
-    def presentMessage(message):
+    def presentMessage(fullMessage, briefMessage=None):
         """Convenience method to speak a message and 'flash' it in braille.
 
         Arguments:
-        - message: This can be a string or a list.
+        - fullMessage: This can be a string or a list. This will be presented
+          as the message for users whose flash or message verbosity level is
+          verbose.
+        - briefMessage: This can be a string or a list. This will be presented
+          as the message for users whose flash or message verbosity level is
+          brief. Note that providing no briefMessage will result in the full
+          message being used for either. Callers wishing to present nothing as
+          the briefMessage should set briefMessage to an empty string.
         """
 
-        if not message:
+        if not fullMessage:
             return
 
+        if briefMessage is None:
+            briefMessage = fullMessage
+
         if settings.enableSpeech:
-            speech.speak(message)
+            if settings.messageVerbosityLevel == settings.VERBOSITY_LEVEL_BRIEF:
+                message = briefMessage
+            else:
+                message = fullMessage
+            if message:
+                speech.speak(message)
+
+        if (settings.enableBraille or settings.enableBrailleMonitor) \
+           and settings.enableFlashMessages:
+            if settings.flashVerbosityLevel == settings.VERBOSITY_LEVEL_BRIEF:
+                message = briefMessage
+            else:
+                message = fullMessage
+            if not message:
+                return
 
-        if settings.enableBraille or settings.enableBrailleMonitor:
             if isinstance(message[0], list):
                 message = message[0]
             if isinstance(message, list):
                 message = " ".join(message)
 
-            braille.displayMessage(message, flashTime=settings.brailleFlashTime)
+            if settings.flashIsPersistent:
+                duration = -1
+            else:
+                duration = settings.brailleFlashTime
+
+            braille.displayMessage(message, flashTime=duration)
 
     # [[[TODO - JD: Soon I'll add a check to only do the braille
     # presentation if the user has braille or the braille monitor
diff --git a/src/orca/settings.py b/src/orca/settings.py
index 9eddfd8..23d1237 100644
--- a/src/orca/settings.py
+++ b/src/orca/settings.py
@@ -191,6 +191,11 @@ userCustomizableSettings = [
     "chatPrefixMessageWithName",
     "chatAnnounceBuddyTyping",
     "chatSeparateRoomHistories",
+    "enableFlashMessages",
+    "brailleFlashTime",
+    "flashIsPersistent",
+    "flashVerbosityLevel",
+    "messageVerbosityLevel",
 ]
 
 # The name of the module that hold the user interface for the main window
@@ -250,6 +255,8 @@ VERBOSITY_LEVEL_BRIEF   = 0
 VERBOSITY_LEVEL_VERBOSE = 1
 speechVerbosityLevel    = VERBOSITY_LEVEL_VERBOSE
 brailleVerbosityLevel   = VERBOSITY_LEVEL_VERBOSE
+flashVerbosityLevel     = VERBOSITY_LEVEL_VERBOSE
+messageVerbosityLevel   = VERBOSITY_LEVEL_VERBOSE
 
 BRAILLE_ROLENAME_STYLE_SHORT = 0 # three letter abbreviations
 BRAILLE_ROLENAME_STYLE_LONG  = 1 # full rolename
@@ -390,10 +397,20 @@ enableBrailleContext    = True
 #
 enableBrailleGrouping   = False
 
+# If True, enable braille flash messages. Note that braille or braille
+# monitor will also need to be enabled for this setting to work.
+#
+enableFlashMessages     = True
+
 # The timeout (in milliseconds) to use for messages flashed in braille.
 #
 brailleFlashTime        = 5000
 
+# If True, flash messages should continue to be displayed until some
+# other message comes along, or the user presses a key.
+#
+flashIsPersistent       = False
+
 # If True, enable braille monitor.
 #
 enableBrailleMonitor    = False
diff --git a/src/orca/structural_navigation.py b/src/orca/structural_navigation.py
index 53d13bc..09d7c6d 100644
--- a/src/orca/structural_navigation.py
+++ b/src/orca/structural_navigation.py
@@ -39,6 +39,7 @@ import speech
 
 from orca_i18n import _
 from orca_i18n import ngettext
+from orca_i18n import C_
 
 #############################################################################
 #                                                                           #
@@ -1918,10 +1919,21 @@ class StructuralNavigation:
         else:
             # Translators: this is for navigating document content by
             # moving from anchor to anchor. (An anchor is a named spot
-            # that one can jump to. This stirng is what orca will say
-            # if there are no more anchors found.
+            # that one can jump to.) This is a detailed message which
+            # will be presented to the user if no more anchors can be found.
             #
-            self._script.presentMessage(_("No more anchors."))
+            full = _("No more anchors.")
+            # Translators: Orca has a command that allows the user to move
+            # to the next structural navigation object. In Orca, "structural
+            # navigation" refers to quickly moving through a document by
+            # jumping amongst objects of a given type, such as from link to
+            # link, or from heading to heading, or from form field to form
+            # field. This is a brief message which will be presented to the
+            # user if the desired structural navigation object could not be
+            # found.
+            #
+            brief = C_("structural navigation", "Not found")
+            self._script.presentMessage(full, brief)
 
     ########################
     #                      #
@@ -2000,10 +2012,22 @@ class StructuralNavigation:
             self._presentLine(obj, characterOffset)
         else:
             # Translators: this is for navigating document content by
-            # moving from blockquote to blockquote. This string is what
-            # Orca will say if there are no more blockquotes found.
+            # moving from blockquote to blockquote. This is a detailed
+            # message which will be presented to the user if no more
+            # blockquotes can be found.
+            #
+            full = _("No more blockquotes.")
+            # Translators: Orca has a command that allows the user to move
+            # to the next structural navigation object. In Orca, "structural
+            # navigation" refers to quickly moving through a document by
+            # jumping amongst objects of a given type, such as from link to
+            # link, or from heading to heading, or from form field to form
+            # field. This is a brief message which will be presented to the
+            # user if the desired structural navigation object could not be
+            # found.
             #
-            self._script.presentMessage(_("No more blockquotes."))
+            brief = C_("structural navigation", "Not found")
+            self._script.presentMessage(full, brief)
 
     ########################
     #                      #
@@ -2077,12 +2101,23 @@ class StructuralNavigation:
         if obj:
             obj.queryComponent().grabFocus()
         else:
-            # Translators: this is for navigating in document content
-            # by moving from push button to push button in a form. This
-            # string is what Orca will say if there are no more buttons
+            # Translators: this is for navigating document content by
+            # moving from push button to push button in a form. This is
+            # a detailed message which will be presented to the user if
+            # no more push buttons can be found.
+            #
+            full = _("No more buttons.")
+            # Translators: Orca has a command that allows the user to move
+            # to the next structural navigation object. In Orca, "structural
+            # navigation" refers to quickly moving through a document by
+            # jumping amongst objects of a given type, such as from link to
+            # link, or from heading to heading, or from form field to form
+            # field. This is a brief message which will be presented to the
+            # user if the desired structural navigation object could not be
             # found.
             #
-            self._script.presentMessage(_("No more buttons."))
+            brief = C_("structural navigation", "Not found")
+            self._script.presentMessage(full, brief)
 
     ########################
     #                      #
@@ -2156,12 +2191,23 @@ class StructuralNavigation:
         if obj:
             obj.queryComponent().grabFocus()
         else:
-            # Translators: this is for navigating in document content
-            # by moving from checkbox to checkbox in a form. This
-            # string is what Orca will say if there are no more check
-            # boxes found.
+            # Translators: this is for navigating document content by
+            # moving from checkbox to checkbox in a form. This is a
+            # detailed message which will be presented to the user if
+            # no more checkboxes can be found.
             #
-            self._script.presentMessage(_("No more check boxes."))
+            full = _("No more check boxes.")
+            # Translators: Orca has a command that allows the user to move
+            # to the next structural navigation object. In Orca, "structural
+            # navigation" refers to quickly moving through a document by
+            # jumping amongst objects of a given type, such as from link to
+            # link, or from heading to heading, or from form field to form
+            # field. This is a brief message which will be presented to the
+            # user if the desired structural navigation object could not be
+            # found.
+            #
+            brief = C_("structural navigation", "Not found")
+            self._script.presentMessage(full, brief)
 
     ########################
     #                      #
@@ -2251,10 +2297,22 @@ class StructuralNavigation:
             # Translators: this is for navigating document content by
             # moving from 'large object' to 'large object'. A 'large
             # object' is a logical chunk of text, such as a paragraph,
-            # a list, a table, etc. This string is what Orca will say
-            # if there are no more large objects found.
+            # a list, a table, etc. This is a detailed message which
+            # will be presented to the user if no more large objects
+            # can be found.
+            #
+            full = _("No more large objects.")
+            # Translators: Orca has a command that allows the user to move
+            # to the next structural navigation object. In Orca, "structural
+            # navigation" refers to quickly moving through a document by
+            # jumping amongst objects of a given type, such as from link to
+            # link, or from heading to heading, or from form field to form
+            # field. This is a brief message which will be presented to the
+            # user if the desired structural navigation object could not be
+            # found.
             #
-            self._script.presentMessage(_("No more large objects."))
+            brief = C_("structural navigation", "Not found")
+            self._script.presentMessage(full, brief)
 
     ########################
     #                      #
@@ -2328,12 +2386,23 @@ class StructuralNavigation:
         if obj:
             obj.queryComponent().grabFocus()
         else:
-            # Translators: this is for navigating in document content
-            # by moving from combo box to combo box in a form. This
-            # string is what Orca will say if there are no more combo
-            # boxes found.
+            # Translators: this is for navigating document content by
+            # moving from combo box to combo box in a form. This is a
+            # detailed message which will be presented to the user if
+            # no more checkboxes can be found.
             #
-            self._script.presentMessage(_("No more combo boxes."))
+            full = _("No more combo boxes.")
+            # Translators: Orca has a command that allows the user to move
+            # to the next structural navigation object. In Orca, "structural
+            # navigation" refers to quickly moving through a document by
+            # jumping amongst objects of a given type, such as from link to
+            # link, or from heading to heading, or from form field to form
+            # field. This is a brief message which will be presented to the
+            # user if the desired structural navigation object could not be
+            # found.
+            #
+            brief = C_("structural navigation", "Not found")
+            self._script.presentMessage(full, brief)
 
     ########################
     #                      #
@@ -2416,12 +2485,23 @@ class StructuralNavigation:
         if obj:
             obj.queryComponent().grabFocus()
         else:
-            # Translators: this is for navigating in document content
-            # by moving from text entry to text entry in a form. This
-            # string is what Orca will say if there are no more entries
+            # Translators: this is for navigating document content by
+            # moving from text entry to text entry in a form. This is
+            # a detailed message which will be presented to the user if
+            # no more text entries can be found.
+            #
+            full = _("No more entries.")
+            # Translators: Orca has a command that allows the user to move
+            # to the next structural navigation object. In Orca, "structural
+            # navigation" refers to quickly moving through a document by
+            # jumping amongst objects of a given type, such as from link to
+            # link, or from heading to heading, or from form field to form
+            # field. This is a brief message which will be presented to the
+            # user if the desired structural navigation object could not be
             # found.
             #
-            self._script.presentMessage(_("No more entries."))
+            brief = C_("structural navigation", "Not found")
+            self._script.presentMessage(full, brief)
 
     ########################
     #                      #
@@ -2511,11 +2591,23 @@ class StructuralNavigation:
                 self._setCaretPosition(obj, characterOffset)
                 self._presentObject(obj, characterOffset)
         else:
-            # Translators: this is for navigating in document content
-            # by moving from form field to form field. This string is
-            # what Orca will say if there are no more form fields found.
+            # Translators: this is for navigating document content by
+            # moving from form field to form filed. This is a detailed
+            # message which will be presented to the user if no more form
+            # field can be found.
+            #
+            full = _("No more form fields.")
+            # Translators: Orca has a command that allows the user to move
+            # to the next structural navigation object. In Orca, "structural
+            # navigation" refers to quickly moving through a document by
+            # jumping amongst objects of a given type, such as from link to
+            # link, or from heading to heading, or from form field to form
+            # field. This is a brief message which will be presented to the
+            # user if the desired structural navigation object could not be
+            # found.
             #
-            self._script.presentMessage(_("No more form fields."))
+            brief = C_("structural navigation", "Not found")
+            self._script.presentMessage(full, brief)
 
     ########################
     #                      #
@@ -2621,20 +2713,41 @@ class StructuralNavigation:
             self._setCaretPosition(obj, characterOffset)
             self._presentObject(obj, characterOffset)
         elif not arg:
-            # Translators: this is for navigating HTML content by
-            # moving from heading to heading (e.g. <h1>, <h2>, etc).
-            # This string is what Orca will say if there are no more
+            # Translators: this is for navigating HTML content by moving from
+            # heading to heading (e.g. <h1>, <h2>, etc). This string is the
+            # detailed message which Orca will present if there are no more
             # headings found.
             #
-            self._script.presentMessage(_("No more headings."))
+            full = _("No more headings.")
+            # Translators: Orca has a command that allows the user to move
+            # to the next structural navigation object. In Orca, "structural
+            # navigation" refers to quickly moving through a document by
+            # jumping amongst objects of a given type, such as from link to
+            # link, or from heading to heading, or from form field to form
+            # field. This is a brief message which will be presented to the
+            # user if the desired structural navigation object could not be
+            # found.
+            #
+            brief = C_("structural navigation", "Not found")
+            self._script.presentMessage(full, brief)
         else:
-            # Translators: this is for navigating HTML content by
-            # moving from heading to heading at a particular level
-            # (i.e. only <h1> or only <h2>, etc.) This string is
-            # what Orca will say if there are no more headings found.
+            # Translators: this is for navigating HTML content by moving from
+            # heading to heading at a particular level (i.e. only <h1> or only
+            # <h2>, etc.) This string is the detailed message which Orca will
+            # present if there are no more headings found at the desired level.
+            #
+            full = _("No more headings at level %d.") % arg
+            # Translators: Orca has a command that allows the user to move
+            # to the next structural navigation object. In Orca, "structural
+            # navigation" refers to quickly moving through a document by
+            # jumping amongst objects of a given type, such as from link to
+            # link, or from heading to heading, or from form field to form
+            # field. This is a brief message which will be presented to the
+            # user if the desired structural navigation object could not be
+            # found.
             #
-            self._script.presentMessage(_("No more headings at level %d.") \
-                                            % arg)
+            brief = C_("structural navigation", "Not found")
+            self._script.presentMessage(full, brief)
 
     ########################
     #                      #
@@ -2733,7 +2846,18 @@ class StructuralNavigation:
             # of webpage like banners, main context, search etc.  This
             # is an indication that one was not found.
             #
-            self._script.presentMessage(_("No landmark found."))
+            full = _("No landmark found.")
+            # Translators: Orca has a command that allows the user to move
+            # to the next structural navigation object. In Orca, "structural
+            # navigation" refers to quickly moving through a document by
+            # jumping amongst objects of a given type, such as from link to
+            # link, or from heading to heading, or from form field to form
+            # field. This is a brief message which will be presented to the
+            # user if the desired structural navigation object could not be
+            # found.
+            #
+            brief = C_("structural navigation", "Not found")
+            self._script.presentMessage(full, brief)
 
     ########################
     #                      #
@@ -2836,9 +2960,21 @@ class StructuralNavigation:
         else:
             # Translators: this is for navigating document content by moving
             # from bulleted/numbered list to bulleted/numbered list. This
-            # string is what Orca will say if there are no more lists found.
+            # string is the detailed message which Orca will present if there
+            # are no more lists found.
             #
-            self._script.presentMessage(_("No more lists."))
+            full = _("No more lists.")
+            # Translators: Orca has a command that allows the user to move
+            # to the next structural navigation object. In Orca, "structural
+            # navigation" refers to quickly moving through a document by
+            # jumping amongst objects of a given type, such as from link to
+            # link, or from heading to heading, or from form field to form
+            # field. This is a brief message which will be presented to the
+            # user if the desired structural navigation object could not be
+            # found.
+            #
+            brief = C_("structural navigation", "Not found")
+            self._script.presentMessage(full, brief)
 
     ########################
     #                      #
@@ -2920,10 +3056,21 @@ class StructuralNavigation:
         else:
             # Translators: this is for navigating document content by
             # moving from bulleted/numbered list item to  bulleted/
-            # numbered list item.  This string is what Orca will say
-            # if there are no more list items found.
+            # numbered list item.  This string is the detailed message
+            # which Orca will present if there are no more list items found.
+            #
+            full = _("No more list items.")
+            # Translators: Orca has a command that allows the user to move
+            # to the next structural navigation object. In Orca, "structural
+            # navigation" refers to quickly moving through a document by
+            # jumping amongst objects of a given type, such as from link to
+            # link, or from heading to heading, or from form field to form
+            # field. This is a brief message which will be presented to the
+            # user if the desired structural navigation object could not be
+            # found.
             #
-            self._script.presentMessage(_("No more list items."))
+            brief = C_("structural navigation", "Not found")
+            self._script.presentMessage(full, brief)
 
     ########################
     #                      #
@@ -2997,7 +3144,18 @@ class StructuralNavigation:
             # manner, where a 'live region' is a location in a web page
             # that are updated without having to refresh the entire page.
             #
-            self._script.presentMessage(_("No more live regions."))
+            full = _("No more live regions.")
+            # Translators: Orca has a command that allows the user to move
+            # to the next structural navigation object. In Orca, "structural
+            # navigation" refers to quickly moving through a document by
+            # jumping amongst objects of a given type, such as from link to
+            # link, or from heading to heading, or from form field to form
+            # field. This is a brief message which will be presented to the
+            # user if the desired structural navigation object could not be
+            # found.
+            #
+            brief = C_("structural navigation", "Not found")
+            self._script.presentMessage(full, brief)
 
     ########################
     #                      #
@@ -3073,11 +3231,22 @@ class StructuralNavigation:
             self._setCaretPosition(newObj, characterOffset)
             self._presentObject(obj, 0)
         else:
-            # Translators: this is for navigating document content by
-            # moving from paragraph to paragraph. This string is what
-            # Orca will say if there are no more large objects found.
+            # Translators: this is for navigating document content by moving
+            # from paragraph to paragraph. This string is the detailed message
+            # which Orca will present if there are no more paragraphs found.
+            #
+            full = _("No more paragraphs.")
+            # Translators: Orca has a command that allows the user to move
+            # to the next structural navigation object. In Orca, "structural
+            # navigation" refers to quickly moving through a document by
+            # jumping amongst objects of a given type, such as from link to
+            # link, or from heading to heading, or from form field to form
+            # field. This is a brief message which will be presented to the
+            # user if the desired structural navigation object could not be
+            # found.
             #
-            self._script.presentMessage(_("No more paragraphs."))
+            brief = C_("structural navigation", "Not found")
+            self._script.presentMessage(full, brief)
 
     ########################
     #                      #
@@ -3151,12 +3320,23 @@ class StructuralNavigation:
         if obj:
             obj.queryComponent().grabFocus()
         else:
-            # Translators: this is for navigating in document content
-            # by moving from radio button to radio button in a form.
-            # This string is what Orca will say if there are no more
+            # Translators: this is for navigating in document content by moving
+            # from radio button to radio button in a form. This string is the
+            # detailed message which Orca will present if there are no more
             # radio buttons found.
             #
-            self._script.presentMessage(_("No more radio buttons."))
+            full = _("No more radio buttons.")
+            # Translators: Orca has a command that allows the user to move
+            # to the next structural navigation object. In Orca, "structural
+            # navigation" refers to quickly moving through a document by
+            # jumping amongst objects of a given type, such as from link to
+            # link, or from heading to heading, or from form field to form
+            # field. This is a brief message which will be presented to the
+            # user if the desired structural navigation object could not be
+            # found.
+            #
+            brief = C_("structural navigation", "Not found")
+            self._script.presentMessage(full, brief)
 
     ########################
     #                      #
@@ -3221,12 +3401,23 @@ class StructuralNavigation:
             self._setCaretPosition(newObj, characterOffset)
             self._presentObject(obj, 0)
         else:
-            # Translators: this is for navigating document content by
-            # moving amongst separators (e.g. <hr> tags). This string
-            # is what Orca will say if there are no more separators
+            # Translators: this is for navigating document content by moving
+            # amongst separators (e.g. <hr> tags). This string is the detailed
+            # message which Orca will present if there are no more separators
+            # found.
+            #
+            full = _("No more separators.")
+            # Translators: Orca has a command that allows the user to move
+            # to the next structural navigation object. In Orca, "structural
+            # navigation" refers to quickly moving through a document by
+            # jumping amongst objects of a given type, such as from link to
+            # link, or from heading to heading, or from form field to form
+            # field. This is a brief message which will be presented to the
+            # user if the desired structural navigation object could not be
             # found.
             #
-            self._script.presentMessage(_("No more separators."))
+            brief = C_("structural navigation", "Not found")
+            self._script.presentMessage(full, brief)
 
     ########################
     #                      #
@@ -3302,10 +3493,21 @@ class StructuralNavigation:
             self._presentObject(cell, characterOffset)
         else:
             # Translators: this is for navigating document content by moving
-            # from table to table.  This string is what Orca will say if there
-            # are no more tables found.
+            # from table to table.  This string is the detailed message which
+            # Orca will present if there are no more tables found.
+            #
+            full = _("No more tables.")
+            # Translators: Orca has a command that allows the user to move
+            # to the next structural navigation object. In Orca, "structural
+            # navigation" refers to quickly moving through a document by
+            # jumping amongst objects of a given type, such as from link to
+            # link, or from heading to heading, or from form field to form
+            # field. This is a brief message which will be presented to the
+            # user if the desired structural navigation object could not be
+            # found.
             #
-            self._script.presentMessage(_("No more tables."))
+            brief = C_("structural navigation", "Not found")
+            self._script.presentMessage(full, brief)
 
     ########################
     #                      #
@@ -3489,12 +3691,23 @@ class StructuralNavigation:
             #
             obj.queryComponent().grabFocus()
         else:
-            # Translators: this is for navigating document content by
-            # moving from unvisited link to unvisited link. This string
-            # is what Orca will say if there are no more unvisited links
+            # Translators: this is for navigating document content by moving
+            # from unvisited link to unvisited link. This string is the 
+            # detailed message which Orca will present if there are no more
+            # unvisited links found.
+            #
+            full = _("No more unvisited links.")
+            # Translators: Orca has a command that allows the user to move
+            # to the next structural navigation object. In Orca, "structural
+            # navigation" refers to quickly moving through a document by
+            # jumping amongst objects of a given type, such as from link to
+            # link, or from heading to heading, or from form field to form
+            # field. This is a brief message which will be presented to the
+            # user if the desired structural navigation object could not be
             # found.
             #
-            self._script.presentMessage(_("No more unvisited links."))
+            brief = C_("structural navigation", "Not found")
+            self._script.presentMessage(full, brief)
 
     ########################
     #                      #
@@ -3567,9 +3780,20 @@ class StructuralNavigation:
         if obj:
             obj.queryComponent().grabFocus()
         else:
-            # Translators: this is for navigating document content by
-            # moving from visited link to visited link. This string is
-            # what Orca will say if there are no more visited links
+            # Translators: this is for navigating document content by moving
+            # from visited link to visited link. This string is the detailed
+            # message which Orca will present if there are no more visited
+            # links found.
+            #
+            full = _("No more visited links.")
+            # Translators: Orca has a command that allows the user to move
+            # to the next structural navigation object. In Orca, "structural
+            # navigation" refers to quickly moving through a document by
+            # jumping amongst objects of a given type, such as from link to
+            # link, or from heading to heading, or from form field to form
+            # field. This is a brief message which will be presented to the
+            # user if the desired structural navigation object could not be
             # found.
             #
-            self._script.presentMessage(_("No more visited links."))
+            brief = C_("structural navigation", "Not found")
+            self._script.presentMessage(full, brief)



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