summaryrefslogtreecommitdiff
path: root/wizards/com/sun/star/wizards/letter/LetterDocument.py
diff options
context:
space:
mode:
authorXisco Fauli <anistenis@gmail.com>2011-06-30 14:49:54 +0200
committerXisco Fauli <anistenis@gmail.com>2011-06-30 14:49:54 +0200
commitf8fd18a9cafe0fdf79e155d3cfc141c78ccc0dbd (patch)
tree9843c8ec63dd2117cf1bf5bbcc591f6824b2838b /wizards/com/sun/star/wizards/letter/LetterDocument.py
parent09d2936cd6fcd576d9945d071bf23b4fa273e19f (diff)
First attempt to create the letter wizard
Diffstat (limited to 'wizards/com/sun/star/wizards/letter/LetterDocument.py')
-rw-r--r--wizards/com/sun/star/wizards/letter/LetterDocument.py180
1 files changed, 180 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 000000000000..2d630ae64150
--- /dev/null
+++ b/wizards/com/sun/star/wizards/letter/LetterDocument.py
@@ -0,0 +1,180 @@
+from text.TextDocument import *
+from text.TextSectionHandler import TextSectionHandler
+from common.PropertyNames import PropertyNames
+
+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
+
+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)
+ Helper.setUnoPropertyValue(oSection, "IsVisible", bState)
+ except Exception, 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:
+ self.xTextDocument.lockControllers()
+ try:
+ xNameAccess = self.xTextDocument.StyleFamilies
+ xPageStyleCollection = xNameAccess.getByName("PageStyles")
+ xPageStyle = xPageStyleCollection.getByName(sPageStyle)
+ if bState:
+ Helper.setUnoPropertyValue(xPageStyle, "FooterIsOn",True)
+ xFooterText = Helper.getUnoPropertyValue(xPageStyle, "FooterText")
+ xFooterText.String = sText
+ if bPageNumber:
+ #Adding the Page Number
+ myCursor = xFooterText.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.setPropertyValue("NumberingType", ARABIC)
+ xFooterText.insertTextContent(xFooterText.getEnd(), xPageNumberField, False)
+ else:
+ Helper.setUnoPropertyValue(xPageStyle, "FooterIsOn", False)
+
+ self.xTextDocument.unlockControllers()
+ except Exception, 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.xMSF, self.xTextDocument)
+ oUserDataAccess = Configuration.getConfigurationRoot(self.xMSF, "org.openoffice.UserProfile/Data", False)
+ myFieldHandler.changeUserFieldContent("Company", Helper.getUnoObjectbyName(oUserDataAccess, "o"))
+ myFieldHandler.changeUserFieldContent("Street", Helper.getUnoObjectbyName(oUserDataAccess, "street"))
+ myFieldHandler.changeUserFieldContent("PostCode", Helper.getUnoObjectbyName(oUserDataAccess, "postalcode"))
+ myFieldHandler.changeUserFieldContent("City", Helper.getUnoObjectbyName(oUserDataAccess, "l"))
+ myFieldHandler.changeUserFieldContent(PropertyNames.PROPERTY_STATE, Helper.getUnoObjectbyName(oUserDataAccess, "st"))
+ except Exception, exception:
+ traceback.print_exc()
+
+ def killEmptyUserFields(self):
+ myFieldHandler = TextFieldHandle(self.xMSF, self.xTextDocument)
+ myFieldHandler.removeUserFieldByContent("")
+
+ def killEmptyFrames(self):
+ try:
+ if not self.keepLogoFrame:
+ xTF = TextFrameHandler.getFrameByName("Company Logo", self.xTextDocument)
+ if xTF is not None:
+ xTF.dispose()
+
+ if not self.keepBendMarksFrame:
+ xTF = TextFrameHandler.getFrameByName("Bend Marks", self.xTextDocument)
+ if xTF is not None:
+ xTF.dispose()
+
+ if not self.keepLetterSignsFrame:
+ xTF = TextFrameHandler.getFrameByName("Letter Signs", self.xTextDocument)
+ if xTF is not None:
+ xTF.dispose()
+
+ if not self.keepSenderAddressRepeatedFrame:
+ xTF = TextFrameHandler.getFrameByName("Sender Address Repeated", self.xTextDocument)
+ if xTF is not None:
+ xTF.dispose()
+
+ if not self.keepAddressFrame:
+ xTF = TextFrameHandler.getFrameByName("Sender Address", self.xTextDocument)
+ if xTF is not None:
+ xTF.dispose()
+
+ except Exception, e:
+ traceback.print_exc()
+
+class BusinessPaperObject(object):
+
+ def __init__(self, FrameText, Width, Height, XPos, YPos):
+ self.iWidth = Width
+ self.iHeight = Height
+ self.iXPos = XPos
+ self.iYPos = YPos
+
+ try:
+ xFrame = self.xTextDocument.createInstance("com.sun.star.text.TextFrame")
+ self.setFramePosition()
+ Helper.setUnoPropertyValue(xFrame, "AnchorType", TextContentAnchorType.AT_PAGE)
+ Helper.setUnoPropertyValue(xFrame, "SizeType", SizeType.FIX)
+
+ Helper.setUnoPropertyValue(xFrame, "TextWrap", WrapTextMode.THROUGHT)
+ Helper.setUnoPropertyValue(xFrame, "Opaque", Boolean.TRUE)
+ Helper.setUnoPropertyValue(xFrame, "BackColor", 15790320)
+
+ myBorder = BorderLine()
+ myBorder.OuterLineWidth = 0
+ Helper.setUnoPropertyValue(xFrame, "LeftBorder", myBorder)
+ Helper.setUnoPropertyValue(xFrame, "RightBorder", myBorder)
+ Helper.setUnoPropertyValue(xFrame, "TopBorder", myBorder)
+ Helper.setUnoPropertyValue(xFrame, "BottomBorder", myBorder)
+ Helper.setUnoPropertyValue(xFrame, "Print", False)
+
+ xTextCursor = self.xTextDocument.Text.createTextCursor()
+ xTextCursor.gotoEnd(True)
+ xText = self.xTextDocument.Text
+ xText.insertTextContent(xTextCursor, xFrame, False)
+
+ xFrameText = xFrame.Text
+ xFrameCursor = xFrameText.createTextCursor()
+ xFrameCursor.setPropertyValue("CharWeight", com.sun.star.awt.FontWeight.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):
+ Helper.setUnoPropertyValue(xFrame, "HoriOrient", HoriOrientation.NONE)
+ Helper.setUnoPropertyValue(xFrame, "VertOrient", VertOrientation.NONE)
+ Helper.setUnoPropertyValue(xFrame, PropertyNames.PROPERTY_HEIGHT, iHeight)
+ Helper.setUnoPropertyValue(xFrame, PropertyNames.PROPERTY_WIDTH, iWidth)
+ Helper.setUnoPropertyValue(xFrame, "HoriOrientPosition", iXPos)
+ Helper.setUnoPropertyValue(xFrame, "VertOrientPosition", iYPos)
+ Helper.setUnoPropertyValue(xFrame, "HoriOrientRelation", RelOrientation.PAGE_FRAME)
+ Helper.setUnoPropertyValue(xFrame, "VertOrientRelation", RelOrientation.PAGE_FRAME)
+
+ def removeFrame(self):
+ if xFrame is not None:
+ try:
+ self.xTextDocument.Text.removeTextContent(xFrame)
+ except Exception:
+ traceback.print_exc()
+