update
This commit is contained in:
@@ -0,0 +1,53 @@
|
||||
#
|
||||
# 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 .CGPaperElementLocation import CGPaperElementLocation
|
||||
from ..common.ConfigGroup import ConfigGroup
|
||||
|
||||
class CGLetter(ConfigGroup):
|
||||
|
||||
def __init__(self):
|
||||
self.cp_Style = int()
|
||||
self.cp_BusinessPaper = bool()
|
||||
self.cp_CompanyLogo = CGPaperElementLocation()
|
||||
self.cp_CompanyAddress = CGPaperElementLocation()
|
||||
self.cp_PaperCompanyAddressReceiverField = bool()
|
||||
self.cp_PaperFooter = bool()
|
||||
self.cp_PaperFooterHeight = float()
|
||||
self.cp_PrintCompanyLogo = bool()
|
||||
self.cp_PrintCompanyAddressReceiverField = bool()
|
||||
self.cp_PrintLetterSigns = bool()
|
||||
self.cp_PrintSubjectLine = bool()
|
||||
self.cp_PrintSalutation = bool()
|
||||
self.cp_PrintBendMarks = bool()
|
||||
self.cp_PrintGreeting = bool()
|
||||
self.cp_PrintFooter = bool()
|
||||
self.cp_Salutation = str()
|
||||
self.cp_Greeting = str()
|
||||
self.cp_SenderAddressType = int()
|
||||
self.cp_SenderCompanyName = str()
|
||||
self.cp_SenderStreet = str()
|
||||
self.cp_SenderPostCode = str()
|
||||
self.cp_SenderState = str()
|
||||
self.cp_SenderCity = str()
|
||||
self.cp_ReceiverAddressType = int()
|
||||
self.cp_Footer = str()
|
||||
self.cp_FooterOnlySecondPage = bool()
|
||||
self.cp_FooterPageNumbers = bool()
|
||||
self.cp_CreationType = int()
|
||||
self.cp_TemplateName = str()
|
||||
self.cp_TemplatePath = str()
|
||||
@@ -0,0 +1,27 @@
|
||||
#
|
||||
# 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 ..common.ConfigGroup import ConfigGroup
|
||||
from .CGLetter import CGLetter
|
||||
|
||||
class CGLetterWizard (ConfigGroup):
|
||||
|
||||
def __init__(self):
|
||||
self.cp_LetterType = int()
|
||||
self.cp_BusinessLetter = CGLetter()
|
||||
self.cp_PrivateOfficialLetter = CGLetter()
|
||||
self.cp_PrivateLetter = CGLetter()
|
||||
@@ -0,0 +1,27 @@
|
||||
#
|
||||
# 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 ..common.ConfigGroup import ConfigGroup
|
||||
|
||||
class CGPaperElementLocation(ConfigGroup):
|
||||
|
||||
def __init__(self):
|
||||
self.cp_Display = bool()
|
||||
self.cp_Width = float()
|
||||
self.cp_Height = float()
|
||||
self.cp_X = float()
|
||||
self.cp_Y = float()
|
||||
@@ -0,0 +1,75 @@
|
||||
#
|
||||
# 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 unohelper
|
||||
import traceback
|
||||
|
||||
from .LetterWizardDialogImpl import LetterWizardDialogImpl, Desktop
|
||||
|
||||
from com.sun.star.lang import XServiceInfo
|
||||
from com.sun.star.task import XJobExecutor
|
||||
|
||||
# pythonloader looks for a static g_ImplementationHelper variable
|
||||
g_ImplementationHelper = unohelper.ImplementationHelper()
|
||||
g_implName = "com.sun.star.wizards.letter.CallWizard"
|
||||
|
||||
# implement a UNO component by deriving from the standard unohelper.Base class
|
||||
# and from the interface(s) you want to implement.
|
||||
class CallWizard(unohelper.Base, XJobExecutor, XServiceInfo):
|
||||
def __init__(self, ctx):
|
||||
# store the component context for later use
|
||||
self.ctx = ctx
|
||||
|
||||
def trigger(self, args):
|
||||
try:
|
||||
lw = LetterWizardDialogImpl(self.ctx.ServiceManager)
|
||||
lw.startWizard(self.ctx.ServiceManager)
|
||||
except Exception as e:
|
||||
print ("Wizard failure exception " + str(type(e)) +
|
||||
" message " + str(e) + " args " + str(e.args) +
|
||||
traceback.format_exc())
|
||||
|
||||
@classmethod
|
||||
def callRemote(self):
|
||||
#Call the wizard remotely(see README)
|
||||
try:
|
||||
ConnectStr = \
|
||||
"uno:socket,host=localhost,port=2002;urp;StarOffice.ComponentContext"
|
||||
xLocMSF = Desktop.connect(ConnectStr)
|
||||
lw = LetterWizardDialogImpl(xLocMSF)
|
||||
lw.startWizard(xLocMSF)
|
||||
except Exception as e:
|
||||
print ("Wizard failure exception " + str(type(e)) +
|
||||
" message " + str(e) + " args " + str(e.args) +
|
||||
traceback.format_exc())
|
||||
|
||||
def getImplementationName(self):
|
||||
return g_implName
|
||||
|
||||
def supportsService(self, ServiceName):
|
||||
return g_ImplementationHelper.supportsService(g_implName, ServiceName)
|
||||
|
||||
def getSupportedServiceNames(self):
|
||||
return g_ImplementationHelper.getSupportedServiceNames(g_implName)
|
||||
|
||||
g_ImplementationHelper.addImplementation( \
|
||||
CallWizard, # UNO object class
|
||||
g_implName, # implementation name
|
||||
("com.sun.star.task.Job",),) # list of implemented services
|
||||
# (the only service)
|
||||
|
||||
# vim:set shiftwidth=4 softtabstop=4 expandtab:
|
||||
@@ -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()
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,76 @@
|
||||
#
|
||||
# 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 .
|
||||
#
|
||||
|
||||
HID = 40768
|
||||
HIDMAIN = 40820
|
||||
|
||||
class LetterWizardDialogConst:
|
||||
OPTBUSINESSLETTER_ITEM_CHANGED = "optBusinessLetterItemChanged"
|
||||
OPTBUSINESSLETTER_ITEM_CHANGED = "optBusinessLetterItemChanged"
|
||||
OPTPRIVOFFICIALLETTER_ITEM_CHANGED = "optPrivOfficialLetterItemChanged"
|
||||
OPTPRIVATELETTER_ITEM_CHANGED = "optPrivateLetterItemChanged"
|
||||
LSTBUSINESSSTYLE_ACTION_PERFORMED = None
|
||||
LSTBUSINESSSTYLE_ITEM_CHANGED = "lstBusinessStyleItemChanged"
|
||||
LSTPRIVOFFICIALSTYLE_ACTION_PERFORMED = None
|
||||
LSTPRIVOFFICIALSTYLE_ITEM_CHANGED = "lstPrivOfficialStyleItemChanged"
|
||||
CHKBUSINESSPAPER_ITEM_CHANGED = "chkBusinessPaperItemChanged"
|
||||
LSTPRIVATESTYLE_ACTION_PERFORMED = None
|
||||
LSTPRIVATESTYLE_ITEM_CHANGED = "lstPrivateStyleItemChanged"
|
||||
CHKPAPERCOMPANYLOGO_ITEM_CHANGED = "chkPaperCompanyLogoItemChanged"
|
||||
NUMLOGOHEIGHT_TEXT_CHANGED = "numLogoHeightTextChanged"
|
||||
NUMLOGOX_TEXT_CHANGED = "numLogoXTextChanged"
|
||||
NUMLOGOWIDTH_TEXT_CHANGED = "numLogoWidthTextChanged"
|
||||
NUMLOGOY_TEXT_CHANGED = "numLogoYTextChanged"
|
||||
CHKCOMPANYRECEIVER_ITEM_CHANGED = "chkCompanyReceiverItemChanged"
|
||||
CHKPAPERFOOTER_ITEM_CHANGED = "chkPaperFooterItemChanged"
|
||||
NUMFOOTERHEIGHT_TEXT_CHANGED = "numFooterHeightTextChanged"
|
||||
CHKPAPERCOMPANYADDRESS_ITEM_CHANGED = "chkPaperCompanyAddressItemChanged"
|
||||
NUMADDRESSHEIGHT_TEXT_CHANGED = "numAddressHeightTextChanged"
|
||||
NUMADDRESSX_TEXT_CHANGED = "numAddressXTextChanged"
|
||||
NUMADDRESSWIDTH_TEXT_CHANGED = "numAddressWidthTextChanged"
|
||||
NUMADDRESSY_TEXT_CHANGED = "numAddressYTextChanged"
|
||||
CHKUSELOGO_ITEM_CHANGED = "chkUseLogoItemChanged"
|
||||
CHKUSEADDRESSRECEIVER_ITEM_CHANGED = "chkUseAddressReceiverItemChanged"
|
||||
CHKUSESIGNS_ITEM_CHANGED = "chkUseSignsItemChanged"
|
||||
CHKUSESUBJECT_ITEM_CHANGED = "chkUseSubjectItemChanged"
|
||||
CHKUSEBENDMARKS_ITEM_CHANGED = "chkUseBendMarksItemChanged"
|
||||
CHKUSEFOOTER_ITEM_CHANGED = "chkUseFooterItemChanged"
|
||||
CHKUSESALUTATION_ITEM_CHANGED = "chkUseSalutationItemChanged"
|
||||
CHKUSEGREETING_ITEM_CHANGED = "chkUseGreetingItemChanged"
|
||||
LSTSALUTATION_ACTION_PERFORMED = None
|
||||
LSTSALUTATION_ITEM_CHANGED = "lstSalutationItemChanged"
|
||||
LSTSALUTATION_TEXT_CHANGED = "lstSalutationItemChanged"
|
||||
LSTGREETING_ACTION_PERFORMED = None
|
||||
LSTGREETING_ITEM_CHANGED = "lstGreetingItemChanged"
|
||||
LSTGREETING_TEXT_CHANGED = "lstGreetingItemChanged"
|
||||
OPTSENDERPLACEHOLDER_ITEM_CHANGED = "optSenderPlaceholderItemChanged"
|
||||
OPTSENDERDEFINE_ITEM_CHANGED = "optSenderDefineItemChanged"
|
||||
OPTRECEIVERPLACEHOLDER_ITEM_CHANGED = "optReceiverPlaceholderItemChanged"
|
||||
OPTRECEIVERDATABASE_ITEM_CHANGED = "optReceiverDatabaseItemChanged"
|
||||
TXTSENDERNAME_TEXT_CHANGED = "txtSenderNameTextChanged"
|
||||
TXTSENDERSTREET_TEXT_CHANGED = "txtSenderStreetTextChanged"
|
||||
TXTSENDERCITY_TEXT_CHANGED = "txtSenderCityTextChanged"
|
||||
TXTSENDERPOSTCODE_TEXT_CHANGED = "txtSenderPostCodeTextChanged"
|
||||
TXTSENDERSTATE_TEXT_CHANGED = "txtSenderStateTextChanged"
|
||||
TXTFOOTER_TEXT_CHANGED = "txtFooterTextChanged"
|
||||
CHKFOOTERNEXTPAGES_ITEM_CHANGED = "chkFooterNextPagesItemChanged"
|
||||
CHKFOOTERPAGENUMBERS_ITEM_CHANGED = "chkFooterPageNumbersItemChanged"
|
||||
TXTTEMPLATENAME_TEXT_CHANGED = "txtTemplateNameTextChanged"
|
||||
OPTCREATELETTER_ITEM_CHANGED = "optCreateFromTemplateItemChanged"
|
||||
OPTMAKECHANGES_ITEM_CHANGED = "optMakeChangesItemChanged"
|
||||
FILETEMPLATEPATH_TEXT_CHANGED = None
|
||||
@@ -0,0 +1,976 @@
|
||||
#
|
||||
# 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 traceback
|
||||
import os.path
|
||||
from .LetterWizardDialog import LetterWizardDialog, uno, HelpIds, HID
|
||||
from .LetterDocument import LetterDocument, BusinessPaperObject
|
||||
from .CGLetterWizard import CGLetterWizard
|
||||
from ..common.FileAccess import FileAccess
|
||||
from ..common.Configuration import Configuration
|
||||
from ..common.SystemDialog import SystemDialog
|
||||
from ..common.Desktop import Desktop
|
||||
from ..ui.PathSelection import PathSelection
|
||||
from ..ui.event.UnoDataAware import UnoDataAware
|
||||
from ..ui.event.RadioDataAware import RadioDataAware
|
||||
from ..ui.event.CommonListener import TerminateListenerProcAdapter
|
||||
from ..text.TextElement import TextElement
|
||||
from ..text.TextFieldHandler import TextFieldHandler
|
||||
from ..document.OfficeDocument import OfficeDocument
|
||||
|
||||
from com.sun.star.awt.VclWindowPeerAttribute import YES_NO, DEF_NO
|
||||
from com.sun.star.util import CloseVetoException
|
||||
from com.sun.star.view.DocumentZoomType import OPTIMAL
|
||||
from com.sun.star.document.UpdateDocMode import FULL_UPDATE
|
||||
from com.sun.star.document.MacroExecMode import ALWAYS_EXECUTE
|
||||
|
||||
|
||||
class LetterWizardDialogImpl(LetterWizardDialog):
|
||||
|
||||
RM_TYPESTYLE = 1
|
||||
RM_BUSINESSPAPER = 2
|
||||
RM_SENDERRECEIVER = 4
|
||||
RM_FOOTER = 5
|
||||
|
||||
def enterStep(self, OldStep, NewStep):
|
||||
pass
|
||||
|
||||
def leaveStep(self, OldStep, NewStep):
|
||||
pass
|
||||
|
||||
def __init__(self, xmsf):
|
||||
super(LetterWizardDialogImpl, self).__init__(xmsf)
|
||||
self.lstBusinessStylePos = None
|
||||
self.lstPrivateStylePos = None
|
||||
self.lstPrivOfficialStylePos = None
|
||||
self.xmsf = xmsf
|
||||
self.bSaveSuccess = False
|
||||
self.filenameChanged = False
|
||||
self.BusCompanyLogo = None
|
||||
self.BusCompanyAddress = None
|
||||
self.BusCompanyAddressReceiver = None
|
||||
self.BusFooter = None
|
||||
|
||||
def startWizard(self, xMSF):
|
||||
self.running = True
|
||||
try:
|
||||
#Number of steps on WizardDialog
|
||||
self.nMaxStep = 6
|
||||
|
||||
#instantiate The Document Frame for the Preview
|
||||
self.terminateListener = TerminateListenerProcAdapter(self.queryTermination)
|
||||
self.myLetterDoc = LetterDocument(xMSF, self.terminateListener)
|
||||
|
||||
#create the dialog
|
||||
self.drawNaviBar()
|
||||
self.buildStep1()
|
||||
self.buildStep2()
|
||||
self.buildStep3()
|
||||
self.buildStep4()
|
||||
self.buildStep5()
|
||||
self.buildStep6()
|
||||
|
||||
self.initializePaths()
|
||||
self.initializeSalutation()
|
||||
self.initializeGreeting()
|
||||
|
||||
#special Control fFrameor setting the save Path:
|
||||
self.insertPathSelectionControl()
|
||||
|
||||
self.myConfig = CGLetterWizard()
|
||||
|
||||
self.initializeTemplates(xMSF)
|
||||
|
||||
#load the last used settings
|
||||
#from the registry and apply listeners to the controls:
|
||||
self.initConfiguration()
|
||||
|
||||
if self.myConfig.cp_BusinessLetter.cp_Greeting :
|
||||
self.myConfig.cp_BusinessLetter.cp_Greeting = \
|
||||
self.resources.GreetingLabels[0]
|
||||
|
||||
if self.myConfig.cp_BusinessLetter.cp_Salutation:
|
||||
self.myConfig.cp_BusinessLetter.cp_Salutation = \
|
||||
self.resources.SalutationLabels[0]
|
||||
|
||||
if self.myConfig.cp_PrivateOfficialLetter.cp_Greeting:
|
||||
self.myConfig.cp_PrivateOfficialLetter.cp_Greeting = \
|
||||
self.resources.GreetingLabels[1]
|
||||
|
||||
if self.myConfig.cp_PrivateOfficialLetter.cp_Salutation:
|
||||
self.myConfig.cp_PrivateOfficialLetter.cp_Salutation = \
|
||||
self.resources.SalutationLabels[1]
|
||||
|
||||
if self.myConfig.cp_PrivateLetter.cp_Greeting:
|
||||
self.myConfig.cp_PrivateLetter.cp_Greeting = \
|
||||
self.resources.GreetingLabels[2]
|
||||
|
||||
if self.myConfig.cp_PrivateLetter.cp_Salutation:
|
||||
self.myConfig.cp_PrivateLetter.cp_Salutation = \
|
||||
self.resources.SalutationLabels[2]
|
||||
|
||||
if self.myPathSelection.xSaveTextBox.Text.lower() == "":
|
||||
self.myPathSelection.initializePath()
|
||||
|
||||
xContainerWindow = self.myLetterDoc.xFrame.ContainerWindow
|
||||
self.createWindowPeer(xContainerWindow)
|
||||
self.insertRoadmap()
|
||||
self.setConfiguration()
|
||||
self.setDefaultForGreetingAndSalutation()
|
||||
self.initializeElements()
|
||||
self.myLetterDoc.xFrame.ComponentWindow.Enable = False
|
||||
self.executeDialogFromComponent(self.myLetterDoc.xFrame)
|
||||
self.removeTerminateListener()
|
||||
self.closeDocument()
|
||||
self.running = False
|
||||
except Exception:
|
||||
self.removeTerminateListener()
|
||||
traceback.print_exc()
|
||||
self.running = False
|
||||
return
|
||||
|
||||
def cancelWizard(self):
|
||||
self.xUnoDialog.endExecute()
|
||||
self.running = False
|
||||
|
||||
def finishWizard(self):
|
||||
self.switchToStep(self.getCurrentStep(), self.nMaxStep)
|
||||
endWizard = True
|
||||
try:
|
||||
self.sPath = self.myPathSelection.getSelectedPath()
|
||||
if not self.sPath or not os.path.exists(self.sPath):
|
||||
self.myPathSelection.triggerPathPicker()
|
||||
self.sPath = self.myPathSelection.getSelectedPath()
|
||||
|
||||
if not self.filenameChanged:
|
||||
answer = SystemDialog.showMessageBox(
|
||||
self.xMSF, "MessBox", YES_NO + DEF_NO,
|
||||
self.resources.resOverwriteWarning,
|
||||
self.xUnoDialog.Peer)
|
||||
if answer == 3:
|
||||
# user said: no, do not overwrite...
|
||||
endWizard = False
|
||||
return False
|
||||
|
||||
self.myLetterDoc.setWizardTemplateDocInfo(
|
||||
self.resources.resLetterWizardDialog_title,
|
||||
self.resources.resTemplateDescription)
|
||||
self.myLetterDoc.killEmptyUserFields()
|
||||
self.myLetterDoc.keepLogoFrame = self.chkUseLogo.State != 0
|
||||
if self.chkBusinessPaper.State != 0 \
|
||||
and self.chkPaperCompanyLogo.State != 0:
|
||||
self.myLetterDoc.keepLogoFrame = False
|
||||
|
||||
self.myLetterDoc.keepBendMarksFrame = \
|
||||
self.chkUseBendMarks.State != 0
|
||||
self.myLetterDoc.keepLetterSignsFrame = \
|
||||
self.chkUseSigns.State != 0
|
||||
self.myLetterDoc.keepSenderAddressRepeatedFrame = \
|
||||
self.chkUseAddressReceiver.State != 0
|
||||
if self.optBusinessLetter.State:
|
||||
if self.chkBusinessPaper.State != 0 \
|
||||
and self.chkCompanyReceiver.State != 0:
|
||||
self.myLetterDoc.keepSenderAddressRepeatedFrame = False
|
||||
|
||||
if self.chkBusinessPaper.State != 0 \
|
||||
and self.chkPaperCompanyAddress.State != 0:
|
||||
self.myLetterDoc.keepAddressFrame = False
|
||||
|
||||
self.myLetterDoc.killEmptyFrames()
|
||||
self.bSaveSuccess = \
|
||||
OfficeDocument.store(
|
||||
self.xMSF, self.myLetterDoc.xTextDocument,
|
||||
self.sPath, "writer8_template")
|
||||
if self.bSaveSuccess:
|
||||
self.saveConfiguration()
|
||||
xIH = self.xMSF.createInstance(
|
||||
"com.sun.star.comp.uui.UUIInteractionHandler")
|
||||
loadValues = list(range(4))
|
||||
loadValues[0] = uno.createUnoStruct( \
|
||||
'com.sun.star.beans.PropertyValue')
|
||||
loadValues[0].Name = "AsTemplate"
|
||||
loadValues[1] = uno.createUnoStruct( \
|
||||
'com.sun.star.beans.PropertyValue')
|
||||
loadValues[1].Name = "MacroExecutionMode"
|
||||
loadValues[1].Value = ALWAYS_EXECUTE
|
||||
loadValues[2] = uno.createUnoStruct( \
|
||||
'com.sun.star.beans.PropertyValue')
|
||||
loadValues[2].Name = "UpdateDocMode"
|
||||
loadValues[2].Value = FULL_UPDATE
|
||||
loadValues[3] = uno.createUnoStruct( \
|
||||
'com.sun.star.beans.PropertyValue')
|
||||
loadValues[3].Name = "InteractionHandler"
|
||||
loadValues[3].Value = xIH
|
||||
if self.bEditTemplate:
|
||||
loadValues[0].Value = False
|
||||
else:
|
||||
loadValues[0].Value = True
|
||||
|
||||
oDoc = OfficeDocument.load(
|
||||
Desktop.getDesktop(self.xMSF),
|
||||
self.sPath, "_default", loadValues)
|
||||
oDoc.CurrentController.ViewSettings.ZoomType = OPTIMAL
|
||||
else:
|
||||
pass
|
||||
|
||||
except Exception:
|
||||
traceback.print_exc()
|
||||
finally:
|
||||
if endWizard:
|
||||
self.xUnoDialog.endExecute()
|
||||
self.running = False
|
||||
|
||||
return True;
|
||||
|
||||
def closeDocument(self):
|
||||
try:
|
||||
xCloseable = self.myLetterDoc.xFrame
|
||||
xCloseable.close(False)
|
||||
except CloseVetoException:
|
||||
traceback.print_exc()
|
||||
|
||||
def optBusinessLetterItemChanged(self):
|
||||
self.lstPrivateStylePos = None
|
||||
self.lstPrivOfficialStylePos = None
|
||||
self.xDialogModel.lblBusinessStyle.Enabled = True
|
||||
self.xDialogModel.lstBusinessStyle.Enabled = True
|
||||
self.xDialogModel.chkBusinessPaper.Enabled = True
|
||||
self.xDialogModel.lblPrivOfficialStyle.Enabled = False
|
||||
self.xDialogModel.lstPrivOfficialStyle.Enabled = False
|
||||
self.xDialogModel.lblPrivateStyle.Enabled = False
|
||||
self.xDialogModel.lstPrivateStyle.Enabled = False
|
||||
self.lstBusinessStyleItemChanged()
|
||||
self.enableSenderReceiver()
|
||||
self.setPossibleFooter(True)
|
||||
if self.myPathSelection.xSaveTextBox.Text.lower() == "":
|
||||
self.myPathSelection.initializePath()
|
||||
|
||||
def optPrivOfficialLetterItemChanged(self):
|
||||
self.lstBusinessStylePos = None
|
||||
self.lstPrivateStylePos = None
|
||||
self.xDialogModel.lblBusinessStyle.Enabled = False
|
||||
self.xDialogModel.lstBusinessStyle.Enabled = False
|
||||
self.xDialogModel.chkBusinessPaper.Enabled = False
|
||||
self.xDialogModel.lblPrivOfficialStyle.Enabled = True
|
||||
self.xDialogModel.lstPrivOfficialStyle.Enabled = True
|
||||
self.xDialogModel.lblPrivateStyle.Enabled = False
|
||||
self.xDialogModel.lstPrivateStyle.Enabled = False
|
||||
self.lstPrivOfficialStyleItemChanged()
|
||||
self.disableBusinessPaper()
|
||||
self.disableSenderReceiver()
|
||||
self.setPossibleFooter(True)
|
||||
if self.myPathSelection.xSaveTextBox.Text.lower() == "":
|
||||
self.myPathSelection.initializePath()
|
||||
self.myLetterDoc.fillSenderWithUserData()
|
||||
|
||||
def optPrivateLetterItemChanged(self):
|
||||
self.lstBusinessStylePos = None
|
||||
self.lstPrivOfficialStylePos = None
|
||||
self.xDialogModel.lblBusinessStyle.Enabled = False
|
||||
self.xDialogModel.lstBusinessStyle.Enabled = False
|
||||
self.xDialogModel.chkBusinessPaper.Enabled = False
|
||||
self.xDialogModel.lblPrivOfficialStyle.Enabled = False
|
||||
self.xDialogModel.lstPrivOfficialStyle.Enabled = False
|
||||
self.xDialogModel.lblPrivateStyle.Enabled = True
|
||||
self.xDialogModel.lstPrivateStyle.Enabled = True
|
||||
self.lstPrivateStyleItemChanged()
|
||||
self.disableBusinessPaper()
|
||||
self.disableSenderReceiver()
|
||||
self.setPossibleFooter(False)
|
||||
if self.myPathSelection.xSaveTextBox.Text.lower() == "":
|
||||
self.myPathSelection.initializePath()
|
||||
|
||||
def optSenderPlaceholderItemChanged(self):
|
||||
self.xDialogModel.lblSenderName.Enabled = False
|
||||
self.xDialogModel.lblSenderStreet.Enabled = False
|
||||
self.xDialogModel.lblPostCodeCity.Enabled = False
|
||||
self.xDialogModel.txtSenderName.Enabled = False
|
||||
self.xDialogModel.txtSenderStreet.Enabled = False
|
||||
self.xDialogModel.txtSenderPostCode.Enabled = False
|
||||
self.xDialogModel.txtSenderState.Enabled = False
|
||||
self.xDialogModel.txtSenderCity.Enabled = False
|
||||
self.myLetterDoc.fillSenderWithUserData()
|
||||
|
||||
def optSenderDefineItemChanged(self):
|
||||
self.xDialogModel.lblSenderName.Enabled = True
|
||||
self.xDialogModel.lblSenderStreet.Enabled = True
|
||||
self.xDialogModel.lblPostCodeCity.Enabled = True
|
||||
self.xDialogModel.txtSenderName.Enabled = True
|
||||
self.xDialogModel.txtSenderStreet.Enabled = True
|
||||
self.xDialogModel.txtSenderPostCode.Enabled = True
|
||||
self.xDialogModel.txtSenderState.Enabled = True
|
||||
self.xDialogModel.txtSenderCity.Enabled = True
|
||||
self.txtSenderNameTextChanged()
|
||||
self.txtSenderStreetTextChanged()
|
||||
self.txtSenderPostCodeTextChanged()
|
||||
self.txtSenderStateTextChanged()
|
||||
self.txtSenderCityTextChanged()
|
||||
|
||||
def lstBusinessStyleItemChanged(self):
|
||||
selectedItemPos = self.lstBusinessStyle.SelectedItemPos
|
||||
if self.lstBusinessStylePos != selectedItemPos:
|
||||
self.lstBusinessStylePos = selectedItemPos
|
||||
self.myLetterDoc.loadAsPreview(
|
||||
self.BusinessFiles[1][selectedItemPos], False)
|
||||
self.initializeElements()
|
||||
self.chkBusinessPaperItemChanged()
|
||||
self.setElements(False)
|
||||
self.drawConstants()
|
||||
|
||||
def lstPrivOfficialStyleItemChanged(self):
|
||||
selectedItemPos = self.lstPrivOfficialStyle.SelectedItemPos
|
||||
if self.lstPrivOfficialStylePos != selectedItemPos:
|
||||
self.lstPrivOfficialStylePos = selectedItemPos
|
||||
self.myLetterDoc.loadAsPreview(
|
||||
self.OfficialFiles[1][selectedItemPos], False)
|
||||
self.initializeElements()
|
||||
self.setPossibleSenderData(True)
|
||||
self.setElements(False)
|
||||
self.drawConstants()
|
||||
|
||||
def lstPrivateStyleItemChanged(self):
|
||||
selectedItemPos = self.lstPrivateStyle.SelectedItemPos
|
||||
if self.lstPrivateStylePos != selectedItemPos:
|
||||
self.lstPrivateStylePos = selectedItemPos
|
||||
self.myLetterDoc.xTextDocument = \
|
||||
self.myLetterDoc.loadAsPreview(
|
||||
self.PrivateFiles[1][selectedItemPos], False)
|
||||
self.initializeElements()
|
||||
self.setElements(True)
|
||||
|
||||
def numLogoHeightTextChanged(self):
|
||||
self.BusCompanyLogo.iHeight = int(self.numLogoHeight.Value * 1000)
|
||||
self.BusCompanyLogo.setFramePosition()
|
||||
|
||||
def numLogoWidthTextChanged(self):
|
||||
self.BusCompanyLogo.iWidth = int(self.numLogoWidth.Value * 1000)
|
||||
self.BusCompanyLogo.setFramePosition()
|
||||
|
||||
def numLogoXTextChanged(self):
|
||||
self.BusCompanyLogo.iXPos = int(self.numLogoX.Value * 1000)
|
||||
self.BusCompanyLogo.setFramePosition()
|
||||
|
||||
def numLogoYTextChanged(self):
|
||||
self.BusCompanyLogo.iYPos = int(self.numLogoY.Value * 1000)
|
||||
self.BusCompanyLogo.setFramePosition()
|
||||
|
||||
def numAddressWidthTextChanged(self):
|
||||
self.BusCompanyAddress.iWidth = int(self.numAddressWidth.Value * 1000)
|
||||
self.BusCompanyAddress.setFramePosition()
|
||||
|
||||
def numAddressXTextChanged(self):
|
||||
self.BusCompanyAddress.iXPos = int(self.numAddressX.Value * 1000)
|
||||
self.BusCompanyAddress.setFramePosition()
|
||||
|
||||
def numAddressYTextChanged(self):
|
||||
self.BusCompanyAddress.iYPos = int(self.numAddressY.Value * 1000)
|
||||
self.BusCompanyAddress.setFramePosition()
|
||||
|
||||
def numAddressHeightTextChanged(self):
|
||||
self.BusCompanyAddress.iHeight = int(self.numAddressHeight.Value * 1000)
|
||||
self.BusCompanyAddress.setFramePosition()
|
||||
|
||||
def numFooterHeightTextChanged(self):
|
||||
self.BusFooter.iHeight = int(self.numFooterHeight.Value * 1000)
|
||||
self.BusFooter.iYPos = \
|
||||
self.myLetterDoc.DocSize.Height - self.BusFooter.iHeight
|
||||
self.BusFooter.setFramePosition()
|
||||
|
||||
def chkPaperCompanyLogoItemChanged(self):
|
||||
if self.chkPaperCompanyLogo.State != 0:
|
||||
if self.numLogoWidth.Value == 0:
|
||||
self.numLogoWidth.Value = 0.1
|
||||
|
||||
if self.numLogoHeight.Value == 0:
|
||||
self.numLogoHeight.Value = 0.1
|
||||
self.BusCompanyLogo = BusinessPaperObject(
|
||||
self.myLetterDoc.xTextDocument, "Company Logo",
|
||||
int(self.numLogoWidth.Value * 1000),
|
||||
int(self.numLogoHeight.Value * 1000),
|
||||
int(self.numLogoX.Value * 1000),
|
||||
self.numLogoY.Value * 1000)
|
||||
self.xDialogModel.numLogoHeight.Enabled = True
|
||||
self.xDialogModel.numLogoWidth.Enabled = True
|
||||
self.xDialogModel.numLogoX.Enabled = True
|
||||
self.xDialogModel.numLogoY.Enabled = True
|
||||
self.setPossibleLogo(False)
|
||||
else:
|
||||
if self.BusCompanyLogo is not None:
|
||||
self.BusCompanyLogo.removeFrame()
|
||||
|
||||
self.xDialogModel.numLogoHeight.Enabled = False
|
||||
self.xDialogModel.numLogoWidth.Enabled = False
|
||||
self.xDialogModel.numLogoX.Enabled = False
|
||||
self.xDialogModel.numLogoY.Enabled = False
|
||||
self.setPossibleLogo(True)
|
||||
|
||||
def chkPaperCompanyAddressItemChanged(self):
|
||||
if self.chkPaperCompanyAddress.State != 0:
|
||||
if self.numAddressWidth.Value == 0:
|
||||
self.numAddressWidth.Value = 0.1
|
||||
|
||||
if self.numAddressHeight.Value == 0:
|
||||
self.numAddressHeight.Value = 0.1
|
||||
|
||||
self.BusCompanyAddress = BusinessPaperObject(
|
||||
self.myLetterDoc.xTextDocument, "Company Address",
|
||||
int(self.numAddressWidth.Value * 1000),
|
||||
int(self.numAddressHeight.Value * 1000),
|
||||
int(self.numAddressX.Value * 1000),
|
||||
int(self.numAddressY.Value * 1000))
|
||||
self.xDialogModel.numAddressHeight.Enabled = True
|
||||
self.xDialogModel.numAddressWidth.Enabled = True
|
||||
self.xDialogModel.numAddressX.Enabled = True
|
||||
self.xDialogModel.numAddressY.Enabled = True
|
||||
if self.myLetterDoc.hasElement("Sender Address"):
|
||||
self.myLetterDoc.switchElement(
|
||||
"Sender Address", False)
|
||||
|
||||
if self.chkCompanyReceiver.State != 0:
|
||||
self.setPossibleSenderData(False)
|
||||
|
||||
else:
|
||||
if self.BusCompanyAddress is not None:
|
||||
self.BusCompanyAddress.removeFrame()
|
||||
self.xDialogModel.numAddressHeight.Enabled = False
|
||||
self.xDialogModel.numAddressWidth.Enabled = False
|
||||
self.xDialogModel.numAddressX.Enabled = False
|
||||
self.xDialogModel.numAddressY.Enabled = False
|
||||
if self.myLetterDoc.hasElement("Sender Address"):
|
||||
self.myLetterDoc.switchElement("Sender Address", True)
|
||||
|
||||
self.setPossibleSenderData(True)
|
||||
if self.optSenderDefine.State:
|
||||
self.optSenderDefineItemChanged()
|
||||
|
||||
if self.optSenderPlaceholder.State:
|
||||
self.optSenderPlaceholderItemChanged()
|
||||
|
||||
def chkCompanyReceiverItemChanged(self):
|
||||
xReceiverFrame = None
|
||||
if self.chkCompanyReceiver.State != 0:
|
||||
try:
|
||||
xReceiverFrame = self.myLetterDoc.getFrameByName(
|
||||
"Receiver Address", self.myLetterDoc.xTextDocument)
|
||||
iFrameWidth = int(xReceiverFrame.Width)
|
||||
iFrameX = int(xReceiverFrame.HoriOrientPosition)
|
||||
iFrameY = int(xReceiverFrame.VertOrientPosition)
|
||||
iReceiverHeight = int(0.5 * 1000)
|
||||
self.BusCompanyAddressReceiver = BusinessPaperObject(
|
||||
self.myLetterDoc.xTextDocument, " ", iFrameWidth, iReceiverHeight,
|
||||
iFrameX, iFrameY - iReceiverHeight)
|
||||
self.setPossibleAddressReceiver(False)
|
||||
except Exception:
|
||||
traceback.print_exc()
|
||||
|
||||
if self.chkPaperCompanyAddress.State != 0:
|
||||
self.setPossibleSenderData(False)
|
||||
|
||||
else:
|
||||
if self.BusCompanyAddressReceiver is not None:
|
||||
self.BusCompanyAddressReceiver.removeFrame()
|
||||
|
||||
self.setPossibleAddressReceiver(True)
|
||||
self.setPossibleSenderData(True)
|
||||
if self.optSenderDefine.State:
|
||||
self.optSenderDefineItemChanged()
|
||||
|
||||
if self.optSenderPlaceholder.State:
|
||||
self.optSenderPlaceholderItemChanged()
|
||||
|
||||
def chkPaperFooterItemChanged(self):
|
||||
if self.chkPaperFooter.State != 0:
|
||||
if self.numFooterHeight.Value == 0:
|
||||
self.numFooterHeight.Value = 0.1
|
||||
|
||||
self.BusFooter = BusinessPaperObject(
|
||||
self.myLetterDoc.xTextDocument, "Footer",
|
||||
self.myLetterDoc.DocSize.Width,
|
||||
int(self.numFooterHeight.Value * 1000), 0,
|
||||
int(self.myLetterDoc.DocSize.Height - \
|
||||
(self.numFooterHeight.Value * 1000)))
|
||||
self.xDialogModel.numFooterHeight.Enabled = True
|
||||
self.xDialogModel.lblFooterHeight.Enabled = True
|
||||
self.setPossibleFooter(False)
|
||||
else:
|
||||
if self.BusFooter is not None:
|
||||
self.BusFooter.removeFrame()
|
||||
|
||||
self.xDialogModel.numFooterHeight.Enabled = False
|
||||
self.xDialogModel.lblFooterHeight.Enabled = False
|
||||
self.setPossibleFooter(True)
|
||||
|
||||
def chkUseLogoItemChanged(self):
|
||||
try:
|
||||
if self.myLetterDoc.hasElement("Company Logo"):
|
||||
logostatus = \
|
||||
bool(self.xDialogModel.chkUseLogo.Enabled) \
|
||||
and (self.chkUseLogo.State != 0)
|
||||
self.myLetterDoc.switchElement(
|
||||
"Company Logo", logostatus)
|
||||
except Exception:
|
||||
traceback.print_exc()
|
||||
|
||||
def chkUseAddressReceiverItemChanged(self):
|
||||
try:
|
||||
if self.myLetterDoc.hasElement("Sender Address Repeated"):
|
||||
rstatus = \
|
||||
bool(self.xDialogModel.chkUseAddressReceiver.Enabled) \
|
||||
and (self.chkUseAddressReceiver.State != 0)
|
||||
self.myLetterDoc.switchElement(
|
||||
"Sender Address Repeated", rstatus)
|
||||
|
||||
except Exception:
|
||||
traceback.print_exc()
|
||||
|
||||
def chkUseSignsItemChanged(self):
|
||||
if self.myLetterDoc.hasElement("Letter Signs"):
|
||||
self.myLetterDoc.switchElement(
|
||||
"Letter Signs", self.chkUseSigns.State != 0)
|
||||
|
||||
def chkUseSubjectItemChanged(self):
|
||||
if self.myLetterDoc.hasElement("Subject Line"):
|
||||
self.myLetterDoc.switchElement(
|
||||
"Subject Line", self.chkUseSubject.State != 0)
|
||||
|
||||
def chkUseBendMarksItemChanged(self):
|
||||
if self.myLetterDoc.hasElement("Bend Marks"):
|
||||
self.myLetterDoc.switchElement(
|
||||
"Bend Marks", self.chkUseBendMarks.State != 0)
|
||||
|
||||
def chkUseFooterItemChanged(self):
|
||||
try:
|
||||
bFooterPossible = (self.chkUseFooter.State != 0) \
|
||||
and bool(self.xDialogModel.chkUseFooter.Enabled)
|
||||
if self.chkFooterNextPages.State != 0:
|
||||
self.myLetterDoc.switchFooter(
|
||||
"First Page", False, self.chkFooterPageNumbers.State != 0,
|
||||
self.txtFooter.Text)
|
||||
self.myLetterDoc.switchFooter("Standard", bFooterPossible,
|
||||
self.chkFooterPageNumbers.State != 0, self.txtFooter.Text)
|
||||
else:
|
||||
self.myLetterDoc.switchFooter(
|
||||
"First Page", bFooterPossible,
|
||||
self.chkFooterPageNumbers.State != 0, self.txtFooter.Text)
|
||||
self.myLetterDoc.switchFooter(
|
||||
"Standard", bFooterPossible,
|
||||
self.chkFooterPageNumbers.State != 0, self.txtFooter.Text)
|
||||
|
||||
BPaperItem = \
|
||||
self.getRoadmapItemByID(LetterWizardDialogImpl.RM_FOOTER)
|
||||
BPaperItem.Enabled = bFooterPossible
|
||||
except Exception:
|
||||
traceback.print_exc()
|
||||
|
||||
def chkFooterNextPagesItemChanged(self):
|
||||
self.chkUseFooterItemChanged()
|
||||
|
||||
def chkFooterPageNumbersItemChanged(self):
|
||||
self.chkUseFooterItemChanged()
|
||||
|
||||
def setPossibleFooter(self, bState):
|
||||
self.xDialogModel.chkUseFooter.Enabled = bState
|
||||
self.chkUseFooterItemChanged()
|
||||
|
||||
def setPossibleAddressReceiver(self, bState):
|
||||
if self.myLetterDoc.hasElement("Sender Address Repeated"):
|
||||
self.xDialogModel.chkUseAddressReceiver.Enabled = bState
|
||||
self.chkUseAddressReceiverItemChanged()
|
||||
|
||||
def setPossibleLogo(self, bState):
|
||||
if self.myLetterDoc.hasElement("Company Logo"):
|
||||
self.xDialogModel.chkUseLogo.Enabled = bState
|
||||
self.chkUseLogoItemChanged()
|
||||
|
||||
def txtFooterTextChanged(self):
|
||||
self.chkUseFooterItemChanged()
|
||||
|
||||
def txtSenderNameTextChanged(self):
|
||||
myFieldHandler = TextFieldHandler(
|
||||
self.myLetterDoc.xMSF, self.myLetterDoc.xTextDocument)
|
||||
myFieldHandler.changeUserFieldContent(
|
||||
"Company", self.txtSenderName.Text)
|
||||
|
||||
def txtSenderStreetTextChanged(self):
|
||||
myFieldHandler = TextFieldHandler(
|
||||
self.myLetterDoc.xMSF, self.myLetterDoc.xTextDocument)
|
||||
myFieldHandler.changeUserFieldContent(
|
||||
"Street", self.txtSenderStreet.Text)
|
||||
|
||||
def txtSenderCityTextChanged(self):
|
||||
myFieldHandler = TextFieldHandler(
|
||||
self.myLetterDoc.xMSF, self.myLetterDoc.xTextDocument)
|
||||
myFieldHandler.changeUserFieldContent(
|
||||
"City", self.txtSenderCity.Text)
|
||||
|
||||
def txtSenderPostCodeTextChanged(self):
|
||||
myFieldHandler = TextFieldHandler(
|
||||
self.myLetterDoc.xMSF, self.myLetterDoc.xTextDocument)
|
||||
myFieldHandler.changeUserFieldContent(
|
||||
"PostCode", self.txtSenderPostCode.Text)
|
||||
|
||||
def txtSenderStateTextChanged(self):
|
||||
myFieldHandler = TextFieldHandler(
|
||||
self.myLetterDoc.xMSF, self.myLetterDoc.xTextDocument)
|
||||
myFieldHandler.changeUserFieldContent(
|
||||
"State", self.txtSenderState.Text)
|
||||
|
||||
def txtTemplateNameTextChanged(self):
|
||||
xDocProps = self.myLetterDoc.xTextDocument.DocumentProperties
|
||||
TitleName = self.txtTemplateName.Text
|
||||
xDocProps.Title = TitleName
|
||||
|
||||
def chkUseSalutationItemChanged(self):
|
||||
self.myLetterDoc.switchUserField(
|
||||
"Salutation", self.lstSalutation.Text,
|
||||
self.chkUseSalutation.State != 0)
|
||||
self.xDialogModel.lstSalutation.Enabled = \
|
||||
self.chkUseSalutation.State != 0
|
||||
|
||||
def lstSalutationItemChanged(self):
|
||||
self.myLetterDoc.switchUserField(
|
||||
"Salutation", self.lstSalutation.Text,
|
||||
self.chkUseSalutation.State != 0)
|
||||
|
||||
def chkUseGreetingItemChanged(self):
|
||||
self.myLetterDoc.switchUserField(
|
||||
"Greeting", self.lstGreeting.Text, self.chkUseGreeting.State != 0)
|
||||
self.xDialogModel.lstGreeting.Enabled = \
|
||||
self.chkUseGreeting.State != 0
|
||||
|
||||
def setDefaultForGreetingAndSalutation(self):
|
||||
if self.lstSalutation.Text:
|
||||
self.lstSalutation.Text = self.resources.SalutationLabels[0]
|
||||
|
||||
if self.lstGreeting.Text:
|
||||
self.lstGreeting.Text = self.resources.GreetingLabels[0]
|
||||
|
||||
def lstGreetingItemChanged(self):
|
||||
self.myLetterDoc.switchUserField(
|
||||
"Greeting", self.lstGreeting.Text, self.chkUseGreeting.State != 0)
|
||||
|
||||
def chkBusinessPaperItemChanged(self):
|
||||
if self.chkBusinessPaper.State != 0:
|
||||
self.enableBusinessPaper()
|
||||
else:
|
||||
self.disableBusinessPaper()
|
||||
self.setPossibleSenderData(True)
|
||||
|
||||
def setPossibleSenderData(self, bState):
|
||||
self.xDialogModel.optSenderDefine.Enabled = bState
|
||||
self.xDialogModel.optSenderPlaceholder.Enabled = bState
|
||||
self.xDialogModel.lblSenderAddress.Enabled = bState
|
||||
if not bState:
|
||||
self.xDialogModel.txtSenderCity.Enabled = bState
|
||||
self.xDialogModel.txtSenderName.Enabled = bState
|
||||
self.xDialogModel.txtSenderPostCode.Enabled = bState
|
||||
self.xDialogModel.txtSenderStreet.Enabled = bState
|
||||
self.xDialogModel.txtSenderCity.Enabled = bState
|
||||
self.xDialogModel.txtSenderState.Enabled = bState
|
||||
self.xDialogModel.lblSenderName.Enabled = bState
|
||||
self.xDialogModel.lblSenderStreet.Enabled = bState
|
||||
self.xDialogModel.lblPostCodeCity.Enabled = bState
|
||||
|
||||
def enableSenderReceiver(self):
|
||||
BPaperItem = self.getRoadmapItemByID(
|
||||
LetterWizardDialogImpl.RM_SENDERRECEIVER)
|
||||
BPaperItem.Enabled = True
|
||||
|
||||
def disableSenderReceiver(self):
|
||||
BPaperItem = self.getRoadmapItemByID(
|
||||
LetterWizardDialogImpl.RM_SENDERRECEIVER)
|
||||
BPaperItem.Enabled = False
|
||||
|
||||
def enableBusinessPaper(self):
|
||||
try:
|
||||
BPaperItem = self.getRoadmapItemByID(
|
||||
LetterWizardDialogImpl.RM_BUSINESSPAPER)
|
||||
BPaperItem.Enabled = True
|
||||
self.chkPaperCompanyLogoItemChanged()
|
||||
self.chkPaperCompanyAddressItemChanged()
|
||||
self.chkPaperFooterItemChanged()
|
||||
self.chkCompanyReceiverItemChanged()
|
||||
except Exception:
|
||||
traceback.print_exc()
|
||||
|
||||
def disableBusinessPaper(self):
|
||||
try:
|
||||
BPaperItem = self.getRoadmapItemByID(
|
||||
LetterWizardDialogImpl.RM_BUSINESSPAPER)
|
||||
BPaperItem.Enabled = False
|
||||
if self.BusCompanyLogo is not None:
|
||||
self.BusCompanyLogo.removeFrame()
|
||||
|
||||
if self.BusCompanyAddress is not None:
|
||||
self.BusCompanyAddress.removeFrame()
|
||||
|
||||
if self.BusFooter is not None:
|
||||
self.BusFooter.removeFrame()
|
||||
|
||||
if self.BusCompanyAddressReceiver is not None:
|
||||
self.BusCompanyAddressReceiver.removeFrame()
|
||||
|
||||
self.setPossibleAddressReceiver(True)
|
||||
self.setPossibleFooter(True)
|
||||
self.setPossibleLogo(True)
|
||||
if self.myLetterDoc.hasElement("Sender Address"):
|
||||
self.myLetterDoc.switchElement(
|
||||
"Sender Address", True)
|
||||
except Exception:
|
||||
traceback.print_exc()
|
||||
|
||||
def initializeSalutation(self):
|
||||
self.xDialogModel.lstSalutation.StringItemList = \
|
||||
tuple(self.resources.SalutationLabels)
|
||||
|
||||
def initializeGreeting(self):
|
||||
self.xDialogModel.lstGreeting.StringItemList = \
|
||||
tuple(self.resources.GreetingLabels)
|
||||
|
||||
def initializeTemplates(self, xMSF):
|
||||
sLetterPath = self.sTemplatePath + "/wizard/letter"
|
||||
self.BusinessFiles = \
|
||||
FileAccess.getFolderTitles(
|
||||
xMSF, "bus", sLetterPath, self.resources.dictBusinessTemplate)
|
||||
self.OfficialFiles = \
|
||||
FileAccess.getFolderTitles(
|
||||
xMSF, "off", sLetterPath, self.resources.dictOfficialTemplate)
|
||||
self.PrivateFiles = \
|
||||
FileAccess.getFolderTitles(
|
||||
xMSF, "pri", sLetterPath, self.resources.dictPrivateTemplate)
|
||||
self.xDialogModel.lstBusinessStyle.StringItemList = \
|
||||
tuple(self.BusinessFiles[0])
|
||||
self.xDialogModel.lstPrivOfficialStyle.StringItemList = \
|
||||
tuple(self.OfficialFiles[0])
|
||||
self.xDialogModel.lstPrivateStyle.StringItemList = \
|
||||
tuple(self.PrivateFiles[0])
|
||||
self.xDialogModel.lstBusinessStyle.SelectedItems = (0,)
|
||||
self.xDialogModel.lstPrivOfficialStyle.SelectedItems = (0,)
|
||||
self.xDialogModel.lstPrivateStyle.SelectedItems = (0,)
|
||||
return True
|
||||
|
||||
def initializeElements(self):
|
||||
self.xDialogModel.chkUseLogo.Enabled = \
|
||||
self.myLetterDoc.hasElement("Company Logo")
|
||||
self.xDialogModel.chkUseBendMarks.Enabled = \
|
||||
self.myLetterDoc.hasElement("Bend Marks")
|
||||
self.xDialogModel.chkUseAddressReceiver.Enabled = \
|
||||
self.myLetterDoc.hasElement("Sender Address Repeated")
|
||||
self.xDialogModel.chkUseSubject.Enabled = \
|
||||
self.myLetterDoc.hasElement("Subject Line")
|
||||
self.xDialogModel.chkUseSigns.Enabled = \
|
||||
self.myLetterDoc.hasElement("Letter Signs")
|
||||
self.myLetterDoc.updateDateFields()
|
||||
|
||||
def setConfiguration(self):
|
||||
if self.optBusinessLetter.State:
|
||||
self.optBusinessLetterItemChanged()
|
||||
|
||||
elif self.optPrivOfficialLetter.State:
|
||||
self.optPrivOfficialLetterItemChanged()
|
||||
|
||||
elif self.optPrivateLetter.State:
|
||||
self.optPrivateLetterItemChanged()
|
||||
|
||||
def optReceiverPlaceholderItemChanged(self):
|
||||
OfficeDocument.attachEventCall(
|
||||
self.myLetterDoc.xTextDocument, "OnNew", "StarBasic",
|
||||
"macro:///Template.Correspondence.Placeholder()")
|
||||
|
||||
def optReceiverDatabaseItemChanged(self):
|
||||
OfficeDocument.attachEventCall(
|
||||
self.myLetterDoc.xTextDocument, "OnNew", "StarBasic",
|
||||
"macro:///Template.Correspondence.Database()")
|
||||
|
||||
def setElements(self, privLetter):
|
||||
if self.optSenderDefine.State:
|
||||
self.optSenderDefineItemChanged()
|
||||
|
||||
if self.optSenderPlaceholder.State:
|
||||
self.optSenderPlaceholderItemChanged()
|
||||
|
||||
self.chkUseSignsItemChanged()
|
||||
self.chkUseSubjectItemChanged()
|
||||
self.chkUseSalutationItemChanged()
|
||||
self.chkUseGreetingItemChanged()
|
||||
self.chkUseBendMarksItemChanged()
|
||||
self.chkUseAddressReceiverItemChanged()
|
||||
self.txtTemplateNameTextChanged()
|
||||
if self.optReceiverDatabase.State and not privLetter:
|
||||
self.optReceiverDatabaseItemChanged()
|
||||
|
||||
if self.optReceiverPlaceholder.State and not privLetter:
|
||||
self.optReceiverPlaceholderItemChanged()
|
||||
|
||||
if self.optCreateLetter.State:
|
||||
self.optCreateFromTemplateItemChanged()
|
||||
|
||||
if self.optMakeChanges.State:
|
||||
self.optMakeChangesItemChanged()
|
||||
|
||||
def drawConstants(self):
|
||||
'''Localise the template'''
|
||||
constRangeList = self.myLetterDoc.searchFillInItems(1)
|
||||
|
||||
for i in constRangeList:
|
||||
text = i.String.lower()
|
||||
aux = TextElement(i, self.resources.dictConstants[text])
|
||||
aux.write()
|
||||
|
||||
def insertRoadmap(self):
|
||||
self.addRoadmap()
|
||||
self.insertRoadMapItems(
|
||||
self.resources.RoadmapLabels,
|
||||
[True, False, True, True, False, True])
|
||||
self.setRoadmapInteractive(True)
|
||||
self.setRoadmapComplete(True)
|
||||
self.setCurrentRoadmapItemID(1)
|
||||
|
||||
def insertPathSelectionControl(self):
|
||||
self.myPathSelection = \
|
||||
PathSelection(self.xMSF, self, PathSelection.TransferMode.SAVE,
|
||||
PathSelection.DialogTypes.FILE)
|
||||
self.myPathSelection.insert(
|
||||
6, 97, 70, 205, 45, self.resources.reslblTemplatePath_value,
|
||||
True, HelpIds.getHelpIdString(HID + 47),
|
||||
HelpIds.getHelpIdString(HID + 48))
|
||||
self.myPathSelection.sDefaultDirectory = self.sUserTemplatePath
|
||||
self.myPathSelection.sDefaultName = "myLetterTemplate.ott"
|
||||
self.myPathSelection.sDefaultFilter = "writer8_template"
|
||||
self.myPathSelection.addSelectionListener(self)
|
||||
|
||||
def initConfiguration(self):
|
||||
try:
|
||||
root = Configuration.getConfigurationRoot(
|
||||
self.xMSF, "/org.openoffice.Office.Writer/Wizards/Letter",
|
||||
False)
|
||||
self.myConfig.readConfiguration(root, "cp_")
|
||||
RadioDataAware.attachRadioButtons(self.myConfig, "cp_LetterType",
|
||||
(self.optBusinessLetter, self.optPrivOfficialLetter,
|
||||
self.optPrivateLetter), True).updateUI()
|
||||
UnoDataAware.attachListBox(
|
||||
self.myConfig.cp_BusinessLetter, "cp_Style",
|
||||
self.lstBusinessStyle, True).updateUI()
|
||||
UnoDataAware.attachListBox(
|
||||
self.myConfig.cp_PrivateOfficialLetter, "cp_Style",
|
||||
self.lstPrivOfficialStyle, True).updateUI()
|
||||
UnoDataAware.attachListBox(
|
||||
self.myConfig.cp_PrivateLetter, "cp_Style",
|
||||
self.lstPrivateStyle, True).updateUI()
|
||||
UnoDataAware.attachCheckBox(
|
||||
self.myConfig.cp_BusinessLetter, "cp_BusinessPaper",
|
||||
self.chkBusinessPaper, True).updateUI()
|
||||
cgl = self.myConfig.cp_BusinessLetter
|
||||
cgpl = self.myConfig.cp_BusinessLetter.cp_CompanyLogo
|
||||
cgpa = self.myConfig.cp_BusinessLetter.cp_CompanyAddress
|
||||
UnoDataAware.attachCheckBox(
|
||||
cgpl, "cp_Display", self.chkPaperCompanyLogo, True).updateUI()
|
||||
UnoDataAware.attachNumericControl(
|
||||
cgpl, "cp_Width", self.numLogoWidth, True).updateUI()
|
||||
UnoDataAware.attachNumericControl(
|
||||
cgpl, "cp_Height", self.numLogoHeight, True).updateUI()
|
||||
UnoDataAware.attachNumericControl(
|
||||
cgpl, "cp_X", self.numLogoX, True).updateUI()
|
||||
UnoDataAware.attachNumericControl(
|
||||
cgpl, "cp_Y", self.numLogoY, True).updateUI()
|
||||
UnoDataAware.attachCheckBox(
|
||||
cgpa, "cp_Display", self.chkPaperCompanyAddress, True).updateUI()
|
||||
UnoDataAware.attachNumericControl(
|
||||
cgpa, "cp_Width", self.numAddressWidth, True).updateUI()
|
||||
UnoDataAware.attachNumericControl(
|
||||
cgpa, "cp_Height", self.numAddressHeight, True).updateUI()
|
||||
UnoDataAware.attachNumericControl(
|
||||
cgpa, "cp_X", self.numAddressX, True).updateUI()
|
||||
UnoDataAware.attachNumericControl(
|
||||
cgpa, "cp_Y", self.numAddressY, True).updateUI()
|
||||
UnoDataAware.attachCheckBox(
|
||||
cgl, "cp_PaperCompanyAddressReceiverField",
|
||||
self.chkCompanyReceiver, True).updateUI()
|
||||
UnoDataAware.attachCheckBox(
|
||||
cgl, "cp_PaperFooter", self.chkPaperFooter, True).updateUI()
|
||||
UnoDataAware.attachNumericControl(
|
||||
cgl, "cp_PaperFooterHeight", self.numFooterHeight, True).updateUI()
|
||||
UnoDataAware.attachCheckBox(
|
||||
cgl, "cp_PrintCompanyLogo", self.chkUseLogo, True).updateUI()
|
||||
UnoDataAware.attachCheckBox(
|
||||
cgl, "cp_PrintCompanyAddressReceiverField",
|
||||
self.chkUseAddressReceiver, True).updateUI()
|
||||
UnoDataAware.attachCheckBox(
|
||||
cgl, "cp_PrintLetterSigns", self.chkUseSigns, True).updateUI()
|
||||
UnoDataAware.attachCheckBox(
|
||||
cgl, "cp_PrintSubjectLine", self.chkUseSubject, True).updateUI()
|
||||
UnoDataAware.attachCheckBox(
|
||||
cgl, "cp_PrintSalutation", self.chkUseSalutation, True).updateUI()
|
||||
UnoDataAware.attachCheckBox(
|
||||
cgl, "cp_PrintBendMarks", self.chkUseBendMarks, True).updateUI()
|
||||
UnoDataAware.attachCheckBox(
|
||||
cgl, "cp_PrintGreeting", self.chkUseGreeting, True).updateUI()
|
||||
UnoDataAware.attachCheckBox(
|
||||
cgl, "cp_PrintFooter", self.chkUseFooter, True).updateUI()
|
||||
UnoDataAware.attachEditControl(
|
||||
cgl, "cp_Salutation", self.lstSalutation, True).updateUI()
|
||||
UnoDataAware.attachEditControl(
|
||||
cgl, "cp_Greeting", self.lstGreeting, True).updateUI()
|
||||
RadioDataAware.attachRadioButtons(
|
||||
cgl, "cp_SenderAddressType",
|
||||
(self.optSenderDefine, self.optSenderPlaceholder), True).updateUI()
|
||||
UnoDataAware.attachEditControl(
|
||||
cgl, "cp_SenderCompanyName", self.txtSenderName, True).updateUI()
|
||||
UnoDataAware.attachEditControl(
|
||||
cgl, "cp_SenderStreet", self.txtSenderStreet, True).updateUI()
|
||||
UnoDataAware.attachEditControl(
|
||||
cgl, "cp_SenderPostCode", self.txtSenderPostCode, True).updateUI()
|
||||
UnoDataAware.attachEditControl(
|
||||
cgl, "cp_SenderState", self.txtSenderState, True).updateUI()
|
||||
UnoDataAware.attachEditControl(
|
||||
cgl, "cp_SenderCity", self.txtSenderCity, True).updateUI()
|
||||
RadioDataAware.attachRadioButtons(
|
||||
cgl, "cp_ReceiverAddressType",
|
||||
(self.optReceiverDatabase, self.optReceiverPlaceholder),
|
||||
True).updateUI()
|
||||
UnoDataAware.attachEditControl(
|
||||
cgl, "cp_Footer", self.txtFooter, True).updateUI()
|
||||
UnoDataAware.attachCheckBox(
|
||||
cgl, "cp_FooterOnlySecondPage",
|
||||
self.chkFooterNextPages, True).updateUI()
|
||||
UnoDataAware.attachCheckBox(
|
||||
cgl, "cp_FooterPageNumbers",
|
||||
self.chkFooterPageNumbers, True).updateUI()
|
||||
RadioDataAware.attachRadioButtons(
|
||||
cgl, "cp_CreationType",
|
||||
(self.optCreateLetter, self.optMakeChanges), True).updateUI()
|
||||
UnoDataAware.attachEditControl(
|
||||
cgl, "cp_TemplateName", self.txtTemplateName, True).updateUI()
|
||||
UnoDataAware.attachEditControl(
|
||||
cgl, "cp_TemplatePath", self.myPathSelection.xSaveTextBox,
|
||||
True).updateUI()
|
||||
except Exception:
|
||||
traceback.print_exc()
|
||||
|
||||
def saveConfiguration(self):
|
||||
try:
|
||||
root = Configuration.getConfigurationRoot(self.xMSF,
|
||||
"/org.openoffice.Office.Writer/Wizards/Letter", True)
|
||||
self.myConfig.writeConfiguration(root, "cp_")
|
||||
root.commitChanges()
|
||||
except Exception:
|
||||
traceback.print_exc()
|
||||
|
||||
def validatePath(self):
|
||||
if self.myPathSelection.usedPathPicker:
|
||||
self.filenameChanged = True
|
||||
self.myPathSelection.usedPathPicker = False
|
||||
@@ -0,0 +1,150 @@
|
||||
#
|
||||
# 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 .
|
||||
#
|
||||
|
||||
class LetterWizardDialogResources(object):
|
||||
|
||||
def __init__(self):
|
||||
import sys, os
|
||||
|
||||
if sys.version_info < (3,4):
|
||||
import imp
|
||||
imp.load_source('strings', os.path.join(os.path.dirname(__file__), '../common/strings.hrc'))
|
||||
import strings
|
||||
elif sys.version_info < (3,7):
|
||||
# imp is deprecated since Python v.3.4
|
||||
from importlib.machinery import SourceFileLoader
|
||||
SourceFileLoader('strings', os.path.join(os.path.dirname(__file__), '../common/strings.hrc')).load_module()
|
||||
import strings
|
||||
else:
|
||||
# have to jump through hoops since 3.7, partly because python does not like loading modules that do have a .py extension
|
||||
import importlib
|
||||
import importlib.util
|
||||
import importlib.machinery
|
||||
module_name = 'strings'
|
||||
path = os.path.join(os.path.dirname(__file__), '../common/strings.hrc')
|
||||
spec = importlib.util.spec_from_loader(
|
||||
module_name,
|
||||
importlib.machinery.SourceFileLoader(module_name, path)
|
||||
)
|
||||
module = importlib.util.module_from_spec(spec)
|
||||
spec.loader.exec_module(module)
|
||||
sys.modules[module_name] = module
|
||||
strings = module
|
||||
|
||||
import strings
|
||||
|
||||
self.resLetterWizardDialog_title = strings.RID_LETTERWIZARDDIALOG_START_1
|
||||
self.resLabel9_value = strings.RID_LETTERWIZARDDIALOG_START_2
|
||||
self.resoptBusinessLetter_value = strings.RID_LETTERWIZARDDIALOG_START_3
|
||||
self.resoptPrivOfficialLetter_value = strings.RID_LETTERWIZARDDIALOG_START_4
|
||||
self.resoptPrivateLetter_value = strings.RID_LETTERWIZARDDIALOG_START_5
|
||||
self.reschkBusinessPaper_value = strings.RID_LETTERWIZARDDIALOG_START_6
|
||||
self.reschkPaperCompanyLogo_value = strings.RID_LETTERWIZARDDIALOG_START_7
|
||||
self.reschkPaperCompanyAddress_value = strings.RID_LETTERWIZARDDIALOG_START_8
|
||||
self.reschkPaperFooter_value = strings.RID_LETTERWIZARDDIALOG_START_9
|
||||
self.reschkCompanyReceiver_value = strings.RID_LETTERWIZARDDIALOG_START_10
|
||||
self.reschkUseLogo_value = strings.RID_LETTERWIZARDDIALOG_START_11
|
||||
self.reschkUseAddressReceiver_value = strings.RID_LETTERWIZARDDIALOG_START_12
|
||||
self.reschkUseSigns_value = strings.RID_LETTERWIZARDDIALOG_START_13
|
||||
self.reschkUseSubject_value = strings.RID_LETTERWIZARDDIALOG_START_14
|
||||
self.reschkUseSalutation_value = strings.RID_LETTERWIZARDDIALOG_START_15
|
||||
self.reschkUseBendMarks_value = strings.RID_LETTERWIZARDDIALOG_START_16
|
||||
self.reschkUseGreeting_value = strings.RID_LETTERWIZARDDIALOG_START_17
|
||||
self.reschkUseFooter_value = strings.RID_LETTERWIZARDDIALOG_START_18
|
||||
self.resoptSenderPlaceholder_value = strings.RID_LETTERWIZARDDIALOG_START_19
|
||||
self.resoptSenderDefine_value = strings.RID_LETTERWIZARDDIALOG_START_20
|
||||
self.resoptReceiverPlaceholder_value = strings.RID_LETTERWIZARDDIALOG_START_21
|
||||
self.resoptReceiverDatabase_value = strings.RID_LETTERWIZARDDIALOG_START_22
|
||||
self.reschkFooterNextPages_value = strings.RID_LETTERWIZARDDIALOG_START_23
|
||||
self.reschkFooterPageNumbers_value = strings.RID_LETTERWIZARDDIALOG_START_24
|
||||
self.restxtTemplateName_value = strings.RID_LETTERWIZARDDIALOG_START_25
|
||||
self.resoptCreateLetter_value = strings.RID_LETTERWIZARDDIALOG_START_26
|
||||
self.resoptMakeChanges_value = strings.RID_LETTERWIZARDDIALOG_START_27
|
||||
self.reslblBusinessStyle_value = strings.RID_LETTERWIZARDDIALOG_START_28
|
||||
self.reslblPrivOfficialStyle_value = strings.RID_LETTERWIZARDDIALOG_START_29
|
||||
self.reslblPrivateStyle_value = strings.RID_LETTERWIZARDDIALOG_START_30
|
||||
self.reslblIntroduction_value = strings.RID_LETTERWIZARDDIALOG_START_31
|
||||
self.reslblLogoHeight_value = strings.RID_LETTERWIZARDDIALOG_START_32
|
||||
self.reslblLogoWidth_value = strings.RID_LETTERWIZARDDIALOG_START_33
|
||||
self.reslblLogoX_value = strings.RID_LETTERWIZARDDIALOG_START_34
|
||||
self.reslblLogoY_value = strings.RID_LETTERWIZARDDIALOG_START_35
|
||||
self.reslblAddressHeight_value = strings.RID_LETTERWIZARDDIALOG_START_36
|
||||
self.reslblAddressWidth_value = strings.RID_LETTERWIZARDDIALOG_START_37
|
||||
self.reslblAddressX_value = strings.RID_LETTERWIZARDDIALOG_START_38
|
||||
self.reslblAddressY_value = strings.RID_LETTERWIZARDDIALOG_START_39
|
||||
self.reslblFooterHeight_value = strings.RID_LETTERWIZARDDIALOG_START_40
|
||||
self.reslblSenderAddress_value = strings.RID_LETTERWIZARDDIALOG_START_42
|
||||
self.reslblSenderName_value = strings.RID_LETTERWIZARDDIALOG_START_43
|
||||
self.reslblSenderStreet_value = strings.RID_LETTERWIZARDDIALOG_START_44
|
||||
self.reslblPostCodeCity_value = strings.RID_LETTERWIZARDDIALOG_START_45
|
||||
self.reslblReceiverAddress_value = strings.RID_LETTERWIZARDDIALOG_START_46
|
||||
self.reslblFooter_value = strings.RID_LETTERWIZARDDIALOG_START_47
|
||||
self.reslblFinalExplanation1_value = strings.RID_LETTERWIZARDDIALOG_START_48
|
||||
self.reslblFinalExplanation2_value = strings.RID_LETTERWIZARDDIALOG_START_49
|
||||
self.reslblTemplateName_value = strings.RID_LETTERWIZARDDIALOG_START_50
|
||||
self.reslblTemplatePath_value = strings.RID_LETTERWIZARDDIALOG_START_51
|
||||
self.reslblProceed_value = strings.RID_LETTERWIZARDDIALOG_START_52
|
||||
self.reslblTitle1_value = strings.RID_LETTERWIZARDDIALOG_START_53
|
||||
self.reslblTitle3_value = strings.RID_LETTERWIZARDDIALOG_START_54
|
||||
self.reslblTitle2_value = strings.RID_LETTERWIZARDDIALOG_START_55
|
||||
self.reslblTitle4_value = strings.RID_LETTERWIZARDDIALOG_START_56
|
||||
self.reslblTitle5_value = strings.RID_LETTERWIZARDDIALOG_START_57
|
||||
self.reslblTitle6_value = strings.RID_LETTERWIZARDDIALOG_START_58
|
||||
|
||||
#Create a Dictionary for the constants values.
|
||||
self.dictConstants = {
|
||||
"#subjectconst#" : strings.RID_LETTERWIZARDDIALOG_START_59}
|
||||
|
||||
#Create a dictionary for localising the business templates
|
||||
self.dictBusinessTemplate = {
|
||||
"Elegant" : strings.RID_LETTERWIZARDDIALOG_START_60,
|
||||
"Modern" : strings.RID_LETTERWIZARDDIALOG_START_61,
|
||||
"Office" : strings.RID_LETTERWIZARDDIALOG_START_62}
|
||||
|
||||
#Create a dictionary for localising the official templates
|
||||
self.dictOfficialTemplate = {
|
||||
"Elegant" : strings.RID_LETTERWIZARDDIALOG_START_60,
|
||||
"Modern" : strings.RID_LETTERWIZARDDIALOG_START_61,
|
||||
"Office" : strings.RID_LETTERWIZARDDIALOG_START_62}
|
||||
|
||||
#Create a dictionary for localising the private templates
|
||||
self.dictPrivateTemplate = {
|
||||
"Bottle" : strings.RID_LETTERWIZARDDIALOG_START_63,
|
||||
"Mail" : strings.RID_LETTERWIZARDDIALOG_START_64,
|
||||
"Marine" : strings.RID_LETTERWIZARDDIALOG_START_65,
|
||||
"Red Line" : strings.RID_LETTERWIZARDDIALOG_START_66}
|
||||
|
||||
#Common Resources
|
||||
self.resOverwriteWarning = strings.RID_COMMON_START_19
|
||||
self.resTemplateDescription = strings.RID_COMMON_START_20
|
||||
|
||||
self.RoadmapLabels = []
|
||||
self.RoadmapLabels.append(strings.RID_LETTERWIZARDROADMAP_START_1)
|
||||
self.RoadmapLabels.append(strings.RID_LETTERWIZARDROADMAP_START_2)
|
||||
self.RoadmapLabels.append(strings.RID_LETTERWIZARDROADMAP_START_3)
|
||||
self.RoadmapLabels.append(strings.RID_LETTERWIZARDROADMAP_START_4)
|
||||
self.RoadmapLabels.append(strings.RID_LETTERWIZARDROADMAP_START_5)
|
||||
self.RoadmapLabels.append(strings.RID_LETTERWIZARDROADMAP_START_6)
|
||||
self.SalutationLabels = []
|
||||
self.SalutationLabels.append(strings.RID_LETTERWIZARDSALUTATION_START_1)
|
||||
self.SalutationLabels.append(strings.RID_LETTERWIZARDSALUTATION_START_2)
|
||||
self.SalutationLabels.append(strings.RID_LETTERWIZARDSALUTATION_START_3)
|
||||
self.GreetingLabels = []
|
||||
self.GreetingLabels.append(strings.RID_LETTERWIZARDGREETING_START_1)
|
||||
self.GreetingLabels.append(strings.RID_LETTERWIZARDGREETING_START_2)
|
||||
self.GreetingLabels.append(strings.RID_LETTERWIZARDGREETING_START_3)
|
||||
Reference in New Issue
Block a user