1 from . import VirtualBuffer, VirtualBufferTextInfo
2 import controlTypes
3 import NVDAObjects.IAccessible
4 import winUser
5 import IAccessibleHandler
6 import oleacc
7 from logHandler import log
8 import textInfos
9
10 -class AdobeFlash_TextInfo(VirtualBufferTextInfo):
11
13 accRole=attrs['IAccessible::role']
14 if accRole.isdigit():
15 accRole=int(accRole)
16 else:
17 accRole = accRole.lower()
18 role=IAccessibleHandler.IAccessibleRolesToNVDARoles.get(accRole,controlTypes.ROLE_UNKNOWN)
19
20 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)
21
22 attrs['role']=role
23 attrs['states']=states
24 return super(AdobeFlash_TextInfo, self)._normalizeControlField(attrs)
25
27 TextInfo = AdobeFlash_TextInfo
28
31
34
36 if self.isLoading:
37 return True
38 root=self.rootNVDAObject
39 if not root:
40 return False
41 if not winUser.isWindow(root.windowHandle) or root.role == controlTypes.ROLE_UNKNOWN:
42 return False
43 return True
44
47
49 return obj.windowHandle, obj.event_childID
50
75
77 try:
78 obj.doAction()
79 return
80 except:
81 pass
82
83 log.debugWarning("could not programmatically activate field, trying mouse")
84 l=obj.location
85 if not l:
86 log.debugWarning("no location for field")
87 return
88 x=(l[0]+l[2]/2)
89 y=l[1]+(l[3]/2)
90 oldX,oldY=winUser.getCursorPos()
91 winUser.setCursorPos(x,y)
92 winUser.mouse_event(winUser.MOUSEEVENTF_LEFTDOWN,0,0,None,None)
93 winUser.mouse_event(winUser.MOUSEEVENTF_LEFTUP,0,0,None,None)
94 winUser.setCursorPos(oldX,oldY)
95