| Server IP : 182.53.201.61 / Your IP : 216.73.217.175 Web Server : Apache/2.2.15 (Fedora) System : Linux km10.dyndns.org 2.6.31.5-127.fc12.i686.PAE #1 SMP Sat Nov 7 21:25:57 EST 2009 i686 User : apache ( 48) PHP Version : 5.3.3 Disable Function : NONE MySQL : ON | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /usr/lib/python2.6/site-packages/orca/scripts/toolkits/Gecko/ |
Upload File : |
# 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.
"""Custom formatting for Gecko."""
__id__ = "$Id$"
__version__ = "$Revision$"
__date__ = "$Date$"
__copyright__ = "Copyright (c) 2005-2009 Sun Microsystems Inc."
__license__ = "LGPL"
import copy
import pyatspi
import orca.formatting
import orca.settings
# pylint: disable-msg=C0301
########################################################################
# #
# Formatting for things that are not ARIA widgets. For things that #
# are ARIA widgets, we use the default formatting (see the #
# getFormat method). #
# #
########################################################################
formatting = {
'speech': {
'suffix': {
'focused': '[]',
'unfocused': 'newNodeLevel + unselectedCell + ' + orca.formatting.TUTORIAL,
'basicWhereAmI': orca.formatting.TUTORIAL + ' + description + liveRegionDescription',
'detailedWhereAmI' : '[]'
},
'default': {
'focused': '[]',
'unfocused': 'labelAndName + allTextSelection + roleName + availability + ' + orca.formatting.MNEMONIC + ' + accelerator',
'basicWhereAmI': 'labelAndName + roleName',
'detailedWhereAmI' : 'pageSummary'
},
pyatspi.ROLE_ALERT: {
'unfocused': 'expandedEOCs or (labelAndName + unrelatedLabels)'
},
pyatspi.ROLE_DIALOG: {
'unfocused': 'expandedEOCs or (labelAndName + unrelatedLabels)'
},
pyatspi.ROLE_DOCUMENT_FRAME: {
'unfocused': 'name + roleName'
},
pyatspi.ROLE_LIST: {
'focused': 'focusedItem',
'unfocused': 'labelOrName + focusedItem + multiselectableState + numberOfChildren'
},
# [[[TODO: JD - We should decide if we want to provide
# information about the table dimensions, whether or not
# this is a layout table versus a data table, etc. For now,
# however, if it's in HTML content let's ignore it so that
# SayAll by sentence works. :-) ]]]
#
pyatspi.ROLE_TABLE: {
'unfocused': '[]'
},
},
'braille': {
# [[[TODO: WDW - we're doing very little here. The goal for
# autocomplete boxes at the moment is that their children (e.g.,
# a text area, a menu, etc., do all the interactive work and
# the autocomplete acts as more of a container.]]]
#
pyatspi.ROLE_AUTOCOMPLETE: {
'unfocused': '[Component(obj, asString(roleName))]'
},
pyatspi.ROLE_CHECK_BOX: {
'unfocused': '[Component(obj,\
asString((not inDocumentContent\
and (label + displayedText)\
or (label and [""] or name))\
+ roleName),\
indicator=asString(checkedState))]'
},
pyatspi.ROLE_COMBO_BOX: {
'unfocused': '[Component(obj,\
asString(label + name + roleName),\
asString(label) and (len(asString(label)) + 1) or 0)]'
},
pyatspi.ROLE_IMAGE: {
'unfocused': '(imageLink\
and [Link(obj, (asString(label + displayedText)\
or asString(name))\
+ " " + asString(value + roleName))]\
or [Component(obj,\
asString(label + displayedText + value + roleName))])'
},
# [[[TODO: WDW - yikes! We need more parameters to send to
# the Link constructor.]]]
#
pyatspi.ROLE_LINK: {
'unfocused': '[Link(obj, asString(currentLineText)\
or asString(displayedText)\
or asString(name))]',
},
pyatspi.ROLE_LIST: {
'unfocused': '[Component(obj,\
asString(label + focusedItem + roleName),\
asString(label) and (len(asString(label)) + 1) or 0)]'
},
# If we're in document content, we present the indicator followed
# immediately by the role, followed by the label/displayed text,
# etc. The label/displayed text is obtained as part of the line
# contents, therefore we do not want to include it here.
#
pyatspi.ROLE_RADIO_BUTTON: {
'unfocused': '[Component(obj,\
asString((not inDocumentContent\
and ((label + displayedText) or description)\
or [""])\
+ roleName),\
indicator=asString(radioState))]'
}
}
}
if orca.settings.useExperimentalSpeechProsody:
formatting['speech'][pyatspi.ROLE_LIST]['unfocused'] = \
'labelOrName + pause + focusedItem + pause + multiselectableState + numberOfChildren + pause'
class Formatting(orca.formatting.Formatting):
# pylint: disable-msg=W0142
def __init__(self, script):
orca.formatting.Formatting.__init__(self, script)
self.update(copy.deepcopy(formatting))
# This is a copy of the default formatting, which we will
# use for ARIA widgets.
#
self._defaultFormatting = orca.formatting.Formatting(script)
def getFormat(self, **args):
# ARIA widgets get treated like regular default widgets.
#
if args.get('useDefaultFormatting', False):
return self._defaultFormatting.getFormat(**args)
else:
return orca.formatting.Formatting.getFormat(self, **args)