summaryrefslogtreecommitdiffstats
path: root/wizards/com/sun/star/wizards/letter/LetterDocument.py
diff options
context:
space:
mode:
Diffstat (limited to 'wizards/com/sun/star/wizards/letter/LetterDocument.py')
-rw-r--r--wizards/com/sun/star/wizards/letter/LetterDocument.py238
1 files changed, 238 insertions, 0 deletions
diff --git a/wizards/com/sun/star/wizards/letter/LetterDocument.py b/wizards/com/sun/star/wizards/letter/LetterDocument.py
new file mode 100644
index 000000000..5860f2804
--- /dev/null
+++ b/wizards/com/sun/star/wizards/letter/LetterDocument.py
@@ -0,0 +1,238 @@
+#
+# 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 .
+#
+from ..text.TextDocument import TextDocument, traceback, \
+ TextFieldHandler, Configuration
+from ..text.TextSectionHandler import TextSectionHandler
+
+from com.sun.star.table import BorderLine
+from com.sun.star.text.ControlCharacter import PARAGRAPH_BREAK
+from com.sun.star.style.ParagraphAdjust import CENTER
+from com.sun.star.text.PageNumberType import CURRENT
+from com.sun.star.style.NumberingType import ARABIC
+from com.sun.star.text.HoriOrientation import NONE as NONEHORI
+from com.sun.star.text.VertOrientation import NONE as NONEVERT
+from com.sun.star.text.RelOrientation import PAGE_FRAME
+from com.sun.star.text.TextContentAnchorType import AT_PAGE
+from com.sun.star.text.SizeType import FIX
+from com.sun.star.text.WrapTextMode import THROUGH
+from com.sun.star.awt.FontWeight import BOLD
+from com.sun.star.beans import UnknownPropertyException
+
+class LetterDocument(TextDocument):
+
+ def __init__(self, xMSF, listener):
+ super(LetterDocument,self).__init__(xMSF, listener, None,
+ "WIZARD_LIVE_PREVIEW")
+ self.keepLogoFrame = True
+ self.keepBendMarksFrame = True
+ self.keepLetterSignsFrame = True
+ self.keepSenderAddressRepeatedFrame = True
+ self.keepAddressFrame = True
+
+ def switchElement(self, sElement, bState):
+ try:
+ mySectionHandler = TextSectionHandler(
+ self.xMSF, self.xTextDocument)
+ oSection = \
+ mySectionHandler.xTextDocument.TextSections.getByName(sElement)
+ oSection.IsVisible = bState
+ except Exception:
+ traceback.print_exc()
+
+ def updateDateFields(self):
+ FH = TextFieldHandler(
+ self.xTextDocument, self.xTextDocument)
+ FH.updateDateFields()
+
+ def switchFooter(self, sPageStyle, bState, bPageNumber, sText):
+ if self.xTextDocument is not None:
+ try:
+ self.xTextDocument.lockControllers()
+ xNameAccess = self.xTextDocument.StyleFamilies
+ xPageStyleCollection = xNameAccess.getByName("PageStyles")
+ xPageStyle = xPageStyleCollection.getByName(sPageStyle)
+ if bState:
+ xPageStyle.FooterIsOn = True
+ xFooterText = xPageStyle.FooterText
+ xFooterText.String = sText
+ if bPageNumber:
+ #Adding the Page Number
+ myCursor = xFooterText.Text.createTextCursor()
+ myCursor.gotoEnd(False)
+ xFooterText.insertControlCharacter(myCursor,
+ PARAGRAPH_BREAK, False)
+ myCursor.setPropertyValue("ParaAdjust", CENTER )
+
+ xPageNumberField = \
+ self.xTextDocument.createInstance(
+ "com.sun.star.text.TextField.PageNumber")
+ xPageNumberField.setPropertyValue("SubType", CURRENT)
+ xPageNumberField.NumberingType = ARABIC
+ xFooterText.insertTextContent(xFooterText.End,
+ xPageNumberField, False)
+
+ else:
+ xPageStyle.FooterIsOn = False
+
+ self.xTextDocument.unlockControllers()
+ except Exception:
+ traceback.print_exc()
+
+ def hasElement(self, sElement):
+ if self.xTextDocument is not None:
+ SH = TextSectionHandler(self.xMSF, self.xTextDocument)
+ return SH.hasTextSectionByName(sElement)
+ else:
+ return False
+
+ def switchUserField(self, sFieldName, sNewContent, bState):
+ myFieldHandler = TextFieldHandler(
+ self.xMSF, self.xTextDocument)
+ if bState:
+ myFieldHandler.changeUserFieldContent(sFieldName, sNewContent)
+ else:
+ myFieldHandler.changeUserFieldContent(sFieldName, "")
+
+ def fillSenderWithUserData(self):
+ try:
+ myFieldHandler = TextFieldHandler(
+ self.xTextDocument, self.xTextDocument)
+ oUserDataAccess = Configuration.getConfigurationRoot(
+ self.xMSF, "org.openoffice.UserProfile/Data", False)
+ myFieldHandler.changeUserFieldContent(
+ "Company", oUserDataAccess.getByName("o"))
+ myFieldHandler.changeUserFieldContent(
+ "Street", oUserDataAccess.getByName("street"))
+ myFieldHandler.changeUserFieldContent(
+ "PostCode", oUserDataAccess.getByName("postalcode"))
+ myFieldHandler.changeUserFieldContent(
+ "City", oUserDataAccess.getByName("l"))
+ myFieldHandler.changeUserFieldContent(
+ "State", oUserDataAccess.getByName("st"))
+ except Exception:
+ traceback.print_exc()
+
+ def killEmptyUserFields(self):
+ myFieldHandler = TextFieldHandler(
+ self.xMSF, self.xTextDocument)
+ myFieldHandler.removeUserFieldByContent()
+
+ def killEmptyFrames(self):
+ try:
+ if not self.keepLogoFrame:
+ xTF = self.getFrameByName(
+ "Company Logo", self.xTextDocument)
+ if xTF is not None:
+ xTF.dispose()
+
+ if not self.keepBendMarksFrame:
+ xTF = self.getFrameByName(
+ "Bend Marks", self.xTextDocument)
+ if xTF is not None:
+ xTF.dispose()
+
+ if not self.keepLetterSignsFrame:
+ xTF = self.getFrameByName(
+ "Letter Signs", self.xTextDocument)
+ if xTF is not None:
+ xTF.dispose()
+
+ if not self.keepSenderAddressRepeatedFrame:
+ xTF = self.getFrameByName(
+ "Sender Address Repeated", self.xTextDocument)
+ if xTF is not None:
+ xTF.dispose()
+
+ if not self.keepAddressFrame:
+ xTF = self.getFrameByName(
+ "Sender Address", self.xTextDocument)
+ if xTF is not None:
+ xTF.dispose()
+
+ except Exception:
+ traceback.print_exc()
+
+class BusinessPaperObject(object):
+
+ def __init__(self, xTextDocument, FrameText, Width, Height, XPos, YPos):
+ self.xTextDocument = xTextDocument
+ self.iWidth = Width
+ self.iHeight = Height
+ self.iXPos = XPos
+ self.iYPos = YPos
+ self.xFrame = None
+ try:
+ self.xFrame = \
+ self.xTextDocument.createInstance(
+ "com.sun.star.text.TextFrame")
+ self.setFramePosition()
+ self.xFrame.AnchorType = AT_PAGE
+ self.xFrame.SizeType = FIX
+
+ self.xFrame.TextWrap = THROUGH
+ self.xFrame.Opaque = True
+ self.xFrame.BackColor = 15790320
+
+ myBorder = BorderLine()
+ myBorder.OuterLineWidth = 0
+ self.xFrame.LeftBorder = myBorder
+ self.xFrame.RightBorder = myBorder
+ self.xFrame.TopBorder = myBorder
+ self.xFrame.BottomBorder = myBorder
+ self.xFrame.Print = False
+ xTextCursor = \
+ self.xTextDocument.Text.createTextCursor()
+ xTextCursor.gotoEnd(True)
+ xText = self.xTextDocument.Text
+ xText.insertTextContent(
+ xTextCursor, self.xFrame,
+ False)
+
+ xFrameText = self.xFrame.Text
+ xFrameCursor = xFrameText.createTextCursor()
+ xFrameCursor.setPropertyValue("CharWeight", BOLD)
+ xFrameCursor.setPropertyValue("CharColor", 16777215)
+ xFrameCursor.setPropertyValue("CharFontName", "Albany")
+ xFrameCursor.setPropertyValue("CharHeight", 18)
+
+ xFrameText.insertString(xFrameCursor, FrameText, False)
+ except Exception:
+ traceback.print_exc()
+
+ def setFramePosition(self):
+ try:
+ self.xFrame.HoriOrient = NONEHORI
+ self.xFrame.VertOrient = NONEVERT
+ self.xFrame.Height = self.iHeight
+ self.xFrame.Width = self.iWidth
+ self.xFrame.HoriOrientPosition = self.iXPos
+ self.xFrame.VertOrientPosition = self.iYPos
+ self.xFrame.HoriOrientRelation = PAGE_FRAME
+ self.xFrame.VertOrientRelation = PAGE_FRAME
+ except Exception:
+ traceback.print_exc()
+
+ def removeFrame(self):
+ if self.xFrame is not None:
+ try:
+ self.xTextDocument.Text.removeTextContent(
+ self.xFrame)
+ except UnknownPropertyException:
+ pass
+ except Exception:
+ traceback.print_exc()