[orca] Revert "More updates to Mesar's patch for bgo#570658"
- From: William Walker <wwalker src gnome org>
- To: svn-commits-list gnome org
- Subject: [orca] Revert "More updates to Mesar's patch for bgo#570658"
- Date: Tue, 12 May 2009 15:13:59 -0400 (EDT)
commit 3d82f30189b44f4e4917002d6480d181349b9616
Author: Willie Walker <william walker sun com>
Date: Tue May 12 15:13:31 2009 -0400
Revert "More updates to Mesar's patch for bgo#570658"
This reverts commit b0a497e67056f5ef8506cffddc3b58844a706dd4.
---
src/orca/Makefile.am | 2 -
src/orca/altspeechgenerator.py | 736 ----------------------------------------
src/orca/formatting.py | 189 ----------
src/orca/script.py | 6 -
src/orca/speechgenerator.py | 15 +-
5 files changed, 2 insertions(+), 946 deletions(-)
diff --git a/src/orca/Makefile.am b/src/orca/Makefile.am
index b4a026d..21ccabc 100644
--- a/src/orca/Makefile.am
+++ b/src/orca/Makefile.am
@@ -9,7 +9,6 @@ orca_pathdir=$(pyexecdir)
orca_python_PYTHON = \
__init__.py \
acss.py \
- altspeechgenerator.py \
app_gui_prefs.py \
app_prefs.py \
bookmarks.py \
@@ -26,7 +25,6 @@ orca_python_PYTHON = \
find.py \
flat_review.py \
focus_tracking_presenter.py \
- formatting.py \
gnomespeechfactory.py \
httpserver.py \
input_event.py \
diff --git a/src/orca/altspeechgenerator.py b/src/orca/altspeechgenerator.py
deleted file mode 100644
index f39f047..0000000
--- a/src/orca/altspeechgenerator.py
+++ /dev/null
@@ -1,736 +0,0 @@
-# Orca
-#
-# Copyright 2005-2009 Sun Microsystems Inc.
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Library General Public
-# License as published by the Free Software Foundation; either
-# version 2 of the License, or (at your option) any later version.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Library General Public License for more details.
-#
-# You should have received a copy of the GNU Library General Public
-# License along with this library; if not, write to the
-# Free Software Foundation, Inc., Franklin Street, Fifth Floor,
-# Boston MA 02110-1301 USA.
-
-"""Utilities for obtaining speech utterances for objects. In general,
-there probably should be a singleton instance of the SpeechGenerator
-class."""
-
-__id__ = "$Id:$"
-__version__ = "$Revision:$"
-__date__ = "$Date:$"
-__copyright__ = "Copyright (c) 2005-2009 Sun Microsystems Inc."
-__license__ = "LGPL"
-
-import sys
-import re
-import traceback
-
-import pyatspi
-import rolenames
-import settings
-import generator_settings
-
-from orca_i18n import _ # for gettext support
-from orca_i18n import ngettext # for ngettext support
-from orca_i18n import C_ # to provide qualified translatable strings
-
-def formatExceptionInfo(maxTBlevel=5):
- cla, exc, trbk = sys.exc_info()
- excName = cla.__name__
- try:
- excArgs = exc.args
- except KeyError:
- excArgs = "<no args>"
- excTb = traceback.format_tb(trbk, maxTBlevel)
- return (excName, excArgs, excTb)
-
-class AltSpeechGenerator:
- """Takes accessible objects and produces a string to speak for
- those objects. See the getSpeech method, which is the primary
- entry point. Subclasses can feel free to override/extend the
- speechGenerators instance field as they see fit."""
-
- def __init__(self, script):
- self._script = script
- self._methodsDict = {}
- for method in \
- filter(lambda z: callable(z),
- map(lambda y: getattr(self, y).__get__(self, self.__class__),
- filter(lambda x: x.startswith("_get"), dir(self)))):
- name = method.__name__[4:]
- name = name[0].lower() + name[1:]
- self._methodsDict[name] = method
-
- for roleKey in generator_settings.formattingDict.keys():
- for speechKey in ["focusedSpeech", "unfocusedSpeech"]:
- try:
- evalString = \
- generator_settings.formattingDict[roleKey][speechKey]
- except:
- continue
- else:
- if not evalString:
- # It's legal to have an empty string for speech.
- #
- continue
- generatedResultsDict = {}
- while True:
- try:
- eval(evalString, generatedResultsDict)
- break
- except NameError:
- info = formatExceptionInfo()
- arg = info[1][0]
- arg = arg.replace("name '", "")
- arg = arg.replace("' is not defined", "")
- if not self._methodsDict.has_key(arg):
- print roleKey, speechKey, evalString, \
- " no function for '%s'\n" % arg
- generatedResultsDict[arg] = ""
- except:
- print roleKey, speechKey, evalString, \
- formatExceptionInfo()
- break
-
- #####################################################################
- # #
- # Name, role, and label information #
- # #
- #####################################################################
-
- def _getName(self, obj, **args):
- result = []
- name = self._script.getDisplayedText(obj)
- if name:
- result.append(name)
- elif obj.description:
- result.append(obj.description)
- return result
-
- def _getTextRole(self, obj, **args):
- result = []
- # pylint: disable-msg=W0142
- if obj.getRole() != pyatspi.ROLE_PARAGRAPH:
- result.extend(self._getRoleName(obj, **args))
- return result
-
- def _getRoleName(self, obj, forceRole=None, **args):
- result = []
- if forceRole:
- role = forceRole
- else:
- role = args.get('role', None)
- if (obj.getRole() != pyatspi.ROLE_UNKNOWN):
- result.append(rolenames.getSpeechForRoleName(obj, role))
- return result
-
- def _getLabel(self, obj, **args):
- result = []
- label = self._script.getDisplayedLabel(obj)
- if label:
- result = [label]
- return result
-
- def _getLabelAndName(self, obj, **args):
- """Gets the label and the name if the name is different from the label."""
- # pylint: disable-msg=W0142
- result = []
- label = self._getLabel(obj, **args)
- name = self._getName(obj, **args)
- result.extend(label)
- if not len(label):
- result.extend(name)
- elif len(name) and name[0] != label[0]:
- result.extend(name)
- return result
-
- def _getLabelOrName(self, obj, **args ):
- """Gets the label or the name if the label is not preset."""
- result = []
- # pylint: disable-msg=W0142
- result.extend(self._getLabel(obj, **args))
- if not result:
- if obj.name and (len(obj.name)):
- result.append(obj.name)
- return result
-
- def _getUnrelatedLabels(self, obj, **args):
- """Finds all labels not in a label for or labelled by relation."""
- labels = self._script.findUnrelatedLabels(obj)
- result = []
- for label in labels:
- name = self._getName(label, False)
- result.extend(name)
- return result
-
- def _getEmbedded(self, obj, **args):
- # pylint: disable-msg=W0142
- result = self._getLabelOrName(obj, **args)
- if not result:
- try:
- result.append(obj.getApplication().name)
- except:
- pass
- return result
-
- #####################################################################
- # #
- # State information #
- # #
- #####################################################################
-
- def _getCheckedState(self, obj, **args):
- result = []
- state = obj.getState()
- if state.contains(pyatspi.STATE_INDETERMINATE):
- # Translators: this represents the state of a checkbox.
- #
- result.append(_("partially checked"))
- elif state.contains(pyatspi.STATE_CHECKED):
- # Translators: this represents the state of a checkbox.
- #
- result.append(_("checked"))
- else:
- # Translators: this represents the state of a checkbox.
- #
- result.append(_("not checked"))
- return result
-
- def _getCellCheckedState(self, obj, **args):
- # pylint: disable-msg=W0142
- result = []
- try:
- action = obj.queryAction()
- except NotImplementedError:
- action = None
- if action:
- for i in range(0, action.nActions):
- # Translators: this is the action name for
- # the 'toggle' action. It must be the same
- # string used in the *.po file for gail.
- #
- if action.getName(i) in ["toggle", _("toggle")]:
- oldFormat = args.get('format', None)
- args['format'] = self._script.formatting.getFormat(
- forceRole=pyatspi.ROLE_CHECK_BOX, **args)
- result.extend(
- self.getSpeech(obj, **args))
- args['format'] = oldFormat
- break
- return result
-
- def _getRadioState(self, obj, **args):
- result = []
- state = obj.getState()
- if state.contains(pyatspi.STATE_CHECKED):
- # Translators: this is in reference to a radio button being
- # selected or not.
- #
- result.append(C_("radiobutton", "selected"))
- else:
- # Translators: this is in reference to a radio button being
- # selected or not.
- #
- result.append(C_("radiobutton", "not selected"))
- return result
-
- def _getToggleState(self, obj, **args):
- result = []
- state = obj.getState()
- if state.contains(pyatspi.STATE_CHECKED) \
- or state.contains(pyatspi.STATE_PRESSED):
- # Translators: the state of a toggle button.
- #
- result.append(_("pressed"))
- else:
- # Translators: the state of a toggle button.
- #
- result.append(_("not pressed"))
- return result
-
- def _getExpandableState(self, obj, **args):
- result = []
- state = obj.getState()
- if state.contains(pyatspi.STATE_EXPANDABLE):
- if state.contains(pyatspi.STATE_EXPANDED):
- # Translators: this represents the state of a node in a tree.
- # 'expanded' means the children are showing.
- # 'collapsed' means the children are not showing.
- #
- result.append(_("expanded"))
- else:
- # Translators: this represents the state of a node in a tree.
- # 'expanded' means the children are showing.
- # 'collapsed' means the children are not showing.
- #
- result.append(_("collapsed"))
- return result
-
- def _getMenuItemCheckedState(self, obj, **args):
- result = []
- if state.contains(pyatspi.STATE_CHECKED):
- # Translators: this represents the state of a checked menu item.
- #
- result.append(_("checked"))
- return result
-
- def _getAvailability(self, obj, **args):
- result = []
- state = obj.getState()
- if not state.contains(pyatspi.STATE_SENSITIVE):
- # Translators: this represents an item on the screen that has
- # been set insensitive (or grayed out).
- #
- result.append(_("grayed"))
- return result
-
- def _getRequired(self, obj, **args):
- result = []
- state = obj.getState()
- if state.contains(pyatspi.STATE_REQUIRED):
- result = [settings.speechRequiredStateString]
- return result
-
- def _getReadOnly(self, obj, **args):
- result = []
- if settings.presentReadOnlyText \
- and self._script.isReadOnlyTextArea(obj):
- result.append(settings.speechReadOnlyString)
- return result
-
- #####################################################################
- # #
- # Image information #
- # #
- #####################################################################
-
- def _getImageDescription(self, obj, **args ):
- result = []
- try:
- image = obj.queryImage()
- except NotImplementedError:
- pass
- else:
- description = image.imageDescription
- if description and len(description):
- result.append(description)
- return result
-
- def _getImage(self, obj, **args):
- result = []
- try:
- image = obj.queryImage()
- except:
- pass
- else:
- role = pyatspi.ROLE_IMAGE
- result.extend(self.getSpeech(obj, role=role))
- return result
-
- #####################################################################
- # #
- # Table interface information #
- # #
- #####################################################################
-
- def _getTableCell2ChildLabel(self, obj, **args):
- """Get the speech utterances for the label of single table cell that
- has a special 2 child pattern that we run into."""
- # pylint: disable-msg=W0142
- result = []
-
- # If this table cell has 2 children and one of them has a
- # 'toggle' action and the other does not, then present this
- # as a checkbox where:
- # 1) we get the checked state from the cell with the 'toggle' action
- # 2) we get the label from the other cell.
- # See Orca bug #376015 for more details.
- #
- if obj.childCount == 2:
- cellOrder = []
- hasToggle = [False, False]
- for i, child in enumerate(obj):
- try:
- action = child.queryAction()
- except NotImplementedError:
- continue
- else:
- for j in range(0, action.nActions):
- # Translators: this is the action name for
- # the 'toggle' action. It must be the same
- # string used in the *.po file for gail.
- #
- if action.getName(j) in ["toggle", _("toggle")]:
- hasToggle[i] = True
- break
- if hasToggle[0] and not hasToggle[1]:
- cellOrder = [ 1, 0 ]
- elif not hasToggle[0] and hasToggle[1]:
- cellOrder = [ 0, 1 ]
- if cellOrder:
- args['format'] = self._script.formatting.getFormat( \
- forceRole=pyatspi.ROLE_TABLE_CELL, **args)
- for i in cellOrder:
- if not hasToggle[i]:
- result.extend(self.getSpeech(obj[i], **args))
- return result
-
- def _getTableCell2ChildToggle(self, obj, **args):
- """Get the speech utterances for the label of single table cell that
- has a special 2 child pattern that we run into."""
- # pylint: disable-msg=W0142
- result = []
-
- # If this table cell has 2 children and one of them has a
- # 'toggle' action and the other does not, then present this
- # as a checkbox where:
- # 1) we get the checked state from the cell with the 'toggle' action
- # 2) we get the label from the other cell.
- # See Orca bug #376015 for more details.
- #
- if obj.childCount == 2:
- cellOrder = []
- hasToggle = [False, False]
- for i, child in enumerate(obj):
- try:
- action = child.queryAction()
- except NotImplementedError:
- continue
- else:
- for j in range(0, action.nActions):
- # Translators: this is the action name for
- # the 'toggle' action. It must be the same
- # string used in the *.po file for gail.
- #
- if action.getName(j) in ["toggle", _("toggle")]:
- hasToggle[i] = True
- break
-
- if hasToggle[0] and not hasToggle[1]:
- cellOrder = [ 1, 0 ]
- elif not hasToggle[0] and hasToggle[1]:
- cellOrder = [ 0, 1 ]
- if cellOrder:
- args['role'] = pyatspi.ROLE_CHECK_BOX
- for i in cellOrder:
- if hasToggle[i]:
- result.extend(self.getSpeech(obj[i], **args))
- return result
-
- def _getTableCellRow(self, obj, **args):
- """Get the speech for a table cell row or a single table cell
- if settings.readTableCellRow is False."""
- # pylint: disable-msg=W0142
- result = []
-
- try:
- parentTable = obj.parent.queryTable()
- except NotImplementedError:
- parentTable = None
- if settings.readTableCellRow and parentTable \
- and (not self._script.isLayoutOnly(obj.parent)):
- parent = obj.parent
- index = self._script.getCellIndex(obj)
- row = parentTable.getRowAtIndex(index)
- column = parentTable.getColumnAtIndex(index)
-
- # This is an indication of whether we should speak all the
- # table cells (the user has moved focus up or down a row),
- # or just the current one (focus has moved left or right in
- # the same row).
- #
- speakAll = True
- if "lastRow" in self._script.pointOfReference and \
- "lastColumn" in self._script.pointOfReference:
- pointOfReference = self._script.pointOfReference
- speakAll = (pointOfReference["lastRow"] != row) or \
- ((row == 0 or row == parentTable.nRows-1) and \
- pointOfReference["lastColumn"] == column)
- if speakAll:
- for i in range(0, parentTable.nColumns):
- cell = parentTable.getAccessibleAt(row, i)
- if not cell:
- continue
- state = cell.getState()
- showing = state.contains(pyatspi.STATE_SHOWING)
- if showing:
- # If this table cell has a "toggle" action, and
- # doesn't have any label associated with it then
- # also speak the table column header.
- # See Orca bug #455230 for more details.
- #
- label = self._script.getDisplayedText( \
- self._script.getRealActiveDescendant(cell))
- try:
- action = cell.queryAction()
- except NotImplementedError:
- action = None
- if action and (label == None or len(label) == 0):
- for j in range(0, action.nActions):
- # Translators: this is the action name for
- # the 'toggle' action. It must be the same
- # string used in the *.po file for gail.
- #
- if action.getName(j) in ["toggle", \
- _("toggle")]:
- accHeader = \
- parentTable.getColumnHeader(i)
- result.append(accHeader.name)
- format = self._script.formatting.getFormat( \
- forceRole='REAL_ROLE_TABLE_CELL', **args)
- result.extend( \
- self.getSpeech(cell,
- format=format,
- **args))
- else:
- format = self._script.formatting.getFormat( \
- forceRole='REAL_ROLE_TABLE_CELL', **args)
- result.extend( \
- self.getSpeech(obj, format=format, **args))
- else:
- format = self._script.formatting.getFormat(
- forceRole='REAL_ROLE_TABLE_CELL',
- **args)
- result = self.getSpeech(obj, format=format, **args)
- return result
-
- #####################################################################
- # #
- # Terminal information #
- # #
- #####################################################################
-
- def _getTerminal(self, obj, **args):
- result = []
- title = None
- frame = self._script.getFrame(obj)
- if frame:
- title = frame.name
- if not title:
- title = self._script.getDisplayedLabel(obj)
- result.append(title)
- return result
-
- #####################################################################
- # #
- # Text interface information #
- # #
- #####################################################################
-
- def _getCurrentLineText(self, obj, **args ):
- [text, caretOffset, startOffset] = self._script.getTextLineAtCaret(obj)
- return [text]
-
- def _getDisplayedText(self, obj, **args ):
- """Returns the text being displayed for an object or the object's
- name if no text is being displayed."""
- return [self._script.getDisplayedText(obj)]
-
- def _getAllTextSelection(self, obj, **args):
- """Check if this object has text associated with it and it's
- completely selected."""
- result = []
- try:
- textObj = obj.queryText()
- except:
- pass
- else:
- noOfSelections = textObj.getNSelections()
- if noOfSelections == 1:
- [string, startOffset, endOffset] = \
- textObj.getTextAtOffset(0, pyatspi.TEXT_BOUNDARY_LINE_START)
- if startOffset == 0 and endOffset == len(string):
- # Translators: when the user selects (highlights) text in
- # a document, Orca lets them know this.
- #
- result = [C_("text", "selected")]
- return result
-
- #####################################################################
- # #
- # Value interface information #
- # #
- #####################################################################
-
- def _getValue(self, obj, **args):
- return [self._script.getTextForValue(obj)]
-
- def _getPercentage(self, obj, **args ):
- result = []
- try:
- value = obj.queryValue()
- except NotImplementedError:
- pass
- else:
- percentValue = \
- (value.currentValue \
- / (value.maximumValue - value.minimumValue)) \
- * 100.0
- # Translators: this is the percentage value of a progress bar.
- #
- percentage = _("%d percent.") % percentValue + " "
- result.append(percentage)
- return result
-
- #####################################################################
- # #
- # Hierarchy and related dialog information #
- # #
- #####################################################################
-
- def _getRealActiveDescendantDisplayedText(self, obj, **args ):
- text = self._script.getDisplayedText(\
- self._script.getRealActiveDescendant(obj))
- if text:
- return [text]
- else:
- return []
-
- def _getNumberOfChildren(self, obj, **args):
- result = []
- childNodes = self._script.getChildNodes(obj)
- children = len(childNodes)
- if children:
- # Translators: this is the number of items in a layered
- # pane or table.
- #
- itemString = ngettext("%d item", "%d items", children) % children
- result.append(itemString)
- return result
-
- def _getNoShowingChildren(self, obj, **args):
- result = []
- hasItems = False
- for child in obj:
- state = child.getState()
- if state.contains(pyatspi.STATE_SHOWING):
- hasItems = True
- break
- if not hasItems:
- # Translators: this is the number of items in a layered pane
- # or table.
- #
- result.append(_("0 items"))
- return result
-
- def _getNoChildren(self, obj, **args ):
- result = []
- if not obj.childCount:
- # Translators: this is the number of items in a layered pane
- # or table.
- #
- result.append(_("0 items"))
- return result
-
- def _getUnfocusedDialogCount(self, obj, **args):
- result = []
- # If this application has more than one unfocused alert or
- # dialog window, then speak '<m> unfocused dialogs'
- # to let the user know.
- #
- alertAndDialogCount = \
- self._script.getUnfocusedAlertAndDialogCount(obj)
- if alertAndDialogCount > 0:
- # Translators: this tells the user how many unfocused
- # alert and dialog windows that this application has.
- #
- result.append(ngettext("%d unfocused dialog",
- "%d unfocused dialogs",
- alertAndDialogCount) % alertAndDialogCount)
- return result
-
- #####################################################################
- # #
- # Keyboard shortcut information #
- # #
- #####################################################################
-
- def _getAccelerator(self, obj, **args):
- result = []
- [mnemonic, shortcut, accelerator] = self._script.getKeyBinding(obj)
- if accelerator:
- # Add punctuation for better prosody.
- #
- #if utterances:
- # utterances[-1] += "."
- result.append(accelerator)
- return result
-
- def _getMnemonic(self, obj, **args):
- result = []
- [mnemonic, shortcut, accelerator] = self._script.getKeyBinding(obj)
- if mnemonic:
- mnemonic = mnemonic[-1] # we just want a single character
- if not mnemonic and shortcut:
- mnemonic = shortcut
- if mnemonic:
- # Add punctuation for better prosody.
- #
- #if utterances:
- # utterances[-1] += "."
- result = [mnemonic]
- return result
-
- #####################################################################
- # #
- # Tie it all together #
- # #
- #####################################################################
-
- def getSpeech(self, obj, already_focused=False, **args):
- # pylint: disable-msg=W0142
- result = []
- generatedResultsDict = {}
- try:
- role = args.get('role', obj.getRole())
- forceRole = args.get('forceRole', role)
- role = forceRole
-
- roleName = self._getRoleName(obj, forceRole=role, **args)
-
- # If someone has already given us the format string to be used
- # then we dont need to look it up.
- #
- format = args.get('format', '')
- if not format:
- args['already_focused'] = already_focused
- format = self._script.formatting.getFormat('speech',
- forceRole=role,
- **args)
-
- assert(format)
- evalString = format
-
- # We loop through the format string, catching each error
- # as we go. Each error should always be a NameError, where
- # the name is the name of one of our generator functions.
- # When we encounter this, we call the function and get its
- # results, placing them in the generatedResultDict,
- # which serves as the globals for the call to eval.
- #
- while True:
- try:
- result = eval(evalString, generatedResultsDict)
- break
- except NameError:
- result = []
- info = formatExceptionInfo()
- arg = info[1][0]
- arg = arg.replace("name '", "")
- arg = arg.replace("' is not defined", "")
- if not self._methodsDict.has_key(arg):
- print("unable to find function for '%s'\n" % arg)
- break
- generatedResultsDict[arg] = \
- self._methodsDict[arg](obj, **args)
- except:
- print formatExceptionInfo()
- result = []
-
- return result
diff --git a/src/orca/formatting.py b/src/orca/formatting.py
deleted file mode 100644
index 8b7bfd6..0000000
--- a/src/orca/formatting.py
+++ /dev/null
@@ -1,189 +0,0 @@
-# Orca
-#
-# Copyright 2004-2009 Sun Microsystems Inc.
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Library General Public
-# License as published by the Free Software Foundation; either
-# version 2 of the License, or (at your option) any later version.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Library General Public License for more details.
-#
-# You should have received a copy of the GNU Library General Public
-# License along with this library; if not, write to the
-# Free Software Foundation, Inc., Franklin Street, Fifth Floor,
-# Boston MA 02110-1301 USA.
-
-"""Manages the formatting settings for Orca."""
-
-__id__ = "$Id:$"
-__version__ = "$Revision:$"
-__date__ = "$Date:$"
-__copyright__ = "Copyright (c) 2004-2009 Sun Microsystems Inc."
-__license__ = "LGPL"
-
-import pyatspi
-
-defaultFormatting = {
- 'speech': {
- 'default': {
- 'focused': '',
- 'unfocused': 'labelAndName + allTextSelection + roleName + availability'
- },
- pyatspi.ROLE_ALERT: {
- 'unfocused': 'labelAndName + unrelatedLabels'
- },
- pyatspi.ROLE_ANIMATION: {
- 'unfocused': 'labelAndName'
- },
- pyatspi.ROLE_CHECK_BOX: {
- 'focused': 'checkedState',
- 'unfocused': 'labelAndName + roleName + checkedState + required + availability'
- },
- pyatspi.ROLE_CHECK_MENU_ITEM: {
- 'focused': 'checkedState',
- 'unfocused': 'labelAndName + roleName + checkedState + required + availability + accelerator'
- },
- pyatspi.ROLE_DIALOG: {
- 'unfocused': 'labelAndName + unrelatedLabels'
- },
- pyatspi.ROLE_FRAME: {
- 'focused': '',
- 'unfocused': 'labelAndName + allTextSelection + roleName + unfocusedDialogCount + availability'
- },
- pyatspi.ROLE_ICON: {
- 'focused': 'labelAndName + imageDescription + roleName',
- 'unfocused': 'labelAndName + imageDescription + roleName'
- },
- pyatspi.ROLE_LAYERED_PANE: {
- 'focused': 'labelAndName + allTextSelection + roleName + availability + noShowingChildren',
- 'unfocused': 'labelAndName + allTextSelection + roleName + availability + noShowingChildren'
- },
- pyatspi.ROLE_LIST_ITEM: {
- 'focused': 'expandableState + availability',
- 'unfocused': 'labelAndName + allTextSelection + expandableState + availability'
- },
- pyatspi.ROLE_MENU: {
- 'focused': '',
- 'unfocused': 'labelAndName + allTextSelection + roleName + availability'
- },
- pyatspi.ROLE_MENU_ITEM: {
- 'focused': '',
- 'unfocused': 'labelAndName + menuItemCheckedState + availability + accelerator'
- },
- pyatspi.ROLE_PASSWORD_TEXT: {
- 'focused': 'labelOrName + readOnly + textRole + currentLineText + allTextSelection',
- 'unfocused': 'labelOrName + readOnly + textRole + currentLineText + allTextSelection'
- },
- pyatspi.ROLE_PROGRESS_BAR: {
- 'focused': 'percentage',
- 'unfocused': 'labelAndName + percentage'
- },
- pyatspi.ROLE_PUSH_BUTTON: {
- 'unfocused': 'labelAndName + roleName'
- },
- pyatspi.ROLE_RADIO_BUTTON: {
- 'focused': 'radioState',
- 'unfocused': 'labelAndName + radioState + roleName + availability'
- },
- pyatspi.ROLE_RADIO_MENU_ITEM: {
- # OpenOffice check menu items currently have a role of "menu item"
- # rather then "check menu item", so we need to test if one of the
- # states is CHECKED. If it is, then add that in to the list of
- # speech utterances. Note that we can't tell if this is a "check
- # menu item" that is currently unchecked and speak that state.
- # See Orca bug #433398 for more details.
- #
- 'focused': 'labelAndName + radioState + roleName + availability',
- 'unfocused': 'labelAndName + radioState + roleName + availability + accelerator'
- },
- pyatspi.ROLE_SLIDER: {
- # Ignore the text on the slider. See bug 340559
- # (http://bugzilla.gnome.org/show_bug.cgi?id=340559): the
- # implementors of the slider support decided to put in a
- # Unicode left-to-right character as part of the text,
- # even though that is not painted on the screen.
- #
- # In Java, however, there are sliders without a label. In
- # this case, we'll add to presentation the slider name if
- # it exists and we haven't found anything yet.
- #
- 'focused': 'value',
- 'unfocused': 'labelAndName + roleName + value + required + availability'
- },
- pyatspi.ROLE_SPIN_BUTTON: {
- 'focused': 'name',
- 'unfocused': 'labelAndName + allTextSelection + roleName + availability + required'
- },
- pyatspi.ROLE_SPLIT_PANE: {
- 'focused': 'value',
- 'unfocused': 'labelAndName + roleName + value + availability'
- },
- pyatspi.ROLE_TABLE: {
- 'focused': 'labelAndName + allTextSelection + roleName + availability + noChildren',
- 'unfocused': 'labelAndName + allTextSelection + roleName + availability + noChildren'
- },
- pyatspi.ROLE_TABLE_CELL: {
- 'focused': '(tableCell2ChildLabel + tableCell2ChildToggle) or cellCheckedState + (realActiveDescendantDisplayedText or imageDescription) + (expandableState and (expandableState + numberOfChildren)) + required',
- 'unfocused': 'tableCellRow'
- },
- 'REAL_ROLE_TABLE_CELL': {
- # the real cell information
- # note that pyatspi.ROLE_TABLE_CELL is used to work out if we need to
- # read a whole row. It calls REAL_ROLE_TABLE_CELL internally.
- # maybe it can be done in a cleaner way?
- #
- 'focused': '(tableCell2ChildLabel + tableCell2ChildToggle) or cellCheckedState + (realActiveDescendantDisplayedText or imageDescription + image) + (expandableState and (expandableState + numberOfChildren)) + required',
- 'unfocused': '(tableCell2ChildLabel + tableCell2ChildToggle) or cellCheckedState + (realActiveDescendantDisplayedText or imageDescription + image) + (expandableState and (expandableState + numberOfChildren)) + required'
- },
- pyatspi.ROLE_TEAROFF_MENU_ITEM: {
- 'focused': '',
- 'unfocused': 'labelAndName + allTextSelection + roleName + availability'
- },
- pyatspi.ROLE_TERMINAL: {
- 'focused': 'terminal',
- 'unfocused': 'terminal'
- },
- pyatspi.ROLE_TEXT: {
- 'focused': 'labelOrName + readOnly + textRole + currentLineText + allTextSelection',
- 'unfocused': 'labelOrName + readOnly + textRole + currentLineText + allTextSelection'
- },
- pyatspi.ROLE_TOGGLE_BUTTON: {
- 'focused': 'toggleState',
- 'unfocused': 'labelAndName + roleName + toggleState + availability'
- },
- pyatspi.ROLE_PARAGRAPH: {
- 'focused': 'labelOrName + readOnly + textRole + currentLineText + allTextSelection',
- 'unfocused': 'labelOrName + readOnly + textRole + currentLineText + allTextSelection'
- },
- pyatspi.ROLE_EMBEDDED: {
- 'focused': 'embedded',
- 'unfocused': 'embedded'
- },
- }
-}
-
-class Formatting(dict):
-
- def __init__(self, script):
- self._script = script
- self.update(defaultFormatting)
-
- def getFormat(self, type, forceRole=None, **args):
- already_focused = args.get('already_focused', False)
- if forceRole:
- role = forceRole
- else:
- role = args.get('role', None)
- if self[type].has_key(role):
- roleDict = self[type][role]
- else:
- roleDict = self[type]['default']
- if already_focused and 'focused' in roleDict:
- format = roleDict['focused']
- else:
- format = roleDict['unfocused']
- return format
diff --git a/src/orca/script.py b/src/orca/script.py
index 859f83a..563e09d 100644
--- a/src/orca/script.py
+++ b/src/orca/script.py
@@ -42,7 +42,6 @@ __license__ = "LGPL"
import braillegenerator
import debug
import flat_review
-import formatting
import keybindings
import orca_state
import settings
@@ -87,7 +86,6 @@ class Script:
self.brailleBindings = self.getBrailleBindings()
self.app_pronunciation_dict = self.getPronunciations()
- self.formatting = self.getFormatting()
self.brailleGenerator = self.getBrailleGenerator()
self.speechGenerator = self.getSpeechGenerator()
self.whereAmI = self.getWhereAmI()
@@ -180,10 +178,6 @@ class Script:
for command, handler in self.brailleBindings.iteritems()
if inputEventHandler == handler]
- def getFormatting(self):
- """Returns the formatting strings for this script."""
- return formatting.Formatting(self)
-
def getBrailleGenerator(self):
"""Returns the braille generator for this script.
"""
diff --git a/src/orca/speechgenerator.py b/src/orca/speechgenerator.py
index eb64d32..90a56b4 100644
--- a/src/orca/speechgenerator.py
+++ b/src/orca/speechgenerator.py
@@ -34,7 +34,6 @@ import debug
import orca_state
import rolenames
import settings
-import altspeechgenerator
from orca_i18n import _ # for gettext support
from orca_i18n import ngettext # for ngettext support
@@ -155,8 +154,6 @@ class SpeechGenerator:
self._getSpeechForTable
self.speechGenerators[pyatspi.ROLE_WINDOW] = \
self._getSpeechForWindow
- #--- mesar----
- self.alt = altspeechgenerator.AltSpeechGenerator(script)
def _addSpeechForObjectAccelerator(self, obj, utterances):
"""Adds an utterance that describes the keyboard accelerator for the
@@ -1876,16 +1873,8 @@ class SpeechGenerator:
generator = self.speechGenerators[role]
else:
generator = self._getDefaultSpeech
- print("processing obj of role %s\n" % obj.getRoleName())
- result1 = [" ".join(generator(obj, already_focused))]
- print("r%d='%s'\n" %(len(result1[0]), result1))
-
- result2 = self.alt.getSpeech(obj, already_focused=already_focused)
- # making the returned values from alt.getSpeech into a string.
- speak = [" ".join(result2)]
- print("s%d='%s'\n" %(len(speak[0]), speak))
- print("r==s=%s\n" %cmp(result1[0], speak[0]))
- return speak
+
+ return [" ".join(generator(obj, already_focused))]
def getSpeechContext(self, obj, stopAncestor=None):
"""Get the speech that describes the names and role of
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]