1
2
3
4
5
6
7 import winUser
8 import oleacc
9 from . import IAccessible, getNVDAObjectFromEvent
10 from NVDAObjects import NVDAObjectTextInfo
11 from NVDAObjects.behaviors import EditableTextWithoutAutoSelectDetection
12 from comtypes import COMError, IServiceProvider, hresult
13 from comtypes.gen.FlashAccessibility import ISimpleTextSelection, IFlashAccessibility
14 from logHandler import log
15
17
19 return self.obj.value or ""
20
22 try:
23 return self.obj.ISimpleTextSelectionObject.GetSelection()
24 except COMError, e:
25 if e.hresult == hresult.E_FAIL:
26
27
28 return 0, 0
29 else:
30 raise RuntimeError
31 except AttributeError:
32 raise RuntimeError
33
37
41
42 -class InputTextField(EditableTextWithoutAutoSelectDetection, IAccessible):
44
45 -class Root(IAccessible):
57
59 """Determine the most appropriate class if this is a Flash object.
60 This works similarly to L{NVDAObjects.NVDAObject.findOverlayClasses} except that it never calls any other findOverlayClasses method.
61 """
62 try:
63 servProv = obj.IAccessibleObject.QueryInterface(IServiceProvider)
64 except COMError:
65 return
66
67
68 if obj.IAccessibleRole == oleacc.ROLE_SYSTEM_CLIENT:
69 try:
70 servProv.QueryService(IFlashAccessibility._iid_, IFlashAccessibility)
71 clsList.append(Root)
72 except COMError:
73 pass
74
75 return
76
77
78 try:
79
80 obj.ISimpleTextSelectionObject = servProv.QueryService(ISimpleTextSelection._iid_, ISimpleTextSelection)
81 clsList.append(InputTextField)
82 except COMError:
83 pass
84