OSDN Git Service

Powerpoint appModule: provide fetching of formatting from shape text ranges. Includes...
authorMichael Curran <mick@kulgan.net>
Tue, 1 Jan 2013 01:39:21 +0000 (11:39 +1000)
committerMichael Curran <mick@kulgan.net>
Tue, 1 Jan 2013 01:39:21 +0000 (11:39 +1000)
source/appModules/powerpnt.py

index 2b44fb5..0d0f81b 100644 (file)
@@ -7,6 +7,7 @@
 import comtypes\r
 import comtypes.client\r
 import oleacc\r
+import colors\r
 import api\r
 import speech\r
 import sayAllHandler\r
@@ -468,12 +469,40 @@ class TextFrameTextInfo(textInfos.offsets.OffsetsTextInfo):
 \r
        def _getFormatFieldAndOffsets(self,offset,formatConfig,calculateOffsets=True):\r
                formatField=textInfos.FormatField()\r
-               startOffset,endOffset=self._startOffset,self._endOffset\r
-               if startOffset==0 or self._getTextRange(offset-1,offset).startswith('\n'):\r
-                       b=self.obj.ppObject.textRange.characters(offset+1,offset+1).paragraphFormat.bullet\r
+               curRun=None\r
+               if calculateOffsets:\r
+                       runs=self.obj.ppObject.textRange.runs()\r
+                       for run in runs:\r
+                               start=run.start-1\r
+                               end=start+run.length\r
+                               if start<=offset<end:\r
+                                       startOffset=start\r
+                                       endOffset=end\r
+                                       curRun=run\r
+                                       break\r
+               if not curRun:\r
+                       curRun=self.obj.ppObject.textRange.characters(offset+1)\r
+                       startOffset,endOffset=offset,self._endOffset\r
+               if self._startOffset==0 or offset==self._startOffset and self._getTextRange(offset-1,offset).startswith('\n'):\r
+                       b=curRun.paragraphFormat.bullet\r
                        bulletText=getBulletText(b)\r
                        if bulletText:\r
                                formatField['line-prefix']=bulletText\r
+               font=curRun.font\r
+               if formatConfig['reportFontName']:\r
+                       formatField['font-name']=font.name\r
+               if formatConfig['reportFontSize']:\r
+                       formatField['font-size']=str(font.size)\r
+               if formatConfig['reportFontAttributes']:\r
+                       formatField['bold']=bool(font.bold)\r
+                       formatField['italic']=bool(font.italic)\r
+                       formatField['underline']=bool(font.underline)\r
+                       if font.subscript:\r
+                               formatField['text-position']='sub'\r
+                       elif font.superscript:\r
+                               formatField['text-position']='super'\r
+               if formatConfig['reportColor']:\r
+                       formatField['color']=colors.RGB.fromCOLORREF(font.color.rgb)\r
                return formatField,(startOffset,endOffset)\r
 \r
 class Table(Shape):\r