OSDN Git Service

Add app module for mIRC. This reads new output text automatically when the input...
authorJames Teh <jamie@jantrid.net>
Tue, 9 Nov 2010 00:58:38 +0000 (10:58 +1000)
committerJames Teh <jamie@jantrid.net>
Tue, 9 Nov 2010 00:58:38 +0000 (10:58 +1000)
source/appModules/mirc.py [new file with mode: 0644]

diff --git a/source/appModules/mirc.py b/source/appModules/mirc.py
new file mode 100644 (file)
index 0000000..1649084
--- /dev/null
@@ -0,0 +1,42 @@
+#appModules/mirc.py\r
+#A part of NonVisual Desktop Access (NVDA)\r
+#This file is covered by the GNU General Public License.\r
+#See the file COPYING for more details.\r
+#Copyright (C) 2010 James Teh <jamie@jantrid.net>\r
+\r
+"""App module for mIRC\r
+"""\r
+\r
+import controlTypes\r
+from NVDAObjects.window import Window, DisplayModelLiveText\r
+from NVDAObjects.IAccessible import StaticText\r
+from appModules import _default\r
+\r
+class Input(Window):\r
+\r
+       def event_gainFocus(self):\r
+               super(Input, self).event_gainFocus()\r
+               try:\r
+                       output = self.parent.parent.lastChild.firstChild\r
+               except AttributeError:\r
+                       output = None\r
+               if isinstance(output, DisplayModelLiveText):\r
+                       output.startMonitoring()\r
+                       self._output = output\r
+               else:\r
+                       self._output = None\r
+\r
+       def event_loseFocus(self):\r
+               if self._output:\r
+                       self._output.stopMonitoring()\r
+\r
+class AppModule(_default.AppModule):\r
+\r
+       def chooseNVDAObjectOverlayClasses(self, obj, clsList):\r
+               if obj.role == controlTypes.ROLE_WINDOW:\r
+                       return\r
+               if obj.windowClassName == "Static" and obj.windowControlID == 32918:\r
+                       clsList.remove(StaticText)\r
+                       clsList.insert(0, DisplayModelLiveText)\r
+               elif obj.windowClassName == "RichEdit20W" and obj.windowControlID == 32921:\r
+                       clsList.insert(0, Input)\r