diff options
author | Xisco Fauli <anistenis@gmail.com> | 2011-07-04 17:46:55 +0200 |
---|---|---|
committer | Xisco Fauli <anistenis@gmail.com> | 2011-07-04 17:46:55 +0200 |
commit | 9e91dbca08056fc31f388f5642fdfa3d2b910990 (patch) | |
tree | 926587111cf0edb3ba7630f5e9a7e3e757bbd106 /wizards | |
parent | 3b4fe490441f9f77829bc6c1ae30d79a4d50255b (diff) | |
parent | e52421bc118e9c5f3fce5a32ba9efdcad7627d92 (diff) |
Merge branch 'feature/gsoc2011_wizards'
Diffstat (limited to 'wizards')
59 files changed, 11375 insertions, 43 deletions
diff --git a/wizards/com/sun/star/wizards/RemoteFaxWizard b/wizards/com/sun/star/wizards/RemoteFaxWizard new file mode 100755 index 000000000..76144cbfe --- /dev/null +++ b/wizards/com/sun/star/wizards/RemoteFaxWizard @@ -0,0 +1,7 @@ +#!/usr/bin/env python +from fax.FaxWizardDialogImpl import FaxWizardDialogImpl +import sys + +if __name__ == "__main__": + + FaxWizardDialogImpl.main(sys.argv) diff --git a/wizards/com/sun/star/wizards/RemoteLetterWizard b/wizards/com/sun/star/wizards/RemoteLetterWizard new file mode 100755 index 000000000..9928625f6 --- /dev/null +++ b/wizards/com/sun/star/wizards/RemoteLetterWizard @@ -0,0 +1,7 @@ +#!/usr/bin/env python +from letter.LetterWizardDialogImpl import LetterWizardDialogImpl +import sys + +if __name__ == "__main__": + + LetterWizardDialogImpl.main(sys.argv) diff --git a/wizards/com/sun/star/wizards/__init__.py b/wizards/com/sun/star/wizards/__init__.py new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/wizards/com/sun/star/wizards/__init__.py diff --git a/wizards/com/sun/star/wizards/common/ConfigGroup.py b/wizards/com/sun/star/wizards/common/ConfigGroup.py new file mode 100644 index 000000000..ca1b60a4d --- /dev/null +++ b/wizards/com/sun/star/wizards/common/ConfigGroup.py @@ -0,0 +1,38 @@ +from ConfigNode import * +from Configuration import Configuration +import traceback +import inspect + +class ConfigGroup(ConfigNode): + + root = None + + def writeConfiguration(self, configurationView, param): + for name,data in inspect.getmembers(self): + if name.startswith(param): + self.writeField( name, configurationView, param) + + def writeField(self, field, configView, prefix): + propertyName = field[len(prefix):] + child = getattr(self, field) + if isinstance(child, ConfigNode): + child.setRoot(self.root) + child.writeConfiguration(configView.getByName(propertyName), + prefix) + else: + setattr(configView,propertyName,getattr(self,field)) + + def readConfiguration(self, configurationView, param): + for name,data in inspect.getmembers(self): + if name.startswith(param): + self.readField( name, configurationView, param) + + def readField(self, field, configView, prefix): + propertyName = field[len(prefix):] + child = getattr(self, field) + if isinstance(child, ConfigNode): + child.setRoot(self.root) + child.readConfiguration(configView.getByName(propertyName), + prefix) + else: + setattr(self,field,configView.getByName(propertyName)) diff --git a/wizards/com/sun/star/wizards/common/ConfigNode.py b/wizards/com/sun/star/wizards/common/ConfigNode.py new file mode 100644 index 000000000..d97ac1b64 --- /dev/null +++ b/wizards/com/sun/star/wizards/common/ConfigNode.py @@ -0,0 +1,15 @@ +from abc import ABCMeta, abstractmethod + +class ConfigNode(object): + + @abstractmethod + def readConfiguration(self, configurationView, param): + pass + + @abstractmethod + def writeConfiguration(self, configurationView, param): + pass + + @abstractmethod + def setRoot(self, root): + pass diff --git a/wizards/com/sun/star/wizards/common/Configuration.py b/wizards/com/sun/star/wizards/common/Configuration.py new file mode 100644 index 000000000..0e3abe128 --- /dev/null +++ b/wizards/com/sun/star/wizards/common/Configuration.py @@ -0,0 +1,213 @@ +from PropertyNames import PropertyNames +from Helper import * +import traceback +import uno +''' +This class gives access to the OO configuration api. +It contains 4 get and 4 set convenience methods for getting and settings +properties in the configuration. <br/> +For the get methods, two parameters must be given: name and parent, where +name is the name of the property, parent is a HierarchyElement +(::com::sun::star::configuration::HierarchyElement)<br/> +The get and set methods support hieryrchical property names like +"options/gridX". <br/> +NOTE: not yet supported, but sometime later, +If you will ommit the "parent" parameter, then the "name" parameter must be +in hierarchy form from the root of the registry. +''' + +class Configuration(object): + + @classmethod + def getConfigurationRoot(self, xmsf, sPath, updateable): + oConfigProvider = xmsf.createInstance( + "com.sun.star.configuration.ConfigurationProvider") + args = [] + + aPathArgument = uno.createUnoStruct( + 'com.sun.star.beans.PropertyValue') + aPathArgument.Name = "nodepath" + aPathArgument.Value = sPath + + args.append(aPathArgument) + if updateable: + sView = "com.sun.star.configuration.ConfigurationUpdateAccess" + aModeArgument = uno.createUnoStruct( + 'com.sun.star.beans.PropertyValue') + aModeArgument.Name = "lazywrite" + aModeArgument.Value = False + args.append(aModeArgument) + else: + sView = "com.sun.star.configuration.ConfigurationAccess" + + return oConfigProvider.createInstanceWithArguments(sView, tuple(args)) + + @classmethod + def getProductName(self, xMSF): + try: + oProdNameAccess = self.getConfigurationRoot(xMSF, + "org.openoffice.Setup/Product", False) + ProductName = Helper.getUnoObjectbyName(oProdNameAccess, "ooName") + return ProductName + except Exception: + traceback.print_exc() + return None + + @classmethod + def getOfficeLocaleString(self, xMSF): + sLocale = "" + try: + aLocLocale = Locale.Locale() + oMasterKey = self.getConfigurationRoot(xMSF, + "org.openoffice.Setup/L10N/", False) + sLocale = (String) + Helper.getUnoObjectbyName(oMasterKey, "ooLocale") + except Exception, exception: + traceback.print_exc() + + return sLocale + + @classmethod + def getOfficeLocale(self, xMSF): + aLocLocale = Locale.Locale() + sLocale = getOfficeLocaleString(xMSF) + sLocaleList = JavaTools.ArrayoutofString(sLocale, "-") + aLocLocale.Language = sLocaleList[0] + if sLocaleList.length > 1: + aLocLocale.Country = sLocaleList[1] + + return aLocLocale + + @classmethod + def getOfficeLinguistic(self, xMSF): + try: + oMasterKey = self.getConfigurationRoot(xMSF, + "org.openoffice.Setup/L10N/", False) + sLinguistic = Helper.getUnoObjectbyName(oMasterKey, "ooLocale") + return sLinguistic + except Exception, exception: + traceback.print_exc() + return None + + @classmethod + def removeNode(self, configView, name): + + if configView.hasByName(name): + configView.removeByName(name) + + @classmethod + def updateConfiguration(self, xmsf, path, name, node, param): + view = self.getConfigurationRoot(xmsf, path, True) + addConfigNode(path, name) + node.writeConfiguration(view, param) + view.commitChanges() + + @classmethod + def removeNode(self, xmsf, path, name): + view = self.getConfigurationRoot(xmsf, path, True) + removeNode(view, name) + view.commitChanges() + + @classmethod + def getNodeDisplayNames(self, _xNameAccessNode): + snames = None + return getNodeChildNames(_xNameAccessNode, + PropertyNames.PROPERTY_NAME) + + @classmethod + def getNodeChildNames(self, xNameAccessNode, _schildname): + snames = None + try: + snames = xNameAccessNode.getElementNames() + sdisplaynames = range(snames.length) + i = 0 + while i < snames.length: + oContent = Helper.getUnoPropertyValue( + xNameAccessNode.getByName(snames[i]), _schildname) + if not AnyConverter.isVoid(oContent): + sdisplaynames[i] = (String) + Helper.getUnoPropertyValue(xNameAccessNode.getByName( + snames[i]), _schildname) + else: + sdisplaynames[i] = snames[i] + + i += 1 + return sdisplaynames + except Exception, e: + traceback.print_exc() + return snames + + @classmethod + def getChildNodebyIndex(self, _xNameAccess, _index): + try: + snames = _xNameAccess.getElementNames() + oNode = _xNameAccess.getByName(snames[_index]) + return oNode + except Exception, e: + traceback.print_exc() + return None + + @classmethod + def getChildNodebyName(self, _xNameAccessNode, _SubNodeName): + try: + if _xNameAccessNode.hasByName(_SubNodeName): + return _xNameAccessNode.getByName(_SubNodeName) + + except Exception, e: + traceback.print_exc() + + return None + + @classmethod + def getChildNodebyDisplayName(self, _xNameAccessNode, _displayname): + snames = None + return getChildNodebyDisplayName(_xNameAccessNode, _displayname, + PropertyNames.PROPERTY_NAME) + + @classmethod + def getChildNodebyDisplayName(self, _xNameAccessNode, _displayname, + _nodename): + + snames = None + try: + snames = _xNameAccessNode.getElementNames() + sdisplaynames = range(snames.length) + i = 0 + while i < snames.length: + curdisplayname = Helper.getUnoPropertyValue( + _xNameAccessNode.getByName(snames[i]), _nodename) + if curdisplayname.equals(_displayname): + return _xNameAccessNode.getByName(snames[i]) + + i += 1 + except Exception, e: + traceback.print_exc() + + return None + + @classmethod + def getChildNodebyDisplayName(self, _xMSF, _aLocale, _xNameAccessNode, + _displayname, _nodename, _nmaxcharcount): + + snames = None + try: + snames = _xNameAccessNode.getElementNames() + sdisplaynames = range(snames.length) + i = 0 + while i < snames.length: + curdisplayname = Helper.getUnoPropertyValue( + _xNameAccessNode.getByName(snames[i]), _nodename) + if (_nmaxcharcount > 0) and (_nmaxcharcount < \ + curdisplayname.length()): + curdisplayname = curdisplayname.substring(0, + _nmaxcharcount) + + curdisplayname = Desktop.removeSpecialCharacters(_xMSF, + _aLocale, curdisplayname) + if curdisplayname.equals(_displayname): + return _xNameAccessNode.getByName(snames[i]) + + i += 1 + except Exception, e: + traceback.print_exc() + return None diff --git a/wizards/com/sun/star/wizards/common/DebugHelper.py b/wizards/com/sun/star/wizards/common/DebugHelper.py new file mode 100644 index 000000000..75016033a --- /dev/null +++ b/wizards/com/sun/star/wizards/common/DebugHelper.py @@ -0,0 +1,10 @@ +class DebugHelper(object): + + @classmethod + def exception(self, ex): + raise NotImplementedError + + @classmethod + def writeInfo(self, msg): + raise NotImplementedError + diff --git a/wizards/com/sun/star/wizards/common/Desktop.py b/wizards/com/sun/star/wizards/common/Desktop.py new file mode 100644 index 000000000..3a64ecee8 --- /dev/null +++ b/wizards/com/sun/star/wizards/common/Desktop.py @@ -0,0 +1,280 @@ +import uno +import traceback +from com.sun.star.frame.FrameSearchFlag import ALL, PARENT +from com.sun.star.util import URL +from com.sun.star.i18n.KParseTokens import ANY_LETTER_OR_NUMBER, ASC_UNDERSCORE +from NoValidPathException import * + + +class Desktop(object): + + @classmethod + def getDesktop(self, xMSF): + xDesktop = None + if xMSF is not None: + try: + xDesktop = xMSF.createInstance( "com.sun.star.frame.Desktop") + except Exception, exception: + traceback.print_exc() + else: + print "Can't create a desktop. null pointer !" + + return xDesktop + + @classmethod + def getActiveFrame(self, xMSF): + xDesktop = self.getDesktop(xMSF) + return xDesktop.getActiveFrame() + + @classmethod + def getActiveComponent(self, _xMSF): + xFrame = self.getActiveFrame(_xMSF) + return xFrame.getController().getModel() + + @classmethod + def getActiveTextDocument(self, _xMSF): + xComponent = getActiveComponent(_xMSF) + return xComponent #Text + + @classmethod + def getActiveSpreadsheetDocument(self, _xMSF): + xComponent = getActiveComponent(_xMSF) + return xComponent + + @classmethod + def getDispatcher(self, xMSF, xFrame, _stargetframe, oURL): + try: + oURLArray = range(1) + oURLArray[0] = oURL + xDispatch = xFrame.queryDispatch(oURLArray[0], _stargetframe, ALL) + return xDispatch + except Exception, e: + e.printStackTrace(System.out) + + return None + + @classmethod + def getDispatchURL(self, xMSF, _sURL): + try: + oTransformer = xMSF.createInstance( + "com.sun.star.util.URLTransformer") + oURL = range(1) + oURL[0] = com.sun.star.util.URL.URL() + oURL[0].Complete = _sURL + xTransformer.parseStrict(oURL) + return oURL[0] + except Exception, e: + e.printStackTrace(System.out) + + return None + + @classmethod + def dispatchURL(self, xMSF, sURL, xFrame, _stargetframe): + oURL = getDispatchURL(xMSF, sURL) + xDispatch = getDispatcher(xMSF, xFrame, _stargetframe, oURL) + dispatchURL(xDispatch, oURL) + + @classmethod + def dispatchURL(self, xMSF, sURL, xFrame): + dispatchURL(xMSF, sURL, xFrame, "") + + @classmethod + def dispatchURL(self, _xDispatch, oURL): + oArg = range(0) + _xDispatch.dispatch(oURL, oArg) + + @classmethod + def connect(self, connectStr): + localContext = uno.getComponentContext() + resolver = localContext.ServiceManager.createInstanceWithContext( + "com.sun.star.bridge.UnoUrlResolver", localContext) + ctx = resolver.resolve( connectStr ) + orb = ctx.ServiceManager + return orb + + @classmethod + def checkforfirstSpecialCharacter(self, _xMSF, _sString, _aLocale): + try: + nStartFlags = ANY_LETTER_OR_NUMBER + ASC_UNDERSCORE + ocharservice = _xMSF.createInstance( + "com.sun.star.i18n.CharacterClassification") + aResult = ocharservice.parsePredefinedToken(KParseType.IDENTNAME, + _sString, 0, _aLocale, nStartFlags, "", nStartFlags, " ") + return aResult.EndPos + except Exception, e: + e.printStackTrace(System.out) + return -1 + + @classmethod + def removeSpecialCharacters(self, _xMSF, _aLocale, _sname): + snewname = _sname + i = 0 + while i < snewname.length(): + i = Desktop.checkforfirstSpecialCharacter(_xMSF, snewname, + _aLocale) + if i < snewname.length(): + sspecialchar = snewname.substring(i, i + 1) + snewname = JavaTools.replaceSubString(snewname, "", + sspecialchar) + + return snewname + + ''' + Checks if the passed Element Name already exists in the ElementContainer. + If yes it appends a suffix to make it unique + @param xElementContainer + @param sElementName + @return a unique Name ready to be added to the container. + ''' + + @classmethod + def getUniqueName(self, xElementContainer, sElementName): + bElementexists = True + i = 1 + sIncSuffix = "" + BaseName = sElementName + while bElementexists == True: + bElementexists = xElementContainer.hasByName(sElementName) + if bElementexists == True: + i += 1 + sElementName = BaseName + str(i) + + if i > 1: + sIncSuffix = str(i) + + return sElementName + sIncSuffix + + ''' + Checks if the passed Element Name already exists in the list If yes it + ppends a suffix to make it unique + @param _slist + @param _sElementName + @param _sSuffixSeparator + @return a unique Name not being in the passed list. + ''' + + @classmethod + def getUniqueNameList(self, _slist, _sElementName, _sSuffixSeparator): + a = 2 + scompname = _sElementName + bElementexists = True + if _slist == None: + return _sElementName + + if _slist.length == 0: + return _sElementName + + while bElementexists == True: + i = 0 + while i < _slist.length: + if JavaTools.FieldInList(_slist, scompname) == -1: + return scompname + + i += 1 + scompname = _sElementName + _sSuffixSeparator + (a + 1) + return "" + +class OfficePathRetriever: + + def OfficePathRetriever(self, xMSF): + try: + TemplatePath = FileAccess.getOfficePath(xMSF, + "Template", "share", "/wizard") + UserTemplatePath = FileAccess.getOfficePath(xMSF, + "Template", "user", "") + BitmapPath = FileAccess.combinePaths(xMSF, TemplatePath, + "/../wizard/bitmap") + WorkPath = FileAccess.getOfficePath(xMSF, + "Work", "", "") + except NoValidPathException, nopathexception: + pass + + @classmethod + def getTemplatePath(self, _xMSF): + sTemplatePath = "" + try: + sTemplatePath = FileAccess.getOfficePath(_xMSF, + "Template", "share", "/wizard") + except NoValidPathException, nopathexception: + pass + return sTemplatePath + + @classmethod + def getUserTemplatePath(self, _xMSF): + sUserTemplatePath = "" + try: + sUserTemplatePath = FileAccess.getOfficePath(_xMSF, + "Template", "user", "") + except NoValidPathException, nopathexception: + pass + return sUserTemplatePath + + @classmethod + def getBitmapPath(self, _xMSF): + sBitmapPath = "" + try: + sBitmapPath = FileAccess.combinePaths(_xMSF, + getTemplatePath(_xMSF), "/../wizard/bitmap") + except NoValidPathException, nopathexception: + pass + + return sBitmapPath + + @classmethod + def getWorkPath(self, _xMSF): + sWorkPath = "" + try: + sWorkPath = FileAccess.getOfficePath(_xMSF, "Work", "", "") + + except NoValidPathException, nopathexception: + pass + + return sWorkPath + + @classmethod + def createStringSubstitution(self, xMSF): + xPathSubst = None + try: + xPathSubst = xMSF.createInstance( + "com.sun.star.util.PathSubstitution") + except com.sun.star.uno.Exception, e: + e.printStackTrace() + + if xPathSubst != None: + return xPathSubst + else: + return None + + '''This method searches (and hopefully finds...) a frame + with a componentWindow. + It does it in three phases: + 1. Check if the given desktop argument has a componentWindow. + If it is null, the myFrame argument is taken. + 2. Go up the tree of frames and search a frame with a component window. + 3. Get from the desktop all the components, and give the first one + which has a frame. + @param xMSF + @param myFrame + @param desktop + @return + @throws NoSuchElementException + @throws WrappedTargetException + ''' + + @classmethod + def findAFrame(self, xMSF, myFrame, desktop): + if desktop == None: + desktop = myFrame + #we go up in the tree... + + while desktop != None and desktop.getComponentWindow() == None: + desktop = desktop.findFrame("_parent", FrameSearchFlag.PARENT) + if desktop == None: + e = Desktop.getDesktop(xMSF).getComponents().createEnumeration() + while e.hasMoreElements(): + xModel = (e.nextElement()).getObject() + xFrame = xModel.getCurrentController().getFrame() + if xFrame != None and xFrame.getComponentWindow() != None: + return xFrame + + return desktop diff --git a/wizards/com/sun/star/wizards/common/FileAccess.py b/wizards/com/sun/star/wizards/common/FileAccess.py new file mode 100644 index 000000000..384582b71 --- /dev/null +++ b/wizards/com/sun/star/wizards/common/FileAccess.py @@ -0,0 +1,771 @@ +import traceback +from NoValidPathException import * +from com.sun.star.ucb import CommandAbortedException +from com.sun.star.awt.VclWindowPeerAttribute import OK, YES_NO +import types +from os import path as osPath + +''' +This class delivers static convenience methods +to use with ucb SimpleFileAccess service. +You can also instanciate the class, to encapsulate +some functionality of SimpleFileAccess. The instance +keeps a reference to an XSimpleFileAccess and an +XFileIdentifierConverter, saves the permanent +overhead of quering for those interfaces, and delivers +conveneince methods for using them. +These Convenince methods include mainly Exception-handling. +''' + +class FileAccess(object): + ''' + @param xMSF + @param sPath + @param sAddPath + ''' + + @classmethod + def addOfficePath(self, xMSF, sPath, sAddPath): + xSimpleFileAccess = None + ResultPath = getOfficePath(xMSF, sPath, xSimpleFileAccess) + ''' + As there are several conventions about the look of Url + (e.g. with " " or with "%20") you cannot make a + simple String comparison to find out, if a path + is already in "ResultPath + ''' + PathList = JavaTools.ArrayoutofString(ResultPath, ";") + MaxIndex = PathList.length - 1 + CompAddPath = JavaTools.replaceSubString(sAddPath, "", "/") + i = 0 + while i <= MaxIndex: + CurPath = JavaTools.convertfromURLNotation(PathList[i]) + CompCurPath = JavaTools.replaceSubString(CurPath, "", "/") + if CompCurPath.equals(CompAddPath): + return + + i += 1 + ResultPath += ";" + sAddPath + return + + @classmethod + def deleteLastSlashfromUrl(self, _sPath): + if _sPath.endswith("/"): + return _sPath[:-1] + else: + return _sPath + + ''' + Further information on arguments value see in OO Developer Guide, + chapter 6.2.7 + @param xMSF + @param sPath + @param xSimpleFileAccess + @return the respective path of the office application. + A probable following "/" at the end is trimmed. + ''' + + @classmethod + def getOfficePath(self, xMSF, sPath, xSimpleFileAccess): + try: + ResultPath = "" + xInterface = xMSF.createInstance("com.sun.star.util.PathSettings") + ResultPath = str(Helper.getUnoPropertyValue(xInterface, sPath)) + ResultPath = self.deleteLastSlashfromUrl(ResultPath) + return ResultPath + except Exception, exception: + traceback.print_exc() + return "" + + ''' + Further information on arguments value see in OO Developer Guide, + chapter 6.2.7 + @param xMSF + @param sPath + @param sType use "share" or "user". Set to "" + f not needed eg for the WorkPath; + In the return Officepath a possible slash at the end is cut off + @param sSearchDir + @return + @throws NoValidPathException + ''' + + @classmethod + def getOfficePath2(self, xMSF, sPath, sType, sSearchDir): + #This method currently only works with sPath="Template" + bexists = False + try: + xPathInterface = xMSF.createInstance( + "com.sun.star.util.PathSettings") + ResultPath = "" + ReadPaths = () + xUcbInterface = xMSF.createInstance( + "com.sun.star.ucb.SimpleFileAccess") + Template_writable = xPathInterface.getPropertyValue( + sPath + "_writable") + Template_internal = xPathInterface.getPropertyValue( + sPath + "_internal") + Template_user = xPathInterface.getPropertyValue( + sPath + "_user") + if type(Template_internal) is not types.InstanceType: + ReadPaths = ReadPaths + Template_internal + if type(Template_user) is not types.InstanceType: + ReadPaths = ReadPaths + Template_user + ReadPaths = ReadPaths + (Template_writable,) + if sType.lower() == "user": + ResultPath = Template_writable + bexists = True + else: + #find right path using the search sub path + for i in ReadPaths: + tmpPath = i + sSearchDir + if xUcbInterface.exists(tmpPath): + ResultPath = i + bexists = True + break + + ResultPath = self.deleteLastSlashfromUrl(ResultPath) + except Exception, exception: + traceback.print_exc() + ResultPath = "" + + if not bexists: + raise NoValidPathException (xMSF, ""); + + return ResultPath + + @classmethod + def getOfficePaths(self, xMSF, _sPath, sType, sSearchDir): + #This method currently only works with sPath="Template" + aPathList = [] + Template_writable = "" + try: + xPathInterface = xMSF.createInstance( + "com.sun.star.util.PathSettings") + Template_writable = xPathInterface.getPropertyValue( + _sPath + "_writable") + Template_internal = xPathInterface.getPropertyValue( + _sPath + "_internal") + Template_user = xPathInterface.getPropertyValue(_sPath + "_user") + i = 0 + while i < len(Template_internal): + sPath = Template_internal[i] + if sPath.startsWith("vnd."): + # if there exists a language in the directory, + # we try to add the right language + sPathToExpand = sPath.substring(len("vnd.sun.star.Expand:")) + xExpander = Helper.getMacroExpander(xMSF) + sPath = xExpander.expandMacros(sPathToExpand) + + sPath = checkIfLanguagePathExists(xMSF, sPath) + aPathList.add(sPath) + i += 1 + i = 0 + while i < Template_user.length: + aPathList.add(Template_user[i]) + i += 1 + aPathList.add(Template_writable) + + except Exception, exception: + traceback.print_exc() + return aPathList + + @classmethod + def checkIfLanguagePathExists(self, _xMSF, _sPath): + try: + defaults = _xMSF.createInstance("com.sun.star.text.Defaults") + aLocale = Helper.getUnoStructValue(defaults, "CharLocale") + if aLocale == None: + java.util.Locale.getDefault() + aLocale = com.sun.star.lang.Locale.Locale() + aLocale.Country = java.util.Locale.getDefault().getCountry() + aLocale.Language = java.util.Locale.getDefault().getLanguage() + aLocale.Variant = java.util.Locale.getDefault().getVariant() + + sLanguage = aLocale.Language + sCountry = aLocale.Country + sVariant = aLocale.Variant + # de-DE-Bayrisch + aLocaleAll = StringBuffer.StringBuffer() + aLocaleAll.append(sLanguage).append('-').append(sCountry).append('-').append(sVariant) + sPath = _sPath + "/" + aLocaleAll.toString() + xInterface = _xMSF.createInstance( + "com.sun.star.ucb.SimpleFileAccess") + if xInterface.exists(sPath): + # de-DE + return sPath + + aLocaleLang_Country = StringBuffer.StringBuffer() + aLocaleLang_Country.append(sLanguage).append('-').append(sCountry) + sPath = _sPath + "/" + aLocaleLang_Country.toString() + if xInterface.exists(sPath): + # de + return sPath + + aLocaleLang = StringBuffer.StringBuffer() + aLocaleLang.append(sLanguage) + sPath = _sPath + "/" + aLocaleLang.toString() + if xInterface.exists(sPath): + # the absolute default is en-US or en + return sPath + + sPath = _sPath + "/en-US" + if xInterface.exists(sPath): + return sPath + + sPath = _sPath + "/en" + if xInterface.exists(sPath): + return sPath + + except com.sun.star.uno.Exception, e: + pass + + return _sPath + + @classmethod + def combinePaths2(self, xMSF, _aFirstPath, _sSecondPath): + i = 0 + while i < _aFirstPath.size(): + sOnePath = _aFirstPath.get(i) + sOnePath = addPath(sOnePath, _sSecondPath) + if isPathValid(xMSF, sOnePath): + _aFirstPath.add(i, sOnePath) + _aFirstPath.remove(i + 1) + else: + _aFirstPath.remove(i) + i -= 1 + + i += 1 + + @classmethod + def isPathValid(self, xMSF, _sPath): + bExists = False + try: + xUcbInterface = xMSF.createInstance( + "com.sun.star.ucb.SimpleFileAccess") + bExists = xUcbInterface.exists(_sPath) + except Exception, exception: + traceback.print_exc() + + return bExists + + @classmethod + def combinePaths(self, xMSF, _sFirstPath, _sSecondPath): + bexists = False + ReturnPath = "" + try: + xUcbInterface = xMSF.createInstance( + "com.sun.star.ucb.SimpleFileAccess") + ReturnPath = _sFirstPath + _sSecondPath + bexists = xUcbInterface.exists(ReturnPath) + except Exception, exception: + traceback.print_exc() + return "" + + if not bexists: + raise NoValidPathException (xMSF, ""); + + return ReturnPath + + @classmethod + def createSubDirectory(self, xMSF, xSimpleFileAccess, Path): + sNoDirCreation = "" + try: + oResource = Resource.Resource_unknown(xMSF, "ImportWizard", "imp") + if oResource != None: + sNoDirCreation = oResource.getResText(1050) + sMsgDirNotThere = oResource.getResText(1051) + sQueryForNewCreation = oResource.getResText(1052) + OSPath = JavaTools.convertfromURLNotation(Path) + sQueryMessage = JavaTools.replaceSubString(sMsgDirNotThere, + OSPath, "%1") + sQueryMessage = sQueryMessage + (char) + 13 + sQueryForNewCreation + icreate = SystemDialog.showMessageBox(xMSF, "QueryBox", + YES_NO, sQueryMessage) + if icreate == 2: + xSimpleFileAccess.createFolder(Path) + return True + + return False + except CommandAbortedException, exception: + sMsgNoDir = JavaTools.replaceSubString(sNoDirCreation, Path, "%1") + SystemDialog.showMessageBox(xMSF, "ErrorBox", OK, sMsgNoDir) + return False + except com.sun.star.uno.Exception, Exception: + sMsgNoDir = JavaTools.replaceSubString(sNoDirCreation, Path, "%1") + SystemDialog.showMessageBox(xMSF, "ErrorBox", OK, sMsgNoDir) + return False + + ''' + checks if the root of a path exists. if the parameter + xWindowPeer is not null then also the directory is + created when it does not exists and the user + ''' + + @classmethod + def PathisValid(self, xMSF, Path, sMsgFilePathInvalid, + baskbeforeOverwrite): + try: + SubDirPath = "" + bSubDirexists = True + NewPath = Path + xInterface = xMSF.createInstance( + "com.sun.star.ucb.SimpleFileAccess") + if baskbeforeOverwrite: + if xInterface.exists(Path): + oResource = Resource.Resource_unknown(xMSF, + "ImportWizard", "imp") + sFileexists = oResource.getResText(1053) + NewString = JavaTools.convertfromURLNotation(Path) + sFileexists = JavaTools.replaceSubString(sFileexists, + NewString, "<1>") + sFileexists = JavaTools.replaceSubString(sFileexists, + str(13), "<CR>") + iLeave = SystemDialog.showMessageBox(xMSF, "QueryBox", + YES_NO, sFileexists) + if iLeave == 3: + return False + + DirArray = JavaTools.ArrayoutofString(Path, "/") + MaxIndex = DirArray.length - 1 + if MaxIndex > 0: + i = MaxIndex + while i >= 0: + SubDir = DirArray[i] + SubLen = SubDir.length() + NewLen = NewPath.length() + RestLen = NewLen - SubLen + if RestLen > 0: + NewPath = NewPath.substring(0, NewLen - SubLen - 1) + if i == MaxIndex: + SubDirPath = NewPath + + bexists = xSimpleFileAccess.exists(NewPath) + if bexists: + LowerCasePath = NewPath.toLowerCase() + bexists = (((LowerCasePath.equals("file:#/")) or + (LowerCasePath.equals("file:#")) or + (LowerCasePath.equals("file:/")) or + (LowerCasePath.equals("file:"))) == False) + + if bexists: + if bSubDirexists == False: + bSubDiriscreated = createSubDirectory(xMSF, + xSimpleFileAccess, SubDirPath) + return bSubDiriscreated + + return True + else: + bSubDirexists = False + + i -= 1 + + SystemDialog.showMessageBox(xMSF, "ErrorBox", OK, + sMsgFilePathInvalid) + return False + except com.sun.star.uno.Exception, exception: + traceback.print_exc() + SystemDialog.showMessageBox(xMSF, "ErrorBox", OK, + sMsgFilePathInvalid) + return False + + @classmethod + def getFolderTitles(self, xMSF, FilterName, FolderName): + LocLayoutFiles = [[2],[]] + try: + xDocInterface = xMSF.createInstance( + "com.sun.star.document.DocumentProperties") + xInterface = xMSF.createInstance( + "com.sun.star.ucb.SimpleFileAccess") + nameList = xInterface.getFolderContents(FolderName, False) + TitleVector = [] + NameVector = [] + if FilterName is None or FilterName == "": + FilterName = None + else: + FilterName = FilterName + "-" + fileName = "" + NameVectorAppend = NameVector.append + TitleVectorAppend = TitleVector.append + for i in nameList: + fileName = self.getFilename(i) + if FilterName is None or fileName.startswith(FilterName): + xDocInterface.loadFromMedium(i, tuple()) + NameVectorAppend(i) + TitleVectorAppend(xDocInterface.Title) + + LocLayoutFiles[1] = NameVector + LocLayoutFiles[0] = TitleVector + + except Exception, exception: + traceback.print_exc() + + return self.__bubblesortList(LocLayoutFiles) + + ''' + This function bubble sorts an array of with 2 dimensions. + The default sorting order is the first dimension + Only if sort2ndValue is True the second dimension is + the relevant for the sorting order + ''' + + @classmethod + def __bubblesortList(self, SortList): + SortCount = len(SortList[0]) + DimCount = len(SortList) + for i in xrange(SortCount): + for t in xrange(SortCount - i - 1): + if SortList[0][t] > SortList[0][t + 1]: + for k in xrange(DimCount): + DisplayDummy = SortList[k][t]; + SortList[k][t] = SortList[k][t + 1]; + SortList[k][t + 1] = DisplayDummy + return SortList + ''' + We search in all given path for a given file + @param _sPath + @param _sPath2 + @return + ''' + + @classmethod + def addPath(self, _sPath, _sPath2): + if not _sPath.endsWith("/"): + _sPath += "/" + + if _sPath2.startsWith("/"): + _sPath2 = _sPath2.substring(1) + + sNewPath = _sPath + _sPath2 + return sNewPath + + @classmethod + def getPathFromList(self, xMSF, _aList, _sFile): + sFoundFile = "" + try: + xInterface = xMSF.createInstance( + "com.sun.star.ucb.SimpleFileAccess") + i = 0 + while i < _aList.size(): + sPath = _aList.get(i) + sPath = addPath(sPath, _sFile) + if xInterface.exists(sPath): + sFoundFile = sPath + + i += 1 + except com.sun.star.uno.Exception, e: + pass + + return sFoundFile + + @classmethod + def getTitle(self, xMSF, _sFile): + sTitle = "" + try: + xDocInterface = xMSF.createInstance( + "com.sun.star.document.DocumentProperties") + noArgs = [] + xDocInterface.loadFromMedium(_sFile, noArgs) + sTitle = xDocInterface.getTitle() + except Exception, e: + traceback.print_exc() + + return sTitle + + def __init__(self, xmsf): + #get a simple file access... + self.fileAccess = xmsf.createInstance( + "com.sun.star.ucb.SimpleFileAccess") + #get the file identifier converter + self.filenameConverter = xmsf.createInstance( + "com.sun.star.ucb.FileContentProvider") + + def getURL(self, path, childPath=None): + try: + if childPath is not None: + path = self.filenameConverter.getSystemPathFromFileURL(path) + f = open(path,childPath) + else: + f = open(path) + + r = self.filenameConverter.getFileURLFromSystemPath(path, + osPath.abspath(path)) + return r + except Exception: + traceback.print_exc() + return None + + def getPath(self, parentURL, childURL): + string = "" + if childURL is not None and childURL is not "": + string = "/" + childURL + return self.filenameConverter.getSystemPathFromFileURL( + parentURL + string) + + ''' + @author rpiterman + @param filename + @return the extension of the given filename. + ''' + + @classmethod + def getExtension(self, filename): + p = filename.indexOf(".") + if p == -1: + return "" + else: + while p > -1: + filename = filename.substring(p + 1) + p = filename.indexOf(".") + + return filename + + ''' + @author rpiterman + @param s + @return + ''' + + def mkdir(self, s): + try: + self.fileAccess.createFolder(s) + return True + except CommandAbortedException, cax: + traceback.print_exc() + except com.sun.star.uno.Exception, ex: + traceback.print_exc() + + return False + + ''' + @author rpiterman + @param filename + @param def what to return in case of an exception + @return true if the given file exists or not. + if an exception accures, returns the def value. + ''' + + def exists(self, filename, defe): + try: + return self.fileAccess.exists(filename) + except CommandAbortedException, cax: + pass + except Exception: + pass + + return defe + + ''' + @author rpiterman + @param filename + @return + ''' + + def isDirectory(self, filename): + try: + return self.fileAccess.isFolder(filename) + except CommandAbortedException, cax: + pass + except com.sun.star.uno.Exception, ex: + pass + + return False + + ''' + lists the files in a given directory + @author rpiterman + @param dir + @param includeFolders + @return + ''' + + def listFiles(self, dir, includeFolders): + try: + return self.fileAccess.getFolderContents(dir, includeFolders) + except CommandAbortedException, cax: + pass + except com.sun.star.uno.Exception, ex: + pass + + return range(0) + + ''' + @author rpiterman + @param file + @return + ''' + + def delete(self, file): + try: + self.fileAccess.kill(file) + return True + except CommandAbortedException, cax: + traceback.print_exc() + except com.sun.star.uno.Exception, ex: + traceback.print_exc() + + return False + + + ''' + return the filename out of a system-dependent path + @param path + @return + ''' + + @classmethod + def getPathFilename(self, path): + return self.getFilename(path, File.separator) + + ''' + @author rpiterman + @param path + @param pathSeparator + @return + ''' + + @classmethod + def getFilename(self, path, pathSeparator = "/"): + return path.split(pathSeparator)[-1] + + @classmethod + def getBasename(self, path, pathSeparator): + filename = self.getFilename(path, pathSeparator) + sExtension = getExtension(filename) + basename = filename.substring(0, filename.length() - \ + (sExtension.length() + 1)) + return basename + + ''' + @author rpiterman + @param source + @param target + @return + ''' + + def copy(self, source, target): + try: + self.fileAccess.copy(source, target) + return True + except CommandAbortedException, cax: + pass + except com.sun.star.uno.Exception, ex: + pass + + return False + + def getLastModified(self, url): + try: + return self.fileAccess.getDateTimeModified(url) + except CommandAbortedException, cax: + pass + except com.sun.star.uno.Exception, ex: + pass + + return None + + ''' + @param url + @return the parent dir of the given url. + if the path points to file, gives the directory in which the file is. + ''' + + @classmethod + def getParentDir(self, url): + while url[-1] == "/": + url = hello[:-1] + return url[:url.rfind("/")] + + def createNewDir(self, parentDir, name): + s = getNewFile(parentDir, name, "") + if mkdir(s): + return s + else: + return None + + def getNewFile(self, parentDir, name, extension): + i = 0 + tmp_do_var2 = True + while tmp_do_var2: + filename = filename(name, extension, (i + 1)) + u = getURL(parentDir, filename) + url = u + tmp_do_var2 = exists(url, True) + return url + + @classmethod + def filename(self, name, ext, i): + stringI = "" + stringExt = "" + if i is not 0: + stringI = str(i) + if ext is not "": + stringExt = "." + ext + + return name + stringI + StringExt + + def getSize(self, url): + try: + return self.fileAccess.getSize(url) + except Exception, ex: + return -1 + + @classmethod + def connectURLs(self, urlFolder, urlFilename): + stringFolder = "" + stringFileName = urlFilename + if not urlFolder.endsWith("/"): + stringFolder = "/" + if urlFilename.startsWith("/"): + stringFileName = urlFilename.substring(1) + return urlFolder + stringFolder + stringFileName + + @classmethod + def getDataFromTextFile(self, _xMSF, _filepath): + sFileData = None + try: + oDataVector = [] + oSimpleFileAccess = _xMSF.createInstance( + "com.sun.star.ucb.SimpleFileAccess") + if oSimpleFileAccess.exists(_filepath): + xInputStream = oSimpleFileAccess.openFileRead(_filepath) + oTextInputStream = _xMSF.createInstance( + "com.sun.star.io.TextInputStream") + oTextInputStream.setInputStream(xInputStream) + while not oTextInputStream.isEOF(): + oDataVector.addElement(oTextInputStream.readLine()) + oTextInputStream.closeInput() + sFileData = [oDataVector.size()] + oDataVector.toArray(sFileData) + + except Exception, e: + traceback.print_exc() + + return sFileData + + ''' + shortens a filename to a user displayable representation. + @param path + @param maxLength + @return + ''' + + @classmethod + def getShortFilename(self, path, maxLength): + firstPart = 0 + if path.length() > maxLength: + if path.startsWith("/"): + # unix + nextSlash = path.indexOf("/", 1) + 1 + firstPart = Math.min(nextSlash, (maxLength - 3) / 2) + else: + #windows + firstPart = Math.min(10, (maxLength - 3) / 2) + + s1 = path.substring(0, firstPart) + s2 = path.substring(path.length() - (maxLength - (3 + firstPart))) + return s1 + "..." + s2 + else: + return path + diff --git a/wizards/com/sun/star/wizards/common/HelpIds.py b/wizards/com/sun/star/wizards/common/HelpIds.py new file mode 100644 index 000000000..c6bd1b78c --- /dev/null +++ b/wizards/com/sun/star/wizards/common/HelpIds.py @@ -0,0 +1,1012 @@ +class HelpIds: + array1 = [ + "HID:WIZARDS_HID0_WEBWIZARD", # HID:34200 + "HID:WIZARDS_HID0_HELP", # HID:34201 + "HID:WIZARDS_HID0_NEXT", # HID:34202 + "HID:WIZARDS_HID0_PREV", # HID:34203 + "HID:WIZARDS_HID0_CREATE", # HID:34204 + "HID:WIZARDS_HID0_CANCEL", # HID:34205 + "HID:WIZARDS_HID0_STATUS_DIALOG", # HID:34206 + "HID:WIZARDS_HID1_LST_SESSIONS", # HID:34207 + "", + "HID:WIZARDS_HID1_BTN_DEL_SES", # HID:34209 + "HID:WIZARDS_HID2_LST_DOCS", # HID:34210 + "HID:WIZARDS_HID2_BTN_ADD_DOC", # HID:34211 + "HID:WIZARDS_HID2_BTN_REM_DOC", # HID:34212 + "HID:WIZARDS_HID2_BTN_DOC_UP", # HID:34213 + "HID:WIZARDS_HID2_BTN_DOC_DOWN", # HID:34214 + "HID:WIZARDS_HID2_TXT_DOC_TITLE", # HID:34215 + "HID:WIZARDS_HID2_TXT_DOC_DESC", # HID:34216 + "HID:WIZARDS_HID2_TXT_DOC_AUTHOR", # HID:34217 + "HID:WIZARDS_HID2_LST_DOC_EXPORT", # HID:34218 + "HID:WIZARDS_HID2_STATUS_ADD_DOCS", # HID:34219 + "HID:WIZARDS_HID3_IL_LAYOUTS_IMG1", # HID:34220 + "HID:WIZARDS_HID3_IL_LAYOUTS_IMG2", # HID:34221 + "HID:WIZARDS_HID3_IL_LAYOUTS_IMG3", # HID:34222 + "HID:WIZARDS_HID3_IL_LAYOUTS_IMG4", # HID:34223 + "HID:WIZARDS_HID3_IL_LAYOUTS_IMG5", # HID:34224 + "HID:WIZARDS_HID3_IL_LAYOUTS_IMG6", # HID:34225 + "HID:WIZARDS_HID3_IL_LAYOUTS_IMG7", # HID:34226 + "HID:WIZARDS_HID3_IL_LAYOUTS_IMG8", # HID:34227 + "HID:WIZARDS_HID3_IL_LAYOUTS_IMG9", # HID:34228 + "HID:WIZARDS_HID3_IL_LAYOUTS_IMG10", # HID:34229 + "HID:WIZARDS_HID3_IL_LAYOUTS_IMG11", # HID:34230 + "HID:WIZARDS_HID3_IL_LAYOUTS_IMG12", # HID:34231 + "HID:WIZARDS_HID3_IL_LAYOUTS_IMG13", # HID:34232 + "HID:WIZARDS_HID3_IL_LAYOUTS_IMG14", # HID:34233 + "HID:WIZARDS_HID3_IL_LAYOUTS_IMG15", # HID:34234 + "HID:WIZARDS_HID4_CHK_DISPLAY_FILENAME", # HID:34235 + "HID:WIZARDS_HID4_CHK_DISPLAY_DESCRIPTION", # HID:34236 + "HID:WIZARDS_HID4_CHK_DISPLAY_AUTHOR", # HID:34237 + "HID:WIZARDS_HID4_CHK_DISPLAY_CR_DATE", # HID:34238 + "HID:WIZARDS_HID4_CHK_DISPLAY_UP_DATE", # HID:34239 + "HID:WIZARDS_HID4_CHK_DISPLAY_FORMAT", # HID:34240 + "HID:WIZARDS_HID4_CHK_DISPLAY_F_ICON", # HID:34241 + "HID:WIZARDS_HID4_CHK_DISPLAY_PAGES", # HID:34242 + "HID:WIZARDS_HID4_CHK_DISPLAY_SIZE", # HID:34243 + "HID:WIZARDS_HID4_GRP_OPTIMAIZE_640", # HID:34244 + "HID:WIZARDS_HID4_GRP_OPTIMAIZE_800", # HID:34245 + "HID:WIZARDS_HID4_GRP_OPTIMAIZE_1024", # HID:34246 + "HID:WIZARDS_HID5_LST_STYLES", # HID:34247 + "HID:WIZARDS_HID5_BTN_BACKGND", # HID:34248 + "HID:WIZARDS_HID5_BTN_ICONS", # HID:34249 + "HID:WIZARDS_HID6_TXT_SITE_TITLE", # HID:34250 + "", + "", + "HID:WIZARDS_HID6_TXT_SITE_DESC", # HID:34253 + "", + "HID:WIZARDS_HID6_DATE_SITE_CREATED", # HID:34255 + "HID:WIZARDS_HID6_DATE_SITE_UPDATED", # HID:34256 + "", + "HID:WIZARDS_HID6_TXT_SITE_EMAIL", # HID:34258 + "HID:WIZARDS_HID6_TXT_SITE_COPYRIGHT", # HID:34259 + "HID:WIZARDS_HID7_BTN_PREVIEW", # HID:34260 + "HID:WIZARDS_HID7_CHK_PUBLISH_LOCAL", # HID:34261 + "HID:WIZARDS_HID7_TXT_LOCAL", # HID:34262 + "HID:WIZARDS_HID7_BTN_LOCAL", # HID:34263 + "HID:WIZARDS_HID7_CHK_PUBLISH_ZIP", # HID:34264 + "HID:WIZARDS_HID7_TXT_ZIP", # HID:34265 + "HID:WIZARDS_HID7_BTN_ZIP", # HID:34266 + "HID:WIZARDS_HID7_CHK_PUBLISH_FTP", # HID:34267 + "HID:WIZARDS_HID7_TXT_FTP", # HID:34268 + "HID:WIZARDS_HID7_BTN_FTP", # HID:34269 + "HID:WIZARDS_HID7_CHK_SAVE", # HID:34270 + "HID:WIZARDS_HID7_TXT_SAVE", # HID:34271 + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "HID:WIZARDS_HID_BG", # HID:34290 + "HID:WIZARDS_HID_BG_BTN_OTHER", # HID:34291 + "HID:WIZARDS_HID_BG_BTN_NONE", # HID:34292 + "HID:WIZARDS_HID_BG_BTN_OK", # HID:34293 + "HID:WIZARDS_HID_BG_BTN_CANCEL", # HID:34294 + "HID:WIZARDS_HID_BG_BTN_BACK", # HID:34295 + "HID:WIZARDS_HID_BG_BTN_FW", # HID:34296 + "HID:WIZARDS_HID_BG_BTN_IMG1", # HID:34297 + "HID:WIZARDS_HID_BG_BTN_IMG2", # HID:34298 + "HID:WIZARDS_HID_BG_BTN_IMG3", # HID:34299 + "HID:WIZARDS_HID_BG_BTN_IMG4", # HID:34300 + "HID:WIZARDS_HID_BG_BTN_IMG5", # HID:34301 + "HID:WIZARDS_HID_BG_BTN_IMG6", # HID:34302 + "HID:WIZARDS_HID_BG_BTN_IMG7", # HID:34303 + "HID:WIZARDS_HID_BG_BTN_IMG8", # HID:34304 + "HID:WIZARDS_HID_BG_BTN_IMG9", # HID:34305 + "HID:WIZARDS_HID_BG_BTN_IMG10", # HID:34306 + "HID:WIZARDS_HID_BG_BTN_IMG11", # HID:34307 + "HID:WIZARDS_HID_BG_BTN_IMG12", # HID:34308 + "HID:WIZARDS_HID_BG_BTN_IMG13", # HID:34309 + "HID:WIZARDS_HID_BG_BTN_IMG14", # HID:34300 + "HID:WIZARDS_HID_BG_BTN_IMG15", # HID:34311 + "HID:WIZARDS_HID_BG_BTN_IMG16", # HID:34312 + "", + "", + "", + "", + "", + "", + "", + "HID:WIZARDS_HID_DLGREPORT_DIALOG", # HID:34320 + "", + "HID:WIZARDS_HID_DLGREPORT_0_CMDPREV", # HID:34322 + "HID:WIZARDS_HID_DLGREPORT_0_CMDNEXT", # HID:34323 + "HID:WIZARDS_HID_DLGREPORT_0_CMDFINISH", # HID:34324 + "HID:WIZARDS_HID_DLGREPORT_0_CMDCANCEL", # HID:34325 + "", + "", + "", + "", + "HID:WIZARDS_HID_DLGREPORT_1_LBTABLES", # HID:34330 + "HID:WIZARDS_HID_DLGREPORT_1_FIELDSAVAILABLE", # HID:34331 + "HID:WIZARDS_HID_DLGREPORT_1_CMDMOVESELECTED", # HID:34332 + "HID:WIZARDS_HID_DLGREPORT_1_CMDMOVEALL", # HID:34333 + "HID:WIZARDS_HID_DLGREPORT_1_CMDREMOVESELECTED", # HID:34334 + "HID:WIZARDS_HID_DLGREPORT_1_CMDREMOVEALL", # HID:34335 + "HID:WIZARDS_HID_DLGREPORT_1_FIELDSSELECTED", # HID:34336 + "HID:WIZARDS_HID_DLGREPORT_1_CMDMOVEUP", # HID:34337 + "HID:WIZARDS_HID_DLGREPORT_1_CMDMOVEDOWN", # HID:34338 + "", + "HID:WIZARDS_HID_DLGREPORT_2_GROUPING", # HID:34340 + "HID:WIZARDS_HID_DLGREPORT_2_CMDGROUP", # HID:34341 + "HID:WIZARDS_HID_DLGREPORT_2_CMDUNGROUP", # HID:34342 + "HID:WIZARDS_HID_DLGREPORT_2_PREGROUPINGDEST", # HID:34343 + "HID:WIZARDS_HID_DLGREPORT_2_CMDMOVEUPGROUP", # HID:34344 + "HID:WIZARDS_HID_DLGREPORT_2_CMDMOVEDOWNGROUP", # HID:34345 + "HID:WIZARDS_HID_DLGREPORT_3_SORT1", # HID:34346 + "HID:WIZARDS_HID_DLGREPORT_3_OPTASCEND1", # HID:34347 + "HID:WIZARDS_HID_DLGREPORT_3_OPTDESCEND1", # HID:34348 + "HID:WIZARDS_HID_DLGREPORT_3_SORT2", # HID:34349 + "HID:WIZARDS_HID_DLGREPORT_3_OPTASCEND2", # HID:34350 + "HID:WIZARDS_HID_DLGREPORT_3_OPTDESCEND2", # HID:34351 + "HID:WIZARDS_HID_DLGREPORT_3_SORT3", # HID:34352 + "HID:WIZARDS_HID_DLGREPORT_3_OPTASCEND3", # HID:34353 + "HID:WIZARDS_HID_DLGREPORT_3_OPTDESCEND3", # HID:34354 + "HID:WIZARDS_HID_DLGREPORT_3_SORT4", # HID:34355 + "HID:WIZARDS_HID_DLGREPORT_3_OPTASCEND4", # HID:34356 + "HID:WIZARDS_HID_DLGREPORT_3_OPTDESCEND4", # HID:34357 + "", + "", + "", + "", + "HID:WIZARDS_HID_DLGREPORT_4_TITLE", # HID:34362 + "HID:WIZARDS_HID_DLGREPORT_4_DATALAYOUT", # HID:34363 + "HID:WIZARDS_HID_DLGREPORT_4_PAGELAYOUT", # HID:34364 + "HID:WIZARDS_HID_DLGREPORT_4_LANDSCAPE", # HID:34365 + "HID:WIZARDS_HID_DLGREPORT_4_PORTRAIT", # HID:34366 + "", + "", + "", + "HID:WIZARDS_HID_DLGREPORT_5_OPTDYNTEMPLATE", # HID:34370 + "HID:WIZARDS_HID_DLGREPORT_5_OPTSTATDOCUMENT", # HID:34371 + "HID:WIZARDS_HID_DLGREPORT_5_TXTTEMPLATEPATH", # HID:34372 + "HID:WIZARDS_HID_DLGREPORT_5_CMDTEMPLATEPATH", # HID:34373 + "HID:WIZARDS_HID_DLGREPORT_5_OPTEDITTEMPLATE", # HID:34374 + "HID:WIZARDS_HID_DLGREPORT_5_OPTUSETEMPLATE", # HID:34375 + "HID:WIZARDS_HID_DLGREPORT_5_TXTDOCUMENTPATH", # HID:34376 + "HID:WIZARDS_HID_DLGREPORT_5_CMDDOCUMENTPATH", # HID:34377 + "HID:WIZARDS_HID_DLGREPORT_5_CHKLINKTODB", # HID:34378 + "", + "", + "HID:WIZARDS_HID_DLGREPORT_6_TXTTITLE_1", # HID:34381 + "HID:WIZARDS_HID_DLGREPORT_6_TXTTITLE_2", # HID:34382 + "HID:WIZARDS_HID_DLGREPORT_6_TXTTITLE_3", # HID:34383 + "HID:WIZARDS_HID_DLGREPORT_6_TXTTITLE_4", # HID:34384 + "HID:WIZARDS_HID_DLGREPORT_6_TXTTITLE_5", # HID:34385 + "HID:WIZARDS_HID_DLGREPORT_6_TXTTITLE_6", # HID:34386 + "HID:WIZARDS_HID_DLGREPORT_6_TXTTITLE_7", # HID:34387 + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "HID:WIZARDS_HID_DLGFORM_DIALOG", # HID:34400 + "", + "HID:WIZARDS_HID_DLGFORM_CMDPREV", # HID:34402 + "HID:WIZARDS_HID_DLGFORM_CMDNEXT", # HID:34403 + "HID:WIZARDS_HID_DLGFORM_CMDFINISH", # HID:34404 + "HID:WIZARDS_HID_DLGFORM_CMDCANCEL", # HID:34405 + "", + "", + "", + "", + "", + "HID:WIZARDS_HID_DLGFORM_MASTER_LBTABLES", # HID:34411 + "HID:WIZARDS_HID_DLGFORM_MASTER_FIELDSAVAILABLE", # HID:34412 + "HID:WIZARDS_HID_DLGFORM_MASTER_CMDMOVESELECTED", # HID:34413 + "HID:WIZARDS_HID_DLGFORM_MASTER_CMDMOVEALL", # HID:34414 + "HID:WIZARDS_HID_DLGFORM_MASTER_CMDREMOVESELECTED", # HID:34415 + "HID:WIZARDS_HID_DLGFORM_MASTER_CMDREMOVEALL", # HID:34416 + "HID:WIZARDS_HID_DLGFORM_MASTER_FIELDSSELECTED", # HID:34417 + "HID:WIZARDS_HID_DLGFORM_MASTER_CMDMOVEUP", # HID:34418 + "HID:WIZARDS_HID_DLGFORM_MASTER_CMDMOVEDOWN", # HID:34419 + "", + "HID:WIZARDS_HID_DLGFORM_CHKCREATESUBFORM", # HID:34421 + "HID:WIZARDS_HID_DLGFORM_OPTONEXISTINGRELATION", # HID:34422 + "HID:WIZARDS_HID_DLGFORM_OPTSELECTMANUALLY", # HID:34423 + "HID:WIZARDS_HID_DLGFORM_lstRELATIONS", # HID:34424 + "", + "", + "", + "", + "", + "", + "HID:WIZARDS_HID_DLGFORM_SUB_LBTABLES", # HID:34431 + "HID:WIZARDS_HID_DLGFORM_SUB_FIELDSAVAILABLE", # HID:34432 + "HID:WIZARDS_HID_DLGFORM_SUB_CMDMOVESELECTED", # HID:34433 + "HID:WIZARDS_HID_DLGFORM_SUB_CMDMOVEALL", # HID:34434 + "HID:WIZARDS_HID_DLGFORM_SUB_CMDREMOVESELECTED", # HID:34435 + "HID:WIZARDS_HID_DLGFORM_SUB_CMDREMOVEALL", # HID:34436 + "HID:WIZARDS_HID_DLGFORM_SUB_FIELDSSELECTED", # HID:34437 + "HID:WIZARDS_HID_DLGFORM_SUB_CMDMOVEUP", # HID:34438 + "HID:WIZARDS_HID_DLGFORM_SUB_CMDMOVEDOWN", # HID:34439 + "", + "HID:WIZARDS_HID_DLGFORM_LINKER_LSTSLAVELINK1", # HID:34441 + "HID:WIZARDS_HID_DLGFORM_LINKER_LSTMASTERLINK1", # HID:34442 + "HID:WIZARDS_HID_DLGFORM_LINKER_LSTSLAVELINK2", # HID:34443 + "HID:WIZARDS_HID_DLGFORM_LINKER_LSTMASTERLINK2", # HID:34444 + "HID:WIZARDS_HID_DLGFORM_LINKER_LSTSLAVELINK3", # HID:34445 + "HID:WIZARDS_HID_DLGFORM_LINKER_LSTMASTERLINK3", # HID:34446 + "HID:WIZARDS_HID_DLGFORM_LINKER_LSTSLAVELINK4", # HID:34447 + "HID:WIZARDS_HID_DLGFORM_LINKER_LSTMASTERLINK4", # HID:34448 + "", + "", + "HID:WIZARDS_HID_DLGFORM_CMDALIGNLEFT", # HID:34451 + "HID:WIZARDS_HID_DLGFORM_CMDALIGNRIGHT", # HID:34452 + "HID:WIZARDS_HID_DLGFORM_CMDLEFTLABELED", # HID:34453 + "HID:WIZARDS_HID_DLGFORM_CMDTOPLABELED", # HID:34454 + "HID:WIZARDS_HID_DLGFORM_CMDTABLESTYLE", # HID:34455 + "HID:WIZARDS_HID_DLGFORM_CMDTOPJUSTIFIED", # HID:34456 + "HID:WIZARDS_HID_DLGFORM_CMDLEFTLABELED2", # HID:34457 + "HID:WIZARDS_HID_DLGFORM_CMDTOPLABELED2", # HID:34458 + "HID:WIZARDS_HID_DLGFORM_CMDTABLESTYLE2", # HID:34459 + "HID:WIZARDS_HID_DLGFORM_CMDTOPJUSTIFIED2", # HID:34460 + "HID:WIZARDS_HID_DLGFORM_OPTNEWDATAONLY", # HID:34461 + "HID:WIZARDS_HID_DLGFORM_OPTDISPLAYALLDATA", # HID:34462 + "HID:WIZARDS_HID_DLGFORM_CHKNOMODIFICATION", # HID:34463 + "HID:WIZARDS_HID_DLGFORM_CHKNODELETION", # HID:34464 + "HID:WIZARDS_HID_DLGFORM_CHKNOADDITION", # HID:34465 + "", + "", + "", + "", + "", + "HID:WIZARDS_HID_DLGFORM_LSTSTYLES", # HID:34471 + "HID:WIZARDS_HID_DLGFORM_CMDNOBORDER", # HID:34472 + "HID:WIZARDS_HID_DLGFORM_CMD3DBORDER", # HID:34473 + "HID:WIZARDS_HID_DLGFORM_CMDSIMPLEBORDER", # HID:34474 + "", + "", + "", + "", + "", + "", + "HID:WIZARDS_HID_DLGFORM_TXTPATH", # HID:34481 + "HID:WIZARDS_HID_DLGFORM_OPTWORKWITHFORM", # HID:34482 + "HID:WIZARDS_HID_DLGFORM_OPTMODIFYFORM", # HID:34483 + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "HID:WIZARDS_HID_DLGNEWSLTR_DIALOG", # HID:34500 + "HID:WIZARDS_HID_DLGNEWSLTR_OPTSTANDARDLAYOUT", # HID:34501 + "HID:WIZARDS_HID_DLGNEWSLTR_OPTPARTYLAYOUT", # HID:34502 + "HID:WIZARDS_HID_DLGNEWSLTR_OPTBROCHURELAYOUT", # HID:34503 + "HID:WIZARDS_HID_DLGNEWSLTR_OPTSINGLESIDED", # HID:34504 + "HID:WIZARDS_HID_DLGNEWSLTR_OPTDOUBLESIDED", # HID:34505 + "HID:WIZARDS_HID_DLGNEWSLTR_CMDGOON", # HID:34506 + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "HID:WIZARDS_HID_DLGDEPOT_DIALOG_SELLBUY", # HID:34520 + "HID:WIZARDS_HID_DLGDEPOT_0_TXTSTOCKID_SELLBUY", # HID:34521 + "HID:WIZARDS_HID_DLGDEPOT_0_TXTQUANTITY", # HID:34522 + "HID:WIZARDS_HID_DLGDEPOT_0_TXTRATE", # HID:34523 + "HID:WIZARDS_HID_DLGDEPOT_0_TXTDATE", # HID:34524 + "HID:WIZARDS_HID_DLGDEPOT_0_TXTCOMMISSION", # HID:34525 + "HID:WIZARDS_HID_DLGDEPOT_0_TXTFIX", # HID:34526 + "HID:WIZARDS_HID_DLGDEPOT_0_TXTMINIMUM", # HID:34527 + "HID:WIZARDS_HID_DLGDEPOT_0_CMDCANCEL_SELLBUY", # HID:34528 + "HID:WIZARDS_HID_DLGDEPOT_0_CMDGOON_SELLBUY", # HID:34529 + "HID:WIZARDS_HID_DLGDEPOT_1_LSTSELLSTOCKS", # HID:34530 + "HID:WIZARDS_HID_DLGDEPOT_2_LSTBUYSTOCKS", # HID:34531 + "HID:WIZARDS_HID_DLGDEPOT_DIALOG_SPLIT", # HID:34532 + "HID:WIZARDS_HID_DLGDEPOT_0_LSTSTOCKNAMES", # HID:34533 + "HID:WIZARDS_HID_DLGDEPOT_0_TXTSTOCKID_SPLIT", # HID:34534 + "HID:WIZARDS_HID_DLGDEPOT_0_CMDCANCEL_SPLIT", # HID:34535 + "HID:WIZARDS_HID_DLGDEPOT_0_CMDGOON_SPLIT", # HID:34536 + "HID:WIZARDS_HID_DLGDEPOT_1_OPTPERSHARE", # HID:34537 + "HID:WIZARDS_HID_DLGDEPOT_1_OPTTOTAL", # HID:34538 + "HID:WIZARDS_HID_DLGDEPOT_1_TXTDIVIDEND", # HID:34539 + "HID:WIZARDS_HID_DLGDEPOT_2_TXTOLDRATE", # HID:34540 + "HID:WIZARDS_HID_DLGDEPOT_2_TXTNEWRATE", # HID:34541 + "HID:WIZARDS_HID_DLGDEPOT_2_TXTDATE", # HID:34542 + "HID:WIZARDS_HID_DLGDEPOT_3_TXTSTARTDATE", # HID:34543 + "HID:WIZARDS_HID_DLGDEPOT_3_TXTENDDATE", # HID:34544 + "HID:WIZARDS_HID_DLGDEPOT_3_OPTDAILY", # HID:34545 + "HID:WIZARDS_HID_DLGDEPOT_3_OPTWEEKLY", # HID:34546 + "HID:WIZARDS_HID_DLGDEPOT_DIALOG_HISTORY", # HID:34547 + "HID:WIZARDS_HID_DLGDEPOT_LSTMARKETS", # HID:34548 + "HID:WIZARDS_HID_DLGDEPOT_0_CMDCANCEL_HISTORY", # HID:34549 + "HID:WIZARDS_HID_DLGDEPOT_0_CMDGOON_HISTORY", # HID:34550 + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "HID:WIZARDS_HID_DLGIMPORT_DIALOG", # HID:34570 + "HID:WIZARDS_HID_DLGIMPORT_0_CMDHELP", # HID:34571 + "HID:WIZARDS_HID_DLGIMPORT_0_CMDCANCEL", # HID:34572 + "HID:WIZARDS_HID_DLGIMPORT_0_CMDPREV", # HID:34573 + "HID:WIZARDS_HID_DLGIMPORT_0_CMDNEXT", # HID:34574 + "HID:WIZARDS_HID_DLGIMPORT_0_OPTSODOCUMENTS", # HID:34575 + "HID:WIZARDS_HID_DLGIMPORT_0_OPTMSDOCUMENTS", # HID:34576 + "HID:WIZARDS_HID_DLGIMPORT_0_CHKLOGFILE", # HID:34577 + "HID:WIZARDS_HID_DLGIMPORT_2_CHKWORD", # HID:34578 + "HID:WIZARDS_HID_DLGIMPORT_2_CHKEXCEL", # HID:34579 + "HID:WIZARDS_HID_DLGIMPORT_2_CHKPOWERPOINT", # HID:34580 + "HID:WIZARDS_HID_DLGIMPORT_2_CBTEMPLATE", # HID:34581 + "HID:WIZARDS_HID_DLGIMPORT_2_CBTEMPLATERECURSE", # HID:34582 + "HID:WIZARDS_HID_DLGIMPORT_2_LBTEMPLATEPATH", # HID:34583 + "HID:WIZARDS_HID_DLGIMPORT_2_EDTEMPLATEPATH", # HID:34584 + "HID:WIZARDS_HID_DLGIMPORT_2_CMDTEMPLATEPATHSELECT", # HID:34585 + "HID:WIZARDS_HID_DLGIMPORT_2_CBDOCUMENT", # HID:34586 + "HID:WIZARDS_HID_DLGIMPORT_2_CBDOCUMENTRECURSE", # HID:34587 + "HID:WIZARDS_HID_DLGIMPORT_2_LBDOCUMENTPATH", # HID:34588 + "HID:WIZARDS_HID_DLGIMPORT_2_EDDOCUMENTPATH", # HID:34589 + "HID:WIZARDS_HID_DLGIMPORT_2_CMDDOCUMENTPATHSELECT", # HID:34590 + "HID:WIZARDS_HID_DLGIMPORT_2_LBEXPORTDOCUMENTPATH", # HID:34591 + "HID:WIZARDS_HID_DLGIMPORT_2_EDEXPORTDOCUMENTPATH", # HID:34592 + "HID:WIZARDS_HID_DLGIMPORT_2_CMDEXPORTPATHSELECT", # HID:34593 + "", + "HID:WIZARDS_HID_DLGIMPORT_3_TBSUMMARY", # HID:34595 + "HID:WIZARDS_HID_DLGIMPORT_0_CHKWRITER", # HID:34596 + "HID:WIZARDS_HID_DLGIMPORT_0_CHKCALC", # HID:34597 + "HID:WIZARDS_HID_DLGIMPORT_0_CHKIMPRESS", # HID:34598 + "HID:WIZARDS_HID_DLGIMPORT_0_CHKMATHGLOBAL", # HID:34599 + "HID:WIZARDS_HID_DLGIMPORT_2_CMDTEMPLATEPATHSELECT2", # HID:34600 + "HID:WIZARDS_HID_DLGIMPORT_2_CMDDOCUMENTPATHSELECT2", # HID:34601 + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "HID:WIZARDS_HID_DLGCORRESPONDENCE_DIALOG", # HID:34630 + "HID:WIZARDS_HID_DLGCORRESPONDENCE_CANCEL", # HID:34631 + "HID:WIZARDS_HID_DLGCORRESPONDENCE_OPTIONAGENDA1", # HID:34632 + "HID:WIZARDS_HID_DLGCORRESPONDENCE_OPTIONAGENDA2", # HID:34633 + "HID:WIZARDS_HID_DLGCORRESPONDENCE_AGENDAOKAY", # HID:34634 + "HID:WIZARDS_HID_DLGCORRESPONDENCE_OPTIONLETTER1", # HID:34635 + "HID:WIZARDS_HID_DLGCORRESPONDENCE_OPTIONLETTER2", # HID:34636 + "HID:WIZARDS_HID_DLGCORRESPONDENCE_LETTEROKAY", # HID:34637 + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "HID:WIZARDS_HID_DLGSTYLES_DIALOG", # HID:34650 + "HID:WIZARDS_HID_DLGSTYLES_LISTBOX", # HID:34651 + "HID:WIZARDS_HID_DLGSTYLES_CANCEL", # HID:34652 + "HID:WIZARDS_HID_DLGSTYLES_OKAY", # HID:34653 + "", + "", + "", + "", + "", + "", + "HID:WIZARDS_HID_DLGCONVERT_DIALOG", # HID:34660 + "HID:WIZARDS_HID_DLGCONVERT_CHECKBOX1", # HID:34661 + "HID:WIZARDS_HID_DLGCONVERT_OPTIONBUTTON1", # HID:34662 + "HID:WIZARDS_HID_DLGCONVERT_OPTIONBUTTON2", # HID:34663 + "HID:WIZARDS_HID_DLGCONVERT_OPTIONBUTTON3", # HID:34664 + "HID:WIZARDS_HID_DLGCONVERT_OPTIONBUTTON4", # HID:34665 + "HID:WIZARDS_HID_DLGCONVERT_LISTBOX1", # HID:34666 + "HID:WIZARDS_HID_DLGCONVERT_OBFILE", # HID:34667 + "HID:WIZARDS_HID_DLGCONVERT_OBDIR", # HID:34668 + "HID:WIZARDS_HID_DLGCONVERT_COMBOBOX1", # HID:34669 + "HID:WIZARDS_HID_DLGCONVERT_TBSOURCE", # HID:34670 + "HID:WIZARDS_HID_DLGCONVERT_CHECKRECURSIVE", # HID:34671 + "HID:WIZARDS_HID_DLGCONVERT_TBTARGET", # HID:34672 + "HID:WIZARDS_HID_DLGCONVERT_CBCANCEL", # HID:34673 + "HID:WIZARDS_HID_DLGCONVERT_CBHELP", # HID:34674 + "HID:WIZARDS_HID_DLGCONVERT_CBBACK", # HID:34675 + "HID:WIZARDS_HID_DLGCONVERT_CBGOON", # HID:34676 + "HID:WIZARDS_HID_DLGCONVERT_CBSOURCEOPEN", # HID:34677 + "HID:WIZARDS_HID_DLGCONVERT_CBTARGETOPEN", # HID:34678 + "HID:WIZARDS_HID_DLGCONVERT_CHKPROTECT", # HID:34679 + "HID:WIZARDS_HID_DLGCONVERT_CHKTEXTDOCUMENTS", # HID:34680 + "", + "", + "", + "", + "", + "", + "", + "", + "", + "HID:WIZARDS_HID_DLGPASSWORD_CMDGOON", # HID:34690 + "HID:WIZARDS_HID_DLGPASSWORD_CMDCANCEL", # HID:34691 + "HID:WIZARDS_HID_DLGPASSWORD_CMDHELP", # HID:34692 + "HID:WIZARDS_HID_DLGPASSWORD_TXTPASSWORD", # HID:34693 + "", + "", + "", + "", + "", + "", + "HID:WIZARDS_HID_DLGHOLIDAYCAL_DIALOG", # HID:34700 + "HID:WIZARDS_HID_DLGHOLIDAYCAL_1_PREVIEW", # HID:34701 + "HID:WIZARDS_HID_DLGHOLIDAYCAL_1_OPYEAR", # HID:34702 + "HID:WIZARDS_HID_DLGHOLIDAYCAL_1_OPMONTH", # HID:34703 + "HID:WIZARDS_HID_DLGHOLIDAYCAL_1_EDYEAR", # HID:34704 + "HID:WIZARDS_HID_DLGHOLIDAYCAL_1_EDMONTH", # HID:34705 + "HID:WIZARDS_HID_DLGHOLIDAYCAL_1_SPINYEAR", # HID:34706 + "HID:WIZARDS_HID_DLGHOLIDAYCAL_1_SPINMONTH", # HID:34707 + "HID:WIZARDS_HID_DLGHOLIDAYCAL_1_CMBSTATE", # HID:34708 + "HID:WIZARDS_HID_DLGHOLIDAYCAL_2_LBOWNDATA", # HID:34709 + "HID:WIZARDS_HID_DLGHOLIDAYCAL_2_CMDINSERT", # HID:34710 + "HID:WIZARDS_HID_DLGHOLIDAYCAL_2_CMDDELETE", # HID:34711 + "HID:WIZARDS_HID_DLGHOLIDAYCAL_2_EDEVENT", # HID:34712 + "HID:WIZARDS_HID_DLGHOLIDAYCAL_2_CHKEVENT", # HID:34713 + "HID:WIZARDS_HID_DLGHOLIDAYCAL_2_EDEVENTDAY", # HID:34714 + "HID:WIZARDS_HID_DLGHOLIDAYCAL_2_SPINEVENTDAY", # HID:34715 + "HID:WIZARDS_HID_DLGHOLIDAYCAL_2_EDEVENTMONTH", # HID:34716 + "HID:WIZARDS_HID_DLGHOLIDAYCAL_2_SPINEVENTMONTH", # HID:34717 + "HID:WIZARDS_HID_DLGHOLIDAYCAL_2_EDEVENTYEAR", # HID:34718 + "HID:WIZARDS_HID_DLGHOLIDAYCAL_2_SPINEVENTYEAR", # HID:34719 + "HID:WIZARDS_HID_DLGHOLIDAYCAL_0_CMDOWNDATA", # HID:34720 + "HID:WIZARDS_HID_DLGHOLIDAYCAL_0_CMDCANCEL", # HID:34721 + "HID:WIZARDS_HID_DLGHOLIDAYCAL_0_CMDOK" # HID:34722 + ] + array2 = ["HID:WIZARDS_HID_LTRWIZ_OPTBUSINESSLETTER", # HID:40769 + "HID:WIZARDS_HID_LTRWIZ_OPTPRIVOFFICIALLETTER", # HID:40770 + "HID:WIZARDS_HID_LTRWIZ_OPTPRIVATELETTER", # HID:40771 + "HID:WIZARDS_HID_LTRWIZ_LSTBUSINESSSTYLE", # HID:40772 + "HID:WIZARDS_HID_LTRWIZ_CHKBUSINESSPAPER", # HID:40773 + "HID:WIZARDS_HID_LTRWIZ_LSTPRIVOFFICIALSTYLE", # HID:40774 + "HID:WIZARDS_HID_LTRWIZ_LSTPRIVATESTYLE", # HID:40775 + "HID:WIZARDS_HID_LTRWIZ_CHKPAPERCOMPANYLOGO", # HID:40776 + "HID:WIZARDS_HID_LTRWIZ_NUMLOGOHEIGHT", # HID:40777 + "HID:WIZARDS_HID_LTRWIZ_NUMLOGOX", # HID:40778 + "HID:WIZARDS_HID_LTRWIZ_NUMLOGOWIDTH", # HID:40779 + "HID:WIZARDS_HID_LTRWIZ_NUMLOGOY", # HID:40780 + "HID:WIZARDS_HID_LTRWIZ_CHKPAPERCOMPANYADDRESS", # HID:40781 + "HID:WIZARDS_HID_LTRWIZ_NUMADDRESSHEIGHT", # HID:40782 + "HID:WIZARDS_HID_LTRWIZ_NUMADDRESSX", # HID:40783 + "HID:WIZARDS_HID_LTRWIZ_NUMADDRESSWIDTH", # HID:40784 + "HID:WIZARDS_HID_LTRWIZ_NUMADDRESSY", # HID:40785 + "HID:WIZARDS_HID_LTRWIZ_CHKCOMPANYRECEIVER", # HID:40786 + "HID:WIZARDS_HID_LTRWIZ_CHKPAPERFOOTER", # HID:40787 + "HID:WIZARDS_HID_LTRWIZ_NUMFOOTERHEIGHT", # HID:40788 + "HID:WIZARDS_HID_LTRWIZ_LSTLETTERNORM", # HID:40789 + "HID:WIZARDS_HID_LTRWIZ_CHKUSELOGO", # HID:40790 + "HID:WIZARDS_HID_LTRWIZ_CHKUSEADDRESSRECEIVER", # HID:40791 + "HID:WIZARDS_HID_LTRWIZ_CHKUSESIGNS", # HID:40792 + "HID:WIZARDS_HID_LTRWIZ_CHKUSESUBJECT", # HID:40793 + "HID:WIZARDS_HID_LTRWIZ_CHKUSESALUTATION", # HID:40794 + "HID:WIZARDS_HID_LTRWIZ_LSTSALUTATION", # HID:40795 + "HID:WIZARDS_HID_LTRWIZ_CHKUSEBENDMARKS", # HID:40796 + "HID:WIZARDS_HID_LTRWIZ_CHKUSEGREETING", # HID:40797 + "HID:WIZARDS_HID_LTRWIZ_LSTGREETING", # HID:40798 + "HID:WIZARDS_HID_LTRWIZ_CHKUSEFOOTER", # HID:40799 + "HID:WIZARDS_HID_LTRWIZ_OPTSENDERPLACEHOLDER", # HID:40800 + "HID:WIZARDS_HID_LTRWIZ_OPTSENDERDEFINE", # HID:40801 + "HID:WIZARDS_HID_LTRWIZ_TXTSENDERNAME", # HID:40802 + "HID:WIZARDS_HID_LTRWIZ_TXTSENDERSTREET", # HID:40803 + "HID:WIZARDS_HID_LTRWIZ_TXTSENDERPOSTCODE", # HID:40804 + "HID:WIZARDS_HID_LTRWIZ_TXTSENDERSTATE_TEXT", # HID:40805 + "HID:WIZARDS_HID_LTRWIZ_TXTSENDERCITY", # HID:40806 + "HID:WIZARDS_HID_LTRWIZ_OPTRECEIVERPLACEHOLDER", # HID:40807 + "HID:WIZARDS_HID_LTRWIZ_OPTRECEIVERDATABASE", # HID:40808 + "HID:WIZARDS_HID_LTRWIZ_TXTFOOTER", # HID:40809 + "HID:WIZARDS_HID_LTRWIZ_CHKFOOTERNEXTPAGES", # HID:40810 + "HID:WIZARDS_HID_LTRWIZ_CHKFOOTERPAGENUMBERS", # HID:40811 + "HID:WIZARDS_HID_LTRWIZ_TXTTEMPLATENAME", # HID:40812 + "HID:WIZARDS_HID_LTRWIZ_OPTCREATELETTER", # HID:40813 + "HID:WIZARDS_HID_LTRWIZ_OPTMAKECHANGES", # HID:40814 + "HID:WIZARDS_HID_LTRWIZ_TXTPATH", # HID:40815 + "HID:WIZARDS_HID_LTRWIZ_CMDPATH", # HID:40816 + "", + "", + "", + "HID:WIZARDS_HID_LTRWIZARD", # HID:40820 + "HID:WIZARDS_HID_LTRWIZARD_HELP", # HID:40821 + "HID:WIZARDS_HID_LTRWIZARD_BACK", # HID:40822 + "HID:WIZARDS_HID_LTRWIZARD_NEXT", # HID:40823 + "HID:WIZARDS_HID_LTRWIZARD_CREATE", # HID:40824 + "HID:WIZARDS_HID_LTRWIZARD_CANCEL", # HID:40825 + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "HID:WIZARDS_HID_QUERYWIZARD_LSTTABLES", # HID:40850 + "HID:WIZARDS_HID_QUERYWIZARD_LSTFIELDS", # HID:40851 + "HID:WIZARDS_HID_QUERYWIZARD_CMDMOVESELECTED", # HID:40852 + "HID:WIZARDS_HID_QUERYWIZARD_CMDMOVEALL", # HID:40853 + "HID:WIZARDS_HID_QUERYWIZARD_CMDREMOVESELECTED", # HID:40854 + "HID:WIZARDS_HID_QUERYWIZARD_CMDREMOVEALL", # HID:40855 + "HID:WIZARDS_HID_QUERYWIZARD_LSTSELFIELDS", # HID:40856 + "HID:WIZARDS_HID_QUERYWIZARD_CMDMOVEUP", # HID:40857 + "HID:WIZARDS_HID_QUERYWIZARD_CMDMOVEDOWN", # HID:40858 + "", + "", + "", + "", + "", + "", + "HID:WIZARDS_HID_QUERYWIZARD_SORT1", # HID:40865 + "HID:WIZARDS_HID_QUERYWIZARD_OPTASCEND1", # HID:40866 + "HID:WIZARDS_HID_QUERYWIZARD_OPTDESCEND1", # HID:40867 + "HID:WIZARDS_HID_QUERYWIZARD_SORT2", # HID:40868 + "HID:WIZARDS_HID_QUERYWIZARD_OPTASCEND2", # HID:40869 + "HID:WIZARDS_HID_QUERYWIZARD_OPTDESCEND2", # HID:40870 + "HID:WIZARDS_HID_QUERYWIZARD_SORT3", # HID:40871 + "HID:WIZARDS_HID_QUERYWIZARD_OPTASCEND3", # HID:40872 + "HID:WIZARDS_HID_QUERYWIZARD_OPTDESCEND3", # HID:40873 + "HID:WIZARDS_HID_QUERYWIZARD_SORT4", # HID:40874 + "HID:WIZARDS_HID_QUERYWIZARD_OPTASCEND4", # HID:40875 + "HID:WIZARDS_HID_QUERYWIZARD_OPTDESCEND4", # HID:40876 + "", + "HID:WIZARDS_HID_QUERYWIZARD_OPTMATCHALL", # HID:40878 + "HID:WIZARDS_HID_QUERYWIZARD_OPTMATCHANY", # HID:40879 + "HID:WIZARDS_HID_QUERYWIZARD_LSTFIELDNAME_1", # HID:40880 + "HID:WIZARDS_HID_QUERYWIZARD_LSTOPERATOR_1", # HID:40881 + "HID:WIZARDS_HID_QUERYWIZARD_TXTVALUE_1", # HID:40882 + "HID:WIZARDS_HID_QUERYWIZARD_LSTFIELDNAME_2", # HID:40883 + "HID:WIZARDS_HID_QUERYWIZARD_LSTOPERATOR_2", # HID:40884 + "HID:WIZARDS_HID_QUERYWIZARD_TXTVALUE_2", # HID:40885 + "HID:WIZARDS_HID_QUERYWIZARD_LSTFIELDNAME_3", # HID:40886 + "HID:WIZARDS_HID_QUERYWIZARD_LSTOPERATOR_3", # HID:40887 + "HID:WIZARDS_HID_QUERYWIZARD_TXTVALUE_3", # HID:40888 + "", + "", + "", + "", + "", + "", + "HID:WIZARDS_HID_QUERYWIZARD_OPTAGGREGATEDETAILQUERY", # HID:40895 + "HID:WIZARDS_HID_QUERYWIZARD_OPTAGGREGATESUMMARYQUERY", # HID:40896 + "HID:WIZARDS_HID_QUERYWIZARD_LSTAGGREGATEFUNCTION_1", # HID:40897 + "HID:WIZARDS_HID_QUERYWIZARD_LSTAGGREGATEFIELDS_1", # HID:40898 + "HID:WIZARDS_HID_QUERYWIZARD_LSTAGGREGATEFUNCTION_2", # HID:40899 + "HID:WIZARDS_HID_QUERYWIZARD_LSTAGGREGATEFIELDS_2", # HID:40900 + "HID:WIZARDS_HID_QUERYWIZARD_LSTAGGREGATEFUNCTION_3", # HID:40901 + "HID:WIZARDS_HID_QUERYWIZARD_LSTAGGREGATEFIELDS_3", # HID:40902 + "HID:WIZARDS_HID_QUERYWIZARD_LSTAGGREGATEFUNCTION_4", # HID:40903 + "HID:WIZARDS_HID_QUERYWIZARD_LSTAGGREGATEFIELDS_4", # HID:40904 + "HID:WIZARDS_HID_QUERYWIZARD_LSTAGGREGATEFUNCTION_5", # HID:40905 + "HID:WIZARDS_HID_QUERYWIZARD_LSTAGGREGATEFIELDS_5", # HID:40906 + "HID:WIZARDS_HID_QUERYWIZARD_BTNAGGREGATEPLUS", # HID:40907 + "HID:WIZARDS_HID_QUERYWIZARD_BTNAGGREGATEMINUS", # HID:40908 + "", + "", + "", + "", + "", + "", + "HID:WIZARDS_HID_QUERYWIZARD_LSTFILTERFIELDS", # HID:40915 + "HID:WIZARDS_HID_QUERYWIZARD_CMDFILTERMOVESELECTED", # HID:40916 + "HID:WIZARDS_HID_QUERYWIZARD_CMDFILTERREMOVESELECTED", # HID:40917 + "HID:WIZARDS_HID_QUERYWIZARD_LSTFILTERSELFIELDS", # HID:40918 + "HID:WIZARDS_HID_QUERYWIZARD_CMDFILTERMOVEUP", # HID:40919 + "HID:WIZARDS_HID_QUERYWIZARD_CMDFILTERMOVEDOWN", # HID:40920 + "", + "", + "HID:WIZARDS_HID_QUERYWIZARD_OPTGROUPMATCHALL", # HID:40923 + "HID:WIZARDS_HID_QUERYWIZARD_OPTGROUPMATCHANY", # HID:40924 + "HID:WIZARDS_HID_QUERYWIZARD_LSTFILTERFIELDNAME_1", # HID:40925 + "HID:WIZARDS_HID_QUERYWIZARD_LSTFILTEROPERATOR_1", # HID:40926 + "HID:WIZARDS_HID_QUERYWIZARD_TXTFILTERVALUE_1", # HID:40927 + "HID:WIZARDS_HID_QUERYWIZARD_LSTFILTERFIELDNAME_2", # HID:40928 + "HID:WIZARDS_HID_QUERYWIZARD_LSTFILTEROPERATOR_2", # HID:40929 + "HID:WIZARDS_HID_QUERYWIZARD_TXTFILTERVALUE_2", # HID:40930 + "HID:WIZARDS_HID_QUERYWIZARD_LSTFILTERFIELDNAME_3", # HID:40931 + "HID:WIZARDS_HID_QUERYWIZARD_LSTFILTEROPERATOR_3", # HID:40932 + "HID:WIZARDS_HID_QUERYWIZARD_TXTFILTERVALUE_3", # HID:40933 + "", + "", + "", + "", + "", + "", + "HID:WIZARDS_HID_QUERYWIZARD_TXTTITLE_1", # HID:40940 + "HID:WIZARDS_HID_QUERYWIZARD_TXTTITLE_2", # HID:40941 + "HID:WIZARDS_HID_QUERYWIZARD_TXTTITLE_3", # HID:40942 + "HID:WIZARDS_HID_QUERYWIZARD_TXTTITLE_4", # HID:40943 + "HID:WIZARDS_HID_QUERYWIZARD_TXTTITLE_5", # HID:40944 + "HID:WIZARDS_HID_QUERYWIZARD_TXTTITLE_6", # HID:40945 + "HID:WIZARDS_HID_QUERYWIZARD_TXTTITLE_7", # HID:40946 + "", + "", + "", + "", + "", + "", + "", + "", + "HID:WIZARDS_HID_QUERYWIZARD_TXTQUERYTITLE", # HID:40955 + "HID:WIZARDS_HID_QUERYWIZARD_OPTDISPLAYQUERY", # HID:40956 + "HID:WIZARDS_HID_QUERYWIZARD_OPTMODIFYQUERY", # HID:40957 + "HID:WIZARDS_HID_QUERYWIZARD_TXTSUMMARY", # HID:40958 + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "HID:WIZARDS_HID_QUERYWIZARD", # HID:40970 + "", + "HID:WIZARDS_HID_QUERYWIZARD_BACK", # HID:40972 + "HID:WIZARDS_HID_QUERYWIZARD_NEXT", # HID:40973 + "HID:WIZARDS_HID_QUERYWIZARD_CREATE", # HID:40974 + "HID:WIZARDS_HID_QUERYWIZARD_CANCEL", # HID:40975 + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "HID:WIZARDS_HID_IS", # HID:41000 + "", "HID:WIZARDS_HID_IS_BTN_NONE", # HID:41002 + "HID:WIZARDS_HID_IS_BTN_OK", # HID:41003 + "HID:WIZARDS_HID_IS_BTN_CANCEL", # HID:41004 + "HID:WIZARDS_HID_IS_BTN_IMG1", # HID:41005 + "HID:WIZARDS_HID_IS_BTN_IMG2", # HID:41006 + "HID:WIZARDS_HID_IS_BTN_IMG3", # HID:41007 + "HID:WIZARDS_HID_IS_BTN_IMG4", # HID:41008 + "HID:WIZARDS_HID_IS_BTN_IMG5", # HID:41009 + "HID:WIZARDS_HID_IS_BTN_IMG6", # HID:41010 + "HID:WIZARDS_HID_IS_BTN_IMG7", # HID:41011 + "HID:WIZARDS_HID_IS_BTN_IMG8", # HID:41012 + "HID:WIZARDS_HID_IS_BTN_IMG9", # HID:41013 + "HID:WIZARDS_HID_IS_BTN_IMG10", # HID:41014 + "HID:WIZARDS_HID_IS_BTN_IMG11", # HID:41015 + "HID:WIZARDS_HID_IS_BTN_IMG12", # HID:41016 + "HID:WIZARDS_HID_IS_BTN_IMG13", # HID:41017 + "HID:WIZARDS_HID_IS_BTN_IMG14", # HID:41018 + "HID:WIZARDS_HID_IS_BTN_IMG15", # HID:41019 + "HID:WIZARDS_HID_IS_BTN_IMG16", # HID:41020 + "HID:WIZARDS_HID_IS_BTN_IMG17", # HID:41021 + "HID:WIZARDS_HID_IS_BTN_IMG18", # HID:41022 + "HID:WIZARDS_HID_IS_BTN_IMG19", # HID:41023 + "HID:WIZARDS_HID_IS_BTN_IMG20", # HID:41024 + "HID:WIZARDS_HID_IS_BTN_IMG21", # HID:41025 + "HID:WIZARDS_HID_IS_BTN_IMG22", # HID:41026 + "HID:WIZARDS_HID_IS_BTN_IMG23", # HID:41027 + "HID:WIZARDS_HID_IS_BTN_IMG24", # HID:41028 + "HID:WIZARDS_HID_IS_BTN_IMG25", # HID:41029 + "HID:WIZARDS_HID_IS_BTN_IMG26", # HID:41030 + "HID:WIZARDS_HID_IS_BTN_IMG27", # HID:41031 + "HID:WIZARDS_HID_IS_BTN_IMG28", # HID:41032 + "HID:WIZARDS_HID_IS_BTN_IMG29", # HID:41033 + "HID:WIZARDS_HID_IS_BTN_IMG30", # HID:41034 + "HID:WIZARDS_HID_IS_BTN_IMG31", # HID:41035 + "HID:WIZARDS_HID_IS_BTN_IMG32", # HID:41036 + "", + "", + "", + "HID:WIZARDS_HID_FTP", # HID:41040 + "HID:WIZARDS_HID_FTP_SERVER", # HID:41041 + "HID:WIZARDS_HID_FTP_USERNAME", # HID:41042 + "HID:WIZARDS_HID_FTP_PASS", # HID:41043 + "HID:WIZARDS_HID_FTP_TEST", # HID:41044 + "HID:WIZARDS_HID_FTP_TXT_PATH", # HID:41045 + "HID:WIZARDS_HID_FTP_BTN_PATH", # HID:41046 + "HID:WIZARDS_HID_FTP_OK", # HID:41047 + "HID:WIZARDS_HID_FTP_CANCEL", # HID:41048 + "", + "", + "HID:WIZARDS_HID_AGWIZ", # HID:41051 + "HID:WIZARDS_HID_AGWIZ_HELP", # HID:41052 + "HID:WIZARDS_HID_AGWIZ_NEXT", # HID:41053 + "HID:WIZARDS_HID_AGWIZ_PREV", # HID:41054 + "HID:WIZARDS_HID_AGWIZ_CREATE", # HID:41055 + "HID:WIZARDS_HID_AGWIZ_CANCEL", # HID:41056 + "HID:WIZARDS_HID_AGWIZ_1_LIST_PAGEDESIGN", # HID:41057 + "HID:WIZARDS_HID_AGWIZ_1_CHK_MINUTES", # HID:41058 + "HID:WIZARDS_HID_AGWIZ_2_TXT_TIME", # HID:41059 + "HID:WIZARDS_HID_AGWIZ_2_TXT_DATE", # HID:41060 + "HID:WIZARDS_HID_AGWIZ_2_TXT_TITLE", # HID:41061 + "HID:WIZARDS_HID_AGWIZ_2_TXT_LOCATION", # HID:41062 + "HID:WIZARDS_HID_AGWIZ_3_CHK_MEETING_TYPE", # HID:41063 + "HID:WIZARDS_HID_AGWIZ_3_CHK_READ", # HID:41064 + "HID:WIZARDS_HID_AGWIZ_3_CHK_BRING", # HID:41065 + "HID:WIZARDS_HID_AGWIZ_3_CHK_NOTES", # HID:41066 + "HID:WIZARDS_HID_AGWIZ_4_CHK_CALLED_BY", # HID:41067 + "HID:WIZARDS_HID_AGWIZ_4_CHK_FACILITATOR", # HID:41068 + "HID:WIZARDS_HID_AGWIZ_4_CHK_NOTETAKER", # HID:41069 + "HID:WIZARDS_HID_AGWIZ_4_CHK_TIMEKEEPER", # HID:41070 + "HID:WIZARDS_HID_AGWIZ_4_CHK_ATTENDEES", # HID:41071 + "HID:WIZARDS_HID_AGWIZ_4_CHK_OBSERVERS", # HID:41072 + "HID:WIZARDS_HID_AGWIZ_4_CHK_RESOURCEPERSONS", # HID:41073 + "HID:WIZARDS_HID_AGWIZ_6_TXT_TEMPLATENAME", # HID:41074 + "HID:WIZARDS_HID_AGWIZ_6_TXT_TEMPLATEPATH", # HID:41075 + "HID:WIZARDS_HID_AGWIZ_6_BTN_TEMPLATEPATH", # HID:41076 + "HID:WIZARDS_HID_AGWIZ_6_OPT_CREATEAGENDA", # HID:41077 + "HID:WIZARDS_HID_AGWIZ_6_OPT_MAKECHANGES", # HID:41078 + "HID:WIZARDS_HID_AGWIZ_5_BTN_INSERT", # HID:41079 + "HID:WIZARDS_HID_AGWIZ_5_BTN_REMOVE", # HID:41080 + "HID:WIZARDS_HID_AGWIZ_5_BTN_UP", # HID:41081 + "HID:WIZARDS_HID_AGWIZ_5_BTN_DOWN", # HID:41082 + "HID:WIZARDS_HID_AGWIZ_5_SCROLL_BAR", # HID:41083 + "HID:WIZARDS_HID_AGWIZ_5_TXT_TOPIC_1", # HID:41084 + "HID:WIZARDS_HID_AGWIZ_5_TXT_RESPONSIBLE_1", # HID:41085 + "HID:WIZARDS_HID_AGWIZ_5_TXT_MINUTES_1", # HID:41086 + "HID:WIZARDS_HID_AGWIZ_5_TXT_TOPIC_2", # HID:41087 + "HID:WIZARDS_HID_AGWIZ_5_TXT_RESPONSIBLE_2", # HID:41088 + "HID:WIZARDS_HID_AGWIZ_5_TXT_MINUTES_2", # HID:41089 + "HID:WIZARDS_HID_AGWIZ_5_TXT_TOPIC_3", # HID:41090 + "HID:WIZARDS_HID_AGWIZ_5_TXT_RESPONSIBLE_3", # HID:41091 + "HID:WIZARDS_HID_AGWIZ_5_TXT_MINUTES_3", # HID:41092 + "HID:WIZARDS_HID_AGWIZ_5_TXT_TOPIC_4", # HID:41093 + "HID:WIZARDS_HID_AGWIZ_5_TXT_RESPONSIBLE_4", # HID:41094 + "HID:WIZARDS_HID_AGWIZ_5_TXT_MINUTES_4", # HID:41095 + "HID:WIZARDS_HID_AGWIZ_5_TXT_TOPIC_5", # HID:41096 + "HID:WIZARDS_HID_AGWIZ_5_TXT_RESPONSIBLE_5", # HID:41097 + "HID:WIZARDS_HID_AGWIZ_5_TXT_MINUTES_5", # HID:41098 + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "HID:WIZARDS_HID_FAXWIZ_OPTBUSINESSFAX", # HID:41120 + "HID:WIZARDS_HID_FAXWIZ_LSTBUSINESSSTYLE", # HID:41121 + "HID:WIZARDS_HID_FAXWIZ_OPTPRIVATEFAX", # HID:41122 + "HID:WIZARDS_HID_LSTPRIVATESTYLE", # HID:41123 + "HID:WIZARDS_HID_IMAGECONTROL3", # HID:41124 + "HID:WIZARDS_HID_CHKUSELOGO", # HID:41125 + "HID:WIZARDS_HID_CHKUSEDATE", # HID:41126 + "HID:WIZARDS_HID_CHKUSECOMMUNICATIONTYPE", # HID:41127 + "HID:WIZARDS_HID_LSTCOMMUNICATIONTYPE", # HID:41128 + "HID:WIZARDS_HID_CHKUSESUBJECT", # HID:41129 + "HID:WIZARDS_HID_CHKUSESALUTATION", # HID:41130 + "HID:WIZARDS_HID_LSTSALUTATION", # HID:41131 + "HID:WIZARDS_HID_CHKUSEGREETING", # HID:41132 + "HID:WIZARDS_HID_LSTGREETING", # HID:41133 + "HID:WIZARDS_HID_CHKUSEFOOTER", # HID:41134 + "HID:WIZARDS_HID_OPTSENDERPLACEHOLDER", # HID:41135 + "HID:WIZARDS_HID_OPTSENDERDEFINE", # HID:41136 + "HID:WIZARDS_HID_TXTSENDERNAME", # HID:41137 + "HID:WIZARDS_HID_TXTSENDERSTREET", # HID:41138 + "HID:WIZARDS_HID_TXTSENDERPOSTCODE", # HID:41139 + "HID:WIZARDS_HID_TXTSENDERSTATE", # HID:41140 + "HID:WIZARDS_HID_TXTSENDERCITY", # HID:41141 + "HID:WIZARDS_HID_TXTSENDERFAX", # HID:41142 + "HID:WIZARDS_HID_OPTRECEIVERPLACEHOLDER", # HID:41143 + "HID:WIZARDS_HID_OPTRECEIVERDATABASE", # HID:41144 + "HID:WIZARDS_HID_TXTFOOTER", # HID:41145 + "HID:WIZARDS_HID_CHKFOOTERNEXTPAGES", # HID:41146 + "HID:WIZARDS_HID_CHKFOOTERPAGENUMBERS", # HID:41147 + "HID:WIZARDS_HID_TXTTEMPLATENAME", # HID:41148 + "HID:WIZARDS_HID_FILETEMPLATEPATH", # HID:41149 + "HID:WIZARDS_HID_OPTCREATEFAX", # HID:41150 + "HID:WIZARDS_HID_OPTMAKECHANGES", # HID:41151 + "HID:WIZARDS_HID_IMAGECONTROL2", # HID:41152 + "HID:WIZARDS_HID_FAXWIZ_TXTPATH", # HID:41153 + "HID:WIZARDS_HID_FAXWIZ_CMDPATH", # HID:41154 + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "HID:WIZARDS_HID_FAXWIZARD", # HID:41180 + "HID:WIZARDS_HID_FAXWIZARD_HELP", # HID:41181 + "HID:WIZARDS_HID_FAXWIZARD_BACK", # HID:41182 + "HID:WIZARDS_HID_FAXWIZARD_NEXT", # HID:41183 + "HID:WIZARDS_HID_FAXWIZARD_CREATE", # HID:41184 + "HID:WIZARDS_HID_FAXWIZARD_CANCEL", # HID:41185 + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "HID:WIZARDS_HID_DLGTABLE_DIALOG", # HID:41200 + "", + "HID:WIZARDS_HID_DLGTABLE_CMDPREV", # HID:41202 + "HID:WIZARDS_HID_DLGTABLE_CMDNEXT", # HID:41203 + "HID:WIZARDS_HID_DLGTABLE_CMDFINISH", # HID:41204 + "HID:WIZARDS_HID_DLGTABLE_CMDCANCEL", # HID:41205 + "HID:WIZARDS_HID_DLGTABLE_OPTBUSINESS", # HID:41206 + "HID:WIZARDS_HID_DLGTABLE_OPTPRIVATE", # HID:41207 + "HID:WIZARDS_HID_DLGTABLE_LBTABLES", # HID:41208 + "HID:WIZARDS_HID_DLGTABLE_FIELDSAVAILABLE", # HID:41209 + "HID:WIZARDS_HID_DLGTABLE_CMDMOVESELECTED", # HID:41210 + "HID:WIZARDS_HID_DLGTABLE_CMDMOVEALL", # HID:41211 + "HID:WIZARDS_HID_DLGTABLE_CMDREMOVESELECTED", # HID:41212 + "HID:WIZARDS_HID_DLGTABLE_CMDREMOVEALL", # HID:41213 + "HID:WIZARDS_HID_DLGTABLE_FIELDSSELECTED", # HID:41214 + "HID:WIZARDS_HID_DLGTABLE_CMDMOVEUP", # HID:41215 + "HID:WIZARDS_HID_DLGTABLE_CMDMOVEDOWN", # HID:41216 + "", + "", + "", + "HID:WIZARDS_HID_DLGTABLE_LB_SELFIELDNAMES", # HID:41220 + "HID:WIZARDS_HID_DLGTABLE_CMDMOVEFIELDUP", # HID:41221 + "HID:WIZARDS_HID_DLGTABLE_CMDMOVEFIELDDOWN", # HID:41222 + "HID:WIZARDS_HID_DLGTABLE_CMDMINUS", # HID:41223 + "HID:WIZARDS_HID_DLGTABLE_CMDPLUS", # HID:41224 + "HID:WIZARDS_HID_DLGTABLE_COLNAME", # HID:41225 + "HID:WIZARDS_HID_DLGTABLE_COLMODIFIER", # HID:41226 + "HID:WIZARDS_HID_DLGTABLE_CHK_USEPRIMEKEY", # HID:41227 + "HID:WIZARDS_HID_DLGTABLE_OPT_PK_AUTOMATIC", # HID:41228 + "HID:WIZARDS_HID_DLGTABLE_CK_PK_AUTOVALUE_AUTOMATIC", # HID:41229 + "HID:WIZARDS_HID_DLGTABLE_OPT_PK_SINGLE", # HID:41230 + "HID:WIZARDS_HID_DLGTABLE_LB_PK_FIELDNAME", # HID:41231 + "HID:WIZARDS_HID_DLGTABLE_CK_PK_AUTOVALUE", # HID:41232 + "HID:WIZARDS_HID_DLGTABLE_OPT_PK_SEVERAL", # HID:41233 + "HID:WIZARDS_HID_DLGTABLE_FIELDS_PK_AVAILABLE", # HID:41234 + "HID:WIZARDS_HID_DLGTABLE_CMDMOVE_PK_SELECTED", # HID:41235 + "HID:WIZARDS_HID_DLGTABLE_CMDREMOVE_PK_SELECTED", # HID:41236 + "HID:WIZARDS_HID_DLGTABLE_FIELDS_PK_SELECTED", # HID:41237 + "HID:WIZARDS_HID_DLGTABLE_CMDMOVEUP_PK_SELECTED", # HID:41238 + "HID:WIZARDS_HID_DLGTABLE_CMDMOVEDOWN_PK_SELECTED", # HID:41239 + "HID:WIZARDS_HID_DLGTABLE_TXT_NAME", # HID:41240 + "HID:WIZARDS_HID_DLGTABLE_OPT_MODIFYTABLE", # HID:41241 + "HID:WIZARDS_HID_DLGTABLE_OPT_WORKWITHTABLE", # HID:41242 + "HID:WIZARDS_HID_DLGTABLE_OPT_STARTFORMWIZARD", # HID:41243 + "HID:WIZARDS_HID_DLGTABLE_LST_CATALOG", # HID:41244 + "HID:WIZARDS_HID_DLGTABLE_LST_SCHEMA" # HID:41245 + ] + + @classmethod + def getHelpIdString(self, nHelpId): + if nHelpId >= 34200 and nHelpId <= 34722: + return HelpIds.array1[nHelpId - 34200] + elif nHelpId >= 40769 and nHelpId <= 41245: + return HelpIds.array2[nHelpId - 40769] + else: + return None diff --git a/wizards/com/sun/star/wizards/common/Helper.py b/wizards/com/sun/star/wizards/common/Helper.py new file mode 100644 index 000000000..45923cfe8 --- /dev/null +++ b/wizards/com/sun/star/wizards/common/Helper.py @@ -0,0 +1,186 @@ +import uno +import traceback +from datetime import date as DateTime +from com.sun.star.uno import RuntimeException +from NumberFormatter import NumberFormatter + +class Helper(object): + + def convertUnoDatetoInteger(self, DateValue): + oCal = java.util.Calendar.getInstance() + oCal.set(DateValue.Year, DateValue.Month, DateValue.Day) + dTime = oCal.getTime() + lTime = dTime.getTime() + lDate = lTime / (3600 * 24000) + return lDate + + @classmethod + def setUnoPropertyValue(self, xPSet, PropertyName, PropertyValue): + try: + if PropertyValue is not None: + setattr(xPSet, PropertyName, PropertyValue) + + except AttributeError: + raise AttributeError, "No Such Property: '%s'" % PropertyName + except Exception: + traceback.print_exc() + + @classmethod + def getUnoObjectbyName(self, xName, ElementName): + try: + if xName.hasByName(ElementName) == True: + return xName.getByName(ElementName) + else: + raise RuntimeException(); + + except Exception, exception: + traceback.print_exc() + return None + + @classmethod + def getPropertyValue(self, CurPropertyValue, PropertyName): + for i in CurPropertyValue: + if i is not None: + if i.Name == PropertyName: + return i.Value + + raise RuntimeException() + + @classmethod + def getPropertyValuefromAny(self, CurPropertyValue, PropertyName): + try: + if CurPropertyValue is not None: + MaxCount = len(CurPropertyValue) + i = 0 + while i < MaxCount: + if CurPropertyValue[i] is not None: + aValue = CurPropertyValue[i] + if aValue is not None and aValue.Name == PropertyName: + return aValue.Value + + i += 1 + return None + except Exception, exception: + traceback.print_exc() + return None + + @classmethod + def getUnoPropertyValue(self, xPSet, PropertyName): + try: + if xPSet is not None: + oObject = xPSet.getPropertyValue(PropertyName) + if oObject is not None: + return oObject + return None + + except Exception, exception: + traceback.print_exc() + return None + + @classmethod + def getUnoArrayPropertyValue(self, xPSet, PropertyName): + try: + if xPSet is not None: + oObject = xPSet.getPropertyValue(PropertyName) + if isinstance(oObject,list): + return getArrayValue(oObject) + + except Exception, exception: + traceback.print_exc() + + return None + + @classmethod + def getUnoStructValue(self, xPSet, PropertyName): + try: + if xPSet is not None: + if xPSet.getPropertySetInfo().hasPropertyByName(PropertyName): + oObject = xPSet.getPropertyValue(PropertyName) + return oObject + + return None + except Exception, exception: + traceback.print_exc() + return None + + @classmethod + def setUnoPropertyValues(self, xMultiPSetLst, PropertyNames, + PropertyValues): + try: + if xMultiPSetLst is not None: + uno.invoke(xMultiPSetLst, "setPropertyValues", + (PropertyNames, PropertyValues)) + else: + for i in xrange(len(PropertyNames)): + self.setUnoPropertyValue(xMultiPSetLst, PropertyNames[i], + PropertyValues[i]) + + except Exception, e: + traceback.print_exc() + + ''' + checks if the value of an object that represents an array is null. + check beforehand if the Object is really an array with + "AnyConverter.IsArray(oObject) + @param oValue the paramter that has to represent an object + @return a null reference if the array is empty + ''' + + @classmethod + def getArrayValue(self, oValue): + try: + #VetoableChangeSupport Object + oPropList = list(oValue) + nlen = len(oPropList) + if nlen == 0: + return None + else: + return oPropList + + except Exception, exception: + traceback.print_exc() + return None + + def getComponentContext(_xMSF): + #Get the path to the extension and + #try to add the path to the class loader + aHelper = PropertySetHelper(_xMSF); + aDefaultContext = aHelper.getPropertyValueAsObject("DefaultContext") + return aDefaultContext; + + def getMacroExpander(_xMSF): + xComponentContext = self.getComponentContext(_xMSF); + aSingleton = xComponentContext.getValueByName( + "/singletons/com.sun.star.util.theMacroExpander") + return aSingleton; + + class DateUtils(object): + + def __init__(self, xmsf, document): + defaults = document.createInstance("com.sun.star.text.Defaults") + l = Helper.getUnoStructValue(defaults, "CharLocale") + self.formatSupplier = document + formatSettings = self.formatSupplier.getNumberFormatSettings() + date = Helper.getUnoPropertyValue(formatSettings, "NullDate") + self.calendar = DateTime(date.Year, date.Month, date.Day) + self.formatter = NumberFormatter.createNumberFormatter(xmsf, + self.formatSupplier) + + ''' + @param format a constant of the enumeration NumberFormatIndex + @return + ''' + + def getFormat(self, format): + return NumberFormatter.getNumberFormatterKey( + self.formatSupplier, format) + + ''' + @param date a VCL date in form of 20041231 + @return a document relative date + ''' + + def format(self, formatIndex, date): + difference = date - self.calendar + return self.formatter.convertNumberToString(formatIndex, + difference.days) diff --git a/wizards/com/sun/star/wizards/common/NoValidPathException.py b/wizards/com/sun/star/wizards/common/NoValidPathException.py new file mode 100644 index 000000000..53db155e2 --- /dev/null +++ b/wizards/com/sun/star/wizards/common/NoValidPathException.py @@ -0,0 +1,10 @@ +class NoValidPathException(Exception): + + def __init__(self, xMSF, _sText): + super(NoValidPathException,self).__init__(_sText) + # TODO: NEVER open a dialog in an exception + from SystemDialog import SystemDialog + if xMSF: + SystemDialog.showErrorBox(xMSF, + "dbwizres", "dbw", 521) #OfficePathnotavailable + diff --git a/wizards/com/sun/star/wizards/common/NumberFormatter.py b/wizards/com/sun/star/wizards/common/NumberFormatter.py new file mode 100644 index 000000000..a3deb1730 --- /dev/null +++ b/wizards/com/sun/star/wizards/common/NumberFormatter.py @@ -0,0 +1,231 @@ +import traceback +from com.sun.star.lang import Locale +from com.sun.star.util.NumberFormat import DATE, LOGICAL, DATETIME, TEXT, NUMBER + +class NumberFormatter(object): + + def __init__(self, _xNumberFormatsSupplier, _aLocale, _xMSF=None): + self.iDateFormatKey = -1 + self.iDateTimeFormatKey = -1 + self.iNumberFormatKey = -1 + self.iTextFormatKey = -1 + self.iTimeFormatKey = -1 + self.iLogicalFormatKey = -1 + self.bNullDateCorrectionIsDefined = False + self.aLocale = _aLocale + if _xMSF is not None: + self.xNumberFormatter = _xMSF.createInstance( + "com.sun.star.util.NumberFormatter") + self.xNumberFormats = _xNumberFormatsSupplier.NumberFormats + self.xNumberFormatSettings = \ + _xNumberFormatsSupplier.NumberFormatSettings + self.xNumberFormatter.attachNumberFormatsSupplier( + _xNumberFormatsSupplier) + + ''' + @param _xMSF + @param _xNumberFormatsSupplier + @return + @throws Exception + @deprecated + ''' + + @classmethod + def createNumberFormatter(self, _xMSF, _xNumberFormatsSupplier): + oNumberFormatter = _xMSF.createInstance( + "com.sun.star.util.NumberFormatter") + oNumberFormatter.attachNumberFormatsSupplier(_xNumberFormatsSupplier) + return oNumberFormatter + + ''' + gives a key to pass to a NumberFormat object. <br/> + example: <br/> + <pre> + XNumberFormatsSupplier nsf = + (XNumberFormatsSupplier)UnoRuntime.queryInterface(...,document) + int key = Desktop.getNumberFormatterKey( + nsf, ...star.i18n.NumberFormatIndex.DATE...) + XNumberFormatter nf = Desktop.createNumberFormatter(xmsf, nsf); + nf.convertNumberToString( key, 1972 ); + </pre> + @param numberFormatsSupplier + @param type - a constant out of i18n.NumberFormatIndex enumeration. + @return a key to use with a util.NumberFormat instance. + ''' + + @classmethod + def getNumberFormatterKey(self, numberFormatsSupplier, Type): + return numberFormatsSupplier.NumberFormats.getFormatIndex( + Type, Locale()) + + def convertNumberToString(self, _nkey, _dblValue, _xNumberFormatter=None): + if _xNumberFormatter is None: + return self.xNumberFormatter.convertNumberToString( + _nkey, _dblValue) + else: + return _xNumberFormatter.convertNumberToString(_nkey, _dblValue) + + def convertStringToNumber(self, _nkey, _sString): + return self.xNumberFormatter.convertStringToNumber(_nkey, _sString) + + ''' + @param dateCorrection The lDateCorrection to set. + ''' + + def setNullDateCorrection(self, dateCorrection): + self.lDateCorrection = dateCorrection + + def defineNumberFormat(self, _FormatString): + try: + NewFormatKey = self.xNumberFormats.queryKey( + _FormatString, self.aLocale, True) + if NewFormatKey is -1: + NewFormatKey = self.xNumberFormats.addNew( + _FormatString, self.aLocale) + + return NewFormatKey + except Exception, e: + traceback.print_exc() + return -1 + + ''' + returns a numberformat for a FormatString. + @param _FormatString + @param _aLocale + @return + ''' + + def defineNumberFormat(self, _FormatString, _aLocale): + try: + NewFormatKey = self.xNumberFormats.queryKey( + _FormatString, _aLocale, True) + if NewFormatKey == -1: + NewFormatKey = self.xNumberFormats.addNew( + _FormatString, _aLocale) + + return NewFormatKey + except Exception, e: + traceback.print_exc() + return -1 + + def setNumberFormat(self, _xFormatObject, _FormatKey, _oNumberFormatter): + try: + xNumberFormat = _oNumberFormatter.xNumberFormats.getByKey( + _FormatKey) + FormatString = str(Helper.getUnoPropertyValue( + xNumberFormat, "FormatString")) + oLocale = Helper.getUnoPropertyValue(xNumberFormat, "Locale") + NewFormatKey = defineNumberFormat(FormatString, oLocale) + _xFormatObject.setPropertyValue( + "FormatsSupplier", + _oNumberFormatter.xNumberFormatter.getNumberFormatsSupplier()) + if _xFormatObject.getPropertySetInfo().hasPropertyByName( + "NumberFormat"): + _xFormatObject.setPropertyValue("NumberFormat", NewFormatKey) + elif _xFormatObject.getPropertySetInfo().hasPropertyByName( + "FormatKey"): + _xFormatObject.setPropertyValue("FormatKey", NewFormatKey) + else: + # TODO: throws a exception in a try catch environment, very helpful? + raise Exception + + except Exception, exception: + traceback.print_exc() + + def getNullDateCorrection(self): + if not self.bNullDateCorrectionIsDefined: + dNullDate = Helper.getUnoStructValue( + self.xNumberFormatSettings, "NullDate") + lNullDate = Helper.convertUnoDatetoInteger(dNullDate) + oCal = java.util.Calendar.getInstance() + oCal.set(1900, 1, 1) + dTime = oCal.getTime() + lTime = dTime.getTime() + lDBNullDate = lTime / (3600 * 24000) + self.lDateCorrection = lDBNullDate - lNullDate + return self.lDateCorrection + else: + return self.lDateCorrection + + def setBooleanReportDisplayNumberFormat(self): + FormatString = "[=1]" + str(9745) + ";[=0]" + str(58480) + ";0" + self.iLogicalFormatKey = self.xNumberFormats.queryKey( + FormatString, self.aLocale, True) + try: + if self.iLogicalFormatKey == -1: + self.iLogicalFormatKey = self.xNumberFormats.addNew( + FormatString, self.aLocale) + + except Exception, e: + #MalformedNumberFormat + traceback.print_exc() + self.iLogicalFormatKey = self.xNumberFormats.getStandardFormat( + NumberFormat.LOGICAL, self.aLocale) + + return self.iLogicalFormatKey + + ''' + @return Returns the iDateFormatKey. + ''' + + def getDateFormatKey(self): + if self.iDateFormatKey == -1: + self.iDateFormatKey = self.xNumberFormats.getStandardFormat( + NumberFormat.DATE, self.aLocale) + + return self.iDateFormatKey + + ''' + @return Returns the iDateTimeFormatKey. + ''' + + def getDateTimeFormatKey(self): + if self.iDateTimeFormatKey == -1: + self.iDateTimeFormatKey = self.xNumberFormats.getStandardFormat( + NumberFormat.DATETIME, self.aLocale) + + return self.iDateTimeFormatKey + + ''' + @return Returns the iLogicalFormatKey. + ''' + + def getLogicalFormatKey(self): + if self.iLogicalFormatKey == -1: + self.iLogicalFormatKey = self.xNumberFormats.getStandardFormat( + NumberFormat.LOGICAL, self.aLocale) + + return self.iLogicalFormatKey + + ''' + @return Returns the iNumberFormatKey. + ''' + + def getNumberFormatKey(self): + if self.iNumberFormatKey == -1: + self.iNumberFormatKey = self.xNumberFormats.getStandardFormat( + NumberFormat.NUMBER, self.aLocale) + + return self.iNumberFormatKey + + ''' + @return Returns the iTextFormatKey. + ''' + + def getTextFormatKey(self): + if self.iTextFormatKey == -1: + self.iTextFormatKey = self.xNumberFormats.getStandardFormat( + NumberFormat.TEXT, self.aLocale) + + return self.iTextFormatKey + + ''' + @return Returns the iTimeFormatKey. + ''' + + def getTimeFormatKey(self): + if self.iTimeFormatKey == -1: + self.iTimeFormatKey = self.xNumberFormats.getStandardFormat( + NumberFormat.TIME, self.aLocale) + + return self.iTimeFormatKey diff --git a/wizards/com/sun/star/wizards/common/PropertyNames.py b/wizards/com/sun/star/wizards/common/PropertyNames.py new file mode 100644 index 000000000..c1dde1852 --- /dev/null +++ b/wizards/com/sun/star/wizards/common/PropertyNames.py @@ -0,0 +1,15 @@ +class PropertyNames: + PROPERTY_ENABLED = "Enabled" + PROPERTY_HEIGHT = "Height" + PROPERTY_HELPURL = "HelpURL" + PROPERTY_POSITION_X = "PositionX" + PROPERTY_POSITION_Y = "PositionY" + PROPERTY_LABEL = "Label" + PROPERTY_MULTILINE = "MultiLine" + PROPERTY_NAME = "Name" + PROPERTY_STEP = "Step" + PROPERTY_WIDTH = "Width" + PROPERTY_TABINDEX = "TabIndex" + PROPERTY_STATE = "State" + PROPERTY_IMAGEURL = "ImageURL" + diff --git a/wizards/com/sun/star/wizards/common/PropertySetHelper.py b/wizards/com/sun/star/wizards/common/PropertySetHelper.py new file mode 100644 index 000000000..2fce42abc --- /dev/null +++ b/wizards/com/sun/star/wizards/common/PropertySetHelper.py @@ -0,0 +1,250 @@ +from DebugHelper import * + +class PropertySetHelper(object): + + @classmethod + def __init__(self, _aObj): + if not _aObj: + return + + self.m_xPropertySet = _aObj + + def getHashMap(self): + if self.m_aHashMap == None: + self.m_aHashMap = HashMap < String, Object >.Object() + + return self.m_aHashMap + + ''' + set a property, don't throw any exceptions, + they will only write down as a hint in the helper debug output + @param _sName name of the property to set + @param _aValue property value as object + ''' + + def setPropertyValueDontThrow(self, _sName, _aValue): + try: + setPropertyValue(_sName, _aValue) + except Exception, e: + DebugHelper.writeInfo( + "Don't throw the exception with property name(" \ + + _sName + " ) : " + e.getMessage()) + + ''' + set a property, + @param _sName name of the property to set + @param _aValue property value as object + @throws java.lang.Exception + ''' + + def setPropertyValue(self, _sName, _aValue): + if self.m_xPropertySet != None: + try: + self.m_xPropertySet.setPropertyValue(_sName, _aValue) + except com.sun.star.beans.UnknownPropertyException, e: + DebugHelper.writeInfo(e.getMessage()) + DebugHelper.exception(e) + except com.sun.star.beans.PropertyVetoException, e: + DebugHelper.writeInfo(e.getMessage()) + DebugHelper.exception(e) + except ValueError, e: + DebugHelper.writeInfo(e.getMessage()) + DebugHelper.exception(e) + except com.sun.star.lang.WrappedTargetException, e: + DebugHelper.writeInfo(e.getMessage()) + DebugHelper.exception(e) + + else: + getHashMap().put(_sName, _aValue) + + ''' + get a property and convert it to a int value + @param _sName the string name of the property + @param _nDefault if an error occur, return this value + @return the int value of the property + ''' + + def getPropertyValueAsInteger(self, _sName, _nDefault): + aObject = None + nValue = _nDefault + if self.m_xPropertySet != None: + try: + aObject = self.m_xPropertySet.getPropertyValue(_sName) + except com.sun.star.beans.UnknownPropertyException, e: + DebugHelper.writeInfo(e.getMessage()) + except com.sun.star.lang.WrappedTargetException, e: + DebugHelper.writeInfo(e.getMessage()) + + if aObject != None: + try: + nValue = NumericalHelper.toInt(aObject) + except ValueError, e: + DebugHelper.writeInfo( + "can't convert a object to integer.") + + return nValue + + ''' + get a property and convert it to a short value + @param _sName the string name of the property + @param _nDefault if an error occur, return this value + @return the int value of the property + ''' + + def getPropertyValueAsShort(self, _sName, _nDefault): + aObject = None + nValue = _nDefault + if self.m_xPropertySet != None: + try: + aObject = self.m_xPropertySet.getPropertyValue(_sName) + except com.sun.star.beans.UnknownPropertyException, e: + DebugHelper.writeInfo(e.getMessage()) + except com.sun.star.lang.WrappedTargetException, e: + DebugHelper.writeInfo(e.getMessage()) + + if aObject != None: + try: + nValue = NumericalHelper.toShort(aObject) + except ValueError, e: + DebugHelper.writeInfo("can't convert a object to short.") + + return nValue + + ''' + get a property and convert it to a double value + @param _sName the string name of the property + @param _nDefault if an error occur, return this value + @return the int value of the property + ''' + + def getPropertyValueAsDouble(self, _sName, _nDefault): + aObject = None + nValue = _nDefault + if self.m_xPropertySet != None: + try: + aObject = self.m_xPropertySet.getPropertyValue(_sName) + except com.sun.star.beans.UnknownPropertyException, e: + DebugHelper.writeInfo(e.getMessage()) + except com.sun.star.lang.WrappedTargetException, e: + DebugHelper.writeInfo(e.getMessage()) + + if aObject == None: + if getHashMap().containsKey(_sName): + aObject = getHashMap().get(_sName) + + if aObject != None: + try: + nValue = NumericalHelper.toDouble(aObject) + except ValueError, e: + DebugHelper.writeInfo("can't convert a object to integer.") + + return nValue + + ''' + get a property and convert it to a boolean value + @param _sName the string name of the property + @param _bDefault if an error occur, return this value + @return the boolean value of the property + ''' + + def getPropertyValueAsBoolean(self, _sName, _bDefault): + aObject = None + bValue = _bDefault + if self.m_xPropertySet != None: + try: + aObject = self.m_xPropertySet.getPropertyValue(_sName) + except com.sun.star.beans.UnknownPropertyException, e: + DebugHelper.writeInfo(e.getMessage()) + DebugHelper.writeInfo( + "UnknownPropertyException caught: Name:=" + _sName) + except com.sun.star.lang.WrappedTargetException, e: + DebugHelper.writeInfo(e.getMessage()) + + if aObject != None: + try: + bValue = NumericalHelper.toBoolean(aObject) + except ValueError, e: + DebugHelper.writeInfo("can't convert a object to boolean.") + + return bValue + + ''' + get a property and convert it to a string value + @param _sName the string name of the property + @param _sDefault if an error occur, return this value + @return the string value of the property + ''' + + def getPropertyValueAsString(self, _sName, _sDefault): + aObject = None + sValue = _sDefault + if self.m_xPropertySet != None: + try: + aObject = self.m_xPropertySet.getPropertyValue(_sName) + except com.sun.star.beans.UnknownPropertyException, e: + DebugHelper.writeInfo(e.getMessage()) + except com.sun.star.lang.WrappedTargetException, e: + DebugHelper.writeInfo(e.getMessage()) + + if aObject != None: + try: + sValue = AnyConverter.toString(aObject) + except ValueError, e: + DebugHelper.writeInfo("can't convert a object to string.") + + return sValue + + ''' + get a property and don't convert it + @param _sName the string name of the property + @return the object value of the property without any conversion + ''' + + def getPropertyValueAsObject(self, _sName): + aObject = None + if self.m_xPropertySet != None: + try: + aObject = self.m_xPropertySet.getPropertyValue(_sName) + except com.sun.star.beans.UnknownPropertyException, e: + DebugHelper.writeInfo(e.getMessage()) + except com.sun.star.lang.WrappedTargetException, e: + DebugHelper.writeInfo(e.getMessage()) + + return aObject + + ''' + Debug helper, to show all properties + which are available in the given object. + @param _xObj the object of which the properties should shown + ''' + + @classmethod + def showProperties(self, _xObj): + aHelper = PropertySetHelper.PropertySetHelper_unknown(_xObj) + aHelper.showProperties() + + ''' + Debug helper, to show all properties which are available + in the current object. + ''' + + def showProperties(self): + sName = "" + if self.m_xPropertySet != None: + XServiceInfo xServiceInfo = (XServiceInfo) + UnoRuntime.queryInterface(XServiceInfo.class, self.m_xPropertySet) + if xServiceInfo != None: + sName = xServiceInfo.getImplementationName() + + xInfo = self.m_xPropertySet.getPropertySetInfo() + aAllProperties = xInfo.getProperties() + DebugHelper.writeInfo( + "Show all properties of Implementation of :'" + sName + "'") + i = 0 + while i < aAllProperties.length: + DebugHelper.writeInfo(" - " + aAllProperties[i].Name) + i += 1 + else: + DebugHelper.writeInfo( + "The given object don't support XPropertySet interface.") + diff --git a/wizards/com/sun/star/wizards/common/Resource.java b/wizards/com/sun/star/wizards/common/Resource.java index 218f0ce02..7d9365b35 100644 --- a/wizards/com/sun/star/wizards/common/Resource.java +++ b/wizards/com/sun/star/wizards/common/Resource.java @@ -27,46 +27,75 @@ package com.sun.star.wizards.common; +import com.sun.star.beans.PropertyValue; +import com.sun.star.container.XIndexAccess; +import com.sun.star.container.XNameAccess; import com.sun.star.lang.IllegalArgumentException; import com.sun.star.lang.XMultiServiceFactory; import com.sun.star.script.XInvocation; import com.sun.star.beans.PropertyValue; +import com.sun.star.uno.XInterface; +import com.sun.star.uno.UnoRuntime; public class Resource { - XInvocation xInvocation; XMultiServiceFactory xMSF; - String Unit; String Module; + XIndexAccess xStringIndexAccess; + XIndexAccess xStringListIndexAccess; /** Creates a new instance of Resource * @param _xMSF * @param _Unit * @param _Module */ - public Resource(XMultiServiceFactory _xMSF, String _Unit, String _Module) + public Resource(XMultiServiceFactory _xMSF, String _Unit /* unused */, String _Module) { this.xMSF = _xMSF; - this.Unit = _Unit; this.Module = _Module; - this.xInvocation = initResources(); + try + { + Object[] aArgs = new Object[1]; + aArgs[0] = this.Module; + XInterface xResource = (XInterface) xMSF.createInstanceWithArguments( + "org.libreoffice.resource.ResourceIndexAccess", + aArgs); + if (xResource == null) + throw new Exception("could not initialize ResourceIndexAccess"); + XNameAccess xNameAccess = (XNameAccess)UnoRuntime.queryInterface( + XNameAccess.class, + xResource); + if (xNameAccess == null) + throw new Exception("ResourceIndexAccess is no XNameAccess"); + this.xStringIndexAccess = (XIndexAccess)UnoRuntime.queryInterface( + XIndexAccess.class, + xNameAccess.getByName("String")); + this.xStringListIndexAccess = (XIndexAccess)UnoRuntime.queryInterface( + XIndexAccess.class, + xNameAccess.getByName("StringList")); + if(this.xStringListIndexAccess == null) + throw new Exception("could not initialize xStringListIndexAccess"); + if(this.xStringIndexAccess == null) + throw new Exception("could not initialize xStringIndexAccess"); + } + catch (Exception exception) + { + exception.printStackTrace(); + showCommonResourceError(xMSF); + } } public String getResText(int nID) { try { - short[][] PointerArray = new short[1][]; - Object[][] DummyArray = new Object[1][]; - Object[] nIDArray = new Object[1]; - nIDArray[0] = new Integer(nID); - return (String) xInvocation.invoke("getString", nIDArray, PointerArray, DummyArray); + return (String)this.xStringIndexAccess.getByIndex(nID); } catch (Exception exception) { exception.printStackTrace(); - throw new java.lang.IllegalArgumentException("Resource with ID not" + String.valueOf(nID) + "not found"); + throw new java.lang.IllegalArgumentException("Resource with ID not " + String.valueOf(nID) + "not found"); } } @@ -74,17 +103,12 @@ public class Resource { try { - short[][] PointerArray = new short[1][]; - Object[][] DummyArray = new Object[1][]; - Object[] nIDArray = new Object[1]; - nIDArray[0] = new Integer(nID); - //Object bla = xInvocation.invoke("getStringList", nIDArray, PointerArray, DummyArray); - return (PropertyValue[]) xInvocation.invoke("getStringList", nIDArray, PointerArray, DummyArray); + return (PropertyValue[])this.xStringListIndexAccess.getByIndex(nID); } catch (Exception exception) { exception.printStackTrace(); - throw new java.lang.IllegalArgumentException("Resource with ID not" + String.valueOf(nID) + "not found"); + throw new java.lang.IllegalArgumentException("Resource with ID not " + String.valueOf(nID) + "not found"); } } @@ -106,31 +130,6 @@ public class Resource } } - public XInvocation initResources() - { - try - { - com.sun.star.uno.XInterface xResource = (com.sun.star.uno.XInterface) xMSF.createInstance("com.sun.star.resource.VclStringResourceLoader"); - if (xResource == null) - { - showCommonResourceError(xMSF); - throw new IllegalArgumentException(); - } - else - { - XInvocation xResInvoke = com.sun.star.uno.UnoRuntime.queryInterface(XInvocation.class, xResource); - xResInvoke.setValue("FileName", Module); - return xResInvoke; - } - } - catch (Exception exception) - { - exception.printStackTrace(System.out); - showCommonResourceError(xMSF); - return null; - } - } - public static void showCommonResourceError(XMultiServiceFactory xMSF) { String ProductName = Configuration.getProductName(xMSF); diff --git a/wizards/com/sun/star/wizards/common/Resource.java.orig b/wizards/com/sun/star/wizards/common/Resource.java.orig new file mode 100644 index 000000000..c7eb3e483 --- /dev/null +++ b/wizards/com/sun/star/wizards/common/Resource.java.orig @@ -0,0 +1,140 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +package com.sun.star.wizards.common; + +import com.sun.star.beans.PropertyValue; +import com.sun.star.container.XIndexAccess; +import com.sun.star.container.XNameAccess; +import com.sun.star.lang.IllegalArgumentException; +import com.sun.star.lang.XMultiServiceFactory; +import com.sun.star.script.XInvocation; +import com.sun.star.beans.PropertyValue; +import com.sun.star.uno.XInterface; +import com.sun.star.uno.UnoRuntime; + +public class Resource +{ + + XMultiServiceFactory xMSF; + String Module; + XIndexAccess xStringIndexAccess; + XIndexAccess xStringListIndexAccess; + + /** Creates a new instance of Resource + * @param _xMSF + * @param _Unit + * @param _Module + */ + public Resource(XMultiServiceFactory _xMSF, String _Unit /* unused */, String _Module) + { + this.xMSF = _xMSF; + this.Module = _Module; + try + { + Object[] aArgs = new Object[1]; + aArgs[0] = this.Module; + XInterface xResource = (XInterface) xMSF.createInstanceWithArguments( + "org.libreoffice.resource.ResourceIndexAccess", + aArgs); + if (xResource == null) + throw new Exception("could not initialize ResourceIndexAccess"); + XNameAccess xNameAccess = (XNameAccess)UnoRuntime.queryInterface( + XNameAccess.class, + xResource); + if (xNameAccess == null) + throw new Exception("ResourceIndexAccess is no XNameAccess"); + this.xStringIndexAccess = (XIndexAccess)UnoRuntime.queryInterface( + XIndexAccess.class, + xNameAccess.getByName("String")); + this.xStringListIndexAccess = (XIndexAccess)UnoRuntime.queryInterface( + XIndexAccess.class, + xNameAccess.getByName("StringList")); + if(this.xStringListIndexAccess == null) + throw new Exception("could not initialize xStringListIndexAccess"); + if(this.xStringIndexAccess == null) + throw new Exception("could not initialize xStringIndexAccess"); + } + catch (Exception exception) + { + exception.printStackTrace(); + showCommonResourceError(xMSF); + } + } + + public String getResText(int nID) + { + try + { + return (String)this.xStringIndexAccess.getByIndex(nID); + } + catch (Exception exception) + { + exception.printStackTrace(); + throw new java.lang.IllegalArgumentException("Resource with ID not " + String.valueOf(nID) + "not found"); + } + } + + public PropertyValue[] getStringList(int nID) + { + try + { + return (PropertyValue[])this.xStringListIndexAccess.getByIndex(nID); + } + catch (Exception exception) + { + exception.printStackTrace(); + throw new java.lang.IllegalArgumentException("Resource with ID not " + String.valueOf(nID) + "not found"); + } + } + + public String[] getResArray(int nID, int iCount) + { + try + { + String[] ResArray = new String[iCount]; + for (int i = 0; i < iCount; i++) + { + ResArray[i] = getResText(nID + i); + } + return ResArray; + } + catch (Exception exception) + { + exception.printStackTrace(System.out); + throw new java.lang.IllegalArgumentException("Resource with ID not" + String.valueOf(nID) + "not found"); + } + } + + public static void showCommonResourceError(XMultiServiceFactory xMSF) + { + String ProductName = Configuration.getProductName(xMSF); + String sError = "The files required could not be found.\nPlease start the %PRODUCTNAME Setup and choose 'Repair'."; + sError = JavaTools.replaceSubString(sError, ProductName, "%PRODUCTNAME"); + SystemDialog.showMessageBox(xMSF, "ErrorBox", com.sun.star.awt.VclWindowPeerAttribute.OK, sError); + } +} diff --git a/wizards/com/sun/star/wizards/common/Resource.py b/wizards/com/sun/star/wizards/common/Resource.py new file mode 100644 index 000000000..c6afce217 --- /dev/null +++ b/wizards/com/sun/star/wizards/common/Resource.py @@ -0,0 +1,70 @@ +from com.sun.star.awt.VclWindowPeerAttribute import OK +from Configuration import Configuration +from SystemDialog import SystemDialog +import traceback + +class Resource(object): + ''' + Creates a new instance of Resource + @param _xMSF + @param _Unit + @param _Module + ''' + + @classmethod + def __init__(self, _xMSF, _Module): + self.xMSF = _xMSF + self.Module = _Module + try: + xResource = self.xMSF.createInstanceWithArguments( + "org.libreoffice.resource.ResourceIndexAccess", (self.Module,)) + if xResource is None: + raise Exception ("could not initialize ResourceIndexAccess") + + self.xStringIndexAccess = xResource.getByName("String") + self.xStringListIndexAccess = xResource.getByName("StringList") + + if self.xStringListIndexAccess is None: + raise Exception ("could not initialize xStringListIndexAccess") + + if self.xStringIndexAccess is None: + raise Exception ("could not initialize xStringIndexAccess") + + except Exception, exception: + traceback.print_exc() + self.showCommonResourceError(self.xMSF) + + def getResText(self, nID): + try: + return self.xStringIndexAccess.getByIndex(nID) + except Exception, exception: + traceback.print_exc() + raise ValueError("Resource with ID not " + str(nID) + " not found") + + def getStringList(self, nID): + try: + return self.xStringListIndexAccess.getByIndex(nID) + except Exception, exception: + traceback.print_exc() + raise ValueError("Resource with ID not " + str(nID) + " not found") + + def getResArray(self, nID, iCount): + try: + ResArray = range(iCount) + i = 0 + while i < iCount: + ResArray[i] = getResText(nID + i) + i += 1 + return ResArray + except Exception, exception: + traceback.print_exc() + raise ValueError("Resource with ID not" + str(nID) + " not found") + + @classmethod + def showCommonResourceError(self, xMSF): + ProductName = Configuration.getProductName(xMSF) + sError = "The files required could not be found.\n" + \ + "Please start the %PRODUCTNAME Setup and choose 'Repair'." + sError = sError.replace("%PRODUCTNAME", ProductName) + SystemDialog.showMessageBox(xMSF, "ErrorBox", OK, sError) + diff --git a/wizards/com/sun/star/wizards/common/SystemDialog.py b/wizards/com/sun/star/wizards/common/SystemDialog.py new file mode 100644 index 000000000..d0e8400b7 --- /dev/null +++ b/wizards/com/sun/star/wizards/common/SystemDialog.py @@ -0,0 +1,236 @@ +import uno +import traceback +from Configuration import Configuration + +from Desktop import Desktop +from Helper import Helper + +from com.sun.star.ui.dialogs.TemplateDescription import FILESAVE_AUTOEXTENSION, FILEOPEN_SIMPLE +from com.sun.star.ui.dialogs.ExtendedFilePickerElementIds import CHECKBOX_AUTOEXTENSION +from com.sun.star.awt import WindowDescriptor +from com.sun.star.awt.WindowClass import MODALTOP +from com.sun.star.lang import IllegalArgumentException +from com.sun.star.awt.VclWindowPeerAttribute import OK + +class SystemDialog(object): + + ''' + @param xMSF + @param ServiceName + @param type according to com.sun.star.ui.dialogs.TemplateDescription + ''' + + def __init__(self, xMSF, ServiceName, Type): + try: + self.xMSF = xMSF + self.systemDialog = xMSF.createInstance(ServiceName) + self.xStringSubstitution = self.createStringSubstitution(xMSF) + if self.systemDialog != None: + self.systemDialog.initialize(Type) + + except Exception, exception: + traceback.print_exc() + + @classmethod + def createStoreDialog(self, xmsf): + return SystemDialog( + xmsf, "com.sun.star.ui.dialogs.FilePicker",FILESAVE_AUTOEXTENSION) + + @classmethod + def createOpenDialog(self, xmsf): + return SystemDialog( + xmsf, "com.sun.star.ui.dialogs.FilePicker", FILEOPEN_SIMPLE) + + @classmethod + def createFolderDialog(self, xmsf): + return SystemDialog( + xmsf, "com.sun.star.ui.dialogs.FolderPicker", 0) + + @classmethod + def createOfficeFolderDialog(self, xmsf): + return SystemDialog( + xmsf, "com.sun.star.ui.dialogs.OfficeFolderPicker", 0) + + def subst(self, path): + try: + s = self.xStringSubstitution.substituteVariables(path, False) + return s + except Exception, ex: + traceback.print_exc() + return path + + ''' + @param displayDir + @param defaultName + given url to a local path. + @return + ''' + + def callStoreDialog(self, displayDir, defaultName, sDocuType=None): + if sDocuType is not None: + self.addFilterToDialog(defaultName[-3:], sDocuType, True) + + self.sStorePath = None + try: + self.systemDialog.setValue(CHECKBOX_AUTOEXTENSION, 0, True) + self.systemDialog.setDefaultName(defaultName) + self.systemDialog.setDisplayDirectory(self.subst(displayDir)) + if self.execute(self.systemDialog): + sPathList = self.systemDialog.getFiles() + self.sStorePath = sPathList[0] + + except Exception, exception: + traceback.print_exc() + + return self.sStorePath + + def callFolderDialog(self, title, description, displayDir): + try: + self.systemDialog.setDisplayDirectoryxPropertyValue( + subst(displayDir)) + except IllegalArgumentException, iae: + traceback.print_exc() + raise AttributeError(iae.getMessage()); + + self.systemDialog.setTitle(title) + self.systemDialog.setDescription(description) + if self.execute(self.systemDialog): + return self.systemDialog.getDirectory() + else: + return None + + def execute(self, execDialog): + return execDialog.execute() == 1 + + def callOpenDialog(self, multiSelect, displayDirectory): + try: + self.systemDialog.setMultiSelectionMode(multiSelect) + self.systemDialog.setDisplayDirectory(subst(displayDirectory)) + if self.execute(self.systemDialog): + return self.systemDialog.getFiles() + + except Exception, exception: + traceback.print_exc() + + return None + + def addFilterToDialog(self, sExtension, filterName, setToDefault): + try: + #get the localized filtername + uiName = self.getFilterUIName(filterName) + pattern = "*." + sExtension + #add the filter + self.addFilter(uiName, pattern, setToDefault) + except Exception, exception: + traceback.print_exc() + + def addFilter(self, uiName, pattern, setToDefault): + try: + self.systemDialog.appendFilter(uiName, pattern) + if setToDefault: + self.systemDialog.setCurrentFilter(uiName) + + except Exception, ex: + traceback.print_exc() + + ''' + converts the name returned from getFilterUIName_(...) so the + product name is correct. + @param filterName + @return + ''' + + def getFilterUIName(self, filterName): + prodName = Configuration.getProductName(self.xMSF) + s = [[self.getFilterUIName_(filterName)]] + s[0][0] = s[0][0].replace("%productname%", prodName) + return s[0][0] + + ''' + note the result should go through conversion of the product name. + @param filterName + @return the UI localized name of the given filter name. + ''' + + def getFilterUIName_(self, filterName): + try: + oFactory = self.xMSF.createInstance( + "com.sun.star.document.FilterFactory") + oObject = Helper.getUnoObjectbyName(oFactory, filterName) + xPropertyValue = list(oObject) + i = 0 + while i < len(xPropertyValue): + aValue = xPropertyValue[i] + if aValue != None and aValue.Name == "UIName": + return str(aValue.Value) + + i += 1 + raise NullPointerException( + "UIName property not found for Filter " + filterName); + except Exception, exception: + traceback.print_exc() + return None + + @classmethod + def showErrorBox(self, xMSF, ResName, ResPrefix, + ResID,AddTag=None, AddString=None): + ProductName = Configuration.getProductName(xMSF) + oResource = Resource(xMSF, ResPrefix) + sErrorMessage = oResource.getResText(ResID) + sErrorMessage = sErrorMessage.replace( ProductName, "%PRODUCTNAME") + sErrorMessage = sErrorMessage.replace(str(13), "<BR>") + if AddTag and AddString: + sErrorMessage = sErrorMessage.replace( AddString, AddTag) + return self.showMessageBox(xMSF, "ErrorBox", OK, sErrorMessage) + + ''' + example: + (xMSF, "ErrorBox", com.sun.star.awt.VclWindowPeerAttribute.OK, "message") + + @param windowServiceName one of the following strings: + "ErrorBox", "WarningBox", "MessBox", "InfoBox", "QueryBox". + There are other values possible, look + under src/toolkit/source/awt/vcltoolkit.cxx + @param windowAttribute see com.sun.star.awt.VclWindowPeerAttribute + @return 0 = cancel, 1 = ok, 2 = yes, 3 = no(I'm not sure here) + other values check for yourself ;-) + ''' + @classmethod + def showMessageBox(self, xMSF, windowServiceName, windowAttribute, + MessageText, peer=None): + + if MessageText is None: + return 0 + + iMessage = 0 + try: + # If the peer is null we try to get one from the desktop... + if peer is None: + xFrame = Desktop.getActiveFrame(xMSF) + peer = xFrame.getComponentWindow() + + xToolkit = xMSF.createInstance("com.sun.star.awt.Toolkit") + oDescriptor = WindowDescriptor() + oDescriptor.WindowServiceName = windowServiceName + oDescriptor.Parent = peer + oDescriptor.Type = MODALTOP + oDescriptor.WindowAttributes = windowAttribute + xMsgPeer = xToolkit.createWindow(oDescriptor) + xMsgPeer.setMessageText(MessageText) + iMessage = xMsgPeer.execute() + xMsgPeer.dispose() + except Exception: + traceback.print_exc() + + return iMessage + + @classmethod + def createStringSubstitution(self, xMSF): + xPathSubst = None + try: + xPathSubst = xMSF.createInstance( + "com.sun.star.util.PathSubstitution") + return xPathSubst + except Exception, e: + traceback.print_exc() + return None diff --git a/wizards/com/sun/star/wizards/common/__init__.py b/wizards/com/sun/star/wizards/common/__init__.py new file mode 100644 index 000000000..1e42b88e4 --- /dev/null +++ b/wizards/com/sun/star/wizards/common/__init__.py @@ -0,0 +1 @@ +"""Common""" diff --git a/wizards/com/sun/star/wizards/common/prova.py b/wizards/com/sun/star/wizards/common/prova.py new file mode 100644 index 000000000..1219ba9af --- /dev/null +++ b/wizards/com/sun/star/wizards/common/prova.py @@ -0,0 +1,7 @@ +from PropertyNames import PropertyNames + +class prova: + + def Imprimir(self): + print PropertyNames.PROPERTY_STEP + diff --git a/wizards/com/sun/star/wizards/document/OfficeDocument.py b/wizards/com/sun/star/wizards/document/OfficeDocument.py new file mode 100644 index 000000000..f053baebe --- /dev/null +++ b/wizards/com/sun/star/wizards/document/OfficeDocument.py @@ -0,0 +1,293 @@ +from com.sun.star.awt.WindowClass import TOP +import traceback +import uno +from ui.event.CommonListener import TerminateListenerProcAdapter +from common.Desktop import Desktop +from com.sun.star.awt import WindowDescriptor +from com.sun.star.awt import Rectangle +import unohelper + +from com.sun.star.task import ErrorCodeIOException + +#Window Constants +com_sun_star_awt_WindowAttribute_BORDER \ + = uno.getConstantByName( "com.sun.star.awt.WindowAttribute.BORDER" ) +com_sun_star_awt_WindowAttribute_SIZEABLE \ + = uno.getConstantByName( "com.sun.star.awt.WindowAttribute.SIZEABLE" ) +com_sun_star_awt_WindowAttribute_MOVEABLE \ + = uno.getConstantByName( "com.sun.star.awt.WindowAttribute.MOVEABLE" ) +com_sun_star_awt_VclWindowPeerAttribute_CLIPCHILDREN \ + = uno.getConstantByName( + "com.sun.star.awt.VclWindowPeerAttribute.CLIPCHILDREN" ) + +class OfficeDocument(object): + '''Creates a new instance of OfficeDocument ''' + + def __init__(self, _xMSF): + self.xMSF = _xMSF + + @classmethod + def attachEventCall(self, xComponent, EventName, EventType, EventURL): + try: + oEventProperties = range(2) + oEventProperties[0] = uno.createUnoStruct( + 'com.sun.star.beans.PropertyValue') + oEventProperties[0].Name = "EventType" + oEventProperties[0].Value = EventType + # "Service", "StarBasic" + oEventProperties[1] = uno.createUnoStruct( + 'com.sun.star.beans.PropertyValue') + oEventProperties[1].Name = "Script" #"URL"; + oEventProperties[1].Value = EventURL + uno.invoke(xComponent.Events, "replaceByName", + (EventName, uno.Any("[]com.sun.star.beans.PropertyValue", + tuple(oEventProperties)))) + except Exception, exception: + traceback.print_exc() + + def dispose(self, xMSF, xComponent): + try: + if xComponent != None: + xFrame = xComponent.CurrentController.Frame + if xComponent.isModified(): + xComponent.setModified(False) + + Desktop.dispatchURL(xMSF, ".uno:CloseDoc", xFrame) + + except PropertyVetoException, exception: + traceback.print_exc() + + ''' + Create a new office document, attached to the given frame. + @param desktop + @param frame + @param sDocumentType e.g. swriter, scalc, ( simpress, scalc : not tested) + @return the document Component + (implements XComponent) object ( XTextDocument, or XSpreadsheedDocument ) + ''' + + def createNewDocument(self, frame, sDocumentType, preview, readonly): + loadValues = range(2) + loadValues[0] = uno.createUnoStruct( + 'com.sun.star.beans.PropertyValue') + loadValues[0].Name = "ReadOnly" + if readonly: + loadValues[0].Value = True + else: + loadValues[0].Value = False + + loadValues[1] = uno.createUnoStruct( + 'com.sun.star.beans.PropertyValue') + loadValues[1].Name = "Preview" + if preview: + loadValues[1].Value = True + else: + loadValues[1].Value = False + + sURL = "private:factory/" + sDocumentType + try: + xComponent = frame.loadComponentFromURL( + sURL, "_self", 0, loadValues) + + except Exception, exception: + traceback.print_exc() + + return xComponent + + @classmethod + def createNewFrame(self, xMSF, listener, FrameName="_blank"): + xFrame = None + if FrameName.lower() == "WIZARD_LIVE_PREVIEW".lower(): + xFrame = self.createNewPreviewFrame(xMSF, listener) + else: + xF = Desktop.getDesktop(xMSF) + xFrame = xF.findFrame(FrameName, 0) + if listener is not None: + xFF = xF.getFrames() + xFF.remove(xFrame) + xF.addTerminateListener(TerminateListenerProcAdapter(listener)) + + return xFrame + + @classmethod + def createNewPreviewFrame(self, xMSF, listener): + xToolkit = None + try: + xToolkit = xMSF.createInstance("com.sun.star.awt.Toolkit") + except Exception, e: + # TODO Auto-generated catch block + traceback.print_exc() + + #describe the window and its properties + aDescriptor = WindowDescriptor() + aDescriptor.Type = TOP + aDescriptor.WindowServiceName = "window" + aDescriptor.ParentIndex = -1 + aDescriptor.Parent = None + aDescriptor.Bounds = Rectangle(10, 10, 640, 480) + + #Set Window Attributes + gnDefaultWindowAttributes = \ + com_sun_star_awt_WindowAttribute_BORDER + \ + com_sun_star_awt_WindowAttribute_MOVEABLE + \ + com_sun_star_awt_WindowAttribute_SIZEABLE + \ + com_sun_star_awt_VclWindowPeerAttribute_CLIPCHILDREN + + aDescriptor.WindowAttributes = gnDefaultWindowAttributes + #create a new blank container window + xPeer = None + try: + xPeer = xToolkit.createWindow(aDescriptor) + except IllegalArgumentException, e: + # TODO Auto-generated catch block + traceback.print_exc() + + #define some further properties of the frame window + #if it's needed .-) + #xPeer->setBackground(...); + #create new empty frame and set window on it + xFrame = None + try: + xFrame = xMSF.createInstance("com.sun.star.frame.Frame") + except Exception, e: + # TODO Auto-generated catch block + traceback.print_exc() + + xFrame.initialize(xPeer) + #from now this frame is useable ... + #and not part of the desktop tree. + #You are alone with him .-) + if listener is not None: + Desktop.getDesktop(xMSF).addTerminateListener( + TerminateListenerProcAdapter(listener)) + + return xFrame + + @classmethod + def load(self, xInterface, sURL, sFrame, xValues): + xComponent = None + try: + xComponent = xInterface.loadComponentFromURL( + sURL, sFrame, 0, tuple(xValues)) + except Exception, exception: + traceback.print_exc() + + return xComponent + + @classmethod + def store(self, xMSF, xComponent, StorePath, FilterName): + try: + if len(FilterName): + oStoreProperties = range(2) + oStoreProperties[0] = uno.createUnoStruct( + 'com.sun.star.beans.PropertyValue') + oStoreProperties[0].Name = "FilterName" + oStoreProperties[0].Value = FilterName + oStoreProperties[1] = uno.createUnoStruct( + 'com.sun.star.beans.PropertyValue') + oStoreProperties[1].Name = "InteractionHandler" + oStoreProperties[1].Value = xMSF.createInstance( + "com.sun.star.comp.uui.UUIInteractionHandler") + else: + oStoreProperties = range(0) + + if StorePath.startswith("file://"): + #Unix + StorePath = StorePath[7:] + + sPath = StorePath[:(StorePath.rfind("/") + 1)] + sFile = StorePath[(StorePath.rfind("/") + 1):] + xComponent.storeToURL( + unohelper.absolutize( + unohelper.systemPathToFileUrl(sPath), + unohelper.systemPathToFileUrl(sFile)), + tuple(oStoreProperties)) + return True + except ErrorCodeIOException: + return True + #There's a bug here, fix later + pass + except Exception, exception: + traceback.print_exc() + return False + + def close(self, xComponent): + bState = False + if xComponent != None: + try: + xComponent.close(True) + bState = True + except com.sun.star.util.CloseVetoException, exCloseVeto: + print "could not close doc" + bState = False + + else: + xComponent.dispose() + bState = True + + return bState + + def ArraytoCellRange(self, datalist, oTable, xpos, ypos): + try: + rowcount = datalist.length + if rowcount > 0: + colcount = datalist[0].length + if colcount > 0: + xNewRange = oTable.getCellRangeByPosition( + xpos, ypos, (colcount + xpos) - 1, + (rowcount + ypos) - 1) + xNewRange.setDataArray(datalist) + + except Exception, e: + traceback.print_exc() + + def getFileMediaDecriptor(self, xmsf, url): + typeDetect = xmsf.createInstance( + "com.sun.star.document.TypeDetection") + mediaDescr = range(1) + mediaDescr[0][0] = uno.createUnoStruct( + 'com.sun.star.beans.PropertyValue') + mediaDescr[0][0].Name = "URL" + mediaDescr[0][0].Value = url + Type = typeDetect.queryTypeByDescriptor(mediaDescr, True) + if Type.equals(""): + return None + else: + return typeDetect.getByName(type) + + def getTypeMediaDescriptor(self, xmsf, type): + typeDetect = xmsf.createInstance( + "com.sun.star.document.TypeDetection") + return typeDetect.getByName(type) + + ''' + returns the count of slides in a presentation, + or the count of pages in a draw document. + @param model a presentation or a draw document + @return the number of slides/pages in the given document. + ''' + + def getSlideCount(self, model): + return model.getDrawPages().getCount() + + def getDocumentProperties(self, document): + return document.getDocumentProperties() + + def showMessageBox( + self, xMSF, windowServiceName, windowAttribute, MessageText): + + return SystemDialog.showMessageBox( + xMSF, windowServiceName, windowAttribute, MessageText) + + def getWindowPeer(self): + return self.xWindowPeer + + ''' + @param windowPeer The xWindowPeer to set. + Should be called as soon as a Windowpeer of a wizard dialog is available + The windowpeer is needed to call a Messagebox + ''' + + def setWindowPeer(self, windowPeer): + self.xWindowPeer = windowPeer + diff --git a/wizards/com/sun/star/wizards/document/__init__.py b/wizards/com/sun/star/wizards/document/__init__.py new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/wizards/com/sun/star/wizards/document/__init__.py diff --git a/wizards/com/sun/star/wizards/fax/CGFax.py b/wizards/com/sun/star/wizards/fax/CGFax.py new file mode 100644 index 000000000..24b5ae067 --- /dev/null +++ b/wizards/com/sun/star/wizards/fax/CGFax.py @@ -0,0 +1,31 @@ +from common.ConfigGroup import * + +class CGFax(ConfigGroup): + + def __init__(self): + + self.cp_Style = int() + self.cp_PrintCompanyLogo = bool() + self.cp_PrintDate = bool() + self.cp_PrintSubjectLine = bool() + self.cp_PrintSalutation = bool() + self.cp_PrintCommunicationType = bool() + self.cp_PrintGreeting = bool() + self.cp_PrintFooter = bool() + self.cp_CommunicationType = str() + 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_SenderFax = 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() diff --git a/wizards/com/sun/star/wizards/fax/CGFaxWizard.py b/wizards/com/sun/star/wizards/fax/CGFaxWizard.py new file mode 100644 index 000000000..a6729e4a5 --- /dev/null +++ b/wizards/com/sun/star/wizards/fax/CGFaxWizard.py @@ -0,0 +1,10 @@ +from common.ConfigGroup import * +from CGFax import CGFax + +class CGFaxWizard(ConfigGroup): + + def __init__(self): + self.cp_FaxType = int() + self.cp_BusinessFax = CGFax() + self.cp_PrivateFax = CGFax() + diff --git a/wizards/com/sun/star/wizards/fax/CallWizard.py b/wizards/com/sun/star/wizards/fax/CallWizard.py new file mode 100644 index 000000000..21414507e --- /dev/null +++ b/wizards/com/sun/star/wizards/fax/CallWizard.py @@ -0,0 +1,156 @@ +import traceback + +class CallWizard(object): + + ''' + Gives a factory for creating the service. This method is called by the + <code>JavaLoader</code> + <p></p> + @param stringImplementationName The implementation name of the component. + @param xMSF The service manager, who gives access to every known service. + @param xregistrykey Makes structural information (except regarding tree + structures) of a single registry key accessible. + @return Returns a <code>XSingleServiceFactory</code> + for creating the component. + @see com.sun.star.comp.loader.JavaLoader# + ''' + + @classmethod + def __getServiceFactory(self, stringImplementationName, xMSF, \ + xregistrykey): + + xsingleservicefactory = None + if stringImplementationName.equals(WizardImplementation.Name): + xsingleservicefactory = FactoryHelper.getServiceFactory( \ + WizardImplementation, WizardImplementation.__serviceName, + xMSF, xregistrykey) + + return xsingleservicefactory + + ''' + This class implements the component. At least the interfaces XServiceInfo, + XTypeProvider, and XInitialization should be provided by the service. + ''' + + class WizardImplementation: + __serviceName = "com.sun.star.wizards.fax.CallWizard" + #private XMultiServiceFactory xmultiservicefactory + + ''' + The constructor of the inner class has a XMultiServiceFactory + parameter. + @param xmultiservicefactoryInitialization A special service factory + could be introduced while initializing. + ''' + + @classmethod + def WizardImplementation_XMultiServiceFactory(self, \ + xmultiservicefactoryInitialization): + + tmp = WizardImplementation() + tmp.WizardImplementation_body_XMultiServiceFactory( \ + xmultiservicefactoryInitialization) + return tmp + + def WizardImplementation_body_XMultiServiceFactory(self, \ + xmultiservicefactoryInitialization): + + self.xmultiservicefactory = xmultiservicefactoryInitialization + if self.xmultiservicefactory != None: + pass + + ''' + Execute Wizard + @param str only valid parameter is 'start' at the moment. + ''' + + def trigger(self, str): + if str.equalsIgnoreCase("start"): + lw = FaxWizardDialogImpl(self.xmultiservicefactory) + if not FaxWizardDialogImpl.running: + lw.startWizard(self.xmultiservicefactory, None) + + ''' + The service name, that must be used to get an instance of this service + The service manager, that gives access to all registered services. + This method is a member of the interface for initializing an object + directly after its creation. + @param object This array of arbitrary objects will be passed to the + component after its creation. + @throws com.sun.star.uno.Exception Every exception will not be + handled, but will be passed to the caller. + ''' + + def initialize(self, object): + pass + + ''' + This method returns an array of all supported service names. + @return Array of supported service names. + ''' + + def getSupportedServiceNames(self): + stringSupportedServiceNames = range(1) + stringSupportedServiceNames[0] = self.__class__.__serviceName + return (stringSupportedServiceNames) + + ''' + This method returns true, if the given service will be supported by + the component. + @param stringService Service name. + @return True, if the given service name will be supported. + ''' + + def supportsService(self, stringService): + booleanSupportsService = False + if stringService.equals(self.__class__.__serviceName): + booleanSupportsService = True + + return (booleanSupportsService) + + ''' + This method returns an array of bytes, that can be used to + unambiguously distinguish between two sets of types, + e.g. to realise hashing functionality when the object is introspected. + Two objects that return the same ID also have to return the same + set of types in getTypes(). If an unique implementation Id cannot be + provided this method has to return an empty sequence. Important: + If the object aggregates other objects the ID has to be unique for + the whole combination of objects. + @return Array of bytes, in order to distinguish between two sets. + ''' + + def getImplementationId(self): + byteReturn = [] + try: + byteReturn = ("" + self.hashCode()).Bytes + except Exception, exception: + traceback.print_exc() + + return (byteReturn) + + ''' + Return the class name of the component. + @return Class name of the component. + ''' + + def getImplementationName(self): + return (WizardImplementation.Name) + + ''' + Provides a sequence of all types (usually interface types) provided + by the object. + @return Sequence of all types (usually interface types) provided + by the service. + ''' + + def getTypes(self): + typeReturn = [] + try: + #COMMENTED + #typeReturn = [new Type (XPropertyAccess.class), new Type (XJob.class), new Type (XJobExecutor.class), new Type (XTypeProvider.class), new Type (XServiceInfo.class), new Type (XInitialization.class)] + except Exception, exception: + traceback.print_exc() + + return (typeReturn) + diff --git a/wizards/com/sun/star/wizards/fax/FaxDocument.py b/wizards/com/sun/star/wizards/fax/FaxDocument.py new file mode 100644 index 000000000..9ee53cd43 --- /dev/null +++ b/wizards/com/sun/star/wizards/fax/FaxDocument.py @@ -0,0 +1,131 @@ +from text.TextDocument import * +from text.TextSectionHandler import TextSectionHandler +from text.TextFieldHandler import TextFieldHandler +from common.Configuration import Configuration +from common.PropertyNames import PropertyNames + +from com.sun.star.text.ControlCharacter import PARAGRAPH_BREAK +from com.sun.star.style.ParagraphAdjust import CENTER +from com.sun.star.text.PageNumberType import CURRENT +from com.sun.star.style.NumberingType import ARABIC + +class FaxDocument(TextDocument): + + def __init__(self, xMSF, listener): + super(FaxDocument,self).__init__(xMSF, listener, None, + "WIZARD_LIVE_PREVIEW") + self.keepLogoFrame = True + self.keepTypeFrame = True + + def switchElement(self, sElement, bState): + try: + mySectionHandler = TextSectionHandler(self.xMSF, + TextDocument.xTextDocument) + oSection = \ + mySectionHandler.xTextDocument.TextSections.getByName(sElement) + Helper.setUnoPropertyValue(oSection,"IsVisible",bState) + except Exception: + traceback.print_exc() + + def updateDateFields(self): + FH = TextFieldHandler( + TextDocument.xTextDocument, TextDocument.xTextDocument) + FH.updateDateFields() + + def switchFooter(self, sPageStyle, bState, bPageNumber, sText): + if TextDocument.xTextDocument is not None: + TextDocument.xTextDocument.lockControllers() + try: + xPageStyleCollection = \ + TextDocument.xTextDocument.StyleFamilies.getByName("PageStyles") + xPageStyle = xPageStyleCollection.getByName(sPageStyle) + + if bState: + xPageStyle.setPropertyValue("FooterIsOn", True) + xFooterText = \ + Helper.getUnoPropertyValue(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 = \ + TextDocument.xTextDocument.createInstance( + "com.sun.star.text.TextField.PageNumber") + xPageNumberField.setPropertyValue("SubType", CURRENT) + xPageNumberField.NumberingType = ARABIC + xFooterText.insertTextContent(xFooterText.End, + xPageNumberField, False) + else: + Helper.setUnoPropertyValue(xPageStyle, "FooterIsOn", + False) + + TextDocument.xTextDocument.unlockControllers() + except Exception: + traceback.print_exc() + + def hasElement(self, sElement): + if TextDocument.xTextDocument is not None: + mySectionHandler = TextSectionHandler(self.xMSF, + TextDocument.xTextDocument) + return mySectionHandler.hasTextSectionByName(sElement) + else: + return False + + def switchUserField(self, sFieldName, sNewContent, bState): + myFieldHandler = TextFieldHandler( + self.xMSF, TextDocument.xTextDocument) + if bState: + myFieldHandler.changeUserFieldContent(sFieldName, sNewContent) + else: + myFieldHandler.changeUserFieldContent(sFieldName, "") + + def fillSenderWithUserData(self): + try: + myFieldHandler = TextFieldHandler(TextDocument.xTextDocument, + TextDocument.xTextDocument) + oUserDataAccess = Configuration.getConfigurationRoot( + self.xMSF, "org.openoffice.UserProfile/Data", False) + myFieldHandler.changeUserFieldContent("Company", + Helper.getUnoObjectbyName(oUserDataAccess, "o")) + myFieldHandler.changeUserFieldContent("Street", + Helper.getUnoObjectbyName(oUserDataAccess, "street")) + myFieldHandler.changeUserFieldContent("PostCode", + Helper.getUnoObjectbyName(oUserDataAccess, "postalcode")) + myFieldHandler.changeUserFieldContent( + PropertyNames.PROPERTY_STATE, + Helper.getUnoObjectbyName(oUserDataAccess, "st")) + myFieldHandler.changeUserFieldContent("City", + Helper.getUnoObjectbyName(oUserDataAccess, "l")) + myFieldHandler.changeUserFieldContent("Fax", + Helper.getUnoObjectbyName(oUserDataAccess, + "facsimiletelephonenumber")) + except Exception: + traceback.print_exc() + + def killEmptyUserFields(self): + myFieldHandler = TextFieldHandler( + self.xMSF, TextDocument.xTextDocument) + myFieldHandler.removeUserFieldByContent("") + + def killEmptyFrames(self): + try: + if not self.keepLogoFrame: + xTF = self.getFrameByName("Company Logo", + TextDocument.xTextDocument) + if xTF is not None: + xTF.dispose() + + if not self.keepTypeFrame: + xTF = self.getFrameByName("Communication Type", + TextDocument.xTextDocument) + if xTF is not None: + xTF.dispose() + + except Exception: + traceback.print_exc() diff --git a/wizards/com/sun/star/wizards/fax/FaxWizardDialog.py b/wizards/com/sun/star/wizards/fax/FaxWizardDialog.py new file mode 100644 index 000000000..9323215e1 --- /dev/null +++ b/wizards/com/sun/star/wizards/fax/FaxWizardDialog.py @@ -0,0 +1,650 @@ +from ui.WizardDialog import * +from FaxWizardDialogResources import FaxWizardDialogResources +from FaxWizardDialogConst import * +from com.sun.star.awt.FontUnderline import SINGLE + +class FaxWizardDialog(WizardDialog): + #Image Control + #Fixed Line + #File Control + #Image Control + #Font Descriptors as Class members. + #Resources Object + + def __init__(self, xmsf): + super(FaxWizardDialog,self).__init__(xmsf, HIDMAIN ) + + #Load Resources + self.resources = FaxWizardDialogResources(xmsf) + + #set dialog properties... + Helper.setUnoPropertyValues(self.xDialogModel, + ("Closeable", PropertyNames.PROPERTY_HEIGHT, "Moveable", + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + PropertyNames.PROPERTY_STEP, PropertyNames.PROPERTY_TABINDEX, + "Title", PropertyNames.PROPERTY_WIDTH), + (True, 210, True, 104, 52, 1, 1, + self.resources.resFaxWizardDialog_title, 310)) + + self.fontDescriptor1 = \ + uno.createUnoStruct('com.sun.star.awt.FontDescriptor') + self.fontDescriptor2 = \ + uno.createUnoStruct('com.sun.star.awt.FontDescriptor') + self.fontDescriptor4 = \ + uno.createUnoStruct('com.sun.star.awt.FontDescriptor') + self.fontDescriptor5 = \ + uno.createUnoStruct('com.sun.star.awt.FontDescriptor') + #Set member- FontDescriptors... + self.fontDescriptor1.Weight = 150 + self.fontDescriptor1.Underline = SINGLE + self.fontDescriptor2.Weight = 100 + self.fontDescriptor4.Weight = 100 + self.fontDescriptor5.Weight = 150 + + #build components + + def buildStep1(self): + self.optBusinessFax = self.insertRadioButton("optBusinessFax", + OPTBUSINESSFAX_ITEM_CHANGED, + (PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_HELPURL, + PropertyNames.PROPERTY_LABEL, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + PropertyNames.PROPERTY_WIDTH), + (8, OPTBUSINESSFAX_HID, self.resources.resoptBusinessFax_value, + 97, 28, 1, 1, 184), self) + self.lstBusinessStyle = self.insertListBox("lstBusinessStyle", + LSTBUSINESSSTYLE_ACTION_PERFORMED, LSTBUSINESSSTYLE_ITEM_CHANGED, + ("Dropdown", PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_HELPURL, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + PropertyNames.PROPERTY_WIDTH), + (True, 12, LSTBUSINESSSTYLE_HID, 180, 40, 1, 3, 74), self) + self.optPrivateFax = self.insertRadioButton("optPrivateFax", + OPTPRIVATEFAX_ITEM_CHANGED, + (PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_HELPURL, + PropertyNames.PROPERTY_LABEL, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + PropertyNames.PROPERTY_WIDTH), + (8, OPTPRIVATEFAX_HID, self.resources.resoptPrivateFax_value, + 97, 81, 1, 2, 184), self) + self.lstPrivateStyle = self.insertListBox("lstPrivateStyle", + LSTPRIVATESTYLE_ACTION_PERFORMED, + LSTPRIVATESTYLE_ITEM_CHANGED, + ("Dropdown", PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_HELPURL, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + PropertyNames.PROPERTY_WIDTH), + (True, 12, LSTPRIVATESTYLE_HID, 180, 95, 1, + 4, 74), self) + self.lblBusinessStyle = self.insertLabel("lblBusinessStyle", + (PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_LABEL, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + PropertyNames.PROPERTY_WIDTH), + (8, self.resources.reslblBusinessStyle_value, + 110, 42, 1, 32, 60)) + + self.lblTitle1 = self.insertLabel("lblTitle1", + ("FontDescriptor", PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_LABEL, + PropertyNames.PROPERTY_MULTILINE, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + PropertyNames.PROPERTY_WIDTH), + (self.fontDescriptor5, 16, self.resources.reslblTitle1_value, + True, 91, 8, 1, 37, 212)) + self.lblPrivateStyle = self.insertLabel("lblPrivateStyle", + (PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_LABEL, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + PropertyNames.PROPERTY_WIDTH), + (8, self.resources.reslblPrivateStyle_value, 110, 95, 1, 50, 60)) + self.lblIntroduction = self.insertLabel("lblIntroduction", + (PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_LABEL, + PropertyNames.PROPERTY_MULTILINE, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + PropertyNames.PROPERTY_WIDTH), + (39, self.resources.reslblIntroduction_value, True, 104, 145, 1, 55, 199)) + self.ImageControl3 = self.insertInfoImage(92, 145, 1) + def buildStep2(self): + self.chkUseLogo = self.insertCheckBox("chkUseLogo", + CHKUSELOGO_ITEM_CHANGED, + (PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_HELPURL, + PropertyNames.PROPERTY_LABEL, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + PropertyNames.PROPERTY_STATE, + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + PropertyNames.PROPERTY_WIDTH), + (8, CHKUSELOGO_HID, self.resources.reschkUseLogo_value, 97, 28, + 0, 2, 5, 212), self) + self.chkUseDate = self.insertCheckBox("chkUseDate", + CHKUSEDATE_ITEM_CHANGED, + (PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_HELPURL, + PropertyNames.PROPERTY_LABEL, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + PropertyNames.PROPERTY_STATE, + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + PropertyNames.PROPERTY_WIDTH), + (8, CHKUSEDATE_HID, self.resources.reschkUseDate_value, 97, 43, + 0, 2, 6, 212), self) + self.chkUseCommunicationType = self.insertCheckBox( + "chkUseCommunicationType", + CHKUSECOMMUNICATIONTYPE_ITEM_CHANGED, + (PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_HELPURL, + PropertyNames.PROPERTY_LABEL, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + PropertyNames.PROPERTY_STATE, + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + PropertyNames.PROPERTY_WIDTH), + (8, CHKUSECOMMUNICATIONTYPE_HID, + self.resources.reschkUseCommunicationType_value, 97, 57, + 0, 2, 7, 100), self) + self.lstCommunicationType = self.insertComboBox( + "lstCommunicationType", + LSTCOMMUNICATIONTYPE_ACTION_PERFORMED, + LSTCOMMUNICATIONTYPE_ITEM_CHANGED, + LSTCOMMUNICATIONTYPE_TEXT_CHANGED, + ("Dropdown", PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_HELPURL, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + PropertyNames.PROPERTY_WIDTH), + (True, 12, LSTCOMMUNICATIONTYPE_HID, 105, 68, 2, + 8, 174), self) + self.chkUseSubject = self.insertCheckBox("chkUseSubject", + CHKUSESUBJECT_ITEM_CHANGED, + (PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_HELPURL, + PropertyNames.PROPERTY_LABEL, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + PropertyNames.PROPERTY_STATE, + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + PropertyNames.PROPERTY_WIDTH), + (8, CHKUSESUBJECT_HID, self.resources.reschkUseSubject_value, + 97, 87, 0, 2, 9, 212), self) + self.chkUseSalutation = self.insertCheckBox("chkUseSalutation", + CHKUSESALUTATION_ITEM_CHANGED, + (PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_HELPURL, + PropertyNames.PROPERTY_LABEL, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + PropertyNames.PROPERTY_STATE, + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + PropertyNames.PROPERTY_WIDTH), + (8, CHKUSESALUTATION_HID, + self.resources.reschkUseSalutation_value, 97, 102, + 0, 2, 10, 100), self) + self.lstSalutation = self.insertComboBox("lstSalutation", + LSTSALUTATION_ACTION_PERFORMED, + LSTSALUTATION_ITEM_CHANGED, + LSTSALUTATION_TEXT_CHANGED, + ("Dropdown", PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_HELPURL, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + PropertyNames.PROPERTY_WIDTH), + (True, 12, LSTSALUTATION_HID, 105, 113, 2, + 11, 174), self) + self.chkUseGreeting = self.insertCheckBox("chkUseGreeting", + CHKUSEGREETING_ITEM_CHANGED, + (PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_HELPURL, + PropertyNames.PROPERTY_LABEL, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + PropertyNames.PROPERTY_STATE, + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + PropertyNames.PROPERTY_WIDTH), + (8, CHKUSEGREETING_HID, + self.resources.reschkUseGreeting_value, 97, 132, + 0, 2, 12, 100), self) + self.lstGreeting = self.insertComboBox("lstGreeting", + LSTGREETING_ACTION_PERFORMED, + LSTGREETING_ITEM_CHANGED, + LSTGREETING_TEXT_CHANGED, + ("Dropdown", PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_HELPURL, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + PropertyNames.PROPERTY_WIDTH), + (True, 12, LSTGREETING_HID, 105, 143, 2, 13, 174), self) + self.chkUseFooter = self.insertCheckBox("chkUseFooter", + CHKUSEFOOTER_ITEM_CHANGED, + (PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_HELPURL, + PropertyNames.PROPERTY_LABEL, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + PropertyNames.PROPERTY_STATE, + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + PropertyNames.PROPERTY_WIDTH), + (8, CHKUSEFOOTER_HID, + self.resources.reschkUseFooter_value, 97, 163, + 0, 2, 14, 212), self) + self.lblTitle3 = self.insertLabel("lblTitle3", + ("FontDescriptor", PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_LABEL, + PropertyNames.PROPERTY_MULTILINE, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + PropertyNames.PROPERTY_WIDTH), + (self.fontDescriptor5, 16, self.resources.reslblTitle3_value, + True, 91, 8, 2, 59, 212)) + + def buildStep3(self): + self.optSenderPlaceholder = self.insertRadioButton( + "optSenderPlaceholder", + OPTSENDERPLACEHOLDER_ITEM_CHANGED, + (PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_HELPURL, + PropertyNames.PROPERTY_LABEL, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + PropertyNames.PROPERTY_WIDTH), + (8, OPTSENDERPLACEHOLDER_HID, + self.resources.resoptSenderPlaceholder_value, + 104, 42, 3, 15, 149), self) + self.optSenderDefine = self.insertRadioButton("optSenderDefine", + OPTSENDERDEFINE_ITEM_CHANGED, + (PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_HELPURL, + PropertyNames.PROPERTY_LABEL, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + PropertyNames.PROPERTY_WIDTH), + (8, OPTSENDERDEFINE_HID, self.resources.resoptSenderDefine_value, + 104, 54, 3, 16, 149), self) + self.txtSenderName = self.insertTextField("txtSenderName", + TXTSENDERNAME_TEXT_CHANGED, + (PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_HELPURL, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + PropertyNames.PROPERTY_WIDTH), + (12, TXTSENDERNAME_HID, 182, 67, 3, + 17, 119), self) + self.txtSenderStreet = self.insertTextField("txtSenderStreet", + TXTSENDERSTREET_TEXT_CHANGED, + (PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_HELPURL, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + PropertyNames.PROPERTY_WIDTH), + (12, TXTSENDERSTREET_HID, 182, 81, 3, + 18, 119), self) + self.txtSenderPostCode = self.insertTextField("txtSenderPostCode", + TXTSENDERPOSTCODE_TEXT_CHANGED, + (PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_HELPURL, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + PropertyNames.PROPERTY_WIDTH), + (12, TXTSENDERPOSTCODE_HID, 182, 95, 3, + 19, 25), self) + self.txtSenderState = self.insertTextField("txtSenderState", + TXTSENDERSTATE_TEXT_CHANGED, + (PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_HELPURL, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + PropertyNames.PROPERTY_WIDTH), + (12, TXTSENDERSTATE_HID, 211, 95, 3, + 20, 21), self) + self.txtSenderCity = self.insertTextField("txtSenderCity", + TXTSENDERCITY_TEXT_CHANGED, + (PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_HELPURL, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + PropertyNames.PROPERTY_WIDTH), + (12, TXTSENDERCITY_HID, 236, 95, 3, + 21, 65), self) + self.txtSenderFax = self.insertTextField("txtSenderFax", + TXTSENDERFAX_TEXT_CHANGED, + (PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_HELPURL, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + PropertyNames.PROPERTY_WIDTH), + (12, TXTSENDERFAX_HID, 182, 109, 3, + 22, 119), self) + self.optReceiverPlaceholder = self.insertRadioButton( + "optReceiverPlaceholder", + OPTRECEIVERPLACEHOLDER_ITEM_CHANGED, + (PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_HELPURL, + PropertyNames.PROPERTY_LABEL, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + PropertyNames.PROPERTY_WIDTH), + (8, OPTRECEIVERPLACEHOLDER_HID, + self.resources.resoptReceiverPlaceholder_value, + 104, 148, 3, 23, 200), self) + self.optReceiverDatabase = self.insertRadioButton( + "optReceiverDatabase", + OPTRECEIVERDATABASE_ITEM_CHANGED, + (PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_HELPURL, + PropertyNames.PROPERTY_LABEL, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + PropertyNames.PROPERTY_WIDTH), + (8, OPTRECEIVERDATABASE_HID, + self.resources.resoptReceiverDatabase_value, 104, 160, 3, + 24, 200), self) + self.lblSenderAddress = self.insertLabel("lblSenderAddress", + (PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_LABEL, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + PropertyNames.PROPERTY_WIDTH), + (8, self.resources.reslblSenderAddress_value, 97, 28, 3, 46, 136)) + self.FixedLine2 = self.insertFixedLine("FixedLine2", (PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + PropertyNames.PROPERTY_WIDTH), + (5, 90, 126, 3, 51, 212)) + self.lblSenderName = self.insertLabel("lblSenderName", + (PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_LABEL, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + PropertyNames.PROPERTY_WIDTH), + (8, self.resources.reslblSenderName_value, 113, 69, 3, + 52, 68)) + self.lblSenderStreet = self.insertLabel("lblSenderStreet", + (PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_LABEL, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + PropertyNames.PROPERTY_WIDTH), + (8, self.resources.reslblSenderStreet_value, 113, 82, 3, + 53, 68)) + self.lblPostCodeCity = self.insertLabel("lblPostCodeCity", + (PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_LABEL, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + PropertyNames.PROPERTY_WIDTH), + (8, self.resources.reslblPostCodeCity_value, + 113, 97, 3, 54, 68)) + self.lblTitle4 = self.insertLabel("lblTitle4", + ("FontDescriptor", + PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_LABEL, + PropertyNames.PROPERTY_MULTILINE, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + PropertyNames.PROPERTY_WIDTH), + (self.fontDescriptor5, 16, self.resources.reslblTitle4_value, + True, 91, 8, 3, 60, 212)) + self.Label1 = self.insertLabel("lblSenderFax", + (PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_LABEL, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + PropertyNames.PROPERTY_WIDTH), + (8, self.resources.resLabel1_value, 113, 111, 3, 68, 68)) + self.Label2 = self.insertLabel("Label2", + (PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_LABEL, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + PropertyNames.PROPERTY_WIDTH), + (8, self.resources.resLabel2_value, 97, 137, 3, 69, 136)) + + def buildStep4(self): + self.txtFooter = self.insertTextField("txtFooter", + TXTFOOTER_TEXT_CHANGED, + (PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_HELPURL, + PropertyNames.PROPERTY_MULTILINE, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + PropertyNames.PROPERTY_WIDTH), + (47, TXTFOOTER_HID, True, 97, 40, 4, 25, 203), self) + self.chkFooterNextPages = self.insertCheckBox("chkFooterNextPages", + CHKFOOTERNEXTPAGES_ITEM_CHANGED, + (PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_HELPURL, + PropertyNames.PROPERTY_LABEL, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + PropertyNames.PROPERTY_STATE, + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + PropertyNames.PROPERTY_WIDTH), + (8, CHKFOOTERNEXTPAGES_HID, + self.resources.reschkFooterNextPages_value, 97, 92, + 0, 4, 26, 202), self) + self.chkFooterPageNumbers = self.insertCheckBox("chkFooterPageNumbers", + CHKFOOTERPAGENUMBERS_ITEM_CHANGED, + (PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_HELPURL, + PropertyNames.PROPERTY_LABEL, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + PropertyNames.PROPERTY_STATE, + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + PropertyNames.PROPERTY_WIDTH), + (8, CHKFOOTERPAGENUMBERS_HID, + self.resources.reschkFooterPageNumbers_value, 97, 106, + 0, 4, 27, 201), self) + self.lblFooter = self.insertLabel("lblFooter", + ("FontDescriptor", + PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_LABEL, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + PropertyNames.PROPERTY_WIDTH), + (self.fontDescriptor4, 8, self.resources.reslblFooter_value, + 97, 28, 4, 33, 116)) + self.lblTitle5 = self.insertLabel("lblTitle5", + ("FontDescriptor", + PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_LABEL, + PropertyNames.PROPERTY_MULTILINE, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + PropertyNames.PROPERTY_WIDTH), + (self.fontDescriptor5, 16, self.resources.reslblTitle5_value, + True, 91, 8, 4, 61, 212)) + + def buildStep5(self): + self.txtTemplateName = self.insertTextField("txtTemplateName", + TXTTEMPLATENAME_TEXT_CHANGED, + (PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_HELPURL, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + "Text", + PropertyNames.PROPERTY_WIDTH), + (12, TXTTEMPLATENAME_HID, 202, 56, 5, 28, + self.resources.restxtTemplateName_value, 100), self) + + self.optCreateFax = self.insertRadioButton("optCreateFax", + OPTCREATEFAX_ITEM_CHANGED, + (PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_HELPURL, + PropertyNames.PROPERTY_LABEL, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + PropertyNames.PROPERTY_WIDTH), + (8, OPTCREATEFAX_HID, self.resources.resoptCreateFax_value, + 104, 111, 5, 30, 198), self) + self.optMakeChanges = self.insertRadioButton("optMakeChanges", + OPTMAKECHANGES_ITEM_CHANGED, + (PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_HELPURL, + PropertyNames.PROPERTY_LABEL, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + PropertyNames.PROPERTY_WIDTH), + (8, OPTMAKECHANGES_HID, self.resources.resoptMakeChanges_value, + 104, 123, 5, 31, 198), self) + self.lblFinalExplanation1 = self.insertLabel("lblFinalExplanation1", + (PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_LABEL, + PropertyNames.PROPERTY_MULTILINE, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + PropertyNames.PROPERTY_WIDTH), + (28, self.resources.reslblFinalExplanation1_value, + True, 97, 28, 5, 34, 205)) + self.lblProceed = self.insertLabel("lblProceed", + (PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_LABEL, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + PropertyNames.PROPERTY_WIDTH), + (8, self.resources.reslblProceed_value, 97, 100, 5, + 35, 204)) + self.lblFinalExplanation2 = self.insertLabel("lblFinalExplanation2", + (PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_LABEL, + PropertyNames.PROPERTY_MULTILINE, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + PropertyNames.PROPERTY_WIDTH), + (33, self.resources.reslblFinalExplanation2_value, True, 104, 145, 5, + 36, 199)) + self.ImageControl2 = self.insertImage("ImageControl2", + ("Border", + PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_IMAGEURL, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + "ScaleImage", + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + PropertyNames.PROPERTY_WIDTH), + (0, 10, UIConsts.INFOIMAGEURL, 92, 145, + False, 5, 47, 10)) + self.lblTemplateName = self.insertLabel("lblTemplateName", + (PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_LABEL, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + PropertyNames.PROPERTY_WIDTH), + (8, self.resources.reslblTemplateName_value, 97, 58, 5, + 57, 101)) + + self.lblTitle6 = self.insertLabel("lblTitle6", + ("FontDescriptor", + PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_LABEL, + PropertyNames.PROPERTY_MULTILINE, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + PropertyNames.PROPERTY_WIDTH), + (self.fontDescriptor5, 16, self.resources.reslblTitle6_value, + True, 91, 8, 5, 62, 212)) diff --git a/wizards/com/sun/star/wizards/fax/FaxWizardDialogConst.py b/wizards/com/sun/star/wizards/fax/FaxWizardDialogConst.py new file mode 100644 index 000000000..680a9e3de --- /dev/null +++ b/wizards/com/sun/star/wizards/fax/FaxWizardDialogConst.py @@ -0,0 +1,83 @@ +from common.HelpIds import HelpIds + + +OPTBUSINESSFAX_ITEM_CHANGED = "optBusinessFaxItemChanged" +LSTBUSINESSSTYLE_ACTION_PERFORMED = None # "lstBusinessStyleActionPerformed" +LSTBUSINESSSTYLE_ITEM_CHANGED = "lstBusinessStyleItemChanged" +OPTPRIVATEFAX_ITEM_CHANGED = "optPrivateFaxItemChanged" +LSTPRIVATESTYLE_ACTION_PERFORMED = None # "lstPrivateStyleActionPerformed" +LSTPRIVATESTYLE_ITEM_CHANGED = "lstPrivateStyleItemChanged" +CHKUSELOGO_ITEM_CHANGED = "chkUseLogoItemChanged" +CHKUSEDATE_ITEM_CHANGED = "chkUseDateItemChanged" +CHKUSECOMMUNICATIONTYPE_ITEM_CHANGED = "chkUseCommunicationItemChanged" +LSTCOMMUNICATIONTYPE_ACTION_PERFORMED = None # "lstCommunicationActionPerformed" +LSTCOMMUNICATIONTYPE_ITEM_CHANGED = "lstCommunicationItemChanged" +LSTCOMMUNICATIONTYPE_TEXT_CHANGED = "lstCommunicationItemChanged" +CHKUSESUBJECT_ITEM_CHANGED = "chkUseSubjectItemChanged" +CHKUSESALUTATION_ITEM_CHANGED = "chkUseSalutationItemChanged" +LSTSALUTATION_ACTION_PERFORMED = None # "lstSalutationActionPerformed" +LSTSALUTATION_ITEM_CHANGED = "lstSalutationItemChanged" +LSTSALUTATION_TEXT_CHANGED = "lstSalutationItemChanged" +CHKUSEGREETING_ITEM_CHANGED = "chkUseGreetingItemChanged" +LSTGREETING_ACTION_PERFORMED = None # "lstGreetingActionPerformed" +LSTGREETING_ITEM_CHANGED = "lstGreetingItemChanged" +LSTGREETING_TEXT_CHANGED = "lstGreetingItemChanged" +CHKUSEFOOTER_ITEM_CHANGED = "chkUseFooterItemChanged" +OPTSENDERPLACEHOLDER_ITEM_CHANGED = "optSenderPlaceholderItemChanged" +OPTSENDERDEFINE_ITEM_CHANGED = "optSenderDefineItemChanged" +TXTSENDERNAME_TEXT_CHANGED = "txtSenderNameTextChanged" +TXTSENDERSTREET_TEXT_CHANGED = "txtSenderStreetTextChanged" +TXTSENDERPOSTCODE_TEXT_CHANGED = "txtSenderPostCodeTextChanged" +TXTSENDERSTATE_TEXT_CHANGED = "txtSenderStateTextChanged" +TXTSENDERCITY_TEXT_CHANGED = "txtSenderCityTextChanged" +TXTSENDERFAX_TEXT_CHANGED = "txtSenderFaxTextChanged" +OPTRECEIVERPLACEHOLDER_ITEM_CHANGED = "optReceiverPlaceholderItemChanged" +OPTRECEIVERDATABASE_ITEM_CHANGED = "optReceiverDatabaseItemChanged" +TXTFOOTER_TEXT_CHANGED = "txtFooterTextChanged" +CHKFOOTERNEXTPAGES_ITEM_CHANGED = "chkFooterNextPagesItemChanged" +CHKFOOTERPAGENUMBERS_ITEM_CHANGED = "chkFooterPageNumbersItemChanged" +TXTTEMPLATENAME_TEXT_CHANGED = "txtTemplateNameTextChanged" +FILETEMPLATEPATH_TEXT_CHANGED = None # "fileTemplatePathTextChanged" +OPTCREATEFAX_ITEM_CHANGED = "optCreateFaxItemChanged" +OPTMAKECHANGES_ITEM_CHANGED = "optMakeChangesItemChanged" +imageURLImageControl2 = None #"images/ImageControl2" +imageURLImageControl3 = None #"images/ImageControl3" + +#Help IDs + +HID = 41119 #TODO enter first hid here +HIDMAIN = 41180 +OPTBUSINESSFAX_HID = HelpIds.getHelpIdString(HID + 1) +LSTBUSINESSSTYLE_HID = HelpIds.getHelpIdString(HID + 2) +OPTPRIVATEFAX_HID = HelpIds.getHelpIdString(HID + 3) +LSTPRIVATESTYLE_HID = HelpIds.getHelpIdString(HID + 4) +IMAGECONTROL3_HID = HelpIds.getHelpIdString(HID + 5) +CHKUSELOGO_HID = HelpIds.getHelpIdString(HID + 6) +CHKUSEDATE_HID = HelpIds.getHelpIdString(HID + 7) +CHKUSECOMMUNICATIONTYPE_HID = HelpIds.getHelpIdString(HID + 8) +LSTCOMMUNICATIONTYPE_HID = HelpIds.getHelpIdString(HID + 9) +CHKUSESUBJECT_HID = HelpIds.getHelpIdString(HID + 10) +CHKUSESALUTATION_HID = HelpIds.getHelpIdString(HID + 11) +LSTSALUTATION_HID = HelpIds.getHelpIdString(HID + 12) +CHKUSEGREETING_HID = HelpIds.getHelpIdString(HID + 13) +LSTGREETING_HID = HelpIds.getHelpIdString(HID + 14) +CHKUSEFOOTER_HID = HelpIds.getHelpIdString(HID + 15) +OPTSENDERPLACEHOLDER_HID = HelpIds.getHelpIdString(HID + 16) +OPTSENDERDEFINE_HID = HelpIds.getHelpIdString(HID + 17) +TXTSENDERNAME_HID = HelpIds.getHelpIdString(HID + 18) +TXTSENDERSTREET_HID = HelpIds.getHelpIdString(HID + 19) +TXTSENDERPOSTCODE_HID = HelpIds.getHelpIdString(HID + 20) +TXTSENDERSTATE_HID = HelpIds.getHelpIdString(HID + 21) +TXTSENDERCITY_HID = HelpIds.getHelpIdString(HID + 22) +TXTSENDERFAX_HID = HelpIds.getHelpIdString(HID + 23) +OPTRECEIVERPLACEHOLDER_HID = HelpIds.getHelpIdString(HID + 24) +OPTRECEIVERDATABASE_HID = HelpIds.getHelpIdString(HID + 25) +TXTFOOTER_HID = HelpIds.getHelpIdString(HID + 26) +CHKFOOTERNEXTPAGES_HID = HelpIds.getHelpIdString(HID + 27) +CHKFOOTERPAGENUMBERS_HID = HelpIds.getHelpIdString(HID + 28) +TXTTEMPLATENAME_HID = HelpIds.getHelpIdString(HID + 29) +FILETEMPLATEPATH_HID = HelpIds.getHelpIdString(HID + 30) +OPTCREATEFAX_HID = HelpIds.getHelpIdString(HID + 31) +OPTMAKECHANGES_HID = HelpIds.getHelpIdString(HID + 32) +IMAGECONTROL2_HID = HelpIds.getHelpIdString(HID + 33) + diff --git a/wizards/com/sun/star/wizards/fax/FaxWizardDialogImpl.py b/wizards/com/sun/star/wizards/fax/FaxWizardDialogImpl.py new file mode 100644 index 000000000..f4495e255 --- /dev/null +++ b/wizards/com/sun/star/wizards/fax/FaxWizardDialogImpl.py @@ -0,0 +1,706 @@ +from FaxWizardDialog import * +from CGFaxWizard import * +from FaxDocument import * +from ui.PathSelection import * +from common.FileAccess import * +from ui.event.UnoDataAware import * +from ui.event.RadioDataAware import * +from ui.XPathSelectionListener import XPathSelectionListener +from common.Configuration import * +from document.OfficeDocument import OfficeDocument +from text.TextFieldHandler import TextFieldHandler +from com.sun.star.awt.VclWindowPeerAttribute import YES_NO, DEF_NO + +from common.NoValidPathException import * +from com.sun.star.uno import RuntimeException +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 FaxWizardDialogImpl(FaxWizardDialog): + + def leaveStep(self, nOldStep, nNewStep): + pass + + def enterStep(self, nOldStep, nNewStep): + pass + + RM_TYPESTYLE = 1 + RM_ELEMENTS = 2 + RM_SENDERRECEIVER = 3 + RM_FOOTER = 4 + RM_FINALSETTINGS = 5 + + + def __init__(self, xmsf): + super(FaxWizardDialogImpl, self).__init__(xmsf) + self.mainDA = [] + self.faxDA = [] + self.bSaveSuccess = False + self.__filenameChanged = False + self.UserTemplatePath = "" + self.sTemplatePath = "" + + @classmethod + def main(self, args): + #only being called when starting wizard remotely + try: + ConnectStr = \ + "uno:socket,host=localhost,port=2002;urp;StarOffice.ComponentContext" + xLocMSF = Desktop.connect(ConnectStr) + lw = FaxWizardDialogImpl(xLocMSF) + lw.startWizard(xLocMSF, None) + except RuntimeException, e: + # TODO Auto-generated catch block + traceback.print_exc() + except Exception, e: + # TODO Auto-generated catch blocksetMaxStep + traceback.print_exc() + + def startWizard(self, xMSF, CurPropertyValue): + self.running = True + try: + #Number of steps on WizardDialog: + self.nMaxStep = 5 + + #instatiate The Document Frame for the Preview + self.myFaxDoc = FaxDocument(xMSF, self) + + #create the dialog: + self.drawNaviBar() + + self.buildStep1() + self.buildStep2() + self.buildStep3() + self.buildStep4() + self.buildStep5() + + self.initializeSalutation() + self.initializeGreeting() + self.initializeCommunication() + self.__initializePaths() + + #special Control fFrameor setting the save Path: + self.insertPathSelectionControl() + + #load the last used settings + #from the registry and apply listeners to the controls: + self.initConfiguration() + + self.initializeTemplates(xMSF) + + #update the dialog UI according to the loaded Configuration + self.__updateUI() + if self.myPathSelection.xSaveTextBox.Text.lower() == "": + self.myPathSelection.initializePath() + + self.xContainerWindow = self.myFaxDoc.xFrame.ContainerWindow + self.createWindowPeer(self.xContainerWindow) + + #add the Roadmap to the dialog: + self.insertRoadmap() + + #load the last used document and apply last used settings: + #TODO: + self.setConfiguration() + + #If the configuration does not define + #Greeting/Salutation/CommunicationType yet choose a default + self.__setDefaultForGreetingAndSalutationAndCommunication() + + #disable funtionality that is not supported by the template: + self.initializeElements() + + #disable the document, so that the user cannot change anything: + self.myFaxDoc.xFrame.ComponentWindow.Enable = False + self.executeDialogFromComponent(self.myFaxDoc.xFrame) + self.removeTerminateListener() + self.closeDocument() + self.running = False + except Exception, 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) + self.myFaxDoc.setWizardTemplateDocInfo( \ + self.resources.resFaxWizardDialog_title, + self.resources.resTemplateDescription) + endWizard = True + try: + fileAccess = FileAccess(self.xMSF) + self.sPath = self.myPathSelection.getSelectedPath() + if self.sPath == "": + self.myPathSelection.triggerPathPicker() + self.sPath = self.myPathSelection.getSelectedPath() + + self.sPath = fileAccess.getURL(self.sPath) + #first, if the filename was not changed, thus + #it is coming from a saved session, check if the + # file exists and warn the user. + if not self.__filenameChanged: + if fileAccess.exists(self.sPath, True): + 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.myFaxDoc.setWizardTemplateDocInfo( \ + self.resources.resFaxWizardDialog_title, + self.resources.resTemplateDescription) + self.myFaxDoc.killEmptyUserFields() + self.myFaxDoc.keepLogoFrame = (self.chkUseLogo.State is not 0) + self.myFaxDoc.keepTypeFrame = \ + (self.chkUseCommunicationType.State is not 0) + self.myFaxDoc.killEmptyFrames() + self.bSaveSuccess = OfficeDocument.store(self.xMSF, TextDocument.xTextDocument, + self.sPath, "writer8_template") + if self.bSaveSuccess: + self.saveConfiguration() + xIH = self.xMSF.createInstance( \ + "com.sun.star.comp.uui.UUIInteractionHandler") + loadValues = range(4) + loadValues[0] = uno.createUnoStruct( \ + 'com.sun.star.beans.PropertyValue') + loadValues[0].Name = "AsTemplate" + loadValues[0].Value = True + 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) + myViewHandler = ViewHandler(self.xMSF, oDoc) + myViewHandler.setViewSetting("ZoomType", OPTIMAL) + else: + pass + #TODO: Error Handling + + except Exception, e: + traceback.print_exc() + finally: + if endWizard: + self.xUnoDialog.endExecute() + self.running = False + + return True + + def closeDocument(self): + try: + self.myFaxDoc.xFrame.close(False) + except CloseVetoException, e: + traceback.print_exc() + + def insertRoadmap(self): + self.addRoadmap() + i = 0 + i = self.insertRoadmapItem( + 0, True, self.resources.RoadmapLabels[ + FaxWizardDialogImpl.RM_TYPESTYLE - 1], + FaxWizardDialogImpl.RM_TYPESTYLE) + i = self.insertRoadmapItem( + i, True, self.resources.RoadmapLabels[ + FaxWizardDialogImpl.RM_ELEMENTS - 1], + FaxWizardDialogImpl.RM_ELEMENTS) + i = self.insertRoadmapItem( + i, True, self.resources.RoadmapLabels[ + FaxWizardDialogImpl.RM_SENDERRECEIVER - 1], + FaxWizardDialogImpl.RM_SENDERRECEIVER) + i = self.insertRoadmapItem( + i, False, self.resources.RoadmapLabels[ + FaxWizardDialogImpl.RM_FOOTER - 1], FaxWizardDialogImpl.RM_FOOTER) + i = self.insertRoadmapItem(i, True, + self.resources.RoadmapLabels[ + FaxWizardDialogImpl.RM_FINALSETTINGS - 1], + FaxWizardDialogImpl.RM_FINALSETTINGS) + self.setRoadmapInteractive(True) + self.setRoadmapComplete(True) + self.setCurrentRoadmapItemID(1) + + class __myPathSelectionListener(XPathSelectionListener): + + def validatePath(self): + if self.myPathSelection.usedPathPicker: + self.__filenameChanged = True + + self.myPathSelection.usedPathPicker = False + + def insertPathSelectionControl(self): + self.myPathSelection = PathSelection(self.xMSF, + self, PathSelection.TransferMode.SAVE, + PathSelection.DialogTypes.FILE) + self.myPathSelection.insert( + 5, 97, 70, 205, 45, self.resources.reslblTemplatePath_value, + True, HelpIds.getHelpIdString(HID + 34), + HelpIds.getHelpIdString(HID + 35)) + self.myPathSelection.sDefaultDirectory = self.UserTemplatePath + self.myPathSelection.sDefaultName = "myFaxTemplate.ott" + self.myPathSelection.sDefaultFilter = "writer8_template" + self.myPathSelection.addSelectionListener( \ + self.__myPathSelectionListener()) + + def __updateUI(self): + UnoDataAware.updateUIs(self.mainDA) + UnoDataAware.updateUIs(self.faxDA) + + def __initializePaths(self): + try: + self.sTemplatePath = FileAccess.getOfficePath2(self.xMSF, + "Template", "share", "/wizard") + self.UserTemplatePath = FileAccess.getOfficePath2(self.xMSF, + "Template", "user", "") + self.sBitmapPath = FileAccess.combinePaths(self.xMSF, + self.sTemplatePath, "/../wizard/bitmap") + except NoValidPathException, e: + traceback.print_exc() + + def initializeTemplates(self, xMSF): + try: + self.sFaxPath = FileAccess.combinePaths(xMSF, self.sTemplatePath, + "/wizard/fax") + self.sWorkPath = FileAccess.getOfficePath2(xMSF, "Work", "", "") + self.BusinessFiles = FileAccess.getFolderTitles(xMSF, "bus", + self.sFaxPath) + self.PrivateFiles = FileAccess.getFolderTitles(xMSF, "pri", + self.sFaxPath) + self.setControlProperty("lstBusinessStyle", "StringItemList", + tuple(self.BusinessFiles[0])) + self.setControlProperty("lstPrivateStyle", "StringItemList", + tuple(self.PrivateFiles[0])) + self.setControlProperty("lstBusinessStyle", "SelectedItems", (0,)) + self.setControlProperty("lstPrivateStyle", "SelectedItems" , (0,)) + return True + except NoValidPathException, e: + # TODO Auto-generated catch block + traceback.print_exc() + return False + + def initializeElements(self): + self.setControlProperty("chkUseLogo", + PropertyNames.PROPERTY_ENABLED, + self.myFaxDoc.hasElement("Company Logo")) + self.setControlProperty("chkUseSubject", + PropertyNames.PROPERTY_ENABLED, + self.myFaxDoc.hasElement("Subject Line")) + self.setControlProperty("chkUseDate", + PropertyNames.PROPERTY_ENABLED, + self.myFaxDoc.hasElement("Date")) + self.myFaxDoc.updateDateFields() + + def initializeSalutation(self): + self.setControlProperty("lstSalutation", "StringItemList", + self.resources.SalutationLabels) + + def initializeGreeting(self): + self.setControlProperty("lstGreeting", "StringItemList", + self.resources.GreetingLabels) + + def initializeCommunication(self): + self.setControlProperty("lstCommunicationType", "StringItemList", + self.resources.CommunicationLabels) + + def __setDefaultForGreetingAndSalutationAndCommunication(self): + if self.lstSalutation.Text == "": + self.lstSalutation.setText(self.resources.SalutationLabels[0]) + + if self.lstGreeting.Text == "": + self.lstGreeting.setText(self.resources.GreetingLabels[0]) + + if self.lstCommunicationType.Text == "": + self.lstCommunicationType.setText( \ + self.resources.CommunicationLabels[0]) + + def initConfiguration(self): + try: + self.myConfig = CGFaxWizard() + root = Configuration.getConfigurationRoot(self.xMSF, + "/org.openoffice.Office.Writer/Wizards/Fax", False) + self.myConfig.readConfiguration(root, "cp_") + self.mainDA.append(RadioDataAware.attachRadioButtons( + self.myConfig, "cp_FaxType", + (self.optBusinessFax, self.optPrivateFax), True)) + self.mainDA.append(UnoDataAware.attachListBox( + self.myConfig.cp_BusinessFax, "cp_Style", + self.lstBusinessStyle, True)) + self.mainDA.append(UnoDataAware.attachListBox( + self.myConfig.cp_PrivateFax, "cp_Style", self.lstPrivateStyle, + True)) + cgl = self.myConfig.cp_BusinessFax + self.faxDA.append(UnoDataAware.attachCheckBox(cgl, + "cp_PrintCompanyLogo", self.chkUseLogo, True)) + self.faxDA.append(UnoDataAware.attachCheckBox(cgl, + "cp_PrintSubjectLine", self.chkUseSubject, True)) + self.faxDA.append(UnoDataAware.attachCheckBox(cgl, + "cp_PrintSalutation", self.chkUseSalutation, True)) + self.faxDA.append(UnoDataAware.attachCheckBox(cgl, + "cp_PrintDate", self.chkUseDate, True)) + self.faxDA.append(UnoDataAware.attachCheckBox(cgl, + "cp_PrintCommunicationType", self.chkUseCommunicationType, + True)) + self.faxDA.append(UnoDataAware.attachCheckBox(cgl, + "cp_PrintGreeting", self.chkUseGreeting, True)) + self.faxDA.append(UnoDataAware.attachCheckBox(cgl, + "cp_PrintFooter", self.chkUseFooter, True)) + self.faxDA.append(UnoDataAware.attachEditControl(cgl, + "cp_Salutation", self.lstSalutation, True)) + self.faxDA.append(UnoDataAware.attachEditControl(cgl, + "cp_Greeting", self.lstGreeting, True)) + self.faxDA.append(UnoDataAware.attachEditControl(cgl, + "cp_CommunicationType", self.lstCommunicationType, + True)) + self.faxDA.append(RadioDataAware.attachRadioButtons(cgl, + "cp_SenderAddressType", (self.optSenderDefine, \ + self.optSenderPlaceholder), True)) + self.faxDA.append(UnoDataAware.attachEditControl(cgl, + "cp_SenderCompanyName", self.txtSenderName, True)) + self.faxDA.append(UnoDataAware.attachEditControl(cgl, + "cp_SenderStreet", self.txtSenderStreet, True)) + self.faxDA.append(UnoDataAware.attachEditControl(cgl, + "cp_SenderPostCode", self.txtSenderPostCode, True)) + self.faxDA.append(UnoDataAware.attachEditControl(cgl, + "cp_SenderState", self.txtSenderState, True)) + self.faxDA.append(UnoDataAware.attachEditControl(cgl, + "cp_SenderCity", self.txtSenderCity, True)) + self.faxDA.append(UnoDataAware.attachEditControl(cgl, + "cp_SenderFax", self.txtSenderFax, True)) + self.faxDA.append(RadioDataAware.attachRadioButtons(cgl, + "cp_ReceiverAddressType", (self.optReceiverDatabase, + self.optReceiverPlaceholder), True)) + self.faxDA.append(UnoDataAware.attachEditControl(cgl, + "cp_Footer", self.txtFooter, True)) + self.faxDA.append(UnoDataAware.attachCheckBox(cgl, + "cp_FooterOnlySecondPage", self.chkFooterNextPages, + True)) + self.faxDA.append(UnoDataAware.attachCheckBox(cgl, + "cp_FooterPageNumbers", self.chkFooterPageNumbers, + True)) + self.faxDA.append(RadioDataAware.attachRadioButtons(cgl, + "cp_CreationType", (self.optCreateFax, self.optMakeChanges), + True)) + self.faxDA.append(UnoDataAware.attachEditControl(cgl, + "cp_TemplateName", self.txtTemplateName, True)) + self.faxDA.append(UnoDataAware.attachEditControl(cgl, + "cp_TemplatePath", self.myPathSelection.xSaveTextBox, + True)) + except Exception, exception: + traceback.print_exc() + + def saveConfiguration(self): + try: + root = Configuration.getConfigurationRoot(self.xMSF, + "/org.openoffice.Office.Writer/Wizards/Fax", True) + self.myConfig.writeConfiguration(root, "cp_") + root.commitChanges() + except Exception, e: + traceback.print_exc() + + def setConfiguration(self): + #set correct Configuration tree: + if self.optBusinessFax.State: + self.optBusinessFaxItemChanged() + if self.optPrivateFax.State: + self.optPrivateFaxItemChanged() + + def optBusinessFaxItemChanged(self): + DataAware.setDataObjects(self.faxDA, + self.myConfig.cp_BusinessFax, True) + self.setControlProperty("lblBusinessStyle", + PropertyNames.PROPERTY_ENABLED, True) + self.setControlProperty("lstBusinessStyle", + PropertyNames.PROPERTY_ENABLED, True) + self.setControlProperty("lblPrivateStyle", + PropertyNames.PROPERTY_ENABLED, False) + self.setControlProperty("lstPrivateStyle", + PropertyNames.PROPERTY_ENABLED, False) + self.lstBusinessStyleItemChanged() + self.__enableSenderReceiver() + self.__setPossibleFooter(True) + def lstBusinessStyleItemChanged(self): + TextDocument.xTextDocument = self.myFaxDoc.loadAsPreview( \ + self.BusinessFiles[1][self.lstBusinessStyle.SelectedItemPos], + False) + self.initializeElements() + self.setElements() + + def optPrivateFaxItemChanged(self): + DataAware.setDataObjects(self.faxDA, + self.myConfig.cp_PrivateFax, True) + self.setControlProperty("lblBusinessStyle", + PropertyNames.PROPERTY_ENABLED, False) + self.setControlProperty("lstBusinessStyle", + PropertyNames.PROPERTY_ENABLED, False) + self.setControlProperty("lblPrivateStyle", + PropertyNames.PROPERTY_ENABLED, True) + self.setControlProperty("lstPrivateStyle", + PropertyNames.PROPERTY_ENABLED, True) + self.lstPrivateStyleItemChanged() + self.__disableSenderReceiver() + self.__setPossibleFooter(False) + + def lstPrivateStyleItemChanged(self): + TextDocument.xTextDocument = self.myFaxDoc.loadAsPreview( \ + self.PrivateFiles[1][self.lstPrivateStyle.SelectedItemPos], + False) + self.initializeElements() + self.setElements() + + def txtTemplateNameTextChanged(self): + xDocProps = TextDocument.xTextDocument.DocumentProperties + xDocProps.Title = self.txtTemplateName.Text + + def optSenderPlaceholderItemChanged(self): + self.setControlProperty("lblSenderName", + PropertyNames.PROPERTY_ENABLED, False) + self.setControlProperty("lblSenderStreet", + PropertyNames.PROPERTY_ENABLED, False) + self.setControlProperty("lblPostCodeCity", + PropertyNames.PROPERTY_ENABLED, False) + self.setControlProperty("lblSenderFax", + PropertyNames.PROPERTY_ENABLED, False) + self.setControlProperty("txtSenderName", + PropertyNames.PROPERTY_ENABLED, False) + self.setControlProperty("txtSenderStreet", + PropertyNames.PROPERTY_ENABLED, False) + self.setControlProperty("txtSenderPostCode", + PropertyNames.PROPERTY_ENABLED, False) + self.setControlProperty("txtSenderState", + PropertyNames.PROPERTY_ENABLED, False) + self.setControlProperty("txtSenderCity", + PropertyNames.PROPERTY_ENABLED, False) + self.setControlProperty("txtSenderFax", + PropertyNames.PROPERTY_ENABLED, False) + self.myFaxDoc.fillSenderWithUserData() + + def optSenderDefineItemChanged(self): + self.setControlProperty("lblSenderName", + PropertyNames.PROPERTY_ENABLED, True) + self.setControlProperty("lblSenderStreet", + PropertyNames.PROPERTY_ENABLED, True) + self.setControlProperty("lblPostCodeCity", + PropertyNames.PROPERTY_ENABLED, True) + self.setControlProperty("lblSenderFax", + PropertyNames.PROPERTY_ENABLED, True) + self.setControlProperty("txtSenderName", + PropertyNames.PROPERTY_ENABLED, True) + self.setControlProperty("txtSenderStreet", + PropertyNames.PROPERTY_ENABLED, True) + self.setControlProperty("txtSenderPostCode", + PropertyNames.PROPERTY_ENABLED, True) + self.setControlProperty("txtSenderState", + PropertyNames.PROPERTY_ENABLED, True) + self.setControlProperty("txtSenderCity", + PropertyNames.PROPERTY_ENABLED, True) + self.setControlProperty("txtSenderFax", + PropertyNames.PROPERTY_ENABLED, True) + + self.myFieldHandler = TextFieldHandler(self.myFaxDoc.xMSF, + TextDocument.xTextDocument) + self.txtSenderNameTextChanged() + self.txtSenderStreetTextChanged() + self.txtSenderPostCodeTextChanged() + self.txtSenderStateTextChanged() + self.txtSenderCityTextChanged() + self.txtSenderFaxTextChanged() + + def optReceiverPlaceholderItemChanged(self): + OfficeDocument.attachEventCall(TextDocument.xTextDocument, "OnNew", + "StarBasic", "macro:#/Template.Correspondence.Placeholder()") + + def optReceiverDatabaseItemChanged(self): + OfficeDocument.attachEventCall(TextDocument.xTextDocument, "OnNew", + "StarBasic", "macro:#/Template.Correspondence.Database()") + + def optCreateFaxItemChanged(self): + self.bEditTemplate = False + + def optMakeChangesItemChanged(self): + self.bEditTemplate = True + + def txtSenderNameTextChanged(self): + self.myFieldHandler.changeUserFieldContent( + "Company", self.txtSenderName.Text) + + def txtSenderStreetTextChanged(self): + self.myFieldHandler.changeUserFieldContent( + "Street", self.txtSenderStreet.Text) + + def txtSenderCityTextChanged(self): + self.myFieldHandler.changeUserFieldContent( + "City", self.txtSenderCity.Text) + + def txtSenderPostCodeTextChanged(self): + self.myFieldHandler.changeUserFieldContent( + "PostCode", self.txtSenderPostCode.Text) + + def txtSenderStateTextChanged(self): + self.myFieldHandler.changeUserFieldContent( + PropertyNames.PROPERTY_STATE, self.txtSenderState.Text) + + def txtSenderFaxTextChanged(self): + self.myFieldHandler.changeUserFieldContent( + "Fax", self.txtSenderFax.Text) + + #switch Elements on/off -------------------------------------------------- + + def setElements(self): + #UI relevant: + if self.optSenderDefine.State: + self.optSenderDefineItemChanged() + + if self.optSenderPlaceholder.State: + self.optSenderPlaceholderItemChanged() + + self.chkUseLogoItemChanged() + self.chkUseSubjectItemChanged() + self.chkUseSalutationItemChanged() + self.chkUseGreetingItemChanged() + self.chkUseCommunicationItemChanged() + self.chkUseDateItemChanged() + self.chkUseFooterItemChanged() + self.txtTemplateNameTextChanged() + #not UI relevant: + if self.optReceiverDatabase.State: + self.optReceiverDatabaseItemChanged() + + if self.optReceiverPlaceholder.State: + self.optReceiverPlaceholderItemChanged() + + if self.optCreateFax.State: + self.optCreateFaxItemChanged() + + if self.optMakeChanges.State: + self.optMakeChangesItemChanged() + + def chkUseLogoItemChanged(self): + if self.myFaxDoc.hasElement("Company Logo"): + self.myFaxDoc.switchElement("Company Logo", + (self.chkUseLogo.State is not 0)) + + def chkUseSubjectItemChanged(self): + if self.myFaxDoc.hasElement("Subject Line"): + self.myFaxDoc.switchElement("Subject Line", + (self.chkUseSubject.State is not 0)) + + def chkUseDateItemChanged(self): + if self.myFaxDoc.hasElement("Date"): + self.myFaxDoc.switchElement("Date", + (self.chkUseDate.State is not 0)) + + def chkUseFooterItemChanged(self): + try: + bFooterPossible = (self.chkUseFooter.State is not 0) \ + and bool(self.getControlProperty("chkUseFooter", + PropertyNames.PROPERTY_ENABLED)) + if self.chkFooterNextPages.State is not 0: + self.myFaxDoc.switchFooter("First Page", False, + (self.chkFooterPageNumbers.State is not 0), + self.txtFooter.Text) + self.myFaxDoc.switchFooter("Standard", bFooterPossible, + (self.chkFooterPageNumbers.State is not 0), + self.txtFooter.Text) + else: + self.myFaxDoc.switchFooter("First Page", bFooterPossible, + (self.chkFooterPageNumbers.State is not 0), + self.txtFooter.Text) + self.myFaxDoc.switchFooter("Standard", bFooterPossible, + (self.chkFooterPageNumbers.State is not 0), + self.txtFooter.Text) + + #enable/disable roadmap item for footer page + BPaperItem = self.getRoadmapItemByID( \ + FaxWizardDialogImpl.RM_FOOTER) + Helper.setUnoPropertyValue(BPaperItem, + PropertyNames.PROPERTY_ENABLED, bFooterPossible) + except Exception, exception: + traceback.print_exc() + + def chkFooterNextPagesItemChanged(self): + self.chkUseFooterItemChanged() + + def chkFooterPageNumbersItemChanged(self): + self.chkUseFooterItemChanged() + + def txtFooterTextChanged(self): + self.myFaxDoc.switchFooter("First Page", True, + (self.chkFooterPageNumbers.State is not 0), + self.txtFooter.Text) + + def chkUseSalutationItemChanged(self): + self.myFaxDoc.switchUserField("Salutation", + self.lstSalutation.Text, (self.chkUseSalutation.State is not 0)) + self.setControlProperty("lstSalutation", + PropertyNames.PROPERTY_ENABLED, + self.chkUseSalutation.State is not 0) + + def lstSalutationItemChanged(self): + self.myFaxDoc.switchUserField("Salutation", + self.lstSalutation.Text, (self.chkUseSalutation.State is not 0)) + + def chkUseCommunicationItemChanged(self): + self.myFaxDoc.switchUserField("CommunicationType", + self.lstCommunicationType.Text, + (self.chkUseCommunicationType.State is not 0)) + self.setControlProperty("lstCommunicationType", + PropertyNames.PROPERTY_ENABLED, + self.chkUseCommunicationType.State is not 0) + + def lstCommunicationItemChanged(self): + self.myFaxDoc.switchUserField("CommunicationType", + self.lstCommunicationType.Text, + (self.chkUseCommunicationType.State is not 0)) + + def chkUseGreetingItemChanged(self): + self.myFaxDoc.switchUserField("Greeting", + self.lstGreeting.Text, (self.chkUseGreeting.State is not 0)) + self.setControlProperty("lstGreeting", + PropertyNames.PROPERTY_ENABLED, + (self.chkUseGreeting.State is not 0)) + + def lstGreetingItemChanged(self): + self.myFaxDoc.switchUserField("Greeting", self.lstGreeting.Text, + (self.chkUseGreeting.State is not 0)) + + def __setPossibleFooter(self, bState): + self.setControlProperty("chkUseFooter", + PropertyNames.PROPERTY_ENABLED, bState) + if not bState: + self.chkUseFooter.State = 0 + + self.chkUseFooterItemChanged() + + def __enableSenderReceiver(self): + BPaperItem = self.getRoadmapItemByID( \ + FaxWizardDialogImpl.RM_SENDERRECEIVER) + Helper.setUnoPropertyValue(BPaperItem, + PropertyNames.PROPERTY_ENABLED, True) + + def __disableSenderReceiver(self): + BPaperItem = self.getRoadmapItemByID( \ + FaxWizardDialogImpl.RM_SENDERRECEIVER) + Helper.setUnoPropertyValue(BPaperItem, + PropertyNames.PROPERTY_ENABLED, False) + diff --git a/wizards/com/sun/star/wizards/fax/FaxWizardDialogResources.py b/wizards/com/sun/star/wizards/fax/FaxWizardDialogResources.py new file mode 100644 index 000000000..864112fed --- /dev/null +++ b/wizards/com/sun/star/wizards/fax/FaxWizardDialogResources.py @@ -0,0 +1,141 @@ +from common.Resource import Resource + +class FaxWizardDialogResources(Resource): + UNIT_NAME = "dbwizres" + MODULE_NAME = "dbw" + RID_FAXWIZARDDIALOG_START = 3200 + RID_FAXWIZARDCOMMUNICATION_START = 3270 + RID_FAXWIZARDGREETING_START = 3280 + RID_FAXWIZARDSALUTATION_START = 3290 + RID_FAXWIZARDROADMAP_START = 3300 + RID_RID_COMMON_START = 500 + + + def __init__(self, xmsf): + super(FaxWizardDialogResources,self).__init__(xmsf, + FaxWizardDialogResources.MODULE_NAME) + self.RoadmapLabels = () + self.SalutationLabels = () + self.GreetingLabels = () + self.CommunicationLabels = () + + #Delete the String, uncomment the self.getResText method + + + self.resFaxWizardDialog_title = self.getResText( + FaxWizardDialogResources.RID_FAXWIZARDDIALOG_START + 1) + self.resLabel9_value = self.getResText( + FaxWizardDialogResources.RID_FAXWIZARDDIALOG_START + 2) + self.resoptBusinessFax_value = self.getResText( + FaxWizardDialogResources.RID_FAXWIZARDDIALOG_START + 3) + self.resoptPrivateFax_value = self.getResText( + FaxWizardDialogResources.RID_FAXWIZARDDIALOG_START + 4) + self.reschkUseLogo_value = self.getResText( + FaxWizardDialogResources.RID_FAXWIZARDDIALOG_START + 5) + self.reschkUseSubject_value = self.getResText( + FaxWizardDialogResources.RID_FAXWIZARDDIALOG_START + 6) + self.reschkUseSalutation_value = self.getResText( + FaxWizardDialogResources.RID_FAXWIZARDDIALOG_START + 7) + self.reschkUseGreeting_value = self.getResText( + FaxWizardDialogResources.RID_FAXWIZARDDIALOG_START + 8) + self.reschkUseFooter_value = self.getResText( + FaxWizardDialogResources.RID_FAXWIZARDDIALOG_START + 9) + self.resoptSenderPlaceholder_value = self.getResText( + FaxWizardDialogResources.RID_FAXWIZARDDIALOG_START + 10) + self.resoptSenderDefine_value = self.getResText( + FaxWizardDialogResources.RID_FAXWIZARDDIALOG_START + 11) + self.restxtTemplateName_value = self.getResText( + FaxWizardDialogResources.RID_FAXWIZARDDIALOG_START + 12) + self.resoptCreateFax_value = self.getResText( + FaxWizardDialogResources.RID_FAXWIZARDDIALOG_START + 13) + self.resoptMakeChanges_value = self.getResText( + FaxWizardDialogResources.RID_FAXWIZARDDIALOG_START + 14) + self.reslblBusinessStyle_value = self.getResText( + FaxWizardDialogResources.RID_FAXWIZARDDIALOG_START + 15) + self.reslblPrivateStyle_value = self.getResText( + FaxWizardDialogResources.RID_FAXWIZARDDIALOG_START + 16) + self.reslblIntroduction_value = self.getResText( + FaxWizardDialogResources.RID_FAXWIZARDDIALOG_START + 17) + self.reslblSenderAddress_value = self.getResText( + FaxWizardDialogResources.RID_FAXWIZARDDIALOG_START + 18) + self.reslblSenderName_value = self.getResText( + FaxWizardDialogResources.RID_FAXWIZARDDIALOG_START + 19) + self.reslblSenderStreet_value = self.getResText( + FaxWizardDialogResources.RID_FAXWIZARDDIALOG_START + 20) + self.reslblPostCodeCity_value = self.getResText( + FaxWizardDialogResources.RID_FAXWIZARDDIALOG_START + 21) + self.reslblFooter_value = self.getResText( + FaxWizardDialogResources.RID_FAXWIZARDDIALOG_START + 22) + self.reslblFinalExplanation1_value = self.getResText( + FaxWizardDialogResources.RID_FAXWIZARDDIALOG_START + 23) + self.reslblFinalExplanation2_value = self.getResText( + FaxWizardDialogResources.RID_FAXWIZARDDIALOG_START + 24) + self.reslblTemplateName_value = self.getResText( + FaxWizardDialogResources.RID_FAXWIZARDDIALOG_START + 25) + self.reslblTemplatePath_value = self.getResText( + FaxWizardDialogResources.RID_FAXWIZARDDIALOG_START + 26) + self.reslblProceed_value = self.getResText( + FaxWizardDialogResources.RID_FAXWIZARDDIALOG_START + 27) + self.reslblTitle1_value = self.getResText( + FaxWizardDialogResources.RID_FAXWIZARDDIALOG_START + 28) + self.reslblTitle3_value = self.getResText( + FaxWizardDialogResources.RID_FAXWIZARDDIALOG_START + 29) + self.reslblTitle4_value = self.getResText( + FaxWizardDialogResources.RID_FAXWIZARDDIALOG_START + 30) + self.reslblTitle5_value = self.getResText( + FaxWizardDialogResources.RID_FAXWIZARDDIALOG_START + 31) + self.reslblTitle6_value = self.getResText( + FaxWizardDialogResources.RID_FAXWIZARDDIALOG_START + 32) + self.reschkFooterNextPages_value = self.getResText( + FaxWizardDialogResources.RID_FAXWIZARDDIALOG_START + 33) + self.reschkFooterPageNumbers_value = self.getResText( + FaxWizardDialogResources.RID_FAXWIZARDDIALOG_START + 34) + self.reschkUseDate_value = self.getResText( + FaxWizardDialogResources.RID_FAXWIZARDDIALOG_START + 35) + self.reschkUseCommunicationType_value = self.getResText( + FaxWizardDialogResources.RID_FAXWIZARDDIALOG_START + 36) + self.resLabel1_value = self.getResText( + FaxWizardDialogResources.RID_FAXWIZARDDIALOG_START + 37) + self.resoptReceiverPlaceholder_value = self.getResText( + FaxWizardDialogResources.RID_FAXWIZARDDIALOG_START + 38) + self.resoptReceiverDatabase_value = self.getResText( + FaxWizardDialogResources.RID_FAXWIZARDDIALOG_START + 39) + self.resLabel2_value = self.getResText( + FaxWizardDialogResources.RID_FAXWIZARDDIALOG_START + 40) + self.loadRoadmapResources() + self.loadSalutationResources() + self.loadGreetingResources() + self.loadCommunicationResources() + self.loadCommonResources() + + def loadCommonResources(self): + self.resOverwriteWarning = self.getResText( + FaxWizardDialogResources.RID_RID_COMMON_START + 19) + self.resTemplateDescription = self.getResText( + FaxWizardDialogResources.RID_RID_COMMON_START + 20) + + def loadRoadmapResources(self): + for i in xrange(5): + self.RoadmapLabels = self.RoadmapLabels + ((self.getResText( + FaxWizardDialogResources.RID_FAXWIZARDROADMAP_START + \ + + i + 1)),) + + def loadSalutationResources(self): + i = 1 + for i in xrange(4): + self.SalutationLabels = self.SalutationLabels + ((self.getResText( + FaxWizardDialogResources.RID_FAXWIZARDSALUTATION_START + \ + i + 1)),) + + def loadGreetingResources(self): + for i in xrange(4): + self.GreetingLabels = self.GreetingLabels + ((self.getResText( + FaxWizardDialogResources.RID_FAXWIZARDGREETING_START + \ + i +1 )),) + + def loadCommunicationResources(self): + for i in xrange(3): + self.CommunicationLabels = \ + self.CommunicationLabels + ((self.getResText( + FaxWizardDialogResources.RID_FAXWIZARDCOMMUNICATION_START + \ + i + 1)),) diff --git a/wizards/com/sun/star/wizards/fax/__init__.py b/wizards/com/sun/star/wizards/fax/__init__.py new file mode 100644 index 000000000..ff5ad269b --- /dev/null +++ b/wizards/com/sun/star/wizards/fax/__init__.py @@ -0,0 +1 @@ +"""fax """ diff --git a/wizards/com/sun/star/wizards/letter/CGLetter.py b/wizards/com/sun/star/wizards/letter/CGLetter.py new file mode 100644 index 000000000..b95502837 --- /dev/null +++ b/wizards/com/sun/star/wizards/letter/CGLetter.py @@ -0,0 +1,37 @@ +from common.ConfigGroup import * +from CGPaperElementLocation import CGPaperElementLocation + +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_Norm = int() + 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() diff --git a/wizards/com/sun/star/wizards/letter/CGLetterWizard.py b/wizards/com/sun/star/wizards/letter/CGLetterWizard.py new file mode 100644 index 000000000..3df1ee17b --- /dev/null +++ b/wizards/com/sun/star/wizards/letter/CGLetterWizard.py @@ -0,0 +1,10 @@ +from common.ConfigGroup import * +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() diff --git a/wizards/com/sun/star/wizards/letter/CGPaperElementLocation.py b/wizards/com/sun/star/wizards/letter/CGPaperElementLocation.py new file mode 100644 index 000000000..901fbae82 --- /dev/null +++ b/wizards/com/sun/star/wizards/letter/CGPaperElementLocation.py @@ -0,0 +1,10 @@ +from common.ConfigGroup import * + +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() diff --git a/wizards/com/sun/star/wizards/letter/LetterDocument.py b/wizards/com/sun/star/wizards/letter/LetterDocument.py new file mode 100644 index 000000000..517d0c669 --- /dev/null +++ b/wizards/com/sun/star/wizards/letter/LetterDocument.py @@ -0,0 +1,261 @@ +from text.TextDocument import * +from text.TextSectionHandler import TextSectionHandler +from text.TextFieldHandler import TextFieldHandler +from com.sun.star.table import BorderLine +from common.PropertyNames import PropertyNames + +from com.sun.star.text.ControlCharacter import PARAGRAPH_BREAK +from com.sun.star.style.ParagraphAdjust import CENTER +from com.sun.star.text.PageNumberType import CURRENT +from com.sun.star.style.NumberingType import ARABIC +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 THROUGHT +from com.sun.star.awt.FontWeight import BOLD + +class LetterDocument(TextDocument): + + TextDocument = None + + 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, TextDocument.xTextDocument) + oSection = \ + mySectionHandler.xTextDocument.TextSections.getByName(sElement) + Helper.setUnoPropertyValue(oSection, "IsVisible", bState) + except Exception: + traceback.print_exc() + + def updateDateFields(self): + FH = TextFieldHandler( + TextDocument.xTextDocument, TextDocument.xTextDocument) + FH.updateDateFields() + + def switchFooter(self, sPageStyle, bState, bPageNumber, sText): + if TextDocument.xTextDocument != None: + try: + TextDocument.xTextDocument.lockControllers() + xNameAccess = TextDocument.xTextDocument.StyleFamilies + xPageStyleCollection = xNameAccess.getByName("PageStyles") + xPageStyle = xPageStyleCollection.getByName(sPageStyle) + if bState: + Helper.setUnoPropertyValue(xPageStyle, "FooterIsOn", True) + xFooterText = \ + Helper.getUnoPropertyValue(xPageStyle, "FooterText") + xFooterText.String = sText + if bPageNumber: + #Adding the Page Number + myCursor = xFooterText.Text.createTextCursor() + myCursor.gotoEnd(False) + xFooterText.insertControlCharacter(myCursor, + PARAGRAPH_BREAK, False) + myCursor.setPropertyValue("ParaAdjust", CENTER ) + + xPageNumberField = \ + TextDocument.xTextDocument.createInstance( + "com.sun.star.text.TextField.PageNumber") + xPageNumberField.setPropertyValue("SubType", CURRENT) + xPageNumberField.NumberingType = ARABIC + xFooterText.insertTextContent(xFooterText.End, + xPageNumberField, False) + + else: + Helper.setUnoPropertyValue( + xPageStyle, "FooterIsOn", False) + + TextDocument.xTextDocument.unlockControllers() + except Exception: + traceback.print_exc() + + def hasElement(self, sElement): + if TextDocument.xTextDocument != None: + SH = TextSectionHandler(self.xMSF, TextDocument.xTextDocument) + return SH.hasTextSectionByName(sElement) + else: + return False + + def switchUserField(self, sFieldName, sNewContent, bState): + myFieldHandler = TextFieldHandler( + self.xMSF, TextDocument.xTextDocument) + if bState: + myFieldHandler.changeUserFieldContent(sFieldName, sNewContent) + else: + myFieldHandler.changeUserFieldContent(sFieldName, "") + + def fillSenderWithUserData(self): + try: + myFieldHandler = TextFieldHandler( + TextDocument.xTextDocument, TextDocument.xTextDocument) + oUserDataAccess = Configuration.getConfigurationRoot( + self.xMSF, "org.openoffice.UserProfile/Data", False) + myFieldHandler.changeUserFieldContent( + "Company", Helper.getUnoObjectbyName(oUserDataAccess, "o")) + myFieldHandler.changeUserFieldContent( + "Street", Helper.getUnoObjectbyName(oUserDataAccess, "street")) + myFieldHandler.changeUserFieldContent( + "PostCode", + Helper.getUnoObjectbyName(oUserDataAccess, "postalcode")) + myFieldHandler.changeUserFieldContent( + "City", Helper.getUnoObjectbyName(oUserDataAccess, "l")) + myFieldHandler.changeUserFieldContent( + PropertyNames.PROPERTY_STATE, + Helper.getUnoObjectbyName(oUserDataAccess, "st")) + except Exception: + traceback.print_exc() + + def killEmptyUserFields(self): + myFieldHandler = TextFieldHandler( + self.xMSF, TextDocument.xTextDocument) + myFieldHandler.removeUserFieldByContent("") + + def killEmptyFrames(self): + try: + if not self.keepLogoFrame: + xTF = self.getFrameByName( + "Company Logo", TextDocument.xTextDocument) + if xTF != None: + xTF.dispose() + + if not self.keepBendMarksFrame: + xTF = self.getFrameByName( + "Bend Marks", TextDocument.xTextDocument) + if xTF != None: + xTF.dispose() + + if not self.keepLetterSignsFrame: + xTF = self.getFrameByName( + "Letter Signs", TextDocument.xTextDocument) + if xTF != None: + xTF.dispose() + + if not self.keepSenderAddressRepeatedFrame: + xTF = self.getFrameByName( + "Sender Address Repeated", TextDocument.xTextDocument) + if xTF != None: + xTF.dispose() + + if not self.keepAddressFrame: + xTF = self.getFrameByName( + "Sender Address", TextDocument.xTextDocument) + if xTF != None: + xTF.dispose() + + except Exception: + traceback.print_exc() + +class BusinessPaperObject(object): + + def __init__(self, FrameText, Width, Height, XPos, YPos): + self.iWidth = Width + self.iHeight = Height + self.iXPos = XPos + self.iYPos = YPos + self.xFrame = None + try: + self.xFrame = \ + TextDocument.xTextDocument.createInstance( + "com.sun.star.text.TextFrame") + self.setFramePosition() + Helper.setUnoPropertyValue( + self.xFrame, + "AnchorType", AT_PAGE) + Helper.setUnoPropertyValue( + self.xFrame, + "SizeType", FIX) + + Helper.setUnoPropertyValue( + self.xFrame, + "TextWrap", THROUGHT) + Helper.setUnoPropertyValue( + self.xFrame, + "Opaque", True); + Helper.setUnoPropertyValue( + self.xFrame, + "BackColor", 15790320) + + myBorder = BorderLine() + myBorder.OuterLineWidth = 0 + Helper.setUnoPropertyValue( + self.xFrame, + "LeftBorder", myBorder) + Helper.setUnoPropertyValue( + self.xFrame, + "RightBorder", myBorder) + Helper.setUnoPropertyValue( + self.xFrame, + "TopBorder", myBorder) + Helper.setUnoPropertyValue( + self.xFrame, + "BottomBorder", myBorder) + Helper.setUnoPropertyValue( + self.xFrame, + "Print", False) + + xTextCursor = \ + TextDocument.xTextDocument.Text.createTextCursor() + xTextCursor.gotoEnd(True) + xText = TextDocument.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: + Helper.setUnoPropertyValue( + self.xFrame, + "HoriOrient", NONEHORI) + Helper.setUnoPropertyValue( + self.xFrame, + "VertOrient", NONEVERT) + Helper.setUnoPropertyValue( + self.xFrame, + PropertyNames.PROPERTY_HEIGHT, self.iHeight) + Helper.setUnoPropertyValue( + self.xFrame, + PropertyNames.PROPERTY_WIDTH, self.iWidth) + Helper.setUnoPropertyValue( + self.xFrame, + "HoriOrientPosition", self.iXPos) + Helper.setUnoPropertyValue( + self.xFrame, + "VertOrientPosition", self.iYPos) + Helper.setUnoPropertyValue( + self.xFrame, + "HoriOrientRelation", PAGE_FRAME) + Helper.setUnoPropertyValue( + self.xFrame, + "VertOrientRelation", PAGE_FRAME) + except Exception: + traceback.print_exc() + + def removeFrame(self): + if self.xFrame is not None: + try: + TextDocument.xTextDocument.Text.removeTextContent( + self.xFrame) + except Exception: + traceback.print_exc() diff --git a/wizards/com/sun/star/wizards/letter/LetterWizardDialog.py b/wizards/com/sun/star/wizards/letter/LetterWizardDialog.py new file mode 100644 index 000000000..ac87206f2 --- /dev/null +++ b/wizards/com/sun/star/wizards/letter/LetterWizardDialog.py @@ -0,0 +1,1141 @@ +from ui.WizardDialog import * +from LetterWizardDialogConst import * +from LetterWizardDialogResources import LetterWizardDialogResources + +from com.sun.star.awt.FontUnderline import SINGLE + +class LetterWizardDialog(WizardDialog): + + def __init__(self, xmsf): + super(LetterWizardDialog, self).__init__(xmsf, HIDMAIN ) + + self.resources = LetterWizardDialogResources(xmsf) + Helper.setUnoPropertyValues( + self.xDialogModel, + ("Closeable", + PropertyNames.PROPERTY_HEIGHT, + "Moveable", + PropertyNames.PROPERTY_NAME, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + "Title", + PropertyNames.PROPERTY_WIDTH), + (True, 210, True, + "LetterWizardDialog", 104, 52, 1, 1, + self.resources.resLetterWizardDialog_title, 310)) + self.fontDescriptor1 = \ + uno.createUnoStruct('com.sun.star.awt.FontDescriptor') + self.fontDescriptor2 = \ + uno.createUnoStruct('com.sun.star.awt.FontDescriptor') + self.fontDescriptor5 = \ + uno.createUnoStruct('com.sun.star.awt.FontDescriptor') + self.fontDescriptor6 = \ + uno.createUnoStruct('com.sun.star.awt.FontDescriptor') + self.fontDescriptor1.Weight = 150 + self.fontDescriptor1.Underline = SINGLE + self.fontDescriptor2.Weight = 100 + self.fontDescriptor5.Weight = 100 + self.fontDescriptor6.Weight = 150 + + def buildStep1(self): + self.optBusinessLetter = self.insertRadioButton( + "optBusinessLetter", OPTBUSINESSLETTER_ITEM_CHANGED, + (PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_HELPURL, + PropertyNames.PROPERTY_LABEL, + PropertyNames.PROPERTY_NAME, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + PropertyNames.PROPERTY_WIDTH), + (8, HelpIds.getHelpIdString(HID + 1), + self.resources.resoptBusinessLetter_value, + "optBusinessLetter", 97, 28, 1, 1, 184), self) + self.optPrivOfficialLetter = self.insertRadioButton( + "optPrivOfficialLetter", OPTPRIVOFFICIALLETTER_ITEM_CHANGED, + (PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_HELPURL, + PropertyNames.PROPERTY_LABEL, + PropertyNames.PROPERTY_NAME, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + PropertyNames.PROPERTY_WIDTH), + (8, HelpIds.getHelpIdString(HID + 2), + self.resources.resoptPrivOfficialLetter_value, + "optPrivOfficialLetter", 97, 74, 1, 2, 184), self) + self.optPrivateLetter = self.insertRadioButton( + "optPrivateLetter", OPTPRIVATELETTER_ITEM_CHANGED, + (PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_HELPURL, + PropertyNames.PROPERTY_LABEL, + PropertyNames.PROPERTY_NAME, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + PropertyNames.PROPERTY_WIDTH), + (8, HelpIds.getHelpIdString(HID + 3), + self.resources.resoptPrivateLetter_value, + "optPrivateLetter", 97, 106, 1, 3, 184), self) + self.lstBusinessStyle = self.insertListBox( + "lstBusinessStyle", LSTBUSINESSSTYLE_ACTION_PERFORMED, + LSTBUSINESSSTYLE_ITEM_CHANGED, + ("Dropdown", + PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_HELPURL, + PropertyNames.PROPERTY_NAME, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + PropertyNames.PROPERTY_WIDTH), + (True, 12, HelpIds.getHelpIdString(HID + 4), + "lstBusinessStyle", + 180, 40, 1, 4, 74), self) + self.chkBusinessPaper = self.insertCheckBox( + "chkBusinessPaper", CHKBUSINESSPAPER_ITEM_CHANGED, + (PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_HELPURL, + PropertyNames.PROPERTY_LABEL, + PropertyNames.PROPERTY_NAME, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + PropertyNames.PROPERTY_STATE, + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + PropertyNames.PROPERTY_WIDTH), + (8, HelpIds.getHelpIdString(HID + 5), + self.resources.reschkBusinessPaper_value, + "chkBusinessPaper", 110, 56, 0, 1, 5, 168), self) + self.lstPrivOfficialStyle = self.insertListBox( + "lstPrivOfficialStyle", LSTPRIVOFFICIALSTYLE_ACTION_PERFORMED, + LSTPRIVOFFICIALSTYLE_ITEM_CHANGED, + ("Dropdown", + PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_HELPURL, + PropertyNames.PROPERTY_NAME, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + PropertyNames.PROPERTY_WIDTH), + (True, 12, HelpIds.getHelpIdString(HID + 6), + "lstPrivOfficialStyle", 180, 86, 1, 6, 74), self) + self.lstPrivateStyle = self.insertListBox( + "lstPrivateStyle", LSTPRIVATESTYLE_ACTION_PERFORMED, + LSTPRIVATESTYLE_ITEM_CHANGED, + ("Dropdown", + PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_HELPURL, + PropertyNames.PROPERTY_NAME, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + PropertyNames.PROPERTY_WIDTH), + (True, 12, HelpIds.getHelpIdString(HID + 7), + "lstPrivateStyle", 180, 118, 1, 7, 74), self) + self.lblBusinessStyle = self.insertLabel( + "lblBusinessStyle", + (PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_LABEL, + PropertyNames.PROPERTY_NAME, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + PropertyNames.PROPERTY_WIDTH), + (8, self.resources.reslblBusinessStyle_value, + "lblBusinessStyle", 110, 42, 1, 48, 60)) + self.lblPrivOfficialStyle = self.insertLabel( + "lblPrivOfficialStyle", + (PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_LABEL, + PropertyNames.PROPERTY_NAME, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + PropertyNames.PROPERTY_WIDTH), + (8, self.resources.reslblPrivOfficialStyle_value, + "lblPrivOfficialStyle", 110, 88, 1, 49, 60)) + self.lblTitle1 = self.insertLabel( + "lblTitle1", + ("FontDescriptor", + PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_LABEL, + PropertyNames.PROPERTY_MULTILINE, + PropertyNames.PROPERTY_NAME, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + PropertyNames.PROPERTY_WIDTH), + (self.fontDescriptor6, 16, + self.resources.reslblTitle1_value, True, + "lblTitle1", 91, 8, 1, 55, 212)) + self.lblPrivateStyle = self.insertLabel( + "lblPrivateStyle", + (PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_LABEL, + PropertyNames.PROPERTY_NAME, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + PropertyNames.PROPERTY_WIDTH), + (8, self.resources.reslblPrivateStyle_value, + "lblPrivateStyle", 110, 120, 1, 74, 60)) + self.lblIntroduction = self.insertLabel( + "lblIntroduction", + (PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_LABEL, + PropertyNames.PROPERTY_MULTILINE, + PropertyNames.PROPERTY_NAME, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + PropertyNames.PROPERTY_WIDTH), + (39, self.resources.reslblIntroduction_value, + True, + "lblIntroduction", 104, 145, 1, 80, 199)) + self.ImageControl3 = self.insertInfoImage(92, 145, 1) + + def buildStep2(self): + self.chkPaperCompanyLogo = self.insertCheckBox( + "chkPaperCompanyLogo", + CHKPAPERCOMPANYLOGO_ITEM_CHANGED, + (PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_HELPURL, + PropertyNames.PROPERTY_LABEL, + PropertyNames.PROPERTY_NAME, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + PropertyNames.PROPERTY_STATE, + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + PropertyNames.PROPERTY_WIDTH), + (8, HelpIds.getHelpIdString(HID + 8), + self.resources.reschkPaperCompanyLogo_value, + "chkPaperCompanyLogo", 97, 28, 0, 2, 8, 68), self) + self.numLogoHeight = self.insertNumericField( + "numLogoHeight", + NUMLOGOHEIGHT_TEXT_CHANGED, + (PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_HELPURL, + PropertyNames.PROPERTY_NAME, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + "Spin", + PropertyNames.PROPERTY_STEP, + "StrictFormat", + PropertyNames.PROPERTY_TABINDEX, + "Value", + PropertyNames.PROPERTY_WIDTH), + (12, HelpIds.getHelpIdString(HID + 9), + "numLogoHeight", 138, 40, True, 2, True, 9, 3, 30), self) + self.numLogoX = self.insertNumericField( + "numLogoX", NUMLOGOX_TEXT_CHANGED, + (PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_HELPURL, + PropertyNames.PROPERTY_NAME, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + "Spin", + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + "Value", + PropertyNames.PROPERTY_WIDTH), + (12, HelpIds.getHelpIdString(HID + 10), + "numLogoX", 266, 40, True, 2, 10, 0, 30), self) + self.numLogoWidth = self.insertNumericField( + "numLogoWidth", NUMLOGOWIDTH_TEXT_CHANGED, + (PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_HELPURL, + PropertyNames.PROPERTY_NAME, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + "Spin", + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + "Value", + PropertyNames.PROPERTY_WIDTH), + (12, HelpIds.getHelpIdString(HID + 11), + "numLogoWidth", 138, 56, True, 2, 11, 3.8, 30), self) + self.numLogoY = self.insertNumericField( + "numLogoY", NUMLOGOY_TEXT_CHANGED, + (PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_HELPURL, + PropertyNames.PROPERTY_NAME, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + "Spin", + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + "Value", + PropertyNames.PROPERTY_WIDTH), + (12, HelpIds.getHelpIdString(HID + 12), + "numLogoY", 266, 56, True, 2, 12, -3.4, 30), self) + self.chkPaperCompanyAddress = self.insertCheckBox( + "chkPaperCompanyAddress", CHKPAPERCOMPANYADDRESS_ITEM_CHANGED, + (PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_HELPURL, + PropertyNames.PROPERTY_LABEL, + PropertyNames.PROPERTY_NAME, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + PropertyNames.PROPERTY_STATE, + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + PropertyNames.PROPERTY_WIDTH), + (8, HelpIds.getHelpIdString(HID + 13), + self.resources.reschkPaperCompanyAddress_value, + "chkPaperCompanyAddress", 98, 84, 0, 2, 13, 68), self) + self.numAddressHeight = self.insertNumericField( + "numAddressHeight", NUMADDRESSHEIGHT_TEXT_CHANGED, + (PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_HELPURL, + PropertyNames.PROPERTY_NAME, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + "Spin", + PropertyNames.PROPERTY_STEP, + "StrictFormat", + PropertyNames.PROPERTY_TABINDEX, + "Value", + PropertyNames.PROPERTY_WIDTH), + (12, HelpIds.getHelpIdString(HID + 14), + "numAddressHeight", 138, 96, True, 2, True, 14, 3, 30), self) + self.numAddressX = self.insertNumericField( + "numAddressX", NUMADDRESSX_TEXT_CHANGED, + (PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_HELPURL, + PropertyNames.PROPERTY_NAME, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + "Spin", + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + "Value", + PropertyNames.PROPERTY_WIDTH), + (12, HelpIds.getHelpIdString(HID + 15), + "numAddressX", 266, 96, True, 2, 15, 3.8, 30), self) + self.numAddressWidth = self.insertNumericField( + "numAddressWidth", NUMADDRESSWIDTH_TEXT_CHANGED, + (PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_HELPURL, + PropertyNames.PROPERTY_NAME, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + "Spin", + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + "Value", + PropertyNames.PROPERTY_WIDTH), + (12, HelpIds.getHelpIdString(HID + 16), + "numAddressWidth", 138, 112, True, 2, 16, 13.8, 30), self) + self.numAddressY = self.insertNumericField( + "numAddressY", NUMADDRESSY_TEXT_CHANGED, + (PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_HELPURL, + PropertyNames.PROPERTY_NAME, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + "Spin", + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + "Value", + PropertyNames.PROPERTY_WIDTH), + (12, HelpIds.getHelpIdString(HID + 17), + "numAddressY", 266, 112, True, 2, 17, -3.4, 30), self) + self.chkCompanyReceiver = self.insertCheckBox( + "chkCompanyReceiver", CHKCOMPANYRECEIVER_ITEM_CHANGED, + (PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_HELPURL, + PropertyNames.PROPERTY_LABEL, + PropertyNames.PROPERTY_NAME, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, PropertyNames.PROPERTY_STATE, + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + PropertyNames.PROPERTY_WIDTH), + (8, HelpIds.getHelpIdString(HID + 18), + self.resources.reschkCompanyReceiver_value, + "chkCompanyReceiver", 103, 131, 0, 2, 18, 185), self) + self.chkPaperFooter = self.insertCheckBox( + "chkPaperFooter", CHKPAPERFOOTER_ITEM_CHANGED, + (PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_HELPURL, + PropertyNames.PROPERTY_LABEL, + PropertyNames.PROPERTY_NAME, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + PropertyNames.PROPERTY_STATE, + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + PropertyNames.PROPERTY_WIDTH), + (8, HelpIds.getHelpIdString(HID + 19), + self.resources.reschkPaperFooter_value, + "chkPaperFooter", 97, 158, 0, 2, 19, 68), self) + self.numFooterHeight = self.insertNumericField( + "numFooterHeight", NUMFOOTERHEIGHT_TEXT_CHANGED, + (PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_HELPURL, + PropertyNames.PROPERTY_NAME, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + "Spin", + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + "Value", + PropertyNames.PROPERTY_WIDTH), + (12, HelpIds.getHelpIdString(HID + 20), + "numFooterHeight", 236, 156, True, 2, 20, 5, 30), self) + self.lblLogoHeight = self.insertLabel( + "lblLogoHeight", + (PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_LABEL, + PropertyNames.PROPERTY_NAME, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + PropertyNames.PROPERTY_WIDTH), + (8, self.resources.reslblLogoHeight_value, + "lblLogoHeight", 103, 42, 2, 68, 32)) + self.lblLogoWidth = self.insertLabel( + "lblLogoWidth", + (PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_LABEL, + PropertyNames.PROPERTY_NAME, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + PropertyNames.PROPERTY_WIDTH), + (8, self.resources.reslblLogoWidth_value, + "lblLogoWidth", 103, 58, 2, 69, 32)) + self.FixedLine5 = self.insertFixedLine( + "FixedLine5", + (PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_NAME, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + PropertyNames.PROPERTY_WIDTH), + (2, + "FixedLine5", 90, 78, 2, 70, 215)) + self.FixedLine6 = self.insertFixedLine( + "FixedLine6", + (PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_NAME, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + PropertyNames.PROPERTY_WIDTH), + (2, + "FixedLine6", 90, 150, 2, 71, 215)) + self.lblFooterHeight = self.insertLabel( + "lblFooterHeight", + (PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_LABEL, + PropertyNames.PROPERTY_NAME, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + PropertyNames.PROPERTY_WIDTH), + (8, self.resources.reslblFooterHeight_value, + "lblFooterHeight", 200, 158, 2, 72, 32)) + self.lblLogoX = self.insertLabel( + "lblLogoX", + (PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_LABEL, + PropertyNames.PROPERTY_NAME, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + PropertyNames.PROPERTY_WIDTH), + (8, self.resources.reslblLogoX_value, + "lblLogoX", 170, 42, 2, 84, 94)) + self.lblLogoY = self.insertLabel( + "lblLogoY", + (PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_LABEL, + PropertyNames.PROPERTY_NAME, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + PropertyNames.PROPERTY_WIDTH), + (8, self.resources.reslblLogoY_value, + "lblLogoY", 170, 58, 2, 85, 94)) + self.lblAddressHeight = self.insertLabel( + "lblAddressHeight", + (PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_LABEL, + PropertyNames.PROPERTY_NAME, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + PropertyNames.PROPERTY_WIDTH), + (8, self.resources.reslblAddressHeight_value, + "lblAddressHeight", 103, 98, 2, 86, 32)) + self.lblAddressWidth = self.insertLabel( + "lblAddressWidth", + (PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_LABEL, + PropertyNames.PROPERTY_NAME, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + PropertyNames.PROPERTY_WIDTH), + (8, self.resources.reslblAddressWidth_value, + "lblAddressWidth", 103, 114, 2, 87, 32)) + self.lblAddressX = self.insertLabel( + "lblAddressX", + (PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_LABEL, + PropertyNames.PROPERTY_NAME, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + PropertyNames.PROPERTY_WIDTH), + (8, self.resources.reslblAddressX_value, + "lblAddressX", 170, 98, 2, 88, 94)) + self.lblAddressY = self.insertLabel( + "lblAddressY", + (PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_LABEL, + PropertyNames.PROPERTY_NAME, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + PropertyNames.PROPERTY_WIDTH), + (8, self.resources.reslblAddressY_value, + "lblAddressY", 170, 114, 2, 89, 94)) + self.lblTitle2 = self.insertLabel( + "lblTitle2", + ("FontDescriptor", + PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_LABEL, + PropertyNames.PROPERTY_MULTILINE, + PropertyNames.PROPERTY_NAME, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + PropertyNames.PROPERTY_WIDTH), + (self.fontDescriptor6, 16, + self.resources.reslblTitle2_value, True, + "lblTitle2", 91, 8, 2, 91, 212)) + + def buildStep3(self): + self.lstLetterNorm = self.insertListBox( + "lstLetterNorm", + LSTLETTERNORM_ACTION_PERFORMED, + LSTLETTERNORM_ITEM_CHANGED, + ("Dropdown", + PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_HELPURL, + PropertyNames.PROPERTY_NAME, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + PropertyNames.PROPERTY_WIDTH), + (True, 12, HelpIds.getHelpIdString(HID + 21), + "lstLetterNorm", 210, 34, 3, 21, 74), self) + self.chkUseLogo = self.insertCheckBox( + "chkUseLogo", CHKUSELOGO_ITEM_CHANGED, + (PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_HELPURL, + PropertyNames.PROPERTY_LABEL, + PropertyNames.PROPERTY_NAME, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + PropertyNames.PROPERTY_STATE, + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + PropertyNames.PROPERTY_WIDTH), + (8, HelpIds.getHelpIdString(HID + 22), + self.resources.reschkUseLogo_value, + "chkUseLogo", 97, 54, 0, 3, 22, 212), self) + self.chkUseAddressReceiver = self.insertCheckBox( + "chkUseAddressReceiver", + CHKUSEADDRESSRECEIVER_ITEM_CHANGED, + (PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_HELPURL, + PropertyNames.PROPERTY_LABEL, + PropertyNames.PROPERTY_NAME, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + PropertyNames.PROPERTY_STATE, + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + PropertyNames.PROPERTY_WIDTH), + (8, HelpIds.getHelpIdString(HID + 23), + self.resources.reschkUseAddressReceiver_value, + "chkUseAddressReceiver", 97, 69, 0, 3, 23, 212), self) + self.chkUseSigns = self.insertCheckBox( + "chkUseSigns", CHKUSESIGNS_ITEM_CHANGED, + (PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_HELPURL, + PropertyNames.PROPERTY_LABEL, + PropertyNames.PROPERTY_NAME, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + PropertyNames.PROPERTY_STATE, + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + PropertyNames.PROPERTY_WIDTH), + (8, HelpIds.getHelpIdString(HID + 24), + self.resources.reschkUseSigns_value, + "chkUseSigns", 97, 82, 0, 3, 24, 212), self) + self.chkUseSubject = self.insertCheckBox( + "chkUseSubject", CHKUSESUBJECT_ITEM_CHANGED, + (PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_HELPURL, + PropertyNames.PROPERTY_LABEL, + PropertyNames.PROPERTY_NAME, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + PropertyNames.PROPERTY_STATE, + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + PropertyNames.PROPERTY_WIDTH), + (8, HelpIds.getHelpIdString(HID + 25), + self.resources.reschkUseSubject_value, + "chkUseSubject", 97, 98, 0, 3, 25, 212), self) + self.chkUseSalutation = self.insertCheckBox( + "chkUseSalutation", CHKUSESALUTATION_ITEM_CHANGED, + (PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_HELPURL, + PropertyNames.PROPERTY_LABEL, + PropertyNames.PROPERTY_NAME, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + PropertyNames.PROPERTY_STATE, + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + PropertyNames.PROPERTY_WIDTH), + (8, HelpIds.getHelpIdString(HID + 26), + self.resources.reschkUseSalutation_value, + "chkUseSalutation", 97, 113, 0, 3, 26, 66), self) + self.lstSalutation = self.insertComboBox( + "lstSalutation", + LSTSALUTATION_ACTION_PERFORMED, + LSTSALUTATION_ITEM_CHANGED, + LSTSALUTATION_TEXT_CHANGED, + ("Dropdown", + PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_HELPURL, + PropertyNames.PROPERTY_NAME, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + PropertyNames.PROPERTY_WIDTH), + (True, 12, HelpIds.getHelpIdString(HID + 27), + "lstSalutation", 210, 110, 3, 27, 74), self) + self.chkUseBendMarks = self.insertCheckBox( + "chkUseBendMarks", CHKUSEBENDMARKS_ITEM_CHANGED, + (PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_HELPURL, + PropertyNames.PROPERTY_LABEL, + PropertyNames.PROPERTY_NAME, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + PropertyNames.PROPERTY_STATE, + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + PropertyNames.PROPERTY_WIDTH), + (8, HelpIds.getHelpIdString(HID + 28), + self.resources.reschkUseBendMarks_value, + "chkUseBendMarks", 97, 127, 0, 3, 28, 212), self) + self.chkUseGreeting = self.insertCheckBox( + "chkUseGreeting", CHKUSEGREETING_ITEM_CHANGED, + (PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_HELPURL, + PropertyNames.PROPERTY_LABEL, + PropertyNames.PROPERTY_NAME, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + PropertyNames.PROPERTY_STATE, + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + PropertyNames.PROPERTY_WIDTH), + (8, HelpIds.getHelpIdString(HID + 29), + self.resources.reschkUseGreeting_value, + "chkUseGreeting", 97, 142, 0, 3, 29, 66), self) + self.lstGreeting = self.insertComboBox( + "lstGreeting", LSTGREETING_ACTION_PERFORMED, + LSTGREETING_ITEM_CHANGED, LSTGREETING_TEXT_CHANGED, + ("Dropdown", + PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_HELPURL, + PropertyNames.PROPERTY_NAME, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + PropertyNames.PROPERTY_WIDTH), + (True, 12, HelpIds.getHelpIdString(HID + 30), + "lstGreeting", 210, 141, 3, 30, 74), self) + self.chkUseFooter = self.insertCheckBox( + "chkUseFooter", CHKUSEFOOTER_ITEM_CHANGED, + (PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_HELPURL, + PropertyNames.PROPERTY_LABEL, + PropertyNames.PROPERTY_NAME, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + PropertyNames.PROPERTY_STATE, + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + PropertyNames.PROPERTY_WIDTH), + (8, HelpIds.getHelpIdString(HID + 31), + self.resources.reschkUseFooter_value, + "chkUseFooter", 97, 158, 0, 3, 31, 212), self) + self.lblLetterNorm = self.insertLabel( + "lblLetterNorm", + (PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_LABEL, + PropertyNames.PROPERTY_MULTILINE, + PropertyNames.PROPERTY_NAME, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + PropertyNames.PROPERTY_WIDTH), + (16, self.resources.reslblLetterNorm_value, True, + "lblLetterNorm", 97, 28, 3, 50, 109)) + self.lblTitle3 = self.insertLabel( + "lblTitle3", + ( + "FontDescriptor", PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_LABEL, + PropertyNames.PROPERTY_MULTILINE, + PropertyNames.PROPERTY_NAME, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + PropertyNames.PROPERTY_WIDTH), + (self.fontDescriptor6, 16, + self.resources.reslblTitle3_value, True, + "lblTitle3", 91, 8, 3, 90, 212)) + + def buildStep4(self): + self.optSenderPlaceholder = self.insertRadioButton( + "optSenderPlaceholder", OPTSENDERPLACEHOLDER_ITEM_CHANGED, + (PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_HELPURL, + PropertyNames.PROPERTY_LABEL, + PropertyNames.PROPERTY_NAME, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + PropertyNames.PROPERTY_WIDTH), + (8, HelpIds.getHelpIdString(HID + 32), + self.resources.resoptSenderPlaceholder_value, + "optSenderPlaceholder", 104, 42, 4, 32, 149), self) + self.optSenderDefine = self.insertRadioButton( + "optSenderDefine", OPTSENDERDEFINE_ITEM_CHANGED, + (PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_HELPURL, + PropertyNames.PROPERTY_LABEL, + PropertyNames.PROPERTY_NAME, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + PropertyNames.PROPERTY_WIDTH), + (8, HelpIds.getHelpIdString(HID + 33), + self.resources.resoptSenderDefine_value, + "optSenderDefine", 104, 54, 4, 33, 149), self) + self.txtSenderName = self.insertTextField( + "txtSenderName", TXTSENDERNAME_TEXT_CHANGED, + (PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_HELPURL, + PropertyNames.PROPERTY_NAME, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + PropertyNames.PROPERTY_WIDTH), + (12, HelpIds.getHelpIdString(HID + 34), + "txtSenderName", 182, 67, 4, 34, 119), self) + self.txtSenderStreet = self.insertTextField( + "txtSenderStreet", TXTSENDERSTREET_TEXT_CHANGED, + (PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_HELPURL, + PropertyNames.PROPERTY_NAME, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + PropertyNames.PROPERTY_WIDTH), + (12, HelpIds.getHelpIdString(HID + 35), + "txtSenderStreet", 182, 81, 4, 35, 119), self) + self.txtSenderPostCode = self.insertTextField( + "txtSenderPostCode", TXTSENDERPOSTCODE_TEXT_CHANGED, + (PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_HELPURL, + PropertyNames.PROPERTY_NAME, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + PropertyNames.PROPERTY_WIDTH), + (12, HelpIds.getHelpIdString(HID + 36), + "txtSenderPostCode", 182, 95, 4, 36, 25), self) + self.txtSenderState = self.insertTextField( + "txtSenderState", TXTSENDERSTATE_TEXT_CHANGED, + (PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_HELPURL, + PropertyNames.PROPERTY_NAME, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + PropertyNames.PROPERTY_WIDTH), + (12, HelpIds.getHelpIdString(HID + 37), + "txtSenderState", 211, 95, 4, 37, 21), self) + self.txtSenderCity = self.insertTextField( + "txtSenderCity", TXTSENDERCITY_TEXT_CHANGED, + (PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_HELPURL, + PropertyNames.PROPERTY_NAME, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + PropertyNames.PROPERTY_WIDTH), + (12, HelpIds.getHelpIdString(HID + 38), + "txtSenderCity", 236, 95, 4, 38, 65), self) + self.optReceiverPlaceholder = self.insertRadioButton( + "optReceiverPlaceholder", OPTRECEIVERPLACEHOLDER_ITEM_CHANGED, + (PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_HELPURL, + PropertyNames.PROPERTY_LABEL, + PropertyNames.PROPERTY_NAME, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + PropertyNames.PROPERTY_WIDTH), + (8, HelpIds.getHelpIdString(HID + 39), + self.resources.resoptReceiverPlaceholder_value, + "optReceiverPlaceholder", 104, 145, 4, 39, 200), self) + self.optReceiverDatabase = self.insertRadioButton( + "optReceiverDatabase", OPTRECEIVERDATABASE_ITEM_CHANGED, + (PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_HELPURL, + PropertyNames.PROPERTY_LABEL, + PropertyNames.PROPERTY_NAME, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + PropertyNames.PROPERTY_WIDTH), + (8, HelpIds.getHelpIdString(HID + 40), + self.resources.resoptReceiverDatabase_value, + "optReceiverDatabase", 104, 157, 4, 40, 200), self) + self.lblSenderAddress = self.insertLabel( + "lblSenderAddress", + (PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_LABEL, + PropertyNames.PROPERTY_NAME, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + PropertyNames.PROPERTY_WIDTH), + (8, self.resources.reslblSenderAddress_value, + "lblSenderAddress", 97, 28, 4, 64, 136)) + self.FixedLine2 = self.insertFixedLine( + "FixedLine2", + (PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_NAME, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + PropertyNames.PROPERTY_WIDTH), + (5, + "FixedLine2", 90, 126, 4, 75, 212)) + self.lblReceiverAddress = self.insertLabel( + "lblReceiverAddress", + (PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_LABEL, + PropertyNames.PROPERTY_NAME, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + PropertyNames.PROPERTY_WIDTH), + (8, self.resources.reslblReceiverAddress_value, + "lblReceiverAddress", 97, 134, 4, 76, 136)) + self.lblSenderName = self.insertLabel( + "lblSenderName", + (PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_LABEL, + PropertyNames.PROPERTY_NAME, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + PropertyNames.PROPERTY_WIDTH), + (8, self.resources.reslblSenderName_value, + "lblSenderName", 113, 69, 4, 77, 68)) + self.lblSenderStreet = self.insertLabel( + "lblSenderStreet", + (PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_LABEL, + PropertyNames.PROPERTY_NAME, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + PropertyNames.PROPERTY_WIDTH), + (8, self.resources.reslblSenderStreet_value, + "lblSenderStreet", 113, 82, 4, 78, 68)) + self.lblPostCodeCity = self.insertLabel( + "lblPostCodeCity", + (PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_LABEL, + PropertyNames.PROPERTY_NAME, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + PropertyNames.PROPERTY_WIDTH), + (8, self.resources.reslblPostCodeCity_value, + "lblPostCodeCity", 113, 97, 4, 79, 68)) + self.lblTitle4 = self.insertLabel( + "lblTitle4", + ( + "FontDescriptor", PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_LABEL, + PropertyNames.PROPERTY_MULTILINE, + PropertyNames.PROPERTY_NAME, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + PropertyNames.PROPERTY_WIDTH), + (self.fontDescriptor6, 16, + self.resources.reslblTitle4_value, True, + "lblTitle4", 91, 8, 4, 92, 212)) + + def buildStep5(self): + self.txtFooter = self.insertTextField( + "txtFooter", TXTFOOTER_TEXT_CHANGED, + (PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_HELPURL, + PropertyNames.PROPERTY_MULTILINE, + PropertyNames.PROPERTY_NAME, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + PropertyNames.PROPERTY_WIDTH), + (47, HelpIds.getHelpIdString(HID + 41), True, + "txtFooter", 97, 40, 5, 41, 203), self) + self.chkFooterNextPages = self.insertCheckBox( + "chkFooterNextPages", CHKFOOTERNEXTPAGES_ITEM_CHANGED, + (PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_HELPURL, + PropertyNames.PROPERTY_LABEL, + PropertyNames.PROPERTY_NAME, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + PropertyNames.PROPERTY_STATE, + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + PropertyNames.PROPERTY_WIDTH), + (8, HelpIds.getHelpIdString(HID + 42), + self.resources.reschkFooterNextPages_value, + "chkFooterNextPages", 97, 92, 0, 5, 42, 202), self) + self.chkFooterPageNumbers = self.insertCheckBox( + "chkFooterPageNumbers", CHKFOOTERPAGENUMBERS_ITEM_CHANGED, + (PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_HELPURL, + PropertyNames.PROPERTY_LABEL, + PropertyNames.PROPERTY_NAME, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + PropertyNames.PROPERTY_STATE, + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + PropertyNames.PROPERTY_WIDTH), + (8, HelpIds.getHelpIdString(HID + 43), + self.resources.reschkFooterPageNumbers_value, + "chkFooterPageNumbers", 97, 106, 0, 5, 43, 201), self) + self.lblFooter = self.insertLabel( + "lblFooter", + ( + "FontDescriptor", PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_LABEL, + PropertyNames.PROPERTY_NAME, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + PropertyNames.PROPERTY_WIDTH), + (self.fontDescriptor5, 8, self.resources.reslblFooter_value, + "lblFooter", 97, 28, 5, 52, 116)) + self.lblTitle5 = self.insertLabel( + "lblTitle5", + ( + "FontDescriptor", PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_LABEL, + PropertyNames.PROPERTY_MULTILINE, + PropertyNames.PROPERTY_NAME, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + PropertyNames.PROPERTY_WIDTH), + (self.fontDescriptor6, 16, + self.resources.reslblTitle5_value, True, + "lblTitle5", 91, 8, 5, 93, 212)) + + def buildStep6(self): + self.txtTemplateName = self.insertTextField( + "txtTemplateName", TXTTEMPLATENAME_TEXT_CHANGED, + (PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_HELPURL, + PropertyNames.PROPERTY_NAME, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + "Text", + PropertyNames.PROPERTY_WIDTH), + (12, HelpIds.getHelpIdString(HID + 44), + "txtTemplateName", 202, 56, 6, 44, + self.resources.restxtTemplateName_value, 100), self) + self.optCreateLetter = self.insertRadioButton( + "optCreateLetter", OPTCREATELETTER_ITEM_CHANGED, + (PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_HELPURL, + PropertyNames.PROPERTY_LABEL, + PropertyNames.PROPERTY_NAME, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + PropertyNames.PROPERTY_WIDTH), + (8, HelpIds.getHelpIdString(HID + 45), + self.resources.resoptCreateLetter_value, + "optCreateLetter", 104, 111, 6, 50, 198), self) + self.optMakeChanges = self.insertRadioButton( + "optMakeChanges", OPTMAKECHANGES_ITEM_CHANGED, + (PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_HELPURL, + PropertyNames.PROPERTY_LABEL, + PropertyNames.PROPERTY_NAME, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + PropertyNames.PROPERTY_WIDTH), + (8, HelpIds.getHelpIdString(HID + 46), + self.resources.resoptMakeChanges_value, + "optMakeChanges", 104, 123, 6, 51, 198), self) + self.lblFinalExplanation1 = self.insertLabel( + "lblFinalExplanation1", + (PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_LABEL, + PropertyNames.PROPERTY_MULTILINE, + PropertyNames.PROPERTY_NAME, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + PropertyNames.PROPERTY_WIDTH), + (26, self.resources.reslblFinalExplanation1_value, True, + "lblFinalExplanation1", 97, 28, 6, 52, 205)) + self.lblProceed = self.insertLabel( + "lblProceed", + (PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_LABEL, + PropertyNames.PROPERTY_NAME, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + PropertyNames.PROPERTY_WIDTH), + (8, self.resources.reslblProceed_value, + "lblProceed", 97, 100, 6, 53, 204)) + self.lblFinalExplanation2 = self.insertLabel( + "lblFinalExplanation2", + (PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_LABEL, + PropertyNames.PROPERTY_MULTILINE, + PropertyNames.PROPERTY_NAME, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + PropertyNames.PROPERTY_WIDTH), + (33, self.resources.reslblFinalExplanation2_value, True, + "lblFinalExplanation2", 104, 145, 6, 54, 199)) + self.ImageControl2 = self.insertImage( + "ImageControl2", + ( + "Border", PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_IMAGEURL, + PropertyNames.PROPERTY_NAME, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + "ScaleImage", + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + PropertyNames.PROPERTY_WIDTH), + (0, 10, + "private:resource/dbu/image/19205", + "ImageControl2", 92, 145, False, 6, 66, 10)) + self.lblTemplateName = self.insertLabel( + "lblTemplateName", + (PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_LABEL, + PropertyNames.PROPERTY_NAME, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + PropertyNames.PROPERTY_WIDTH), + (8, self.resources.reslblTemplateName_value, + "lblTemplateName", 97, 58, 6, 82, 101)) + self.lblTitle6 = self.insertLabel( + "lblTitle6", + ( + "FontDescriptor", PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_LABEL, + PropertyNames.PROPERTY_MULTILINE, + PropertyNames.PROPERTY_NAME, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + PropertyNames.PROPERTY_WIDTH), + (self.fontDescriptor6, 16, + self.resources.reslblTitle6_value, True, + "lblTitle6", 91, 8, 6, 94, 212)) diff --git a/wizards/com/sun/star/wizards/letter/LetterWizardDialogConst.py b/wizards/com/sun/star/wizards/letter/LetterWizardDialogConst.py new file mode 100644 index 000000000..5efa78eea --- /dev/null +++ b/wizards/com/sun/star/wizards/letter/LetterWizardDialogConst.py @@ -0,0 +1,60 @@ +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" +LSTLETTERNORM_ACTION_PERFORMED = None +LSTLETTERNORM_ITEM_CHANGED = "lstLetterNormItemChanged" +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 = "optCreateLetterItemChanged" +OPTMAKECHANGES_ITEM_CHANGED = "optMakeChangesItemChanged" +FILETEMPLATEPATH_TEXT_CHANGED = None +imageURLImageControl1 = None +imageURLImageControl2 = None +imageURLImageControl3 = None +HID = 40768 +HIDMAIN = 40820 diff --git a/wizards/com/sun/star/wizards/letter/LetterWizardDialogImpl.py b/wizards/com/sun/star/wizards/letter/LetterWizardDialogImpl.py new file mode 100644 index 000000000..d24728612 --- /dev/null +++ b/wizards/com/sun/star/wizards/letter/LetterWizardDialogImpl.py @@ -0,0 +1,1278 @@ +import traceback +from LetterWizardDialog import * +from LetterDocument import * +from common.NoValidPathException import * +from common.FileAccess import * +from LocaleCodes import LocaleCodes +from ui.PathSelection import * +from common.Configuration import * +from CGLetterWizard import CGLetterWizard +from ui.event.UnoDataAware import * +from ui.event.RadioDataAware import * +from document.OfficeDocument import OfficeDocument +from ui.XPathSelectionListener import XPathSelectionListener +from text.TextFieldHandler import TextFieldHandler +from com.sun.star.awt.VclWindowPeerAttribute import YES_NO, DEF_NO + +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_ELEMENTS = 3 + RM_SENDERRECEIVER = 4 + RM_FOOTER = 5 + RM_FINALSETTINGS = 6 + + def enterStep(self, OldStep, NewStep): + pass + + def leaveStep(self, OldStep, NewStep): + pass + + def __init__(self, xmsf): + super(LetterWizardDialogImpl, self).__init__(xmsf) + self.xmsf = xmsf + self.mainDA = [] + self.letterDA = [] + self.businessDA = [] + self.bSaveSuccess = False + self.filenameChanged = False + self.BusCompanyLogo = None + self.BusCompanyAddress = None + self.BusCompanyAddressReceiver = None + self.BusFooter = None + self.Norms = [] + self.NormPaths = [] + + @classmethod + def main(self, args): + ConnectStr = \ + "uno:socket,host=localhost,port=2002;urp;StarOffice.ComponentContext" + xLocMSF = None + try: + xLocMSF = Desktop.connect(ConnectStr) + except Exception, e: + traceback.print_exc() + + lw = LetterWizardDialogImpl(xLocMSF) + lw.startWizard(xLocMSF, None) + + def startWizard(self, xMSF, CurPropertyValue): + self.running = True + try: + #Number of steps on WizardDialog + self.nMaxStep = 6 + + #instatiate The Document Frame for the Preview + self.myLetterDoc = LetterDocument(xMSF, self) + + #create the dialog + self.drawNaviBar() + self.buildStep1() + self.buildStep2() + self.buildStep3() + self.buildStep4() + self.buildStep5() + self.buildStep6() + + self.__initializePaths() + self.initializeNorms() + self.initializeSalutation() + self.initializeGreeting() + + #special Control fFrameor setting the save Path: + self.insertPathSelectionControl() + + #load the last used settings + #from the registry and apply listeners to the controls: + self.initConfiguration() + + oL = self.getOfficeLinguistic() + self.myConfig.cp_BusinessLetter.cp_Norm = oL + self.myConfig.cp_PrivateOfficialLetter.cp_Norm = oL + self.myConfig.cp_PrivateLetter.cp_Norm = oL + self.initializeTemplates(xMSF) + 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] + + self.updateUI() + 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, 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) + try: + fileAccess = FileAccess(self.xMSF) + self.sPath = self.myPathSelection.getSelectedPath() + if self.sPath == "": + self.myPathSelection.triggerPathPicker() + self.sPath = self.myPathSelection.getSelectedPath() + + self.sPath = fileAccess.getURL(self.sPath) + if not self.filenameChanged: + if fileAccess.exists(self.sPath, True): + answer = SystemDialog.showMessageBox( + self.xMSF, "MessBox", YES_NO + DEF_NO, + self.resources.resOverwriteWarning, + self.xUnoDialog.Peer) + if answer == 3: + 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, TextDocument.xTextDocument, + self.sPath, "writer8_template") + if self.bSaveSuccess: + self.saveConfiguration() + xIH = self.xMSF.createInstance( + "com.sun.star.comp.uui.UUIInteractionHandler") + loadValues = 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) + myViewHandler = ViewHandler(self.xMSF, oDoc) + myViewHandler.setViewSetting("ZoomType", OPTIMAL) + else: + pass + + except Exception, e: + traceback.print_exc() + finally: + self.xUnoDialog.endExecute() + self.running = False + + return True; + + def closeDocument(self): + try: + xCloseable = self.myLetterDoc.xFrame + xCloseable.close(False) + except CloseVetoException, e: + traceback.print_exc() + + def optBusinessLetterItemChanged(self): + DataAware.setDataObjects( + self.letterDA, self.myConfig.cp_BusinessLetter, True) + self.setControlProperty( + "lblBusinessStyle", PropertyNames.PROPERTY_ENABLED, True) + self.setControlProperty( + "lstBusinessStyle", PropertyNames.PROPERTY_ENABLED, True) + self.setControlProperty( + "chkBusinessPaper", PropertyNames.PROPERTY_ENABLED, True) + self.setControlProperty( + "lblPrivOfficialStyle", PropertyNames.PROPERTY_ENABLED, False) + self.setControlProperty( + "lstPrivOfficialStyle", PropertyNames.PROPERTY_ENABLED, False) + self.setControlProperty( + "lblPrivateStyle", PropertyNames.PROPERTY_ENABLED, False) + self.setControlProperty( + "lstPrivateStyle", PropertyNames.PROPERTY_ENABLED, False) + self.lstBusinessStyleItemChanged() + self.enableSenderReceiver() + self.setPossibleFooter(True) + if self.myPathSelection.xSaveTextBox.Text.lower() == "": + self.myPathSelection.initializePath() + + def optPrivOfficialLetterItemChanged(self): + DataAware.setDataObjects( + self.letterDA, self.myConfig.cp_PrivateOfficialLetter, True) + self.setControlProperty( + "lblBusinessStyle", PropertyNames.PROPERTY_ENABLED, False) + self.setControlProperty( + "lstBusinessStyle", PropertyNames.PROPERTY_ENABLED, False) + self.setControlProperty( + "chkBusinessPaper", PropertyNames.PROPERTY_ENABLED, False) + self.setControlProperty( + "lblPrivOfficialStyle", PropertyNames.PROPERTY_ENABLED, True) + self.setControlProperty( + "lstPrivOfficialStyle", PropertyNames.PROPERTY_ENABLED, True) + self.setControlProperty( + "lblPrivateStyle", PropertyNames.PROPERTY_ENABLED, False) + self.setControlProperty( + "lstPrivateStyle", PropertyNames.PROPERTY_ENABLED, False) + self.lstPrivOfficialStyleItemChanged() + self.disableBusinessPaper() + self.enableSenderReceiver() + self.setPossibleFooter(True) + if self.myPathSelection.xSaveTextBox.Text.lower() == "": + self.myPathSelection.initializePath() + + def optPrivateLetterItemChanged(self): + DataAware.setDataObjects( + self.letterDA, self.myConfig.cp_PrivateLetter, True) + self.setControlProperty( + "lblBusinessStyle", PropertyNames.PROPERTY_ENABLED, False) + self.setControlProperty( + "lstBusinessStyle", PropertyNames.PROPERTY_ENABLED, False) + self.setControlProperty( + "chkBusinessPaper", PropertyNames.PROPERTY_ENABLED, False) + self.setControlProperty( + "lblPrivOfficialStyle", PropertyNames.PROPERTY_ENABLED, False) + self.setControlProperty( + "lstPrivOfficialStyle", PropertyNames.PROPERTY_ENABLED, False) + self.setControlProperty( + "lblPrivateStyle", PropertyNames.PROPERTY_ENABLED, True) + self.setControlProperty( + "lstPrivateStyle", PropertyNames.PROPERTY_ENABLED, True) + self.lstPrivateStyleItemChanged() + self.disableBusinessPaper() + self.disableSenderReceiver() + self.setPossibleFooter(False) + if self.myPathSelection.xSaveTextBox.Text.lower() == "": + self.myPathSelection.initializePath() + + def optSenderPlaceholderItemChanged(self): + self.setControlProperty( + "lblSenderName", PropertyNames.PROPERTY_ENABLED, False) + self.setControlProperty( + "lblSenderStreet", PropertyNames.PROPERTY_ENABLED, False) + self.setControlProperty( + "lblPostCodeCity", PropertyNames.PROPERTY_ENABLED, False) + self.setControlProperty( + "txtSenderName", PropertyNames.PROPERTY_ENABLED, False) + self.setControlProperty( + "txtSenderStreet", PropertyNames.PROPERTY_ENABLED, False) + self.setControlProperty( + "txtSenderPostCode", PropertyNames.PROPERTY_ENABLED, False) + self.setControlProperty( + "txtSenderState", PropertyNames.PROPERTY_ENABLED, False) + self.setControlProperty( + "txtSenderCity", PropertyNames.PROPERTY_ENABLED, False) + self.myLetterDoc.fillSenderWithUserData() + + def optSenderDefineItemChanged(self): + self.setControlProperty( + "lblSenderName", PropertyNames.PROPERTY_ENABLED, True) + self.setControlProperty( + "lblSenderStreet", PropertyNames.PROPERTY_ENABLED, True) + self.setControlProperty( + "lblPostCodeCity", PropertyNames.PROPERTY_ENABLED, True) + self.setControlProperty( + "txtSenderName", PropertyNames.PROPERTY_ENABLED, True) + self.setControlProperty( + "txtSenderStreet", PropertyNames.PROPERTY_ENABLED, True) + self.setControlProperty( + "txtSenderPostCode", PropertyNames.PROPERTY_ENABLED, True) + self.setControlProperty( + "txtSenderState", PropertyNames.PROPERTY_ENABLED, True) + self.setControlProperty( + "txtSenderCity", PropertyNames.PROPERTY_ENABLED, True) + self.txtSenderNameTextChanged() + self.txtSenderStreetTextChanged() + self.txtSenderPostCodeTextChanged() + self.txtSenderStateTextChanged() + self.txtSenderCityTextChanged() + + def optCreateLetterItemChanged(self): + self.bEditTemplate = False + + def optMakeChangesItemChanged(self): + self.bEditTemplate = True + + def optReceiverPlaceholderItemChanged(self): + OfficeDocument.attachEventCall( + TextDocument.xTextDocument, "OnNew", "StarBasic", + "macro:///Template.Correspondence.Placeholder()") + + def optReceiverDatabaseItemChanged(self): + OfficeDocument.attachEventCall( + TextDocument.xTextDocument, "OnNew", "StarBasic", + "macro:///Template.Correspondence.Database()") + + def lstBusinessStyleItemChanged(self): + TextDocument.xTextDocument = \ + self.myLetterDoc.loadAsPreview( + self.BusinessFiles[1][self.lstBusinessStyle.SelectedItemPos], + False) + self.myLetterDoc.xTextDocument.lockControllers() + self.initializeElements() + self.chkBusinessPaperItemChanged() + self.setElements(False) + self.myLetterDoc.xTextDocument.unlockControllers() + self.activate() + + def lstPrivOfficialStyleItemChanged(self): + TextDocument.xTextDocument = \ + self.myLetterDoc.loadAsPreview( + self.OfficialFiles[1][self.lstPrivOfficialStyle.SelectedItemPos], + False) + self.myLetterDoc.xTextDocument.lockControllers() + self.initializeElements() + self.setPossibleSenderData(True) + self.setElements(False) + self.myLetterDoc.xTextDocument.unlockControllers() + self.activate() + + def lstPrivateStyleItemChanged(self): + TextDocument.xTextDocument = \ + self.myLetterDoc.loadAsPreview( + self.PrivateFiles[1][self.lstPrivateStyle.getSelectedItemPos()], + False) + self.myLetterDoc.xTextDocument.lockControllers() + self.initializeElements() + self.setElements(True) + self.myLetterDoc.xTextDocument.unlockControllers() + self.activate() + + 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( + "Company Logo", int(self.numLogoWidth.Value * 1000), + int(self.numLogoHeight.Value * 1000), + int(self.numLogoX.Value * 1000), + self.numLogoY.Value * 1000) + self.setControlProperty( + "numLogoHeight", PropertyNames.PROPERTY_ENABLED, True) + self.setControlProperty( + "lblCompanyLogoHeight", PropertyNames.PROPERTY_ENABLED, True) + self.setControlProperty( + "numLogoWidth", PropertyNames.PROPERTY_ENABLED, True) + self.setControlProperty( + "lblCompanyLogoWidth", PropertyNames.PROPERTY_ENABLED, True) + self.setControlProperty( + "numLogoX", PropertyNames.PROPERTY_ENABLED, True) + self.setControlProperty( + "lblCompanyLogoX", PropertyNames.PROPERTY_ENABLED, True) + self.setControlProperty( + "numLogoY", PropertyNames.PROPERTY_ENABLED, True) + self.setControlProperty( + "lblCompanyLogoY", PropertyNames.PROPERTY_ENABLED, True) + self.setPossibleLogo(False) + else: + if self.BusCompanyLogo != None: + self.BusCompanyLogo.removeFrame() + + self.setControlProperty( + "numLogoHeight", PropertyNames.PROPERTY_ENABLED, False) + self.setControlProperty( + "lblCompanyLogoHeight", PropertyNames.PROPERTY_ENABLED, False) + self.setControlProperty( + "numLogoWidth", PropertyNames.PROPERTY_ENABLED, False) + self.setControlProperty( + "lblCompanyLogoWidth", PropertyNames.PROPERTY_ENABLED, False) + self.setControlProperty( + "numLogoX", PropertyNames.PROPERTY_ENABLED, False) + self.setControlProperty( + "lblCompanyLogoX", PropertyNames.PROPERTY_ENABLED, False) + self.setControlProperty( + "numLogoY", PropertyNames.PROPERTY_ENABLED, False) + self.setControlProperty( + "lblCompanyLogoY", PropertyNames.PROPERTY_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( + "Company Address", int(self.numAddressWidth.Value * 1000), + int(self.numAddressHeight.Value * 1000), + int(self.numAddressX.Value * 1000), + int(self.numAddressY.Value * 1000)) + self.setControlProperty( + "self.numAddressHeight", PropertyNames.PROPERTY_ENABLED, True) + self.setControlProperty( + "lblCompanyAddressHeight", PropertyNames.PROPERTY_ENABLED, True) + self.setControlProperty( + "self.numAddressWidth", PropertyNames.PROPERTY_ENABLED, True) + self.setControlProperty( + "lblCompanyAddressWidth", PropertyNames.PROPERTY_ENABLED, True) + self.setControlProperty( + "self.numAddressX", PropertyNames.PROPERTY_ENABLED, True) + self.setControlProperty( + "lblCompanyAddressX", PropertyNames.PROPERTY_ENABLED, True) + self.setControlProperty( + "self.numAddressY", PropertyNames.PROPERTY_ENABLED, True) + self.setControlProperty( + "lblCompanyAddressY", PropertyNames.PROPERTY_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 != None: + self.BusCompanyAddress.removeFrame() + + self.setControlProperty( + "self.numAddressHeight", PropertyNames.PROPERTY_ENABLED, False) + self.setControlProperty( + "lblCompanyAddressHeight", PropertyNames.PROPERTY_ENABLED, False) + self.setControlProperty( + "self.numAddressWidth", PropertyNames.PROPERTY_ENABLED, False) + self.setControlProperty( + "lblCompanyAddressWidth", PropertyNames.PROPERTY_ENABLED, False) + self.setControlProperty( + "self.numAddressX", PropertyNames.PROPERTY_ENABLED, False) + self.setControlProperty( + "lblCompanyAddressX", PropertyNames.PROPERTY_ENABLED, False) + self.setControlProperty( + "self.numAddressY", PropertyNames.PROPERTY_ENABLED, False) + self.setControlProperty( + "lblCompanyAddressY", PropertyNames.PROPERTY_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 = TextDocument.getFrameByName( + "Receiver Address", TextDocument.xTextDocument) + iFrameWidth = int(Helper.getUnoPropertyValue( + xReceiverFrame, PropertyNames.PROPERTY_WIDTH)) + iFrameX = int(Helper.getUnoPropertyValue( + xReceiverFrame, "HoriOrientPosition")) + iFrameY = int(Helper.getUnoPropertyValue( + xReceiverFrame, "VertOrientPosition")) + iReceiverHeight = int(0.5 * 1000) + self.BusCompanyAddressReceiver = BusinessPaperObject( + " ", iFrameWidth, iReceiverHeight, iFrameX, + iFrameY - iReceiverHeight) + self.setPossibleAddressReceiver(False) + except NoSuchElementException: + traceback.print_exc() + except WrappedTargetException: + traceback.print_exc() + + if self.chkPaperCompanyAddress.State != 0: + self.setPossibleSenderData(False) + + else: + if self.BusCompanyAddressReceiver != 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( + "Footer", self.myLetterDoc.DocSize.Width, + int(self.numFooterHeight.Value * 1000), 0, + int(self.myLetterDoc.DocSize.Height - \ + (self.numFooterHeight.Value * 1000))) + self.setControlProperty( + "self.numFooterHeight", PropertyNames.PROPERTY_ENABLED, True) + self.setControlProperty( + "lblFooterHeight", PropertyNames.PROPERTY_ENABLED, True) + self.setPossibleFooter(False) + else: + if self.BusFooter != None: + self.BusFooter.removeFrame() + + self.setControlProperty( + "self.numFooterHeight", PropertyNames.PROPERTY_ENABLED, False) + self.setControlProperty( + "lblFooterHeight", PropertyNames.PROPERTY_ENABLED, False) + self.setPossibleFooter(True) + + def chkUseLogoItemChanged(self): + try: + if self.myLetterDoc.hasElement("Company Logo"): + logostatus = \ + bool(self.getControlProperty( + "chkUseLogo", PropertyNames.PROPERTY_ENABLED)) \ + and (self.chkUseLogo.State != 0) + self.myLetterDoc.switchElement( + "Company Logo", logostatus) + except IllegalArgumentException, e: + traceback.print_exc() + + def chkUseAddressReceiverItemChanged(self): + try: + if self.myLetterDoc.hasElement("Sender Address Repeated"): + rstatus = \ + bool(self.getControlProperty( + "chkUseAddressReceiver", + PropertyNames.PROPERTY_ENABLED)) \ + and (self.chkUseAddressReceiver.State != 0) + self.myLetterDoc.switchElement( + "Sender Address Repeated", rstatus) + + except IllegalArgumentException, e: + 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.getControlProperty( + "chkUseFooter", PropertyNames.PROPERTY_ENABLED)) + if self.chkFooterNextPages.State != 0: + self.myLetterDoc.switchFooter( + "First Page", False, self.chkFooterPageNumbers.State != 0, + 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) + Helper.setUnoPropertyValue( + BPaperItem, PropertyNames.PROPERTY_ENABLED, bFooterPossible) + except Exception, exception: + traceback.print_exc() + + def chkFooterNextPagesItemChanged(self): + self.chkUseFooterItemChanged() + + def chkFooterPageNumbersItemChanged(self): + self.chkUseFooterItemChanged() + + def setPossibleFooter(self, bState): + self.setControlProperty( + "chkUseFooter", PropertyNames.PROPERTY_ENABLED, bState) + self.chkUseFooterItemChanged() + + def setPossibleAddressReceiver(self, bState): + if self.myLetterDoc.hasElement("Sender Address Repeated"): + self.setControlProperty( + "chkUseAddressReceiver", PropertyNames.PROPERTY_ENABLED, bState) + self.chkUseAddressReceiverItemChanged() + + def setPossibleLogo(self, bState): + if self.myLetterDoc.hasElement("Company Logo"): + self.setControlProperty( + "chkUseLogo", PropertyNames.PROPERTY_ENABLED, bState) + self.chkUseLogoItemChanged() + + def txtFooterTextChanged(self): + self.chkUseFooterItemChanged() + + def txtSenderNameTextChanged(self): + myFieldHandler = TextFieldHandler( + self.myLetterDoc.xMSF, TextDocument.xTextDocument) + myFieldHandler.changeUserFieldContent( + "Company", self.txtSenderName.Text) + + def txtSenderStreetTextChanged(self): + myFieldHandler = TextFieldHandler( + self.myLetterDoc.xMSF, TextDocument.xTextDocument) + myFieldHandler.changeUserFieldContent( + "Street", self.txtSenderStreet.Text) + + def txtSenderCityTextChanged(self): + myFieldHandler = TextFieldHandler( + self.myLetterDoc.xMSF, TextDocument.xTextDocument) + myFieldHandler.changeUserFieldContent( + "City", self.txtSenderCity.Text) + + def txtSenderPostCodeTextChanged(self): + myFieldHandler = TextFieldHandler( + self.myLetterDoc.xMSF, TextDocument.xTextDocument) + myFieldHandler.changeUserFieldContent( + "PostCode", self.txtSenderPostCode.Text) + + def txtSenderStateTextChanged(self): + myFieldHandler = TextFieldHandler( + self.myLetterDoc.xMSF, TextDocument.xTextDocument) + myFieldHandler.changeUserFieldContent( + PropertyNames.PROPERTY_STATE, self.txtSenderState.Text) + + def txtTemplateNameTextChanged(self): + xDocProps = TextDocument.xTextDocument.DocumentProperties + TitleName = self.txtTemplateName.Text + xDocProps.Title = TitleName + + def chkUseSalutationItemChanged(self): + self.myLetterDoc.switchUserField( + "Salutation", self.lstSalutation.Text, + self.chkUseSalutation.State != 0) + self.setControlProperty( + "lstSalutation", PropertyNames.PROPERTY_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.setControlProperty( + "lstGreeting", PropertyNames.PROPERTY_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 getOfficeLinguistic(self): + oL = 0 + found = False + OfficeLinguistic = Configuration.getOfficeLinguistic(self.xMSF) + i = 0 + for i in xrange(len(self.Norms)): + if self.Norms[i].lower() == OfficeLinguistic.lower(): + oL = i + found = True + break + + if not found: + for i in xrange(len(self.Norms)): + if self.Norms[i].lower() == "en-US".lower(): + oL = i + found = True + break + return oL + + def setPossibleSenderData(self, bState): + self.setControlProperty( + "optSenderDefine", PropertyNames.PROPERTY_ENABLED, bState) + self.setControlProperty( + "optSenderPlaceholder", PropertyNames.PROPERTY_ENABLED, bState) + self.setControlProperty( + "lblSenderAddress", PropertyNames.PROPERTY_ENABLED, bState) + if not bState: + self.setControlProperty( + "txtSenderCity", PropertyNames.PROPERTY_ENABLED, bState) + self.setControlProperty( + "txtSenderName", PropertyNames.PROPERTY_ENABLED, bState) + self.setControlProperty( + "txtSenderPostCode", PropertyNames.PROPERTY_ENABLED, bState) + self.setControlProperty( + "txtSenderStreet", PropertyNames.PROPERTY_ENABLED, bState) + self.setControlProperty( + "txtSenderCity", PropertyNames.PROPERTY_ENABLED, bState) + self.setControlProperty( + "txtSenderState", PropertyNames.PROPERTY_ENABLED, bState) + self.setControlProperty( + "lblSenderName", PropertyNames.PROPERTY_ENABLED, bState) + self.setControlProperty( + "lblSenderStreet", PropertyNames.PROPERTY_ENABLED, bState) + self.setControlProperty( + "lblPostCodeCity", PropertyNames.PROPERTY_ENABLED, bState) + + def enableSenderReceiver(self): + BPaperItem = self.getRoadmapItemByID( + LetterWizardDialogImpl.RM_SENDERRECEIVER) + Helper.setUnoPropertyValue( + BPaperItem, PropertyNames.PROPERTY_ENABLED, True) + + def disableSenderReceiver(self): + BPaperItem = self.getRoadmapItemByID( + LetterWizardDialogImpl.RM_SENDERRECEIVER) + Helper.setUnoPropertyValue( + BPaperItem, PropertyNames.PROPERTY_ENABLED, False) + + def enableBusinessPaper(self): + try: + BPaperItem = self.getRoadmapItemByID( + LetterWizardDialogImpl.RM_BUSINESSPAPER) + Helper.setUnoPropertyValue( + BPaperItem, PropertyNames.PROPERTY_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) + Helper.setUnoPropertyValue( + BPaperItem, PropertyNames.PROPERTY_ENABLED, False) + if self.BusCompanyLogo != None: + self.BusCompanyLogo.removeFrame() + + if self.BusCompanyAddress != None: + self.BusCompanyAddress.removeFrame() + + if self.BusFooter != None: + self.BusFooter.removeFrame() + + if self.BusCompanyAddressReceiver != 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 lstLetterNormItemChanged(self): + sCurrentNorm = self.Norms[getCurrentLetter().cp_Norm] + initializeTemplates(xMSF) + if self.optBusinessLetter.State: + self.lstBusinessStyleItemChanged() + + if optPrivOfficialLetter.State: + self.lstPrivOfficialStyleItemChanged() + + if optPrivateLetter.State: + self.lstPrivateStyleItemChanged() + + def initializeSalutation(self): + self.setControlProperty( + "lstSalutation", "StringItemList", + self.resources.SalutationLabels) + + def initializeGreeting(self): + self.setControlProperty( + "lstGreeting", "StringItemList", self.resources.GreetingLabels) + + def initializeNorms(self): + lc = LocaleCodes(self.xmsf) + allLocales = lc.getIDs() + nameList = [] + sLetterSubPath = "/wizard/letter/" + try: + self.sTemplatePath = \ + FileAccess.deleteLastSlashfromUrl(self.sTemplatePath) + nuString = \ + self.sTemplatePath[:self.sTemplatePath.rfind("/")] + "/" + sMainPath = FileAccess.deleteLastSlashfromUrl(nuString) + self.sLetterPath = sMainPath + sLetterSubPath + xInterface = \ + self.xmsf.createInstance("com.sun.star.ucb.SimpleFileAccess") + nameList = xInterface.getFolderContents(self.sLetterPath, True) + except Exception, e: + traceback.print_exc() + + found = False + cIsoCode = "" + MSID = "" + + for i in nameList: + found = False + cIsoCode = FileAccess.getFilename(i) + for j in allLocales: + aLang = j.split(";") + if cIsoCode.lower() == aLang[1].lower(): + MSID = aLang[2] + found = True + break + + if not found: + for j in allLocales: + aLang = j.split(";") + if cIsoCode.lower() == aLang[1][:2]: + MSID = aLang[2] + found = True + break + + if found: + self.Norms.append(cIsoCode) + self.NormPaths.append(i) + #LanguageLabelsVector.add(lc.getLanguageString(MSID)) + + #COMMENTED + #LanguageLabels = [LanguageLabelsVector.size()] + #LanguageLabelsVector.toArray(LanguageLabels) + #self.setControlProperty( + # "lstLetterNorm", "StringItemList", LanguageLabels) + + def getCurrentLetter(self): + if self.myConfig.cp_LetterType == 0: + return self.myConfig.cp_BusinessLetter + elif self.myConfig.cp_LetterType == 1: + return self.myConfig.cp_PrivateOfficialLetter + elif self.myConfig.cp_LetterType == 2: + return self.myConfig.cp_PrivateLetter + else: + return None + + def __initializePaths(self): + try: + self.sTemplatePath = \ + FileAccess.getOfficePath2( + self.xMSF, "Template", "share", "/wizard") + self.sUserTemplatePath = \ + FileAccess.getOfficePath2(self.xMSF, "Template", "user", "") + self.sBitmapPath = \ + FileAccess.combinePaths( + self.xMSF, self.sTemplatePath, "/../wizard/bitmap") + except NoValidPathException, e: + traceback.print_exc() + + def initializeTemplates(self, xMSF): + self.sCurrentNorm = self.Norms[self.getCurrentLetter().cp_Norm] + sLetterPath = self.NormPaths[self.getCurrentLetter().cp_Norm] + self.BusinessFiles = \ + FileAccess.getFolderTitles(xMSF, "bus", sLetterPath) + self.OfficialFiles = \ + FileAccess.getFolderTitles(xMSF, "off", sLetterPath) + self.PrivateFiles = \ + FileAccess.getFolderTitles(xMSF, "pri", sLetterPath) + self.setControlProperty( + "lstBusinessStyle", "StringItemList", + tuple(self.BusinessFiles[0])) + self.setControlProperty( + "lstPrivOfficialStyle", "StringItemList", + tuple(self.OfficialFiles[0])) + self.setControlProperty( + "lstPrivateStyle", "StringItemList", + tuple(self.PrivateFiles[0])) + self.setControlProperty( + "lstBusinessStyle", "SelectedItems", (0,)) + self.setControlProperty( + "lstPrivOfficialStyle", "SelectedItems", (0,)) + self.setControlProperty( + "lstPrivateStyle", "SelectedItems", (0,)) + return True + + def initializeElements(self): + self.setControlProperty( + "chkUseLogo", PropertyNames.PROPERTY_ENABLED, + self.myLetterDoc.hasElement("Company Logo")) + self.setControlProperty( + "chkUseBendMarks", PropertyNames.PROPERTY_ENABLED, + self.myLetterDoc.hasElement("Bend Marks")) + self.setControlProperty( + "chkUseAddressReceiver", PropertyNames.PROPERTY_ENABLED, + self.myLetterDoc.hasElement("Sender Address Repeated")) + self.setControlProperty( + "chkUseSubject", PropertyNames.PROPERTY_ENABLED, + self.myLetterDoc.hasElement("Subject Line")) + self.setControlProperty( + "chkUseSigns", PropertyNames.PROPERTY_ENABLED, + self.myLetterDoc.hasElement("Letter Signs")) + self.myLetterDoc.updateDateFields() + + def setConfiguration(self): + if self.optBusinessLetter.State: + self.optBusinessLetterItemChanged() + + if self.optPrivOfficialLetter.State: + self.optPrivOfficialLetterItemChanged() + + if self.optPrivateLetter.State: + self.optPrivateLetterItemChanged() + + 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.optCreateLetterItemChanged() + + if self.optMakeChanges.State: + self.optMakeChangesItemChanged() + + def insertRoadmap(self): + self.addRoadmap() + i = 0 + i = self.insertRoadmapItem( + 0, True, + self.resources.RoadmapLabels[LetterWizardDialogImpl.RM_TYPESTYLE -1], + LetterWizardDialogImpl.RM_TYPESTYLE) + i = self.insertRoadmapItem( + i, False, + self.resources.RoadmapLabels[LetterWizardDialogImpl.RM_BUSINESSPAPER - 1], + LetterWizardDialogImpl.RM_BUSINESSPAPER) + i = self.insertRoadmapItem( + i, True, + self.resources.RoadmapLabels[LetterWizardDialogImpl.RM_ELEMENTS - 1], + LetterWizardDialogImpl.RM_ELEMENTS) + i = self.insertRoadmapItem( + i, True, + self.resources.RoadmapLabels[LetterWizardDialogImpl.RM_SENDERRECEIVER - 1], + LetterWizardDialogImpl.RM_SENDERRECEIVER) + i = self.insertRoadmapItem( + i, False, + self.resources.RoadmapLabels[LetterWizardDialogImpl.RM_FOOTER -1], + LetterWizardDialogImpl.RM_FOOTER) + i = self.insertRoadmapItem( + i, True, + self.resources.RoadmapLabels[LetterWizardDialogImpl.RM_FINALSETTINGS - 1], + LetterWizardDialogImpl.RM_FINALSETTINGS) + self.setRoadmapInteractive(True) + self.setRoadmapComplete(True) + self.setCurrentRoadmapItemID(1) + + class myPathSelectionListener(XPathSelectionListener): + + def validatePath(self): + if self.myPathSelection.usedPathPicker: + self.filenameChanged = True + + self.myPathSelection.usedPathPicker = False + + 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.myPathSelectionListener()) + + def initConfiguration(self): + try: + self.myConfig = CGLetterWizard() + root = Configuration.getConfigurationRoot( + self.xMSF, "/org.openoffice.Office.Writer/Wizards/Letter", + False) + self.myConfig.readConfiguration(root, "cp_") + self.mainDA.append( + RadioDataAware.attachRadioButtons( + self.myConfig, "cp_LetterType", + (self.optBusinessLetter, self.optPrivOfficialLetter, + self.optPrivateLetter), True)) + self.mainDA.append( + UnoDataAware.attachListBox( + self.myConfig.cp_BusinessLetter, "cp_Style", + self.lstBusinessStyle, True)) + self.mainDA.append( + UnoDataAware.attachListBox( + self.myConfig.cp_PrivateOfficialLetter, "cp_Style", + self.lstPrivOfficialStyle, True)) + self.mainDA.append( + UnoDataAware.attachListBox( + self.myConfig.cp_PrivateLetter, "cp_Style", + self.lstPrivateStyle, True)) + self.mainDA.append( + UnoDataAware.attachCheckBox( + self.myConfig.cp_BusinessLetter, "cp_BusinessPaper", + self.chkBusinessPaper, True)) + cgl = self.myConfig.cp_BusinessLetter + cgpl = self.myConfig.cp_BusinessLetter.cp_CompanyLogo + cgpa = self.myConfig.cp_BusinessLetter.cp_CompanyAddress + self.businessDA.append( + UnoDataAware.attachCheckBox( + cgpl, "cp_Display", self.chkPaperCompanyLogo, True)) + self.businessDA.append( + UnoDataAware.attachNumericControl( + cgpl, "cp_Width", self.numLogoWidth, True)) + self.businessDA.append( + UnoDataAware.attachNumericControl( + cgpl, "cp_Height", self.numLogoHeight, True)) + self.businessDA.append( + UnoDataAware.attachNumericControl( + cgpl, "cp_X", self.numLogoX, True)) + self.businessDA.append( + UnoDataAware.attachNumericControl( + cgpl, "cp_Y", self.numLogoY, True)) + self.businessDA.append( + UnoDataAware.attachCheckBox( + cgpa, "cp_Display", self.chkPaperCompanyAddress, True)) + self.businessDA.append( + UnoDataAware.attachNumericControl( + cgpa, "cp_Width", self.numAddressWidth, True)) + self.businessDA.append( + UnoDataAware.attachNumericControl( + cgpa, "cp_Height", self.numAddressHeight, True)) + self.businessDA.append( + UnoDataAware.attachNumericControl( + cgpa, "cp_X", self.numAddressX, True)) + self.businessDA.append( + UnoDataAware.attachNumericControl( + cgpa, "cp_Y", self.numAddressY, True)) + self.businessDA.append( + UnoDataAware.attachCheckBox( + cgl, "cp_PaperCompanyAddressReceiverField", + self.chkCompanyReceiver, True)) + self.businessDA.append( + UnoDataAware.attachCheckBox( + cgl, "cp_PaperFooter", self.chkPaperFooter, True)) + self.businessDA.append( + UnoDataAware.attachNumericControl( + cgl, "cp_PaperFooterHeight", self.numFooterHeight, True)) + self.businessDA.append( + UnoDataAware.attachListBox( + cgl, "cp_Norm", self.lstLetterNorm, True)) + self.businessDA.append( + UnoDataAware.attachCheckBox( + cgl, "cp_PrintCompanyLogo", self.chkUseLogo, True)) + self.businessDA.append( + UnoDataAware.attachCheckBox( + cgl, "cp_PrintCompanyAddressReceiverField", + self.chkUseAddressReceiver, True)) + self.businessDA.append( + UnoDataAware.attachCheckBox( + cgl, "cp_PrintLetterSigns", self.chkUseSigns, True)) + self.businessDA.append( + UnoDataAware.attachCheckBox( + cgl, "cp_PrintSubjectLine", self.chkUseSubject, True)) + self.businessDA.append( + UnoDataAware.attachCheckBox( + cgl, "cp_PrintSalutation", self.chkUseSalutation, True)) + self.businessDA.append( + UnoDataAware.attachCheckBox( + cgl, "cp_PrintBendMarks", self.chkUseBendMarks, True)) + self.businessDA.append( + UnoDataAware.attachCheckBox( + cgl, "cp_PrintGreeting", self.chkUseGreeting, True)) + self.businessDA.append( + UnoDataAware.attachCheckBox( + cgl, "cp_PrintFooter", self.chkUseFooter, True)) + self.businessDA.append( + UnoDataAware.attachEditControl( + cgl, "cp_Salutation", self.lstSalutation, True)) + self.businessDA.append( + UnoDataAware.attachEditControl( + cgl, "cp_Greeting", self.lstGreeting, True)) + self.letterDA.append(RadioDataAware.attachRadioButtons( + cgl, "cp_SenderAddressType", + (self.optSenderDefine, self.optSenderPlaceholder), True)) + self.businessDA.append( + UnoDataAware.attachEditControl( + cgl, "cp_SenderCompanyName", self.txtSenderName, True)) + self.businessDA.append( + UnoDataAware.attachEditControl( + cgl, "cp_SenderStreet", self.txtSenderStreet, True)) + self.businessDA.append( + UnoDataAware.attachEditControl( + cgl, "cp_SenderPostCode", self.txtSenderPostCode, True)) + self.businessDA.append( + UnoDataAware.attachEditControl( + cgl, "cp_SenderState", self.txtSenderState, True)) + self.businessDA.append( + UnoDataAware.attachEditControl( + cgl, "cp_SenderCity", self.txtSenderCity, True)) + self.letterDA.append(RadioDataAware.attachRadioButtons( + cgl, "cp_ReceiverAddressType", + (self.optReceiverDatabase, self.optReceiverPlaceholder), + True)) + self.businessDA.append( + UnoDataAware.attachEditControl( + cgl, "cp_Footer", self.txtFooter, True)) + self.businessDA.append( + UnoDataAware.attachCheckBox( + cgl, "cp_FooterOnlySecondPage", + self.chkFooterNextPages, True)) + self.businessDA.append( + UnoDataAware.attachCheckBox( + cgl, "cp_FooterPageNumbers", + self.chkFooterPageNumbers, True)) + self.letterDA.append(RadioDataAware.attachRadioButtons( + cgl, "cp_CreationType", + (self.optCreateLetter, self.optMakeChanges), True)) + self.businessDA.append( + UnoDataAware.attachEditControl( + cgl, "cp_TemplateName", self.txtTemplateName, True)) + self.businessDA.append( + UnoDataAware.attachEditControl( + cgl, "cp_TemplatePath", self.myPathSelection.xSaveTextBox, True)) + except Exception, exception: + traceback.print_exc() + + def updateUI(self): + UnoDataAware.updateUIs(self.mainDA) + UnoDataAware.updateUIs(self.letterDA) + UnoDataAware.updateUIs(self.businessDA) + + 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, e: + traceback.print_exc() diff --git a/wizards/com/sun/star/wizards/letter/LetterWizardDialogResources.py b/wizards/com/sun/star/wizards/letter/LetterWizardDialogResources.py new file mode 100644 index 000000000..d25c0c265 --- /dev/null +++ b/wizards/com/sun/star/wizards/letter/LetterWizardDialogResources.py @@ -0,0 +1,219 @@ +from common.Resource import Resource + +class LetterWizardDialogResources(Resource): + UNIT_NAME = "dbwizres" + MODULE_NAME = "dbw" + RID_LETTERWIZARDDIALOG_START = 3000 + RID_LETTERWIZARDGREETING_START = 3080 + RID_LETTERWIZARDSALUTATION_START = 3090 + RID_LETTERWIZARDROADMAP_START = 3100 + RID_LETTERWIZARDLANGUAGE_START = 3110 + RID_RID_COMMON_START = 500 + + def __init__(self, xmsf): + super(LetterWizardDialogResources,self).__init__( + xmsf, LetterWizardDialogResources.MODULE_NAME) + + self.RoadmapLabels = () + self.SalutationLabels = () + self.GreetingLabels = () + self.LanguageLabels = () + self.resLetterWizardDialog_title = \ + self.getResText( + LetterWizardDialogResources.RID_LETTERWIZARDDIALOG_START + 1) + self.resLabel9_value = \ + self.getResText( + LetterWizardDialogResources.RID_LETTERWIZARDDIALOG_START + 2) + self.resoptBusinessLetter_value = \ + self.getResText( + LetterWizardDialogResources.RID_LETTERWIZARDDIALOG_START + 3) + self.resoptPrivOfficialLetter_value = \ + self.getResText( + LetterWizardDialogResources.RID_LETTERWIZARDDIALOG_START + 4) + self.resoptPrivateLetter_value = \ + self.getResText( + LetterWizardDialogResources.RID_LETTERWIZARDDIALOG_START + 5) + self.reschkBusinessPaper_value = \ + self.getResText( + LetterWizardDialogResources.RID_LETTERWIZARDDIALOG_START + 6) + self.reschkPaperCompanyLogo_value = \ + self.getResText( + LetterWizardDialogResources.RID_LETTERWIZARDDIALOG_START + 7) + self.reschkPaperCompanyAddress_value = \ + self.getResText( + LetterWizardDialogResources.RID_LETTERWIZARDDIALOG_START + 8) + self.reschkPaperFooter_value = \ + self.getResText( + LetterWizardDialogResources.RID_LETTERWIZARDDIALOG_START + 9) + self.reschkCompanyReceiver_value = \ + self.getResText( + LetterWizardDialogResources.RID_LETTERWIZARDDIALOG_START + 10) + self.reschkUseLogo_value = \ + self.getResText( + LetterWizardDialogResources.RID_LETTERWIZARDDIALOG_START + 11) + self.reschkUseAddressReceiver_value = \ + self.getResText( + LetterWizardDialogResources.RID_LETTERWIZARDDIALOG_START + 12) + self.reschkUseSigns_value = \ + self.getResText( + LetterWizardDialogResources.RID_LETTERWIZARDDIALOG_START + 13) + self.reschkUseSubject_value = \ + self.getResText( + LetterWizardDialogResources.RID_LETTERWIZARDDIALOG_START + 14) + self.reschkUseSalutation_value = \ + self.getResText( + LetterWizardDialogResources.RID_LETTERWIZARDDIALOG_START + 15) + self.reschkUseBendMarks_value = \ + self.getResText( + LetterWizardDialogResources.RID_LETTERWIZARDDIALOG_START + 16) + self.reschkUseGreeting_value = \ + self.getResText( + LetterWizardDialogResources.RID_LETTERWIZARDDIALOG_START + 17) + self.reschkUseFooter_value = \ + self.getResText( + LetterWizardDialogResources.RID_LETTERWIZARDDIALOG_START + 18) + self.resoptSenderPlaceholder_value = \ + self.getResText( + LetterWizardDialogResources.RID_LETTERWIZARDDIALOG_START + 19) + self.resoptSenderDefine_value = \ + self.getResText( + LetterWizardDialogResources.RID_LETTERWIZARDDIALOG_START + 20) + self.resoptReceiverPlaceholder_value = \ + self.getResText( + LetterWizardDialogResources.RID_LETTERWIZARDDIALOG_START + 21) + self.resoptReceiverDatabase_value = \ + self.getResText( + LetterWizardDialogResources.RID_LETTERWIZARDDIALOG_START + 22) + self.reschkFooterNextPages_value = \ + self.getResText( + LetterWizardDialogResources.RID_LETTERWIZARDDIALOG_START + 23) + self.reschkFooterPageNumbers_value = \ + self.getResText( + LetterWizardDialogResources.RID_LETTERWIZARDDIALOG_START + 24) + self.restxtTemplateName_value = \ + self.getResText( + LetterWizardDialogResources.RID_LETTERWIZARDDIALOG_START + 25) + self.resoptCreateLetter_value = \ + self.getResText( + LetterWizardDialogResources.RID_LETTERWIZARDDIALOG_START + 26) + self.resoptMakeChanges_value = \ + self.getResText( + LetterWizardDialogResources.RID_LETTERWIZARDDIALOG_START + 27) + self.reslblBusinessStyle_value = \ + self.getResText( + LetterWizardDialogResources.RID_LETTERWIZARDDIALOG_START + 28) + self.reslblPrivOfficialStyle_value = \ + self.getResText( + LetterWizardDialogResources.RID_LETTERWIZARDDIALOG_START + 29) + self.reslblPrivateStyle_value = \ + self.getResText( + LetterWizardDialogResources.RID_LETTERWIZARDDIALOG_START + 30) + self.reslblIntroduction_value = \ + self.getResText( + LetterWizardDialogResources.RID_LETTERWIZARDDIALOG_START + 31) + self.reslblLogoHeight_value = \ + self.getResText( + LetterWizardDialogResources.RID_LETTERWIZARDDIALOG_START + 32) + self.reslblLogoWidth_value = \ + self.getResText( + LetterWizardDialogResources.RID_LETTERWIZARDDIALOG_START + 33) + self.reslblLogoX_value = \ + self.getResText( + LetterWizardDialogResources.RID_LETTERWIZARDDIALOG_START + 34) + self.reslblLogoY_value = \ + self.getResText( + LetterWizardDialogResources.RID_LETTERWIZARDDIALOG_START + 35) + self.reslblAddressHeight_value = \ + self.getResText( + LetterWizardDialogResources.RID_LETTERWIZARDDIALOG_START + 36) + self.reslblAddressWidth_value = \ + self.getResText( + LetterWizardDialogResources.RID_LETTERWIZARDDIALOG_START + 37) + self.reslblAddressX_value = \ + self.getResText( + LetterWizardDialogResources.RID_LETTERWIZARDDIALOG_START + 38) + self.reslblAddressY_value = \ + self.getResText( + LetterWizardDialogResources.RID_LETTERWIZARDDIALOG_START + 39) + self.reslblFooterHeight_value = \ + self.getResText( + LetterWizardDialogResources.RID_LETTERWIZARDDIALOG_START + 40) + self.reslblLetterNorm_value = \ + self.getResText( + LetterWizardDialogResources.RID_LETTERWIZARDDIALOG_START + 41) + self.reslblSenderAddress_value = \ + self.getResText( + LetterWizardDialogResources.RID_LETTERWIZARDDIALOG_START + 42) + self.reslblSenderName_value = \ + self.getResText( + LetterWizardDialogResources.RID_LETTERWIZARDDIALOG_START + 43) + self.reslblSenderStreet_value = \ + self.getResText( + LetterWizardDialogResources.RID_LETTERWIZARDDIALOG_START + 44) + self.reslblPostCodeCity_value = \ + self.getResText( + LetterWizardDialogResources.RID_LETTERWIZARDDIALOG_START + 45) + self.reslblReceiverAddress_value = \ + self.getResText( + LetterWizardDialogResources.RID_LETTERWIZARDDIALOG_START + 46) + self.reslblFooter_value = \ + self.getResText( + LetterWizardDialogResources.RID_LETTERWIZARDDIALOG_START + 47) + self.reslblFinalExplanation1_value = \ + self.getResText( + LetterWizardDialogResources.RID_LETTERWIZARDDIALOG_START + 48) + self.reslblFinalExplanation2_value = \ + self.getResText( + LetterWizardDialogResources.RID_LETTERWIZARDDIALOG_START + 49) + self.reslblTemplateName_value = \ + self.getResText( + LetterWizardDialogResources.RID_LETTERWIZARDDIALOG_START + 50) + self.reslblTemplatePath_value = \ + self.getResText( + LetterWizardDialogResources.RID_LETTERWIZARDDIALOG_START + 51) + self.reslblProceed_value = \ + self.getResText( + LetterWizardDialogResources.RID_LETTERWIZARDDIALOG_START + 52) + self.reslblTitle1_value = \ + self.getResText( + LetterWizardDialogResources.RID_LETTERWIZARDDIALOG_START + 53) + self.reslblTitle3_value = \ + self.getResText( + LetterWizardDialogResources.RID_LETTERWIZARDDIALOG_START + 54) + self.reslblTitle2_value = \ + self.getResText( + LetterWizardDialogResources.RID_LETTERWIZARDDIALOG_START + 55) + self.reslblTitle4_value = \ + self.getResText( + LetterWizardDialogResources.RID_LETTERWIZARDDIALOG_START + 56) + self.reslblTitle5_value = \ + self.getResText( + LetterWizardDialogResources.RID_LETTERWIZARDDIALOG_START + 57) + self.reslblTitle6_value = \ + self.getResText( + LetterWizardDialogResources.RID_LETTERWIZARDDIALOG_START + 58) + self.loadRoadmapResources() + self.loadSalutationResources() + self.loadGreetingResources() + self.loadCommonResources() + + def loadCommonResources(self): + self.resOverwriteWarning = \ + self.getResText( + LetterWizardDialogResources.RID_RID_COMMON_START + 19) + self.resTemplateDescription = \ + self.getResText( + LetterWizardDialogResources.RID_RID_COMMON_START + 20) + + def loadRoadmapResources(self): + i = 1 + for i in xrange(6): + self.RoadmapLabels = self.RoadmapLabels + (self.getResText(LetterWizardDialogResources.RID_LETTERWIZARDROADMAP_START + i + 1),) + + def loadSalutationResources(self): + for i in xrange(3): + self.SalutationLabels = self.SalutationLabels + (self.getResText(LetterWizardDialogResources.RID_LETTERWIZARDSALUTATION_START + i + 1),) + + def loadGreetingResources(self): + for i in xrange(3): + self.GreetingLabels = self.GreetingLabels + (self.getResText(LetterWizardDialogResources.RID_LETTERWIZARDGREETING_START + i + 1),) diff --git a/wizards/com/sun/star/wizards/letter/LocaleCodes.py b/wizards/com/sun/star/wizards/letter/LocaleCodes.py new file mode 100644 index 000000000..ef376c575 --- /dev/null +++ b/wizards/com/sun/star/wizards/letter/LocaleCodes.py @@ -0,0 +1,154 @@ +from common.Resource import Resource + +class LocaleCodes(Resource): + UNIT_NAME = "svtres", + MODULE_NAME = "svt", + + def __init__(self, xmsf): + super(LocaleCodes, self).__init__(xmsf, LocaleCodes.MODULE_NAME) + #self.allLanguageStrings = self.getStringList(16633) + + def getLanguageString(self, MSID): + LS = "unknown Language", + for i in self.allLanguageStrings: + if str(i.Value).lower() == MSID.lower(): + LS = i.Name + return LS + + def getIDs(self): + Ids = ("Afrikaans;af;1078", + "Albanian;sq;1052", + "Arabic - United Arab Emirates;ar-ae;14337", + "Arabic - Bahrain;ar-bh;15361", + "Arabic - Algeria;ar-dz;5121", + "Arabic - Egypt;ar-eg;3073", + "Arabic - Iraq;ar-iq;2049", + "Arabic - Jordan;ar-jo;11265", + "Arabic - Kuwait;ar-kw;13313", + "Arabic - Lebanon;ar-lb;12289", + "Arabic - Libya;ar-ly;4097", + "Arabic - Morocco;ar-ma;6145", + "Arabic - Oman;ar-om;8193", + "Arabic - Qatar;ar-qa;16385", + "Arabic - Saudi Arabia;ar-sa;1025", + "Arabic - Syria;ar-sy;10241", + "Arabic - Tunisia;ar-tn;7169", + "Arabic - Yemen;ar-ye;9217", + "Armenian;hy;1067", + "Azeri - Latin;az-az;1068", + "Azeri - Cyrillic;az-az;2092", + "Basque;eu;1069", + "Belarusian;be;1059", + "Bulgarian;bg;1026", + "Catalan;ca;1027", + "Chinese - China;zh-cn;2052", + "Chinese - Hong Kong SAR;zh-hk;3076", + "Chinese - Macau SAR;zh-mo;5124", + "Chinese - Singapore;zh-sg;4100", + "Chinese - Taiwan;zh-tw;1028", + "Croatian;hr;1050", + "Czech;cs;1029", + "Danish;da;1030", + "Dutch - The Netherlands;nl-nl;1043", + "Dutch - Belgium;nl-be;2067", + "English - Australia;en-au;3081", + "English - Belize;en-bz;10249", + "English - Canada;en-ca;4105", + "English - Caribbean;en-cb;9225", + "English - Ireland;en-ie;6153", + "English - Jamaica;en-jm;8201", + "English - New Zealand;en-nz;5129", + "English - Phillippines;en-ph;13321", + "English - South Africa;en-za;7177", + "English - Trinidad;en-tt;11273", + "English - United Kingdom;en-gb;2057", + "English - United States;en-us;1033", + "Estonian;et;1061", + "Farsi;fa;1065", + "Finnish;fi;1035", + "Faroese;fo;1080", + "French - France;fr-fr;1036", + "French - Belgium;fr-be;2060", + "French - Canada;fr-ca;3084", + "French - Luxembourg;fr-lu;5132", + "French - Switzerland;fr-ch;4108", + "Gaelic - Ireland;gd-ie;2108", + "Gaelic - Scotland;gd;1084", + "German - Germany;de-de;1031", + "German - Austria;de-at;3079", + "German - Liechtenstein;de-li;5127", + "German - Luxembourg;de-lu;4103", + "German - Switzerland;de-ch;2055", + "Greek;el;1032", + "Hebrew;he;1037", + "Hindi;hi;1081", + "Hungarian;hu;1038", + "Icelandic;is;1039", + "Indonesian;id;1057", + "Italian - Italy;it-it;1040", + "Italian - Switzerland;it-ch;2064", + "Japanese;ja;1041", + "Korean;ko;1042", + "Latvian;lv;1062", + "Lithuanian;lt;1063", + "FYRO Macedonian;mk;1071", + "Malay - Malaysia;ms-my;1086", + "Malay - Brunei;ms-bn;2110", + "Maltese;mt;1082", + "Marathi;mr;1102", + "Norwegian - Bokm?l;no-no;1044", + "Norwegian - Nynorsk;no-no;2068", + "Polish;pl;1045", + "Portuguese - Portugal;pt-pt;2070", + "Portuguese - Brazil;pt-br;1046", + "Raeto-Romance;rm;1047", + "Romanian - Romania;ro;1048", + "Romanian - Moldova;ro-mo;2072", + "Russian;ru;1049", + "Russian - Moldova;ru-mo;2073", + "Sanskrit;sa;1103", + "Serbian - Cyrillic;sr-sp;3098", + "Serbian - Latin;sr-sp;2074", + "Setsuana;tn;1074", + "Slovenian;sl;1060", + "Slovak;sk;1051", + "Sorbian;sb;1070", + "Spanish - Spain;es-es;3082", + "Spanish - Argentina;es-ar;11274", + "Spanish - Bolivia;es-bo;16394", + "Spanish - Chile;es-cl;13322", + "Spanish - Colombia;es-co;9226", + "Spanish - Costa Rica;es-cr;5130", + "Spanish - Dominican Republic;es-do;7178", + "Spanish - Ecuador;es-ec;12298", + "Spanish - Guatemala;es-gt;4106", + "Spanish - Honduras;es-hn;18442", + "Spanish - Mexico;es-mx;2058", + "Spanish - Nicaragua;es-ni;19466", + "Spanish - Panama;es-pa;6154", + "Spanish - Peru;es-pe;10250", + "Spanish - Puerto Rico;es-pr;20490", + "Spanish - Paraguay;es-py;15370", + "Spanish - El Salvador;es-sv;17418", + "Spanish - Uruguay;es-uy;14346", + "Spanish - Venezuela;es-ve;8202", + "Sutu;sx;1072", + "Swahili;sw;1089", + "Swedish - Sweden;sv-se;1053", + "Swedish - Finland;sv-fi;2077", + "Tamil;ta;1097", + "Tatar;tt;1092", + "Thai;th;1054", + "Turkish;tr;1055", + "Tsonga;ts;1073", + "Ukrainian;uk;1058", + "Urdu;ur;1056", + "Uzbek - Cyrillic;uz-uz;2115", + "Uzbek - Latin;uz-uz;1091", + "Vietnamese;vi;1066", + "Xhosa;xh;1076", + "Yiddish;yi;1085", + "Zulu;zu;1077", + "Khmer;km-kh;1107", + "Burmese;my-mm;1109") + return Ids diff --git a/wizards/com/sun/star/wizards/letter/__init__.py b/wizards/com/sun/star/wizards/letter/__init__.py new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/wizards/com/sun/star/wizards/letter/__init__.py diff --git a/wizards/com/sun/star/wizards/text/TextDocument.py b/wizards/com/sun/star/wizards/text/TextDocument.py new file mode 100644 index 000000000..9a4e741cb --- /dev/null +++ b/wizards/com/sun/star/wizards/text/TextDocument.py @@ -0,0 +1,285 @@ +import uno +from common.Desktop import Desktop +from com.sun.star.view.DocumentZoomType import ENTIRE_PAGE +from com.sun.star.beans.PropertyState import DIRECT_VALUE +from common.Helper import Helper +from document.OfficeDocument import OfficeDocument +import traceback +from text.ViewHandler import ViewHandler +from text.TextFieldHandler import TextFieldHandler +from com.sun.star.container import NoSuchElementException +from com.sun.star.lang import WrappedTargetException +from common.Configuration import Configuration +import time +from datetime import date as dateTimeObject +from com.sun.star.util import DateTime +from com.sun.star.i18n.NumberFormatIndex import DATE_SYS_DDMMYY + +class TextDocument(object): + + xTextDocument = None + + def __init__(self, xMSF,listener=None,bShowStatusIndicator=None, + FrameName=None,_sPreviewURL=None,_moduleIdentifier=None, + _textDocument=None, xArgs=None): + + self.xMSF = xMSF + + if listener is not None: + if FrameName is not None: + '''creates an instance of TextDocument + and creates a named frame. + No document is actually loaded into this frame.''' + self.xFrame = OfficeDocument.createNewFrame( + xMSF, listener, FrameName) + return + + elif _sPreviewURL is not None: + '''creates an instance of TextDocument by + loading a given URL as preview''' + self.xFrame = OfficeDocument.createNewFrame(xMSF, listener) + TextDocument.xTextDocument = self.loadAsPreview(_sPreviewURL, True) + + elif xArgs is not None: + '''creates an instance of TextDocument + and creates a frame and loads a document''' + self.xDesktop = Desktop.getDesktop(xMSF); + self.xFrame = OfficeDocument.createNewFrame(xMSF, listener) + TextDocument.xTextDocument = OfficeDocument.load( + xFrame, URL, "_self", xArgs); + self.xWindowPeer = xFrame.getComponentWindow() + self.m_xDocProps = TextDocument.xTextDocument.DocumentProperties + CharLocale = Helper.getUnoStructValue( + TextDocument.xTextDocument, "CharLocale"); + return + + else: + '''creates an instance of TextDocument from + the desktop's current frame''' + self.xDesktop = Desktop.getDesktop(xMSF); + self.xFrame = self.xDesktop.getActiveFrame() + TextDocument.xTextDocument = self.xFrame.getController().Model + + elif _moduleIdentifier is not None: + try: + '''create the empty document, and set its module identifier''' + TextDocument.xTextDocument = xMSF.createInstance( + "com.sun.star.text.TextDocument") + TextDocument.xTextDocument.initNew() + TextDocument.xTextDocument.setIdentifier(_moduleIdentifier.Identifier) + # load the document into a blank frame + xDesktop = Desktop.getDesktop(xMSF) + loadArgs = range(1) + loadArgs[0] = "Model" + loadArgs[0] = -1 + loadArgs[0] = TextDocument.xTextDocument + loadArgs[0] = DIRECT_VALUE + xDesktop.loadComponentFromURL( + "private:object", "_blank", 0, loadArgs) + # remember some things for later usage + self.xFrame = TextDocument.xTextDocument.CurrentController.Frame + except Exception, e: + traceback.print_exc() + + elif _textDocument is not None: + '''creates an instance of TextDocument + from a given XTextDocument''' + self.xFrame = _textDocument.CurrentController.Frame + TextDocument.xTextDocument = _textDocument + if bShowStatusIndicator: + self.showStatusIndicator() + self.init() + + def init(self): + self.xWindowPeer = self.xFrame.getComponentWindow() + self.m_xDocProps = TextDocument.xTextDocument.getDocumentProperties() + self.CharLocale = Helper.getUnoStructValue( + TextDocument.xTextDocument, "CharLocale") + self.xText = TextDocument.xTextDocument.Text + + def showStatusIndicator(self): + self.xProgressBar = self.xFrame.createStatusIndicator() + self.xProgressBar.start("", 100) + self.xProgressBar.setValue(5) + + def loadAsPreview(self, sDefaultTemplate, asTemplate): + loadValues = range(3) + # open document in the Preview mode + loadValues[0] = uno.createUnoStruct( + 'com.sun.star.beans.PropertyValue') + loadValues[0].Name = "ReadOnly" + loadValues[0].Value = True + loadValues[1] = uno.createUnoStruct( + 'com.sun.star.beans.PropertyValue') + loadValues[1].Name = "AsTemplate" + if asTemplate: + loadValues[1].Value = True + else: + loadValues[1].Value = False + + loadValues[2] = uno.createUnoStruct( + 'com.sun.star.beans.PropertyValue') + loadValues[2].Name = "Preview" + loadValues[2].Value = True + '''set the preview document to non-modified + mode in order to avoid the 'do u want to save' box''' + if TextDocument.xTextDocument is not None: + try: + TextDocument.xTextDocument.Modified = False + except PropertyVetoException, e1: + traceback.print_exc() + + TextDocument.xTextDocument = OfficeDocument.load( + self.xFrame, sDefaultTemplate, "_self", loadValues) + + self.DocSize = self.getPageSize() + + myViewHandler = ViewHandler(TextDocument.xTextDocument, TextDocument.xTextDocument) + try: + myViewHandler.setViewSetting( + "ZoomType", ENTIRE_PAGE) + except Exception, e: + traceback.print_exc() + myFieldHandler = TextFieldHandler(self.xMSF, TextDocument.xTextDocument) + myFieldHandler.updateDocInfoFields() + return TextDocument.xTextDocument + + def getPageSize(self): + try: + xNameAccess = TextDocument.xTextDocument.StyleFamilies + xPageStyleCollection = xNameAccess.getByName("PageStyles") + xPageStyle = xPageStyleCollection.getByName("First Page") + return Helper.getUnoPropertyValue(xPageStyle, "Size") + except Exception, exception: + traceback.print_exc() + return None + + '''creates an instance of TextDocument and creates a + frame and loads a document''' + + def createTextCursor(self, oCursorContainer): + xTextCursor = oCursorContainer.createTextCursor() + return xTextCursor + + # Todo: This method is unsecure because the last index is not necessarily the last section + # Todo: This Routine should be modified, because I cannot rely on the last Table in the document to be the last in the TextTables sequence + # to make it really safe you must acquire the Tablenames before the insertion and after the insertion of the new Table. By comparing the + # two sequences of tablenames you can find out the tablename of the last inserted Table + # Todo: This method is unsecure because the last index is not necessarily the last section + + def getCharWidth(self, ScaleString): + iScale = 200 + TextDocument.xTextDocument.lockControllers() + iScaleLen = ScaleString.length() + xTextCursor = createTextCursor(TextDocument.xTextDocument.Text) + xTextCursor.gotoStart(False) + com.sun.star.wizards.common.Helper.setUnoPropertyValue( + xTextCursor, "PageDescName", "First Page") + xTextCursor.String = ScaleString + xViewCursor = TextDocument.xTextDocument.CurrentController + xTextViewCursor = xViewCursor.ViewCursor + xTextViewCursor.gotoStart(False) + iFirstPos = xTextViewCursor.Position.X + xTextViewCursor.gotoEnd(False) + iLastPos = xTextViewCursor.Position.X + iScale = (iLastPos - iFirstPos) / iScaleLen + xTextCursor.gotoStart(False) + xTextCursor.gotoEnd(True) + xTextCursor.String = "" + unlockallControllers() + return iScale + + def unlockallControllers(self): + while TextDocument.xTextDocument.hasControllersLocked() == True: + TextDocument.xTextDocument.unlockControllers() + + def refresh(self): + TextDocument.xTextDocument.refresh() + + ''' + This method sets the Author of a Wizard-generated template correctly + and adds a explanatory sentence to the template description. + @param WizardName The name of the Wizard. + @param TemplateDescription The old Description which is being + appended with another sentence. + @return void. + ''' + + def setWizardTemplateDocInfo(self, WizardName, TemplateDescription): + try: + xNA = Configuration.getConfigurationRoot( + self.xMSF, "/org.openoffice.UserProfile/Data", False) + gn = xNA.getByName("givenname") + sn = xNA.getByName("sn") + fullname = str(gn) + " " + str(sn) + currentDate = DateTime() + now = time.localtime(time.time()) + year = time.strftime("%Y", now) + month = time.strftime("%m", now) + day = time.strftime("%d", now) + currentDate.Day = day + currentDate.Year = year + currentDate.Month = month + dateObject = dateTimeObject(int(year), int(month), int(day)) + du = Helper.DateUtils(self.xMSF, TextDocument.xTextDocument) + ff = du.getFormat(DATE_SYS_DDMMYY) + myDate = du.format(ff, dateObject) + xDocProps2 = TextDocument.xTextDocument.DocumentProperties + xDocProps2.Author = fullname + xDocProps2.ModifiedBy = fullname + description = xDocProps2.Description + description = description + " " + TemplateDescription + description = description.replace("<wizard_name>", WizardName) + description = description.replace("<current_date>", myDate) + xDocProps2.Description = description + except NoSuchElementException, e: + # TODO Auto-generated catch block + traceback.print_exc() + except WrappedTargetException, e: + # TODO Auto-generated catch block + traceback.print_exc() + except Exception, e: + # TODO Auto-generated catch block + traceback.print_exc() + + ''' + removes an arbitrary Object which supports the 'XTextContent' interface + @param oTextContent + @return + ''' + + def removeTextContent(self, oTextContent): + try: + self.xText.removeTextContent(oxTextContent) + print "remove" + return True + except NoSuchElementException, e: + traceback.print_exc() + return False + + ''' + Apparently there is no other way to get the + page count of a text document other than using a cursor and + making it jump to the last page... + @param model the document model. + @return the page count of the document. + ''' + + def getPageCount(self, model): + xController = model.getCurrentController() + xPC = xController.getViewCursor() + xPC.jumpToLastPage() + return xPC.getPage() + + @classmethod + def getFrameByName(self, sFrameName, xTD): + if xTD.TextFrames.hasByName(sFrameName): + return xTD.TextFrames.getByName(sFrameName) + + return None + + ''' + Possible Values for "OptionString" are: "LoadCellStyles", + "LoadTextStyles", "LoadFrameStyles", + "LoadPageStyles", "LoadNumberingStyles", "OverwriteStyles" + ''' diff --git a/wizards/com/sun/star/wizards/text/TextFieldHandler.py b/wizards/com/sun/star/wizards/text/TextFieldHandler.py new file mode 100644 index 000000000..97d578dd2 --- /dev/null +++ b/wizards/com/sun/star/wizards/text/TextFieldHandler.py @@ -0,0 +1,190 @@ +import traceback +import time +from com.sun.star.util import DateTime +from common.PropertyNames import PropertyNames +import unicodedata + +import inspect + +class TextFieldHandler(object): + ''' + Creates a new instance of TextFieldHandler + @param xMSF + @param xTextDocument + ''' + + xTextFieldsSupplierAux = None + arrayTextFields = None + dictTextFields = None + + def __init__(self, xMSF, xTextDocument): + self.xMSFDoc = xMSF + self.xTextFieldsSupplier = xTextDocument + if TextFieldHandler.xTextFieldsSupplierAux is not \ + self.xTextFieldsSupplier: + self.__getTextFields() + TextFieldHandler.xTextFieldsSupplierAux = self.xTextFieldsSupplier + + def refreshTextFields(self): + xUp = self.xTextFieldsSupplier.TextFields + xUp.refresh() + + def getUserFieldContent(self, xTextCursor): + try: + xTextRange = xTextCursor.getEnd() + oTextField = Helper.getUnoPropertyValue(xTextRange, "TextField") + if com.sun.star.uno.AnyConverter.isVoid(oTextField): + return "" + else: + xMaster = oTextField.getTextFieldMaster() + UserFieldContent = xMaster.getPropertyValue("Content") + return UserFieldContent + + except Exception, exception: + traceback.print_exc() + + return "" + + def insertUserField(self, xTextCursor, FieldName, FieldTitle): + try: + xField = self.xMSFDoc.createInstance( + "com.sun.star.text.TextField.User") + + if self.xTextFieldsSupplier.TextFieldMasters.hasByName( + "com.sun.star.text.FieldMaster.User." + FieldName): + oMaster = self.xTextFieldsSupplier.TextFieldMasters.getByName( \ + "com.sun.star.text.FieldMaster.User." + FieldName) + oMaster.dispose() + + xPSet = createUserField(FieldName, FieldTitle) + xField.attachTextFieldMaster(xPSet) + xTextCursor.getText().insertTextContent( + xTextCursor, xField, False) + except com.sun.star.uno.Exception, exception: + traceback.print_exc() + + def createUserField(self, FieldName, FieldTitle): + xPSet = self.xMSFDoc.createInstance( + "com.sun.star.text.FieldMaster.User") + xPSet.setPropertyValue(PropertyNames.PROPERTY_NAME, FieldName) + xPSet.setPropertyValue("Content", FieldTitle) + return xPSet + + def __getTextFields(self): + try: + if self.xTextFieldsSupplier.TextFields.hasElements(): + TextFieldHandler.dictTextFields = {} + TextFieldHandler.arrayTextFields = [] + xEnum = \ + self.xTextFieldsSupplier.TextFields.createEnumeration() + while xEnum.hasMoreElements(): + oTextField = xEnum.nextElement() + TextFieldHandler.arrayTextFields.append(oTextField) + xPropertySet = oTextField.TextFieldMaster + if len(xPropertySet.Name) is not 0: + TextFieldHandler.dictTextFields[xPropertySet.Name] = \ + oTextField + except Exception, e: + #TODO Auto-generated catch block + traceback.print_exc() + + def __getTextFieldsByProperty( + self, _PropertyName, _aPropertyValue, _TypeName): + try: + xProperty = TextFieldHandler.dictTextFields[_aPropertyValue] + xPropertySet = xProperty.TextFieldMaster + if xPropertySet.PropertySetInfo.hasPropertyByName( + _PropertyName): + oValue = xPropertySet.getPropertyValue(_PropertyName) + if _TypeName == "String": + sValue = unicodedata.normalize( + 'NFKD', oValue).encode('ascii','ignore') + if sValue == _aPropertyValue: + return xProperty + #COMMENTED + '''elif AnyConverter.isShort(oValue): + if _TypeName.equals("Short"): + iShortParam = (_aPropertyValue).shortValue() + ishortValue = AnyConverter.toShort(oValue) + if ishortValue == iShortParam: + xDependentVector.append(oTextField) ''' + return None + except KeyError, e: + return None + + def changeUserFieldContent(self, _FieldName, _FieldContent): + DependentTextFields = self.__getTextFieldsByProperty( + PropertyNames.PROPERTY_NAME, _FieldName, "String") + if DependentTextFields is not None: + DependentTextFields.TextFieldMaster.setPropertyValue("Content", _FieldContent) + self.refreshTextFields() + + def updateDocInfoFields(self): + try: + for i in TextFieldHandler.arrayTextFields: + if i.supportsService( + "com.sun.star.text.TextField.ExtendedUser"): + i.update() + + if i.supportsService( + "com.sun.star.text.TextField.User"): + i.update() + + except Exception, e: + traceback.print_exc() + + def updateDateFields(self): + try: + now = time.localtime(time.time()) + dt = DateTime() + dt.Day = time.strftime("%d", now) + dt.Year = time.strftime("%Y", now) + dt.Month = time.strftime("%m", now) + dt.Month += 1 + for i in TextFieldHandler.arrayTextFields: + if i.supportsService( + "com.sun.star.text.TextField.DateTime"): + i.setPropertyValue("IsFixed", False) + i.setPropertyValue("DateTimeValue", dt) + + except Exception, e: + traceback.print_exc() + + def fixDateFields(self, _bSetFixed): + try: + for i in TextFieldHandler.arrayTextFields: + if i.supportsService( + "com.sun.star.text.TextField.DateTime"): + i.setPropertyValue("IsFixed", _bSetFixed) + + except Exception, e: + traceback.print_exc() + + def removeUserFieldByContent(self, _FieldContent): + try: + xDependentTextFields = self.__getTextFieldsByProperty( + "Content", _FieldContent, "String") + if xDependentTextFields != None: + i = 0 + while i < xDependentTextFields.length: + xDependentTextFields[i].dispose() + i += 1 + + except Exception, e: + traceback.print_exc() + + def changeExtendedUserFieldContent(self, UserDataPart, _FieldContent): + try: + xDependentTextFields = self.__getTextFieldsByProperty( + "UserDataType", UserDataPart, "Short") + if xDependentTextFields != None: + i = 0 + while i < xDependentTextFields.length: + xDependentTextFields[i].getTextFieldMaster().setPropertyValue( + "Content", _FieldContent) + i += 1 + + self.refreshTextFields() + except Exception, e: + traceback.print_exc() + diff --git a/wizards/com/sun/star/wizards/text/TextSectionHandler.py b/wizards/com/sun/star/wizards/text/TextSectionHandler.py new file mode 100644 index 000000000..67eee12e2 --- /dev/null +++ b/wizards/com/sun/star/wizards/text/TextSectionHandler.py @@ -0,0 +1,133 @@ +import traceback + +class TextSectionHandler(object): + '''Creates a new instance of TextSectionHandler''' + def __init__(self, xMSF, xTextDocument): + self.xMSFDoc = xMSF + self.xTextDocument = xTextDocument + self.xText = xTextDocument.Text + + def removeTextSectionbyName(self, SectionName): + try: + xAllTextSections = self.xTextDocument.TextSections + if xAllTextSections.hasByName(SectionName): + oTextSection = self.xTextDocument.TextSections.getByName( + SectionName) + self.removeTextSection(oTextSection) + + + except Exception, exception: + traceback.print_exc() + + def hasTextSectionByName(self, SectionName): + xAllTextSections = self.xTextDocument.TextSections + return xAllTextSections.hasByName(SectionName) + + def removeLastTextSection(self): + try: + xAllTextSections = self.xTextDocument.TextSections + oTextSection = xAllTextSections.getByIndex( + xAllTextSections.getCount() - 1) + self.removeTextSection(oTextSection) + except Exception, exception: + traceback.print_exc() + + def removeTextSection(self, _oTextSection): + try: + self.xText.removeTextContent(_oTextSection) + except Exception, exception: + traceback.print_exc() + + def removeInvisibleTextSections(self): + try: + xAllTextSections = self.xTextDocument.TextSections + TextSectionCount = xAllTextSections.getCount() + i = TextSectionCount - 1 + while i >= 0: + xTextContentTextSection = xAllTextSections.getByIndex(i) + if not bool(xTextContentTextSection.getPropertyValue("IsVisible")): + self.xText.removeTextContent(xTextContentTextSection) + + i -= 1 + except Exception, exception: + traceback.print_exc() + + def removeAllTextSections(self): + try: + TextSectionCount = self.xTextDocument.TextSections.getCount() + i = TextSectionCount - 1 + while i >= 0: + xTextContentTextSection = xAllTextSections.getByIndex(i) + self.xText.removeTextContent(xTextContentTextSection) + i -= 1 + except Exception, exception: + traceback.print_exc() + + def breakLinkofTextSections(self): + try: + iSectionCount = self.xTextDocument.TextSections.getCount() + oSectionLink = SectionFileLink.SectionFileLink() + oSectionLink.FileURL = "" + i = 0 + while i < iSectionCount: + oTextSection = xAllTextSections.getByIndex(i) + Helper.setUnoPropertyValues( + oTextSection, ["FileLink", "LinkRegion"], + [oSectionLink, ""]) + i += 1 + except Exception, exception: + traceback.print_exc() + + def breakLinkOfTextSection(self, oTextSection): + oSectionLink = SectionFileLink.SectionFileLink() + oSectionLink.FileURL = "" + Helper.setUnoPropertyValues( + oTextSection, ["FileLink", "LinkRegion"],[oSectionLink, ""]) + + def linkSectiontoTemplate(self, TemplateName, SectionName): + try: + oTextSection = self.xTextDocument.TextSections.getByName( + SectionName) + linkSectiontoTemplate(oTextSection, TemplateName, SectionName) + except Exception, e: + traceback.print_exc() + + def linkSectiontoTemplate(self, oTextSection, TemplateName, SectionName): + oSectionLink = SectionFileLink.SectionFileLink() + oSectionLink.FileURL = TemplateName + Helper.setUnoPropertyValues( + oTextSection, ["FileLink", "LinkRegion"], + [oSectionLink, SectionName]) + NewSectionName = oTextSection.getName() + if NewSectionName.compareTo(SectionName) != 0: + oTextSection.setName(SectionName) + + def insertTextSection(self, GroupName, TemplateName, _bAddParagraph): + try: + if _bAddParagraph: + xTextCursor = self.xText.createTextCursor() + self.xText.insertControlCharacter( + xTextCursor, ControlCharacter.PARAGRAPH_BREAK, False) + xTextCursor.collapseToEnd() + + xSecondTextCursor = self.xText.createTextCursor() + xSecondTextCursor.gotoEnd(False) + insertTextSection(GroupName, TemplateName, xSecondTextCursor) + except IllegalArgumentException, e: + traceback.print_exc() + + def insertTextSection(self, sectionName, templateName, position): + try: + if self.xTextDocument.TextSections.hasByName(sectionName): + xTextSection = \ + self.xTextDocument.TextSections.getByName(sectionName) + else: + xTextSection = self.xMSFDoc.createInstance( + "com.sun.star.text.TextSection") + position.getText().insertTextContent( + position, xTextSection, False) + + linkSectiontoTemplate(xTextSection, templateName, sectionName) + except Exception, exception: + traceback.print_exc() + diff --git a/wizards/com/sun/star/wizards/text/ViewHandler.py b/wizards/com/sun/star/wizards/text/ViewHandler.py new file mode 100644 index 000000000..cf5401efb --- /dev/null +++ b/wizards/com/sun/star/wizards/text/ViewHandler.py @@ -0,0 +1,37 @@ +class ViewHandler(object): + '''Creates a new instance of View ''' + + def __init__ (self, xMSF, xTextDocument): + self.xMSFDoc = xMSF + self.xTextDocument = xTextDocument + self.xTextViewCursorSupplier = xTextDocument.CurrentController + + def selectFirstPage(self, oTextTableHandler): + try: + xPageCursor = self.xTextViewCursorSupplier.ViewCursor + xPageCursor.jumpToFirstPage() + xPageCursor.jumpToStartOfPage() + Helper.setUnoPropertyValue( + xPageCursor, "PageDescName", "First Page") + oPageStyles = self.xTextDocument.StyleFamilies.getByName( + "PageStyles") + oPageStyle = oPageStyles.getByName("First Page") + xAllTextTables = oTextTableHandler.xTextTablesSupplier.TextTables + xTextTable = xAllTextTables.getByIndex(0) + xRange = xTextTable.getAnchor().getText() + xPageCursor.gotoRange(xRange, False) + if not com.sun.star.uno.AnyConverter.isVoid(XTextRange): + xViewTextCursor.gotoRange(xHeaderRange, False) + xViewTextCursor.collapseToStart() + else: + print "No Headertext available" + + except com.sun.star.uno.Exception, exception: + exception.printStackTrace(System.out) + + def setViewSetting(self, Setting, Value): + self.xTextViewCursorSupplier.ViewSettings.setPropertyValue(Setting, Value) + + def collapseViewCursorToStart(self): + xTextViewCursor = self.xTextViewCursorSupplier.ViewCursor + xTextViewCursor.collapseToStart() diff --git a/wizards/com/sun/star/wizards/text/__init__.py b/wizards/com/sun/star/wizards/text/__init__.py new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/wizards/com/sun/star/wizards/text/__init__.py diff --git a/wizards/com/sun/star/wizards/ui/PathSelection.py b/wizards/com/sun/star/wizards/ui/PathSelection.py new file mode 100644 index 000000000..2be27ac83 --- /dev/null +++ b/wizards/com/sun/star/wizards/ui/PathSelection.py @@ -0,0 +1,121 @@ +import traceback +from common.PropertyNames import * +from common.FileAccess import * +from common.SystemDialog import SystemDialog + +class PathSelection(object): + + class DialogTypes(object): + FOLDER = 0 + FILE = 1 + + class TransferMode(object): + SAVE = 0 + LOAD = 1 + + def __init__(self, xMSF, CurUnoDialog, TransferMode, DialogType): + self.CurUnoDialog = CurUnoDialog + self.xMSF = xMSF + self.iDialogType = DialogType + self.iTransferMode = TransferMode + self.sDefaultDirectory = "" + self.sDefaultName = "" + self.sDefaultFilter = "" + self.usedPathPicker = False + self.CMDSELECTPATH = 1 + self.TXTSAVEPATH = 1 + + def insert( + self, DialogStep, XPos, YPos, Width, + CurTabIndex, LabelText, Enabled, TxtHelpURL, BtnHelpURL): + + self.CurUnoDialog.insertControlModel( + "com.sun.star.awt.UnoControlFixedTextModel", "lblSaveAs", + (PropertyNames.PROPERTY_ENABLED, + PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_LABEL, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + PropertyNames.PROPERTY_WIDTH), + (Enabled, 8, LabelText, XPos, YPos, DialogStep, + CurTabIndex, Width)) + self.xSaveTextBox = self.CurUnoDialog.insertTextField( + "txtSavePath", "callXPathSelectionListener", + (PropertyNames.PROPERTY_ENABLED, + PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_HELPURL, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + PropertyNames.PROPERTY_WIDTH), + (Enabled, 12, TxtHelpURL, XPos, YPos + 10, DialogStep, + (CurTabIndex + 1), Width - 26), self) + + self.CurUnoDialog.setControlProperty("txtSavePath", + PropertyNames.PROPERTY_ENABLED, False ) + self.CurUnoDialog.insertButton("cmdSelectPath", "triggerPathPicker", + (PropertyNames.PROPERTY_ENABLED, + PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_HELPURL, + PropertyNames.PROPERTY_LABEL, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + PropertyNames.PROPERTY_WIDTH), + (Enabled, 14, BtnHelpURL, "...",XPos + Width - 16, YPos + 9, + DialogStep, (CurTabIndex + 2), 16), self) + + def addSelectionListener(self, xAction): + self.xAction = xAction + + def getSelectedPath(self): + return self.xSaveTextBox.Text + + def initializePath(self): + try: + myFA = FileAccess(self.xMSF) + self.xSaveTextBox.setText( + myFA.getPath(self.sDefaultDirectory + \ + "/" + \ + self.sDefaultName, None)) + except Exception, e: + traceback.print_exc() + + def triggerPathPicker(self): + try: + if self.iTransferMode == self.TransferMode.SAVE: + if self.iDialogType == self.DialogTypes.FOLDER: + #TODO: write code for picking a folder for saving + return + elif self.iDialogType == self.DialogTypes.FILE: + self.usedPathPicker = True + myFilePickerDialog = \ + SystemDialog.createStoreDialog(self.xMSF) + myFilePickerDialog.callStoreDialog( + self.sDefaultDirectory, + self.sDefaultName, self.sDefaultFilter) + sStorePath = myFilePickerDialog.sStorePath + if sStorePath is not None: + myFA = FileAccess(self.xMSF); + self.xSaveTextBox.Text = myFA.getPath(sStorePath, None) + self.sDefaultDirectory = \ + FileAccess.getParentDir(sStorePath) + self.sDefaultName = myFA.getFilename(sStorePath) + return + elif iTransferMode == TransferMode.LOAD: + if iDialogType == DialogTypes.FOLDER: + #TODO: write code for picking a folder for loading + return + elif iDialogType == DialogTypes.FILE: + #TODO: write code for picking a file for loading + return + except Exception, e: + traceback.print_exc() + + def callXPathSelectionListener(self): + if self.xAction != None: + self.xAction.validatePath() diff --git a/wizards/com/sun/star/wizards/ui/UIConsts.py b/wizards/com/sun/star/wizards/ui/UIConsts.py new file mode 100644 index 000000000..a975ff490 --- /dev/null +++ b/wizards/com/sun/star/wizards/ui/UIConsts.py @@ -0,0 +1,53 @@ +RID_COMMON = 500 +RID_DB_COMMON = 1000 +RID_FORM = 2200 +RID_QUERY = 2300 +RID_REPORT = 2400 +RID_TABLE = 2500 +RID_IMG_REPORT = 1000 +RID_IMG_FORM = 1100 +RID_IMG_WEB = 1200 +INVISIBLESTEP = 99 +INFOIMAGEURL = "private:resource/dbu/image/19205" + +''' +The tabindex of the navigation buttons in a wizard must be assigned a very +high tabindex because on every step their taborder must appear at the end +''' +SOFIRSTWIZARDNAVITABINDEX = 30000 + +#Steps of the QueryWizard + +SOFIELDSELECTIONPAGE = 1 +SOSORTINGPAGE = 2 +SOFILTERPAGE = 3 +SOAGGREGATEPAGE = 4 +SOGROUPSELECTIONPAGE = 5 +SOGROUPFILTERPAGE = 6 +SOTITLESPAGE = 7 +SOSUMMARYPAGE = 8 + +class CONTROLTYPE(): + + BUTTON = 1 + IMAGECONTROL = 2 + LISTBOX = 3 + COMBOBOX = 4 + CHECKBOX = 5 + RADIOBUTTON = 6 + DATEFIELD = 7 + EDITCONTROL = 8 + FILECONTROL = 9 + FIXEDLINE = 10 + FIXEDTEXT = 11 + FORMATTEDFIELD = 12 + GROUPBOX = 13 + HYPERTEXT = 14 + NUMERICFIELD = 15 + PATTERNFIELD = 16 + PROGRESSBAR = 17 + ROADMAP = 18 + SCROLLBAR = 19 + TIMEFIELD = 20 + CURRENCYFIELD = 21 + UNKNOWN = -1 diff --git a/wizards/com/sun/star/wizards/ui/UnoDialog.py b/wizards/com/sun/star/wizards/ui/UnoDialog.py new file mode 100644 index 000000000..fbc1984a3 --- /dev/null +++ b/wizards/com/sun/star/wizards/ui/UnoDialog.py @@ -0,0 +1,552 @@ +import uno +import traceback +from common.PropertyNames import PropertyNames +from com.sun.star.awt import Rectangle +from common.Helper import Helper +from com.sun.star.awt import Rectangle +from com.sun.star.awt.PosSize import POS + +class UnoDialog(object): + + def __init__(self, xMSF, PropertyNames, PropertyValues): + try: + self.xMSF = xMSF + self.ControlList = {} + self.xDialogModel = xMSF.createInstance( + "com.sun.star.awt.UnoControlDialogModel") + self.xDialogModel.setPropertyValues(PropertyNames, PropertyValues) + self.xUnoDialog = xMSF.createInstance( + "com.sun.star.awt.UnoControlDialog") + self.xUnoDialog.setModel(self.xDialogModel) + self.m_oPeerConfig = None + self.xWindowPeer = None + except Exception, e: + traceback.print_exc() + + def getControlKey(self, EventObject, ControlList): + xControlModel = EventObject.getModel() + try: + sName = xControlModel.getPropertyValue( + PropertyNames.PROPERTY_NAME) + iKey = ControlList.get(sName).intValue() + except com.sun.star.uno.Exception, exception: + traceback.print_exc() + iKey = 2000 + + return iKey + + def createPeerConfiguration(self): + self.m_oPeerConfig = PeerConfig(self) + + def getPeerConfiguration(self): + if self.m_oPeerConfig == None: + self.createPeerConfiguration() + return self.m_oPeerConfig + + def setControlProperty(self, ControlName, PropertyName, PropertyValue): + try: + if PropertyValue is not None: + if not self.xDialogModel.hasByName(ControlName): + return + xPSet = self.xDialogModel.getByName(ControlName) + setattr(xPSet,PropertyName, PropertyValue) + + except Exception, exception: + traceback.print_exc() + + def setControlProperties( + self, ControlName, PropertyNames, PropertyValues): + self.setControlProperty(ControlName, PropertyNames, PropertyValues) + + def getControlProperty(self, ControlName, PropertyName): + try: + xPSet = self.xDialogModel.getByName(ControlName) + return xPSet.getPropertyValue(PropertyName) + except Exception, exception: + traceback.print_exc() + return None + + + def printControlProperties(self, ControlName): + try: + xControlModel = self.xDialogModel().getByName(ControlName) + allProps = xControlModel.PropertySetInfo.Properties + i = 0 + while i < allProps.length: + sName = allProps[i].Name + i += 1 + except Exception, exception: + traceback.print_exc() + + def getMAPConversionFactor(self, ControlName): + xControl2 = self.xUnoDialog.getControl(ControlName) + aSize = xControl2.Size + dblMAPWidth = Helper.getUnoPropertyValue(xControl2.Model, + int(PropertyNames.PROPERTY_WIDTH)) + return (aSize.Width / dblMAPWidth) + + def getpreferredLabelSize(self, LabelName, sLabel): + xControl2 = self.xUnoDialog.getControl(LabelName) + OldText = xControl2.Text + xControl2.setText(sLabel) + aSize = xControl2.PreferredSize + xControl2.setText(OldText) + return aSize + + def removeSelectedItems(self, xListBox): + SelList = xListBox.SelectedItemsPos + Sellen = SelList.length + i = Sellen - 1 + while i >= 0: + xListBox.removeItems(SelList[i], 1) + i -= 1 + + def getListBoxItemCount(self, _xListBox): + # This function may look ugly, but this is the only way to check + # the count of values in the model,which is always right. + # the control is only a view and could be right or not. + fieldnames = Helper.getUnoPropertyValue(getModel(_xListBox), + "StringItemList") + return fieldnames.length + + def getSelectedItemPos(self, _xListBox): + ipos = Helper.getUnoPropertyValue(getModel(_xListBox), + "SelectedItems") + return ipos[0] + + def isListBoxSelected(self, _xListBox): + ipos = Helper.getUnoPropertyValue(getModel(_xListBox), + "SelectedItems") + return ipos.length > 0 + + def addSingleItemtoListbox(self, xListBox, ListItem, iSelIndex): + xListBox.addItem(ListItem, xListBox.getItemCount()) + if iSelIndex != -1: + xListBox.selectItemPos(iSelIndex, True) + + def insertLabel(self, sName, sPropNames, oPropValues): + try: + oFixedText = self.insertControlModel( + "com.sun.star.awt.UnoControlFixedTextModel", + sName, sPropNames, oPropValues) + oFixedText.setPropertyValue(PropertyNames.PROPERTY_NAME, sName) + oLabel = self.xUnoDialog.getControl(sName) + return oLabel + except Exception, ex: + traceback.print_exc() + return None + + def insertButton( + self, sName, iControlKey, xActionListener, sProperties, sValues): + oButtonModel = self.insertControlModel( + "com.sun.star.awt.UnoControlButtonModel", + sName, sProperties, sValues) + xPSet.setPropertyValue(PropertyNames.PROPERTY_NAME, sName) + xButton = self.xUnoDialog.getControl(sName) + if xActionListener != None: + xButton.addActionListener( + ActionListenerProcAdapter(xActionListener)) + + ControlKey = iControlKey + if self.ControlList != None: + self.ControlList.put(sName, ControlKey) + + return xButton + + def insertCheckBox( + self, sName, iControlKey, xItemListener, sProperties, sValues): + oButtonModel = self.insertControlModel( + "com.sun.star.awt.UnoControlCheckBoxModel", + sName, sProperties, sValues) + oButtonModel.setPropertyValue(PropertyNames.PROPERTY_NAME, sName) + xCheckBox = self.xUnoDialog.getControl(sName) + if xItemListener != None: + xCheckBox.addItemListener( + ItemListenerProcAdapter(xItemListener)) + + ControlKey = iControlKey + if self.ControlList != None: + self.ControlList.put(sName, ControlKey) + + def insertNumericField( + self, sName, iControlKey, xTextListener, sProperties, sValues): + oNumericFieldModel = self.insertControlModel( + "com.sun.star.awt.UnoControlNumericFieldModel", + sName, sProperties, sValues) + oNumericFieldModel.setPropertyValue( + PropertyNames.PROPERTY_NAME, sName) + xNumericField = self.xUnoDialog.getControl(sName) + if xTextListener != None: + xNumericField.addTextListener( + TextListenerProcAdapter(xTextListener)) + + ControlKey = iControlKey + if self.ControlList != None: + self.ControlList.put(sName, ControlKey) + + def insertScrollBar( + self, sName, iControlKey, xAdjustmentListener, sProperties, sValues): + try: + oScrollModel = self.insertControlModel( + "com.sun.star.awt.UnoControlScrollBarModel", + sName, sProperties, sValues) + oScrollModel.setPropertyValue(PropertyNames.PROPERTY_NAME, sName) + xScrollBar = self.xUnoDialog.getControl(sName) + if xAdjustmentListener != None: + xScrollBar.addAdjustmentListener(xAdjustmentListener) + + ControlKey = iControlKey + if self.ControlList != None: + self.ControlList.put(sName, ControlKey) + + return xScrollBar + except com.sun.star.uno.Exception, exception: + traceback.print_exc() + return None + + def insertTextField( + self, sName, iControlKey, xTextListener, sProperties, sValues): + xTextBox = insertEditField( + "com.sun.star.awt.UnoControlEditModel", sName, iControlKey, + xTextListener, sProperties, sValues) + return xTextBox + + def insertFormattedField( + self, sName, iControlKey, xTextListener, sProperties, sValues): + xTextBox = insertEditField( + "com.sun.star.awt.UnoControlFormattedFieldModel", sName, + iControlKey, xTextListener, sProperties, sValues) + return xTextBox + + def insertEditField( + self, ServiceName, sName, iControlKey, + xTextListener, sProperties, sValues): + + try: + xTextModel = self.insertControlModel( + ServiceName, sName, sProperties, sValues) + xTextModel.setPropertyValue(PropertyNames.PROPERTY_NAME, sName) + xTextBox = self.xUnoDialog.getControl(sName) + if xTextListener != None: + xTextBox.addTextListener(TextListenerProcAdapter(xTextListener)) + + ControlKey = iControlKey + self.ControlList.put(sName, ControlKey) + return xTextBox + except com.sun.star.uno.Exception, exception: + traceback.print_exc() + return None + + def insertListBox( + self, sName, iControlKey, xActionListener, + xItemListener, sProperties, sValues): + xListBoxModel = self.insertControlModel( + "com.sun.star.awt.UnoControlListBoxModel", + sName, sProperties, sValues) + xListBoxModel.setPropertyValue(PropertyNames.PROPERTY_NAME, sName) + xListBox = self.xUnoDialog.getControl(sName) + if xItemListener != None: + xListBox.addItemListener(ItemListenerProcAdapter(xItemListener)) + + if xActionListener != None: + xListBox.addActionListener( + ActionListenerProcAdapter(xActionListener)) + + ControlKey = iControlKey + self.ControlList.put(sName, ControlKey) + return xListBox + + def insertComboBox( + self, sName, iControlKey, xActionListener, xTextListener, + xItemListener, sProperties, sValues): + xComboBoxModel = self.insertControlModel( + "com.sun.star.awt.UnoControlComboBoxModel", + sName, sProperties, sValues) + xComboBoxModel.setPropertyValue(PropertyNames.PROPERTY_NAME, sName) + xComboBox = self.xUnoDialog.getControl(sName) + if xItemListener != None: + xComboBox.addItemListener(ItemListenerProcAdapter(xItemListener)) + + if xTextListener != None: + xComboBox.addTextListener(TextListenerProcAdapter(xTextListener)) + + if xActionListener != None: + xComboBox.addActionListener( + ActionListenerProcAdapter(xActionListener)) + + ControlKey = iControlKey + self.ControlList.put(sName, ControlKey) + return xComboBox + + def insertRadioButton( + self, sName, iControlKey, xItemListener, sProperties, sValues): + try: + xRadioButton = insertRadioButton( + sName, iControlKey, sProperties, sValues) + if xItemListener != None: + xRadioButton.addItemListener( + ItemListenerProcAdapter(xItemListener)) + + return xRadioButton + except com.sun.star.uno.Exception, exception: + traceback.print_exc() + return None + + def insertRadioButton( + self, sName, iControlKey, xActionListener, sProperties, sValues): + try: + xButton = insertRadioButton( + sName, iControlKey, sProperties, sValues) + if xActionListener != None: + xButton.addActionListener( + ActionListenerProcAdapter(xActionListener)) + + return xButton + except com.sun.star.uno.Exception, exception: + traceback.print_exc() + return None + + def insertRadioButton(self, sName, iControlKey, sProperties, sValues): + xRadioButton = insertRadioButton(sName, sProperties, sValues) + ControlKey = iControlKey + self.ControlList.put(sName, ControlKey) + return xRadioButton + + def insertRadioButton(self, sName, sProperties, sValues): + try: + oRadioButtonModel = self.insertControlModel( + "com.sun.star.awt.UnoControlRadioButtonModel", + sName, sProperties, sValues) + oRadioButtonModel.setPropertyValue( + PropertyNames.PROPERTY_NAME, sName) + xRadioButton = self.xUnoDialog.getControl(sName) + return xRadioButton + except com.sun.star.uno.Exception, exception: + traceback.print_exc() + return None + ''' + The problem with setting the visibility of controls + is that changing the current step of a dialog will automatically + make all controls visible. The PropertyNames.PROPERTY_STEP property + always wins against the property "visible". Therfor a control meant + to be invisible is placed on a step far far away. + @param the name of the control + @param iStep change the step if you want to make the control invisible + ''' + + def setControlVisible(self, controlname, iStep): + try: + iCurStep = int(getControlProperty( + controlname, PropertyNames.PROPERTY_STEP)) + setControlProperty( + controlname, PropertyNames.PROPERTY_STEP, iStep) + except com.sun.star.uno.Exception, exception: + traceback.print_exc() + + ''' + The problem with setting the visibility of controls is that + changing the current step of a dialog will automatically make + all controls visible. The PropertyNames.PROPERTY_STEP property + always wins against the property "visible". + Therfor a control meant to be invisible is placed on a step far far away. + Afterwards the step property of the dialog has to be set with + "repaintDialogStep". As the performance of that method is very bad it + should be used only once for all controls + @param controlname the name of the control + @param bIsVisible sets the control visible or invisible + ''' + + def setControlVisible(self, controlname, bIsVisible): + try: + iCurControlStep = int(getControlProperty( + controlname, PropertyNames.PROPERTY_STEP)) + iCurDialogStep = int(Helper.getUnoPropertyValue( + self.xDialogModel, PropertyNames.PROPERTY_STEP)) + if bIsVisible: + setControlProperty( + controlname, PropertyNames.PROPERTY_STEP, iCurDialogStep) + else: + setControlProperty( + controlname, PropertyNames.PROPERTY_STEP, + UIConsts.INVISIBLESTEP) + + except com.sun.star.uno.Exception, exception: + traceback.print_exc() + + # repaints the currentDialogStep + + + def repaintDialogStep(self): + try: + ncurstep = int(Helper.getUnoPropertyValue( + self.xDialogModel, PropertyNames.PROPERTY_STEP)) + Helper.setUnoPropertyValue( + self.xDialogModel, PropertyNames.PROPERTY_STEP, 99) + Helper.setUnoPropertyValue( + self.xDialogModel, PropertyNames.PROPERTY_STEP, ncurstep) + except com.sun.star.uno.Exception, exception: + traceback.print_exc() + + def insertControlModel(self, ServiceName, sName, sProperties, sValues): + try: + xControlModel = self.xDialogModel.createInstance(ServiceName) + Helper.setUnoPropertyValues(xControlModel, sProperties, sValues) + self.xDialogModel.insertByName(sName, xControlModel) + return xControlModel + except Exception, exception: + traceback.print_exc() + return None + + def setFocus(self, ControlName): + oFocusControl = self.xUnoDialog.getControl(ControlName) + oFocusControl.setFocus() + + def combineListboxList(self, sFirstEntry, MainList): + try: + FirstList = [sFirstEntry] + ResultList = [MainList.length + 1] + System.arraycopy(FirstList, 0, ResultList, 0, 1) + System.arraycopy(MainList, 0, ResultList, 1, len(MainList)) + return ResultList + except java.lang.Exception, jexception: + traceback.print_exc() + return None + + def selectListBoxItem(self, xListBox, iFieldsSelIndex): + if iFieldsSelIndex > -1: + FieldCount = xListBox.getItemCount() + if FieldCount > 0: + if iFieldsSelIndex < FieldCount: + xListBox.selectItemPos(iFieldsSelIndex, True) + else: + xListBox.selectItemPos((short)(iFieldsSelIndex - 1), True) + + # deselects a Listbox. MultipleMode is not supported + + def deselectListBox(self, _xBasisListBox): + oListBoxModel = getModel(_xBasisListBox) + sList = Helper.getUnoPropertyValue(oListBoxModel, "StringItemList") + Helper.setUnoPropertyValue(oListBoxModel, "StringItemList", [[],[]]) + Helper.setUnoPropertyValue(oListBoxModel, "StringItemList", sList) + + def calculateDialogPosition(self, FramePosSize): + # Todo:check if it would be useful or possible to create a dialog peer + # that can be used for the messageboxes to + # maintain modality when they pop up. + CurPosSize = self.xUnoDialog.getPosSize() + WindowHeight = FramePosSize.Height + WindowWidth = FramePosSize.Width + DialogWidth = CurPosSize.Width + DialogHeight = CurPosSize.Height + iXPos = ((WindowWidth / 2) - (DialogWidth / 2)) + iYPos = ((WindowHeight / 2) - (DialogHeight / 2)) + self.xUnoDialog.setPosSize( + iXPos, iYPos, DialogWidth, DialogHeight, POS) + + ''' + @param FramePosSize + @return 0 for cancel, 1 for ok + @throws com.sun.star.uno.Exception + ''' + + def executeDialog(self, FramePosSize): + if self.xUnoDialog.getPeer() == None: + raise AttributeError( + "Please create a peer, using your own frame"); + + self.calculateDialogPosition(FramePosSize) + + if self.xWindowPeer == None: + self.createWindowPeer() + return self.xUnoDialog.execute() + + def setVisible(self, parent): + self.calculateDialogPosition(parent.xWindow.getPosSize()) + if self.xWindowPeer == None: + self.createWindowPeer() + + self.xUnoDialog.setVisible(True) + + ''' + @param parent + @return 0 for cancel, 1 for ok + @throws com.sun.star.uno.Exception + ''' + + def executeDialogFromParent(self, parent): + return self.executeDialog(parent.xWindow.PosSize) + + ''' + @param XComponent + @return 0 for cancel, 1 for ok + @throws com.sun.star.uno.Exception + ''' + + def executeDialogFromComponent(self, xComponent): + if xComponent is not None: + w = xComponent.ComponentWindow + if w is not None: + return self.executeDialog(w.PosSize) + + return self.executeDialog( Rectangle (0, 0, 640, 400)) + + def setAutoMnemonic(self, ControlName, bValue): + self.xUnoDialog = self.xUnoDialog.getControl(ControlName) + xVclWindowPedsfer = self.xUnoDialog.getPeer() + self.xContainerWindow.setProperty("AutoMnemonics", bValue) + + def modifyFontWeight(self, ControlName, FontWeight): + oFontDesc = FontDescriptor.FontDescriptor() + oFontDesc.Weight = FontWeight + setControlProperty(ControlName, "FontDescriptor", oFontDesc) + + ''' + create a peer for this + dialog, using the given + peer as a parent. + @param parentPeer + @return + @throws java.lang.Exception + ''' + + def createWindowPeer(self, parentPeer=None): + self.xUnoDialog.setVisible(False) + xToolkit = self.xMSF.createInstance("com.sun.star.awt.Toolkit") + if parentPeer == None: + parentPeer = xToolkit.getDesktopWindow() + + self.xUnoDialog.createPeer(xToolkit, parentPeer) + self.xWindowPeer = self.xUnoDialog.getPeer() + return self.xUnoDialog.getPeer() + + # deletes the first entry when this is equal to "DelEntryName" + # returns true when a new item is selected + + def deletefirstListboxEntry(self, ListBoxName, DelEntryName): + xListBox = self.xUnoDialog.getControl(ListBoxName) + FirstItem = xListBox.getItem(0) + if FirstItem.equals(DelEntryName): + SelPos = xListBox.getSelectedItemPos() + xListBox.removeItems(0, 1) + if SelPos > 0: + setControlProperty(ListBoxName, "SelectedItems", [SelPos]) + xListBox.selectItemPos((short)(SelPos - 1), True) + + def setPeerProperty(self, ControlName, PropertyName, PropertyValue): + xControl = self.xUnoDialog.getControl(ControlName) + xVclWindowPeer = self.xControl.getPeer() + self.xContainerWindow.setProperty(PropertyName, PropertyValue) + + @classmethod + def setEnabled(self, control, enabled): + Helper.setUnoPropertyValue( + getModel(control), PropertyNames.PROPERTY_ENABLED, enabled) + + def addResourceHandler(self, _Unit, _Module): + self.m_oResource = Resource(self.xMSF, _Unit, _Module) + + def setInitialTabindex(self, _istep): + return (short)(_istep * 100) + + def getListBoxLineCount(self): + return 20 diff --git a/wizards/com/sun/star/wizards/ui/UnoDialog2.py b/wizards/com/sun/star/wizards/ui/UnoDialog2.py new file mode 100644 index 000000000..0bf868687 --- /dev/null +++ b/wizards/com/sun/star/wizards/ui/UnoDialog2.py @@ -0,0 +1,259 @@ +from UnoDialog import * +from ui.event.CommonListener import * +from common.Desktop import Desktop +import UIConsts + +''' +This class contains convenience methods for inserting components to a dialog. +It was created for use with the automatic conversion of Basic XML Dialog +description files to a Java class which builds +the same dialog through the UNO API.<br/> +It uses an Event-Listener method, which calls a method through reflection +wenn an event on a component is trigered. +see the classes CommonListener for details +''' + +class UnoDialog2(UnoDialog): + + ''' + Override this method to return another listener. + @return + ''' + + def __init__(self, xmsf): + super(UnoDialog2,self).__init__(xmsf,(), ()) + + def insertButton( + self, sName, actionPerformed, sPropNames, oPropValues, listener): + xButton = self.insertControlModel2( + "com.sun.star.awt.UnoControlButtonModel", + sName, sPropNames, oPropValues) + if actionPerformed is not None: + actionPerformed = getattr(listener, actionPerformed) + xButton.addActionListener( + ActionListenerProcAdapter(actionPerformed)) + + return xButton + + def insertImageButton( + self, sName, actionPerformed, sPropNames, oPropValues, listener): + xButton = self.insertControlModel2( + "com.sun.star.awt.UnoControlButtonModel", + sName, sPropNames, oPropValues) + if actionPerformed is not None: + actionPerformed = getattr(listener, actionPerformed) + xButton.addActionListener( + ActionListenerProcAdapter(actionPerformed)) + + return xButton + + def insertCheckBox( + self, sName, itemChanged, sPropNames, oPropValues, listener): + xCheckBox = self.insertControlModel2( + "com.sun.star.awt.UnoControlCheckBoxModel", + sName, sPropNames, oPropValues) + if itemChanged is not None: + itemChanged = getattr(listener, itemChanged) + xCheckBox.addItemListener(ItemListenerProcAdapter(itemChanged)) + + return xCheckBox + + def insertComboBox( + self, sName, actionPerformed, itemChanged, + textChanged, sPropNames, oPropValues, listener): + xComboBox = self.insertControlModel2( + "com.sun.star.awt.UnoControlComboBoxModel", + sName, sPropNames, oPropValues) + if actionPerformed is not None: + actionPerformed = getattr(listener, actionPerformed) + xComboBox.addActionListener( + ActionListenerProcAdapter(actionPerformed)) + + if itemChanged is not None: + itemChanged = getattr(listener, itemChanged) + xComboBox.addItemListener(ItemListenerProcAdapter(itemChanged)) + + if textChanged is not None: + textChanged = getattr(listener, textChanged) + xComboBox.addTextListener(TextListenerProcAdapter(textChanged)) + + return xComboBox + + def insertListBox( + self, sName, actionPerformed, itemChanged, + sPropNames, oPropValues, listener): + xListBox = self.insertControlModel2( + "com.sun.star.awt.UnoControlListBoxModel", + sName, sPropNames, oPropValues) + + if actionPerformed is not None: + actionPerformed = getattr(listener, actionPerformed) + xListBox.addActionListener(actionPerformed) + + if itemChanged is not None: + itemChanged = getattr(listener, itemChanged) + xListBox.addItemListener(ItemListenerProcAdapter(itemChanged)) + + return xListBox + + def insertRadioButton( + self, sName, itemChanged, sPropNames, oPropValues, listener): + xRadioButton = self.insertControlModel2( + "com.sun.star.awt.UnoControlRadioButtonModel", + sName, sPropNames, oPropValues) + if itemChanged is not None: + itemChanged = getattr(listener, itemChanged) + xRadioButton.addItemListener( + ItemListenerProcAdapter(itemChanged)) + + + return xRadioButton + + def insertTitledBox(self, sName, sPropNames, oPropValues): + oTitledBox = self.insertControlModel2( + "com.sun.star.awt.UnoControlGroupBoxModel", + sName, sPropNames, oPropValues) + return oTitledBox + + def insertTextField( + self, sName, sTextChanged, sPropNames, oPropValues, listener): + return self.insertEditField( + sName, sTextChanged, "com.sun.star.awt.UnoControlEditModel", + sPropNames, oPropValues, listener) + + def insertImage(self, sName, sPropNames, oPropValues): + return self.insertControlModel2( + "com.sun.star.awt.UnoControlImageControlModel", + sName, sPropNames, oPropValues) + + def insertInfoImage(self, _posx, _posy, _iStep): + xImgControl = self.insertImage( + Desktop.getUniqueName(self.xDialogModel, "imgHint"), + ("Border", + PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_IMAGEURL, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, "ScaleImage", + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_WIDTH), + (0, 10, UIConsts.INFOIMAGEURL, _posx, _posy, False, _iStep, 10)) + return xImgControl + + ''' + This method is used for creating Edit, Currency, Date, Formatted, + Pattern, File and Time edit components. + ''' + + def insertEditField( + self, sName, sTextChanged, sModelClass, + sPropNames, oPropValues, listener): + xField = self.insertControlModel2(sModelClass, + sName, sPropNames, oPropValues) + if sTextChanged is not None: + sTextChanged = getattr(listener, sTextChanged) + xField.addTextListener(TextListenerProcAdapter(sTextChanged)) + + return xField + + def insertFileControl( + self, sName, sTextChanged, sPropNames, oPropValues, listener): + return self.insertEditField(sName, sTextChanged, + "com.sun.star.awt.UnoControlFileControlModel", + sPropNames, oPropValues, listener) + + def insertCurrencyField( + self, sName, sTextChanged, sPropNames, oPropValues, listener): + return self.insertEditField( + sName, sTextChanged, + "com.sun.star.awt.UnoControlCurrencyFieldModel", + sPropNames, oPropValues, listener) + + def insertDateField( + self, sName, sTextChanged, sPropNames, oPropValues, listener): + return self.insertEditField( + sName, sTextChanged, + "com.sun.star.awt.UnoControlDateFieldModel", + sPropNames, oPropValues, listener) + + def insertNumericField( + self, sName, sTextChanged, sPropNames, oPropValues, listener): + return self.insertEditField( + sName, sTextChanged, + "com.sun.star.awt.UnoControlNumericFieldModel", + sPropNames, oPropValues, listener) + + def insertTimeField( + self, sName, sTextChanged, sPropNames, oPropValues, listener): + return self.insertEditField( + sName, sTextChanged, + "com.sun.star.awt.UnoControlTimeFieldModel", + sPropNames, oPropValues, listener) + + def insertPatternField( + self, sName, sTextChanged, oPropValues, listener): + return self.insertEditField(sName, sTextChanged, + "com.sun.star.awt.UnoControlPatternFieldModel", + sPropNames, oPropValues, listener) + + def insertFormattedField( + self, sName, sTextChanged, sPropNames, oPropValues, listener): + return self.insertEditField( + sName, sTextChanged, + "com.sun.star.awt.UnoControlFormattedFieldModel", + sPropNames, oPropValues, listener) + + def insertFixedLine(self, sName, sPropNames, oPropValues): + oLine = self.insertControlModel2( + "com.sun.star.awt.UnoControlFixedLineModel", + sName, sPropNames, oPropValues) + return oLine + + def insertScrollBar(self, sName, sPropNames, oPropValues): + oScrollBar = self.insertControlModel2( + "com.sun.star.awt.UnoControlScrollBarModel", + sName, sPropNames, oPropValues) + return oScrollBar + + def insertProgressBar(self, sName, sPropNames, oPropValues): + oProgressBar = self.insertControlModel2( + "com.sun.star.awt.UnoControlProgressBarModel", + sName, sPropNames, oPropValues) + return oProgressBar + + def insertGroupBox(self, sName, sPropNames, oPropValues): + oGroupBox = self.insertControlModel2( + "com.sun.star.awt.UnoControlGroupBoxModel", + sName, sPropNames, oPropValues) + return oGroupBox + + def insertControlModel2( + self, serviceName, componentName, sPropNames, oPropValues): + try: + xControlModel = self.insertControlModel( + serviceName, componentName, (), ()) + Helper.setUnoPropertyValues( + xControlModel, sPropNames, oPropValues) + Helper.setUnoPropertyValue(xControlModel, + PropertyNames.PROPERTY_NAME, componentName) + except Exception, ex: + traceback.print_exc() + + aObj = self.xUnoDialog.getControl(componentName) + return aObj + + def setControlPropertiesDebug(self, model, names, values): + i = 0 + while i < len(names): + print " Settings: ", names[i] + Helper.setUnoPropertyValue(model, names[i], values[i]) + i += 1 + + def getControlModel(self, unoControl): + obj = unoControl.Model + return obj + + def showMessageBox(self, windowServiceName, windowAttribute, MessageText): + return SystemDialog.showMessageBox( + xMSF, self.xControl.Peer, + windowServiceName, windowAttribute, MessageText) + diff --git a/wizards/com/sun/star/wizards/ui/WizardDialog.py b/wizards/com/sun/star/wizards/ui/WizardDialog.py new file mode 100644 index 000000000..f32f01a3d --- /dev/null +++ b/wizards/com/sun/star/wizards/ui/WizardDialog.py @@ -0,0 +1,499 @@ +from UnoDialog2 import * +from common.Resource import Resource +from abc import ABCMeta, abstractmethod +from com.sun.star.lang import NoSuchMethodException +from com.sun.star.lang import IllegalArgumentException +from com.sun.star.frame import TerminationVetoException +from common.HelpIds import * +from com.sun.star.awt.PushButtonType import HELP, STANDARD + +class WizardDialog(UnoDialog2): + + __metaclass__ = ABCMeta + + __NEXT_ACTION_PERFORMED = "gotoNextAvailableStep" + __BACK_ACTION_PERFORMED = "gotoPreviousAvailableStep" + __FINISH_ACTION_PERFORMED = "finishWizard_1" + __CANCEL_ACTION_PERFORMED = "cancelWizard_1" + __HELP_ACTION_PERFORMED = None + + ''' + Creates a new instance of WizardDialog + the hid is used as following : + "HID:(hid)" - the dialog + "HID:(hid+1) - the help button + "HID:(hid+2)" - the back button + "HID:(hid+3)" - the next button + "HID:(hid+4)" - the create button + "HID:(hid+5)" - the cancel button + @param xMSF + @param hid_ + ''' + + def __init__(self, xMSF, hid_): + super(WizardDialog,self).__init__(xMSF) + self.__hid = hid_ + self.__iButtonWidth = 50 + self.nNewStep = 1 + self.nOldStep = 1 + self.nMaxStep = 1 + self.__bTerminateListenermustberemoved = True + self.__oWizardResource = Resource(xMSF, "dbw") + self.sMsgEndAutopilot = self.__oWizardResource.getResText( + UIConsts.RID_DB_COMMON + 33) + self.oRoadmap = None + #self.vetos = VetoableChangeSupport.VetoableChangeSupport_unknown(this) + + def getResource(self): + return self.__oWizardResource + + def activate(self): + try: + if self.xUnoDialog is not None: + self.xUnoDialog.toFront() + + except Exception, ex: + pass + # do nothing; + + def itemStateChanged(self, itemEvent): + try: + self.nNewStep = itemEvent.ItemId + self.nOldStep = int(Helper.getUnoPropertyValue( + self.xDialogModel, + PropertyNames.PROPERTY_STEP)) + if self.nNewStep != self.nOldStep: + self.switchToStep() + + except IllegalArgumentException, exception: + traceback.print_exc() + + def setRoadmapInteractive(self, _bInteractive): + Helper.setUnoPropertyValue(self.oRoadmap, "Activated", _bInteractive) + + def setRoadmapComplete(self, bComplete): + Helper.setUnoPropertyValue(self.oRoadmap, "Complete", bComplete) + + def isRoadmapComplete(self): + try: + return bool(Helper.getUnoPropertyValue(self.oRoadmap, "Complete")) + except IllegalArgumentException, exception: + traceback.print_exc() + return False + + def setCurrentRoadmapItemID(self, ID): + if self.oRoadmap != None: + nCurItemID = self.getCurrentRoadmapItemID() + if nCurItemID != ID: + Helper.setUnoPropertyValue(self.oRoadmap, "CurrentItemID",ID) + + def getCurrentRoadmapItemID(self): + try: + return int(Helper.getUnoPropertyValue( + self.oRoadmap, "CurrentItemID")) + except Exception, exception: + traceback.print_exc() + return -1 + + def addRoadmap(self): + try: + iDialogHeight = Helper.getUnoPropertyValue( + self.xDialogModel, + PropertyNames.PROPERTY_HEIGHT) + # the roadmap control has got no real TabIndex ever + # that is not correct, but changing this would need time, + # so it is used without TabIndex as before + self.oRoadmap = self.insertControlModel( + "com.sun.star.awt.UnoControlRoadmapModel", + "rdmNavi", + (PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, "Tabstop", + PropertyNames.PROPERTY_WIDTH), + ((iDialogHeight - 26), 0, 0, 0, + 0, True, 85)) + self.oRoadmap.setPropertyValue( + PropertyNames.PROPERTY_NAME, "rdmNavi") + + self.xRoadmapControl = self.xUnoDialog.getControl("rdmNavi") + method = getattr(self, "itemStateChanged") + self.xRoadmapControl.addItemListener( + ItemListenerProcAdapter(method)) + + Helper.setUnoPropertyValue( + self.oRoadmap, "Text", + self.__oWizardResource.getResText(UIConsts.RID_COMMON + 16)) + except NoSuchMethodException, ex: + Resource.showCommonResourceError(xMSF) + except Exception, jexception: + traceback.print_exc() + + def setRMItemLabels(self, _oResource, StartResID): + self.sRMItemLabels = _oResource.getResArray( + StartResID, self.nMaxStep) + + def getRMItemLabels(self): + return self.sRMItemLabels + + def insertRoadmapItem(self, Index, _bEnabled, _sLabel, _CurItemID): + try: + if isinstance(_sLabel, int): + _sLabel = self.sRMItemLabels(_sLabel) + oRoadmapItem = self.oRoadmap.createInstance() + Helper.setUnoPropertyValue(oRoadmapItem, + PropertyNames.PROPERTY_LABEL, _sLabel) + Helper.setUnoPropertyValue(oRoadmapItem, + PropertyNames.PROPERTY_ENABLED, _bEnabled) + Helper.setUnoPropertyValue(oRoadmapItem, "ID", _CurItemID) + self.oRoadmap.insertByIndex(Index, oRoadmapItem) + NextIndex = Index + 1 + return NextIndex + except Exception, exception: + traceback.print_exc() + return -1 + + def getRMItemCount(self): + return self.oRoadmap.Count + + def getRoadmapItemByID(self, _ID): + try: + getByIndex = self.oRoadmap.getByIndex + for i in xrange(self.oRoadmap.Count): + CurRoadmapItem = getByIndex(i) + CurID = int(Helper.getUnoPropertyValue(CurRoadmapItem, "ID")) + if CurID == _ID: + return CurRoadmapItem + + return None + except Exception, exception: + traceback.print_exc() + return None + + def switchToStep(self,_nOldStep=None, _nNewStep=None): + if _nOldStep is not None and _nNewStep is not None: + self.nOldStep = _nOldStep + self.nNewStep = _nNewStep + + self.leaveStep(self.nOldStep, self.nNewStep) + if self.nNewStep != self.nOldStep: + if self.nNewStep == self.nMaxStep: + self.setControlProperty( + "btnWizardNext", "DefaultButton", False) + self.setControlProperty( + "btnWizardFinish", "DefaultButton", True) + else: + self.setControlProperty( + "btnWizardNext", "DefaultButton", True) + self.setControlProperty( + "btnWizardFinish", "DefaultButton", False) + + self.changeToStep(self.nNewStep) + self.enterStep(self.nOldStep, self.nNewStep) + return True + + return False + + @abstractmethod + def leaveStep(self, nOldStep, nNewStep): + pass + + @abstractmethod + def enterStep(self, nOldStep, nNewStep): + pass + + def changeToStep(self, nNewStep): + Helper.setUnoPropertyValue(self.xDialogModel, + PropertyNames.PROPERTY_STEP, nNewStep) + self.setCurrentRoadmapItemID(nNewStep) + self.enableNextButton(self.getNextAvailableStep() > 0) + self.enableBackButton(nNewStep != 1) + + def iscompleted(self, _ndialogpage): + return False + + def ismodified(self, _ndialogpage): + return False + + def drawNaviBar(self): + try: + curtabindex = UIConsts.SOFIRSTWIZARDNAVITABINDEX + iButtonWidth = self.__iButtonWidth + iButtonHeight = 14 + iCurStep = 0 + iDialogHeight = Helper.getUnoPropertyValue(self.xDialogModel, + PropertyNames.PROPERTY_HEIGHT) + iDialogWidth = Helper.getUnoPropertyValue(self.xDialogModel, + PropertyNames.PROPERTY_WIDTH) + iHelpPosX = 8 + iBtnPosY = iDialogHeight - iButtonHeight - 6 + iCancelPosX = iDialogWidth - self.__iButtonWidth - 6 + iFinishPosX = iCancelPosX - 6 - self.__iButtonWidth + iNextPosX = iFinishPosX - 6 - self.__iButtonWidth + iBackPosX = iNextPosX - 3 - self.__iButtonWidth + self.insertControlModel( + "com.sun.star.awt.UnoControlFixedLineModel", + "lnNaviSep", + (PropertyNames.PROPERTY_HEIGHT, "Orientation", + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_WIDTH), + (1, 0, 0, iDialogHeight - 26, iCurStep, iDialogWidth)) + self.insertControlModel( + "com.sun.star.awt.UnoControlFixedLineModel", + "lnRoadSep", + (PropertyNames.PROPERTY_HEIGHT, + "Orientation", + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_WIDTH), + (iBtnPosY - 6, 1, 85, 0, iCurStep, 1)) + propNames = (PropertyNames.PROPERTY_ENABLED, + PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_HELPURL, + PropertyNames.PROPERTY_LABEL, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + "PushButtonType", + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + PropertyNames.PROPERTY_WIDTH) + Helper.setUnoPropertyValue( + self.xDialogModel, PropertyNames.PROPERTY_HELPURL, + HelpIds.getHelpIdString(self.__hid)) + self.insertButton("btnWizardHelp", + WizardDialog.__HELP_ACTION_PERFORMED, + (PropertyNames.PROPERTY_ENABLED, + PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_LABEL, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + "PushButtonType", + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + PropertyNames.PROPERTY_WIDTH), + (True, iButtonHeight, + self.__oWizardResource.getResText(UIConsts.RID_COMMON + 15), + iHelpPosX, iBtnPosY, + uno.Any("short",HELP), iCurStep, + uno.Any("short",(curtabindex + 1)), iButtonWidth), self) + self.insertButton("btnWizardBack", + WizardDialog.__BACK_ACTION_PERFORMED, propNames, + (False, iButtonHeight, HelpIds.getHelpIdString(self.__hid + 2), + self.__oWizardResource.getResText(UIConsts.RID_COMMON + 13), + iBackPosX, iBtnPosY, uno.Any("short",STANDARD), iCurStep, + uno.Any("short",(curtabindex + 1)), iButtonWidth), self) + self.insertButton("btnWizardNext", + WizardDialog.__NEXT_ACTION_PERFORMED, propNames, + (True, iButtonHeight, HelpIds.getHelpIdString(self.__hid + 3), + self.__oWizardResource.getResText(UIConsts.RID_COMMON + 14), + iNextPosX, iBtnPosY, uno.Any("short",STANDARD), iCurStep, + uno.Any("short",(curtabindex + 1)), iButtonWidth), self) + self.insertButton("btnWizardFinish", + WizardDialog.__FINISH_ACTION_PERFORMED, propNames, + (True, iButtonHeight, HelpIds.getHelpIdString(self.__hid + 4), + self.__oWizardResource.getResText(UIConsts.RID_COMMON + 12), + iFinishPosX, iBtnPosY, uno.Any("short",STANDARD), + iCurStep, + uno.Any("short",(curtabindex + 1)), + iButtonWidth), self) + self.insertButton("btnWizardCancel", + WizardDialog.__CANCEL_ACTION_PERFORMED, propNames, + (True, iButtonHeight, HelpIds.getHelpIdString(self.__hid + 5), + self.__oWizardResource.getResText(UIConsts.RID_COMMON + 11), + iCancelPosX, iBtnPosY, uno.Any("short",STANDARD), iCurStep, + uno.Any("short",(curtabindex + 1)), + iButtonWidth), self) + self.setControlProperty("btnWizardNext", "DefaultButton", True) + except Exception, exception: + traceback.print_exc() + + def insertRoadMapItems(self, items, steps, enabled): + i = 0 + while i < items.length: + insertRoadmapItem(i, enabled(i), items(i), steps(i)) + i += 1 + + def setStepEnabled(self, _nStep, bEnabled, enableNextButton): + setStepEnabled(_nStep, bEnabled) + if self.getNextAvailableStep() > 0: + self.enableNextButton(bEnabled) + + def enableNavigationButtons( + self, _bEnableBack, _bEnableNext, _bEnableFinish): + self.enableBackButton(_bEnableBack) + self.enableNextButton(_bEnableNext) + self.enableFinishButton(_bEnableFinish) + + def enableBackButton(self, enabled): + self.setControlProperty("btnWizardBack", + PropertyNames.PROPERTY_ENABLED, enabled) + + def enableNextButton(self, enabled): + self.setControlProperty("btnWizardNext", + PropertyNames.PROPERTY_ENABLED, enabled) + + def enableFinishButton(self, enabled): + self.setControlProperty("btnWizardFinish", + PropertyNames.PROPERTY_ENABLED, enabled) + + def setStepEnabled(self, _nStep, bEnabled): + xRoadmapItem = getRoadmapItemByID(_nStep) + if xRoadmapItem != None: + Helper.setUnoPropertyValue(xRoadmapItem, + PropertyNames.PROPERTY_ENABLED, bEnabled) + + def enablefromStep(self, _iStep, _bDoEnable): + if _iStep <= self.nMaxStep: + i = _iStep + while i <= self.nMaxStep: + setStepEnabled(i, _bDoEnable) + i += 1 + enableFinishButton(_bDoEnable) + if not _bDoEnable: + enableNextButton(_iStep > getCurrentStep() + 1) + else: + enableNextButton(not (getCurrentStep() == self.nMaxStep)) + + def isStepEnabled(self, _nStep): + try: + xRoadmapItem = self.getRoadmapItemByID(_nStep) + # Todo: In this case an exception should be thrown + if (xRoadmapItem == None): + return False + bIsEnabled = bool(Helper.getUnoPropertyValue(xRoadmapItem, + PropertyNames.PROPERTY_ENABLED)) + return bIsEnabled + except Exception, exception: + traceback.print_exc() + return False + + def gotoPreviousAvailableStep(self): + try: + if self.nNewStep > 1: + self.nOldStep = self.nNewStep + self.nNewStep -= 1 + while self.nNewStep > 0: + bIsEnabled = self.isStepEnabled(self.nNewStep) + if bIsEnabled: + break; + + self.nNewStep -= 1 + if (self.nNewStep == 0): + self.nNewStep = self.nOldStep + self.switchToStep() + except Exception, e: + traceback.print_exc() + + #TODO discuss with rp + + def getNextAvailableStep(self): + if self.isRoadmapComplete(): + i = self.nNewStep + 1 + while i <= self.nMaxStep: + if self.isStepEnabled(i): + return i + + i += 1 + + return -1 + + def gotoNextAvailableStep(self): + try: + self.nOldStep = self.nNewStep + self.nNewStep = self.getNextAvailableStep() + if self.nNewStep > -1: + self.switchToStep() + except Exception, e: + traceback.print_exc() + + @abstractmethod + def finishWizard(self): + pass + + def finishWizard_1(self): + '''This function will call + if the finish button is pressed on the UI''' + try: + self.enableFinishButton(False) + success = False + try: + success = self.finishWizard() + finally: + if not success: + self.enableFinishButton(True) + + if success: + self.removeTerminateListener() + except Exception, e: + traceback.print_exc() + + def getMaximalStep(self): + return self.nMaxStep + + def getCurrentStep(self): + try: + return int(Helper.getUnoPropertyValue(self.xDialogModel, + PropertyNames.PROPERTY_STEP)) + except Exception, exception: + traceback.print_exc() + return -1 + + def setCurrentStep(self, _nNewstep): + self.nNewStep = _nNewstep + changeToStep(self.nNewStep) + + def setRightPaneHeaders(self, _oResource, StartResID, _nMaxStep): + self.sRightPaneHeaders = _oResource.getResArray(StartResID, _nMaxStep) + setRightPaneHeaders(self.sRightPaneHeaders) + + def setRightPaneHeaders(self, _sRightPaneHeaders): + self.nMaxStep = _sRightPaneHeaders.length + self.sRightPaneHeaders = _sRightPaneHeaders + oFontDesc = FontDescriptor.FontDescriptor() + oFontDesc.Weight = com.sun.star.awt.FontWeight.BOLD + i = 0 + while i < self.sRightPaneHeaders.length: + insertLabel("lblQueryTitle" + String.valueOf(i),("FontDescriptor", + PropertyNames.PROPERTY_HEIGHT, + PropertyNames.PROPERTY_LABEL, + PropertyNames.PROPERTY_MULTILINE, + PropertyNames.PROPERTY_POSITION_X, + PropertyNames.PROPERTY_POSITION_Y, + PropertyNames.PROPERTY_STEP, + PropertyNames.PROPERTY_TABINDEX, + PropertyNames.PROPERTY_WIDTH),( + oFontDesc, 16, self.sRightPaneHeaders(i), + True, 91, 8, i + 1, 12, 212)) + i += 1 + + def cancelWizard(self): + #can be overwritten by extending class + xDialog.endExecute() + + def removeTerminateListener(self): + if self.__bTerminateListenermustberemoved: + Desktop.getDesktop(self.xMSF).removeTerminateListener( \ + TerminateListenerProcAdapter(self)) + self.__bTerminateListenermustberemoved = False + + ''' + called by the cancel button and + by the window hidden event. + if this method was not called before, + perform a cancel. + ''' + + def cancelWizard_1(self): + try: + self.cancelWizard() + self.removeTerminateListener() + except Exception,e: + traceback.print_exc() + + def queryTermination(self): + self.activate() + raise TerminationVetoException() diff --git a/wizards/com/sun/star/wizards/ui/XPathSelectionListener.py b/wizards/com/sun/star/wizards/ui/XPathSelectionListener.py new file mode 100644 index 000000000..1f065209d --- /dev/null +++ b/wizards/com/sun/star/wizards/ui/XPathSelectionListener.py @@ -0,0 +1,7 @@ +from abc import ABCMeta, abstractmethod + +class XPathSelectionListener(object): + + @abstractmethod + def validatePath(self): + pass diff --git a/wizards/com/sun/star/wizards/ui/__init__.py b/wizards/com/sun/star/wizards/ui/__init__.py new file mode 100644 index 000000000..51429ce86 --- /dev/null +++ b/wizards/com/sun/star/wizards/ui/__init__.py @@ -0,0 +1 @@ +"""UI""" diff --git a/wizards/com/sun/star/wizards/ui/event/CommonListener.py b/wizards/com/sun/star/wizards/ui/event/CommonListener.py new file mode 100644 index 000000000..3bd486240 --- /dev/null +++ b/wizards/com/sun/star/wizards/ui/event/CommonListener.py @@ -0,0 +1,85 @@ +#********************************************************************** +# +# Danny.OOo.Listeners.ListenerProcAdapters.py +# +# A module to easily work with OpenOffice.org. +# +#********************************************************************** +# Copyright (c) 2003-2004 Danny Brewer +# d29583@groovegarden.com +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See: http://www.gnu.org/licenses/lgpl.html +# +#********************************************************************** +# If you make changes, please append to the change log below. +# +# Change Log +# Danny Brewer Revised 2004-06-05-01 +# +#********************************************************************** + +# OOo's libraries +import unohelper + +from com.sun.star.awt import XActionListener +class ActionListenerProcAdapter( unohelper.Base, XActionListener ): + def __init__( self, oProcToCall, tParams=() ): + self.oProcToCall = oProcToCall # a python procedure + self.tParams = tParams # a tuple + + + # oActionEvent is a com.sun.star.awt.ActionEvent struct. + def actionPerformed( self, oActionEvent ): + if callable( self.oProcToCall ): + apply( self.oProcToCall ) + +from com.sun.star.awt import XItemListener +class ItemListenerProcAdapter( unohelper.Base, XItemListener ): + def __init__( self, oProcToCall, tParams=() ): + self.oProcToCall = oProcToCall # a python procedure + self.tParams = tParams # a tuple + + # oItemEvent is a com.sun.star.awt.ItemEvent struct. + def itemStateChanged( self, oItemEvent ): + if callable( self.oProcToCall ): + try: + apply( self.oProcToCall) + except: + apply( self.oProcToCall, (oItemEvent,) + self.tParams ) + +from com.sun.star.awt import XTextListener +class TextListenerProcAdapter( unohelper.Base, XTextListener ): + def __init__( self, oProcToCall, tParams=() ): + self.oProcToCall = oProcToCall # a python procedure + self.tParams = tParams # a tuple + + # oTextEvent is a com.sun.star.awt.TextEvent struct. + def textChanged( self, oTextEvent ): + if callable( self.oProcToCall ): + apply( self.oProcToCall ) + +from com.sun.star.frame import XTerminateListener +class TerminateListenerProcAdapter( unohelper.Base, XTerminateListener ): + def __init__( self, oProcToCall, tParams=() ): + self.oProcToCall = oProcToCall # a python procedure + self.tParams = tParams # a tuple + + # oTextEvent is a com.sun.star.awt.TextEvent struct. + def queryTermination(self, TerminateEvent): + self.oProcToCall = getattr(self.oProcToCall,"queryTermination") + if callable( self.oProcToCall ): + apply( self.oProcToCall ) diff --git a/wizards/com/sun/star/wizards/ui/event/DataAware.py b/wizards/com/sun/star/wizards/ui/event/DataAware.py new file mode 100644 index 000000000..c2771d5a4 --- /dev/null +++ b/wizards/com/sun/star/wizards/ui/event/DataAware.py @@ -0,0 +1,127 @@ +from common.PropertyNames import * +from abc import ABCMeta, abstractmethod +import traceback +from ui.event.CommonListener import * + +''' +@author rpiterman +DataAware objects are used to live-synchronize UI and DataModel/DataObject. +It is used as listener on UI events, to keep the DataObject up to date. +This class, as a base abstract class, sets a frame of functionality, +delegating the data Object get/set methods to a Value object, +and leaving the UI get/set methods abstract. +Note that event listenning is *not* a part of this model. +the updateData() or updateUI() methods should be porogramatically called. +in child classes, the updateData() will be binded to UI event calls. +<br><br> +This class holds references to a Data Object and a Value object. +The Value object "knows" how to get and set a value from the +Data Object. +''' + +class DataAware(object): + __metaclass__ = ABCMeta + + ''' + creates a DataAware object for the given data object and Value object. + @param dataObject_ + @param value_ + ''' + + def __init__(self, dataObject_, field_): + self._dataObject = dataObject_ + self._field = field_ + + ''' + sets the given value to the UI control + @param newValue the value to set to the ui control. + ''' + @abstractmethod + def setToUI (self,newValue): + pass + + ''' + gets the current value from the UI control. + @return the current value from the UI control. + ''' + + @abstractmethod + def getFromUI (self): + pass + + ''' + updates the UI control according to the + current state of the data object. + ''' + + def updateUI(self): + data = getattr(self._dataObject, self._field) + ui = self.getFromUI() + if data is not ui: + try: + self.setToUI(data) + except Exception, ex: + traceback.print_exc() + #TODO tell user... + + ''' + updates the DataObject according to + the current state of the UI control. + ''' + + def updateData(self): + try: + data = getattr(self._dataObject, self._field) + ui = self.getFromUI() + if data is not ui: + if isinstance(ui,tuple): + #Selected Element listbox + ui = ui[0] + setattr(self._dataObject, self._field, ui) + except Exception: + traceback.print_exc() + + ''' + given a collection containing DataAware objects, + calls updateUI() on each memebr of the collection. + @param dataAwares a collection containing DataAware objects. + ''' + @classmethod + def updateUIs(self, dataAwares): + for i in dataAwares: + i.updateUI() + + ''' + Given a collection containing DataAware objects, + sets the given DataObject to each DataAware object + in the given collection + @param dataAwares a collection of DataAware objects. + @param dataObject new data object to set to the DataAware + objects in the given collection. + @param updateUI if true, calls updateUI() on each DataAware object. + ''' + + def setDataObject(self, dataObject, updateUI): + if dataObject is not None: + if not (type(self._field) is not + type(dataObject)): + raise ClassCastException ( + "can not cast new DataObject to original Class") + self._dataObject = dataObject + if updateUI: + self.updateUI() + + ''' + Given a collection containing DataAware objects, + sets the given DataObject to each DataAware object + in the given collection + @param dataAwares a collection of DataAware objects. + @param dataObject new data object to set to the DataAware objects + in the given collection. + @param updateUI if true, calls updateUI() on each DataAware object. + ''' + + @classmethod + def setDataObjects(self, dataAwares, dataObject, updateUI): + for i in dataAwares: + i.setDataObject(dataObject, updateUI) diff --git a/wizards/com/sun/star/wizards/ui/event/RadioDataAware.py b/wizards/com/sun/star/wizards/ui/event/RadioDataAware.py new file mode 100644 index 000000000..41ce307a0 --- /dev/null +++ b/wizards/com/sun/star/wizards/ui/event/RadioDataAware.py @@ -0,0 +1,39 @@ +from DataAware import * +from UnoDataAware import * +import time +''' +@author rpiterman +To change the template for this generated type comment go to +Window>Preferences>Java>Code Generation>Code and Comments +''' + +class RadioDataAware(DataAware): + + def __init__(self, data, value, radioButtons): + super(RadioDataAware,self).__init__(data, value) + self.radioButtons = radioButtons + + def setToUI(self, value): + selected = int(value) + if selected == -1: + i = 0 + while i < self.radioButtons.length: + self.radioButtons[i].State = False + i += 1 + else: + self.radioButtons[selected].State = True + + def getFromUI(self): + for i in xrange(len(self.radioButtons)): + if self.radioButtons[i].State: + return i + + return -1 + + @classmethod + def attachRadioButtons(self, data, prop, buttons, field): + da = RadioDataAware(data, prop, buttons) + method = getattr(da,"updateData") + for i in da.radioButtons: + i.addItemListener(ItemListenerProcAdapter(method)) + return da diff --git a/wizards/com/sun/star/wizards/ui/event/UnoDataAware.py b/wizards/com/sun/star/wizards/ui/event/UnoDataAware.py new file mode 100644 index 000000000..7c3436caa --- /dev/null +++ b/wizards/com/sun/star/wizards/ui/event/UnoDataAware.py @@ -0,0 +1,74 @@ +from DataAware import * +from common.Helper import * + +''' +@author rpiterman +This class suppoprts imple cases where a UI control can +be directly synchronized with a data property. +Such controls are: the different text controls +(synchronizing the "Text" , "Value", "Date", "Time" property), +Checkbox controls, Dropdown listbox controls (synchronizing the +SelectedItems[] property. +For those controls, static convenience methods are offered, to simplify use. +''' + +class UnoDataAware(DataAware): + + def __init__(self, dataObject, field, unoObject_, unoPropName_, isShort=False): + super(UnoDataAware,self).__init__(dataObject, field) + self.unoControl = unoObject_ + self.unoModel = self.unoControl.Model + self.unoPropName = unoPropName_ + self.isShort = isShort + + def setToUI(self, value): + if self.isShort: + value = uno.Any("[]short", (value,)) + Helper.setUnoPropertyValue(self.unoModel, self.unoPropName, value) + + def getFromUI(self): + return Helper.getUnoPropertyValue(self.unoModel, self.unoPropName) + + @classmethod + def __attachTextControl( + self, data, prop, unoText, unoProperty, field, value): + uda = UnoDataAware(data, prop, unoText, unoProperty) + method = getattr(uda,"updateData") + unoText.addTextListener(TextListenerProcAdapter(method)) + return uda + + @classmethod + def attachEditControl(self, data, prop, unoControl, field): + return self.__attachTextControl( + data, prop, unoControl, "Text", field, "") + + @classmethod + def attachDateControl(self, data, prop, unoControl, field): + return self.__attachTextControl( + data, prop, unoControl, "Date", field, 0) + + def attachTimeControl(self, data, prop, unoControl, field): + return self.__attachTextControl( + data, prop, unoControl, "Time", field, 0) + + @classmethod + def attachNumericControl(self, data, prop, unoControl, field): + return self.__attachTextControl( + data, prop, unoControl, "Value", field, float(0)) + + @classmethod + def attachCheckBox(self, data, prop, checkBox, field): + uda = UnoDataAware(data, prop, checkBox, PropertyNames.PROPERTY_STATE) + method = getattr(uda,"updateData") + checkBox.addItemListener(ItemListenerProcAdapter(method)) + return uda + + def attachLabel(self, data, prop, label, field): + return UnoDataAware(data, prop, label, PropertyNames.PROPERTY_LABEL) + + @classmethod + def attachListBox(self, data, prop, listBox, field): + uda = UnoDataAware(data, prop, listBox, "SelectedItems", True) + method = getattr(uda,"updateData") + listBox.addItemListener(ItemListenerProcAdapter(method)) + return uda diff --git a/wizards/com/sun/star/wizards/ui/event/__init__.py b/wizards/com/sun/star/wizards/ui/event/__init__.py new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/wizards/com/sun/star/wizards/ui/event/__init__.py |