Package virtualBuffers :: Module adobeAcrobat
[hide private]
[frames] | no frames]

Source Code for Module virtualBuffers.adobeAcrobat

  1  from . import VirtualBuffer, VirtualBufferTextInfo 
  2  import controlTypes 
  3  import NVDAObjects.IAccessible 
  4  from NVDAObjects.IAccessible.adobeAcrobat import normalizeStdName 
  5  import winUser 
  6  import IAccessibleHandler 
  7  import oleacc 
  8  from logHandler import log 
  9  import textInfos 
 10  import languageHandler 
 11   
12 -class AdobeAcrobat_TextInfo(VirtualBufferTextInfo):
13
14 - def _normalizeControlField(self,attrs):
15 stdName = attrs.get("acrobat::stdname", "") 16 try: 17 role, level = normalizeStdName(stdName) 18 except LookupError: 19 role, level = None, None 20 21 if not role: 22 accRole=attrs['IAccessible::role'] 23 if accRole.isdigit(): 24 accRole=int(accRole) 25 else: 26 accRole = accRole.lower() 27 role=IAccessibleHandler.IAccessibleRolesToNVDARoles.get(accRole,controlTypes.ROLE_UNKNOWN) 28 29 states=set(IAccessibleHandler.IAccessibleStatesToNVDAStates[x] for x in [1<<y for y in xrange(32)] if int(attrs.get('IAccessible::state_%s'%x,0)) and x in IAccessibleHandler.IAccessibleStatesToNVDAStates) 30 31 attrs['role']=role 32 attrs['states']=states 33 if level: 34 attrs["level"] = level 35 return super(AdobeAcrobat_TextInfo, self)._normalizeControlField(attrs)
36
37 - def _normalizeFormatField(self, attrs):
38 try: 39 attrs["language"] = languageHandler.normalizeLanguage(attrs["language"]) 40 except KeyError: 41 pass 42 return attrs
43
44 -class AdobeAcrobat(VirtualBuffer):
45 TextInfo = AdobeAcrobat_TextInfo 46 programmaticScrollMayFireEvent = True 47
48 - def __init__(self,rootNVDAObject):
49 super(AdobeAcrobat,self).__init__(rootNVDAObject,backendName="adobeAcrobat")
50
51 - def __contains__(self,obj):
52 return winUser.isDescendantWindow(self.rootNVDAObject.windowHandle, obj.windowHandle)
53
54 - def _get_isAlive(self):
55 if self.isLoading: 56 return True 57 root=self.rootNVDAObject 58 if not root: 59 return False 60 if not winUser.isWindow(root.windowHandle) or root.role == controlTypes.ROLE_UNKNOWN: 61 return False 62 return True
63
64 - def getNVDAObjectFromIdentifier(self, docHandle, ID):
66
67 - def getIdentifierFromNVDAObject(self,obj):
68 return obj.windowHandle, obj.accID
69
70 - def _searchableAttribsForNodeType(self,nodeType):
71 if nodeType in ("link", "unvisitedLink"): 72 attrs={"IAccessible::role":[oleacc.ROLE_SYSTEM_LINK]} 73 elif nodeType=="table": 74 attrs={"IAccessible::role":[oleacc.ROLE_SYSTEM_TABLE]} 75 elif nodeType.startswith("heading") and nodeType[7:].isdigit(): 76 attrs = {"acrobat::stdname": ["H%s" % nodeType[7:]]} 77 elif nodeType == "heading": 78 attrs = {"acrobat::stdname": ["H1", "H2", "H3", "H4", "H5", "H6"]} 79 elif nodeType == "formField": 80 attrs = {"IAccessible::role": [oleacc.ROLE_SYSTEM_PUSHBUTTON, oleacc.ROLE_SYSTEM_RADIOBUTTON, oleacc.ROLE_SYSTEM_CHECKBUTTON, oleacc.ROLE_SYSTEM_COMBOBOX, oleacc.ROLE_SYSTEM_LIST, oleacc.ROLE_SYSTEM_OUTLINE, oleacc.ROLE_SYSTEM_TEXT], "IAccessible::state_%s" % oleacc.STATE_SYSTEM_READONLY: [None]} 81 elif nodeType == "list": 82 attrs = {"acrobat::stdname": ["L"]} 83 elif nodeType == "listItem": 84 attrs = {"acrobat::stdname": ["LI"]} 85 elif nodeType=="button": 86 attrs={"IAccessible::role":[oleacc.ROLE_SYSTEM_PUSHBUTTON]} 87 elif nodeType=="edit": 88 attrs={"IAccessible::role":[oleacc.ROLE_SYSTEM_TEXT],"IAccessible::state_%s"%oleacc.STATE_SYSTEM_READONLY:[None]} 89 elif nodeType=="radioButton": 90 attrs={"IAccessible::role":[oleacc.ROLE_SYSTEM_RADIOBUTTON]} 91 elif nodeType=="checkBox": 92 attrs={"IAccessible::role":[oleacc.ROLE_SYSTEM_CHECKBUTTON]} 93 elif nodeType == "blockQuote": 94 attrs = {"acrobat::stdname": ["BlockQuote"]} 95 elif nodeType=="focusable": 96 attrs={"IAccessible::state_%s"%oleacc.STATE_SYSTEM_FOCUSABLE:[1]} 97 elif nodeType=="graphic": 98 attrs={"IAccessible::role":[oleacc.ROLE_SYSTEM_GRAPHIC]} 99 elif nodeType=="comboBox": 100 attrs={"IAccessible::role":[oleacc.ROLE_SYSTEM_COMBOBOX]} 101 else: 102 return None 103 return attrs
104
105 - def event_valueChange(self, obj, nextHandler):
106 if obj.event_childID == 0: 107 return nextHandler() 108 if not self._handleScrollTo(obj): 109 return nextHandler()
110