977 lines
41 KiB
Java
977 lines
41 KiB
Java
#
|
|
# 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
|