123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116 |
- #
- # This file is part of the LibreOffice project.
- #
- # This Source Code Form is subject to the terms of the Mozilla Public
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
- #
- # This file incorporates work covered by the following license notice:
- #
- # Licensed to the Apache Software Foundation (ASF) under one or more
- # contributor license agreements. See the NOTICE file distributed
- # with this work for additional information regarding copyright
- # ownership. The ASF licenses this file to you under the Apache
- # License, Version 2.0 (the "License"); you may not use this file
- # except in compliance with the License. You may obtain a copy of
- # the License at http://www.apache.org/licenses/LICENSE-2.0 .
- #
- import uno
- import traceback
- class TextSectionHandler(object):
- '''Creates a new instance of TextSectionHandler'''
- def __init__(self, xMSF, xTextDocument):
- self.xMSFDoc = xMSF
- self.xTextDocument = xTextDocument
- self.xText = xTextDocument.Text
- def removeTextSectionbyName(self, SectionName):
- try:
- xAllTextSections = self.xTextDocument.TextSections
- if xAllTextSections.hasByName(SectionName):
- oTextSection = self.xTextDocument.TextSections.getByName(
- SectionName)
- self.removeTextSection(oTextSection)
- except Exception:
- traceback.print_exc()
- def hasTextSectionByName(self, SectionName):
- xAllTextSections = self.xTextDocument.TextSections
- return xAllTextSections.hasByName(SectionName)
- def removeTextSection(self, _oTextSection):
- try:
- self.xText.removeTextContent(_oTextSection)
- except Exception:
- traceback.print_exc()
- def removeAllTextSections(self):
- try:
- TextSectionCount = self.xTextDocument.TextSections.Count
- xAllTextSections = self.xTextDocument.TextSections
- for i in range(TextSectionCount - 1, -1, -1):
- xTextContentTextSection = xAllTextSections.getByIndex(i)
- self.xText.removeTextContent(xTextContentTextSection)
- except Exception:
- traceback.print_exc()
- def breakLinkOfTextSection(self, oTextSection):
- try:
- oSectionLink = \
- uno.createUnoStruct('com.sun.star.text.SectionFileLink')
- oSectionLink.FileURL = ""
- uno.invoke(oTextSection, "setPropertyValues",
- (("FileLink", "LinkRegion"), (oSectionLink, "")))
- except Exception:
- traceback.print_exc()
- def linkSectiontoTemplate(
- self, TemplateName, SectionName, oTextSection=None):
- try:
- if not oTextSection:
- oTextSection = self.xTextDocument.TextSections.getByName(
- SectionName)
- oSectionLink = \
- uno.createUnoStruct('com.sun.star.text.SectionFileLink')
- oSectionLink.FileURL = TemplateName
- uno.invoke(oTextSection, "setPropertyValues",
- (("FileLink", "LinkRegion"), (oSectionLink, SectionName)))
- NewSectionName = oTextSection.Name
- if NewSectionName is not SectionName:
- oTextSection.Name = SectionName
- except Exception:
- traceback.print_exc()
- def insertTextSection(self, GroupName, TemplateName, _bAddParagraph):
- try:
- if _bAddParagraph:
- xTextCursor = self.xText.createTextCursor()
- self.xText.insertControlCharacter(
- xTextCursor, ControlCharacter.PARAGRAPH_BREAK, False)
- xTextCursor.collapseToEnd()
- xSecondTextCursor = self.xText.createTextCursor()
- xSecondTextCursor.gotoEnd(False)
- insertTextSection(GroupName, TemplateName, xSecondTextCursor)
- except Exception:
- traceback.print_exc()
- def insertTextSection(self, sectionName, templateName, position):
- try:
- if self.xTextDocument.TextSections.hasByName(sectionName):
- xTextSection = \
- self.xTextDocument.TextSections.getByName(sectionName)
- else:
- xTextSection = self.xMSFDoc.createInstance(
- "com.sun.star.text.TextSection")
- position.getText().insertTextContent(
- position, xTextSection, False)
- linkSectiontoTemplate(xTextSection, templateName, sectionName)
- except Exception:
- traceback.print_exc()
|