OSDN Git Service

Support for the checkbox list items used for mesage rules in the Message Filters...
authorMichael Curran <mick@kulgan.net>
Fri, 24 Sep 2010 10:00:46 +0000 (20:00 +1000)
committerMichael Curran <mick@kulgan.net>
Fri, 24 Sep 2010 10:00:46 +0000 (20:00 +1000)
source/NVDAObjects/IAccessible/sysListView32.py
source/appModules/msimn.py
source/appModules/wlmail.py

index 402eb5f..8a9d7cb 100644 (file)
@@ -20,6 +20,7 @@ from ..window import Window
 \r
 #Window messages\r
 LVM_FIRST=0x1000\r
+LVM_GETITEMSTATE=LVM_FIRST+44\r
 LVM_GETFOCUSEDGROUP=LVM_FIRST+93\r
 LVM_GETGROUPINFOBYINDEX=LVM_FIRST+153\r
 LVM_GETITEMCOUNT=LVM_FIRST+4\r
@@ -45,7 +46,7 @@ LVGF_GROUPID=0x10
 #Item states\r
 LVIS_FOCUSED=0x01\r
 LVIS_SELECTED=0x02\r
-LVIS_IMAGESTATEMASK=0xF000\r
+LVIS_STATEIMAGEMASK=0xF000\r
 \r
 LVS_OWNERDRAWFIXED=0x0400\r
 \r
index 4e7e73a..96e3620 100644 (file)
@@ -11,6 +11,7 @@ import api
 import _default\r
 import speech\r
 from keyUtils import key, sendKey\r
+from NVDAObjects.IAccessible import sysListView32\r
 \r
 #Labels for the header fields of an email, by control ID\r
 envelopeNames={\r
@@ -44,6 +45,10 @@ class AppModule(_default.AppModule):
                        obj.useITextDocumentSupport=True\r
                        obj.editValueUnit=textInfos.UNIT_STORY\r
 \r
+       def chooseNVDAObjectOverlayClasses(self,obj,clsList):\r
+               if obj.windowControlID in (129,130) and obj.role==controlTypes.ROLE_LISTITEM:\r
+                       clsList.insert(0,MessageRuleListItem)\r
+\r
        def event_gainFocus(self,obj,nextHandler):\r
                nextHandler()\r
                #Force focus to move to something sane when landing on an outlook express message window\r
@@ -52,3 +57,14 @@ class AppModule(_default.AppModule):
                        if obj==api.getFocusObject() and controlTypes.STATE_FOCUSED in obj.states:\r
                                return sendKey(key("SHIFT+TAB"))\r
 \r
+class MessageRuleListItem(sysListView32.ListItem):\r
+       """Used for the checkbox list items used to select message rule types in in message filters"""\r
+\r
+       def _get_role(self):\r
+               return controlTypes.ROLE_CHECKBOX\r
+\r
+       def _get_states(self):\r
+               states=super(MessageRuleListItem,self).states\r
+               if (winUser.sendMessage(self.windowHandle,sysListView32.LVM_GETITEMSTATE,self.IAccessibleChildID-1,sysListView32.LVIS_STATEIMAGEMASK)>>12)==8:\r
+                       states.add(controlTypes.STATE_CHECKED)\r
+               return states\r
index 49fd5f5..caa021c 100755 (executable)
@@ -30,6 +30,9 @@ class AppModule(_default.AppModule):
        def chooseNVDAObjectOverlayClasses(self, obj, clsList):\r
                if obj.windowClassName == "Internet Explorer_Server" and obj.role == controlTypes.ROLE_DOCUMENT and obj.HTMLNode and obj.HTMLNode.document.url=="about:blank": \r
                        clsList.insert(0, AboutBlankDocument)\r
+               elif obj.windowControlID in (129,130) and obj.role==controlTypes.ROLE_LISTITEM:\r
+                       import msimn \r
+                       clsList.insert(0,msimn.MessageRuleListItem)\r
 \r
        def event_gainFocus(self,obj,nextHandler):\r
                nextHandler()\r