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
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
43
45 TextInfo = AdobeAcrobat_TextInfo
46 programmaticScrollMayFireEvent = True
47
50
53
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
66
68 return obj.windowHandle, obj.accID
69
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
106 if obj.event_childID == 0:
107 return nextHandler()
108 if not self._handleScrollTo(obj):
109 return nextHandler()
110