OSDN Git Service

UIATextInfo: allow initializing with positions of first, last, and a UIATextInfo...
authorMichael Curran <mick@kulgan.net>
Thu, 9 Jun 2011 05:16:28 +0000 (15:16 +1000)
committerMichael Curran <mick@kulgan.net>
Thu, 9 Jun 2011 05:16:28 +0000 (15:16 +1000)
source/NVDAObjects/UIA/__init__.py

index 0c89ad1..6592a69 100644 (file)
@@ -21,6 +21,7 @@ class UIATextInfo(textInfos.TextInfo):
                "word":UIAHandler.TextUnit_Word,\r
                "line":UIAHandler.TextUnit_Line,\r
                "paragraph":UIAHandler.TextUnit_Paragraph,\r
+               "readingChunk":UIAHandler.TextUnit_Line,\r
        }\r
 \r
        def _getFormatFieldAtRange(self,range,formatConfig):\r
@@ -44,7 +45,7 @@ class UIATextInfo(textInfos.TextInfo):
        def __init__(self,obj,position):\r
                super(UIATextInfo,self).__init__(obj,position)\r
                if isinstance(position,UIAHandler.IUIAutomationTextRange):\r
-                       self._rangeObj=position.Clone()\r
+                       self._rangeObj=position\r
                elif position in (textInfos.POSITION_CARET,textInfos.POSITION_SELECTION):\r
                        sel=self.obj.UIATextPattern.GetSelection()\r
                        if sel.length>0:\r
@@ -53,8 +54,21 @@ class UIATextInfo(textInfos.TextInfo):
                                raise NotImplementedError("UIAutomationTextRangeArray is empty")\r
                        if position==textInfos.POSITION_CARET:\r
                                self.collapse()\r
+               elif isinstance(position,UIATextInfo): #bookmark\r
+                       self._rangeObj=position._rangeObj\r
+               elif position==textInfos.POSITION_FIRST:\r
+                       self._rangeObj=self.obj.UIATextPattern.documentRange\r
+                       self.collapse()\r
+               elif position==textInfos.POSITION_LAST:\r
+                       self._rangeObj=self.obj.UIATextPattern.documentRange\r
+                       self.collapse(True)\r
                else:\r
-                       self._rangeObj=self.obj.UIATextPattern.DocumentRange\r
+                       raise ValueError("Unknown position %s"%position)\r
+\r
+       def __eq__(self,other):\r
+               if self is other: return True\r
+               if self.__class__ is not other.__class__: return False\r
+               return bool(self._rangeObj.compare(other._rangeObj))\r
 \r
        def _get_bookmark(self):\r
                return self.copy()\r
@@ -90,7 +104,7 @@ class UIATextInfo(textInfos.TextInfo):
                return res\r
 \r
        def copy(self):\r
-               return self.__class__(self.obj,self._rangeObj)\r
+               return self.__class__(self.obj,self._rangeObj.clone())\r
 \r
        def collapse(self,end=False):\r
                if end:\r