summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorXisco FaulĂ­ <anistenis@gmail.com>2011-06-07 16:02:15 +0200
committerBjoern Michaelsen <bjoern.michaelsen@canonical.com>2011-06-07 16:07:27 +0200
commitb0df18dbd4c35e5a020320fcfe822c839b59fd7a (patch)
tree7cc4783093592823eb4603d08814c60199087bbd
parentafc02928b4bab02bae965e467a4b913b81e9887a (diff)
initial commit with migration of wizards to python
-rw-r--r--wizards/com/sun/star/wizards/RemoteFaxWizard6
-rw-r--r--wizards/com/sun/star/wizards/common/ConfigGroup.py73
-rw-r--r--wizards/com/sun/star/wizards/common/ConfigNode.py15
-rw-r--r--wizards/com/sun/star/wizards/common/Configuration.py293
-rw-r--r--wizards/com/sun/star/wizards/common/DebugHelper.py10
-rw-r--r--wizards/com/sun/star/wizards/common/Desktop.py293
-rw-r--r--wizards/com/sun/star/wizards/common/FileAccess.py789
-rw-r--r--wizards/com/sun/star/wizards/common/HelpIds.py1013
-rw-r--r--wizards/com/sun/star/wizards/common/Helper.py242
-rw-r--r--wizards/com/sun/star/wizards/common/Listener.py111
-rw-r--r--wizards/com/sun/star/wizards/common/NoValidPathException.py9
-rw-r--r--wizards/com/sun/star/wizards/common/PropertyNames.py15
-rw-r--r--wizards/com/sun/star/wizards/common/PropertySetHelper.py242
-rw-r--r--wizards/com/sun/star/wizards/common/Resource.java.orig140
-rw-r--r--wizards/com/sun/star/wizards/common/Resource.py66
-rw-r--r--wizards/com/sun/star/wizards/common/SystemDialog.py237
-rw-r--r--wizards/com/sun/star/wizards/common/__init__.py1
-rw-r--r--wizards/com/sun/star/wizards/common/prova.py7
-rw-r--r--wizards/com/sun/star/wizards/document/OfficeDocument.py240
-rw-r--r--wizards/com/sun/star/wizards/fax/CGFax.py31
-rw-r--r--wizards/com/sun/star/wizards/fax/CGFaxWizard.py10
-rw-r--r--wizards/com/sun/star/wizards/fax/CallWizard.py144
-rw-r--r--wizards/com/sun/star/wizards/fax/FaxDocument.py109
-rw-r--r--wizards/com/sun/star/wizards/fax/FaxWizardDialog.py101
-rw-r--r--wizards/com/sun/star/wizards/fax/FaxWizardDialogConst.py83
-rw-r--r--wizards/com/sun/star/wizards/fax/FaxWizardDialogImpl.py539
-rw-r--r--wizards/com/sun/star/wizards/fax/FaxWizardDialogResources.py96
-rw-r--r--wizards/com/sun/star/wizards/fax/__init__.py1
-rw-r--r--wizards/com/sun/star/wizards/text/TextDocument.py243
-rw-r--r--wizards/com/sun/star/wizards/text/TextFieldHandler.py169
-rw-r--r--wizards/com/sun/star/wizards/text/TextSectionHandler.py121
-rw-r--r--wizards/com/sun/star/wizards/text/ViewHandler.py38
-rw-r--r--wizards/com/sun/star/wizards/ui/PathSelection.py78
-rw-r--r--wizards/com/sun/star/wizards/ui/PeerConfig.py145
-rw-r--r--wizards/com/sun/star/wizards/ui/UIConsts.py66
-rw-r--r--wizards/com/sun/star/wizards/ui/UnoDialog.py648
-rw-r--r--wizards/com/sun/star/wizards/ui/UnoDialog2.py192
-rw-r--r--wizards/com/sun/star/wizards/ui/WizardDialog.py422
-rw-r--r--wizards/com/sun/star/wizards/ui/XPathSelectionListener.py7
-rw-r--r--wizards/com/sun/star/wizards/ui/__init__.py1
-rw-r--r--wizards/com/sun/star/wizards/ui/event/AbstractListener.py67
-rw-r--r--wizards/com/sun/star/wizards/ui/event/CommonListener.py73
-rw-r--r--wizards/com/sun/star/wizards/ui/event/DataAware.py291
-rw-r--r--wizards/com/sun/star/wizards/ui/event/DataAwareFields.java2
-rw-r--r--wizards/com/sun/star/wizards/ui/event/DataAwareFields.py158
-rw-r--r--wizards/com/sun/star/wizards/ui/event/EventNames.py15
-rw-r--r--wizards/com/sun/star/wizards/ui/event/MethodInvocation.py34
-rw-r--r--wizards/com/sun/star/wizards/ui/event/RadioDataAware.py45
-rw-r--r--wizards/com/sun/star/wizards/ui/event/UnoDataAware.py184
49 files changed, 7915 insertions, 0 deletions
diff --git a/wizards/com/sun/star/wizards/RemoteFaxWizard b/wizards/com/sun/star/wizards/RemoteFaxWizard
new file mode 100644
index 000000000000..fa3eccf22533
--- /dev/null
+++ b/wizards/com/sun/star/wizards/RemoteFaxWizard
@@ -0,0 +1,6 @@
+#!/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/common/ConfigGroup.py b/wizards/com/sun/star/wizards/common/ConfigGroup.py
new file mode 100644
index 000000000000..02ba16cb63c2
--- /dev/null
+++ b/wizards/com/sun/star/wizards/common/ConfigGroup.py
@@ -0,0 +1,73 @@
+from ConfigNode import *
+import traceback
+
+class ConfigGroup(ConfigNode):
+
+ def writeConfiguration(self, configurationView, param):
+ for i in dir(self):
+ if i.startswith(param):
+ try:
+ self.writeField(i, configurationView, param)
+ except Exception, ex:
+ print "Error writing field:" + i
+ traceback.print_exc()
+
+ def writeField(self, field, configView, prefix):
+ propertyName = field.getName().substring(prefix.length())
+ fieldType = field.getType()
+ if ConfigNode.isAssignableFrom(fieldType):
+ childView = Configuration.addConfigNode(configView, propertyName)
+ child = field.get(this)
+ child.writeConfiguration(childView, prefix)
+ elif fieldType.isPrimitive():
+ Configuration.set(convertValue(field), propertyName, configView)
+ elif isinstance(fieldType,str):
+ Configuration.set(field.get(this), propertyName, configView)
+
+ '''
+ convert the primitive type value of the
+ given Field object to the corresponding
+ Java Object value.
+ @param field
+ @return the value of the field as a Object.
+ @throws IllegalAccessException
+ '''
+
+ def convertValue(self, field):
+ if field.getType().equals(Boolean.TYPE):
+ return field.getBoolean(this)
+
+ if field.getType().equals(Integer.TYPE):
+ return field.getInt(this)
+
+ if field.getType().equals(Short.TYPE):
+ return field.getShort(this)
+
+ if field.getType().equals(Float.TYPE):
+ return field.getFloat(this)
+
+ if (field.getType().equals(Double.TYPE)):
+ return field.getDouble(this)
+ return None
+ #and good luck with it :-) ...
+
+ def readConfiguration(self, configurationView, param):
+ for i in dir(self):
+ if i.startswith(param):
+ try:
+ self.readField( i, configurationView, param)
+ except Exception, ex:
+ print "Error reading field: " + i
+ traceback.print_exc()
+
+ def readField(self, field, configView, prefix):
+ propertyName = field[len(prefix):]
+ child = getattr(self, field)
+ fieldType = type(child)
+ if type(ConfigNode) == fieldType:
+ child.setRoot(self.root)
+ child.readConfiguration(Configuration.getNode(propertyName, configView), prefix)
+ field.set(this, Configuration.getString(propertyName, configView))
+
+ def setRoot(self, newRoot):
+ self.root = newRoot
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 000000000000..d97ac1b646c4
--- /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 000000000000..adf7e8a7f6e4
--- /dev/null
+++ b/wizards/com/sun/star/wizards/common/Configuration.py
@@ -0,0 +1,293 @@
+from PropertyNames import PropertyNames
+from com.sun.star.uno import Exception as UnoException
+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 getInt(self, name, parent):
+ o = getNode(name, parent)
+ if AnyConverter.isVoid(o):
+ return 0
+
+ return AnyConverter.toInt(o)
+
+ @classmethod
+ def getShort(self, name, parent):
+ o = getNode(name, parent)
+ if AnyConverter.isVoid(o):
+ return 0
+
+ return AnyConverter.toShort(o)
+
+ @classmethod
+ def getFloat(self, name, parent):
+ o = getNode(name, parent)
+ if AnyConverter.isVoid(o):
+ return 0
+
+ return AnyConverter.toFloat(o)
+
+ @classmethod
+ def getDouble(self, name, parent):
+ o = getNode(name, parent)
+ if AnyConverter.isVoid(o):
+ return 0
+
+ return AnyConverter.toDouble(o)
+
+ @classmethod
+ def getString(self, name, parent):
+ o = getNode(name, parent)
+ if AnyConverter.isVoid(o):
+ return ""
+
+ return o
+
+ @classmethod
+ def getBoolean(self, name, parent):
+ o = getNode(name, parent)
+ if AnyConverter.isVoid(o):
+ return False
+
+ return AnyConverter.toBoolean(o)
+
+ @classmethod
+ def getNode(self, name, parent):
+ return parent.getByName(name)
+
+ @classmethod
+ def set(self, value, name, parent):
+ parent.setHierarchicalPropertyValue(name, value)
+
+ '''
+ @param name
+ @param parent
+ @return
+ @throws Exception
+ '''
+
+ @classmethod
+ def getConfigurationNode(self, name, parent):
+ return parent.getByName(name)
+
+ @classmethod
+ def getConfigurationRoot(self, xmsf, sPath, updateable):
+ oConfigProvider = xmsf.createInstance("com.sun.star.configuration.ConfigurationProvider")
+ if updateable:
+ sView = "com.sun.star.configuration.ConfigurationUpdateAccess"
+ else:
+ sView = "com.sun.star.configuration.ConfigurationAccess"
+
+ aPathArgument = uno.createUnoStruct('com.sun.star.beans.PropertyValue')
+ aPathArgument.Name = "nodepath"
+ aPathArgument.Value = sPath
+ aModeArgument = uno.createUnoStruct('com.sun.star.beans.PropertyValue')
+ if updateable:
+ aModeArgument.Name = "lazywrite"
+ aModeArgument.Value = False
+
+
+ return oConfigProvider.createInstanceWithArguments(sView,(aPathArgument,aModeArgument,))
+
+ @classmethod
+ def getChildrenNames(self, configView):
+ return configView.getElementNames()
+
+ @classmethod
+ def getProductName(self, xMSF):
+ try:
+ oProdNameAccess = self.getConfigurationRoot(xMSF, "org.openoffice.Setup/Product", False)
+ ProductName = Helper.getUnoObjectbyName(oProdNameAccess, "ooName")
+ return ProductName
+ except UnoException:
+ 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 UnoException, 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 UnoException, exception:
+ traceback.print_exc()
+ return None
+
+ '''
+ This method creates a new configuration node and adds it
+ to the given view. Note that if a node with the given name
+ already exists it will be completely removed from
+ the configuration.
+ @param configView
+ @param name
+ @return the new created configuration node.
+ @throws com.sun.star.lang.WrappedTargetException
+ @throws ElementExistException
+ @throws NoSuchElementException
+ @throws com.sun.star.uno.Exception
+ '''
+
+ @classmethod
+ def addConfigNode(self, configView, name):
+ if configView == None:
+ return configView.getByName(name)
+ else:
+ # the new element is the result !
+ newNode = configView.createInstance()
+ # insert it - this also names the element
+ xNameContainer.insertByName(name, newNode)
+ return newNode
+
+ @classmethod
+ def removeNode(self, configView, name):
+
+ if configView.hasByName(name):
+ configView.removeByName(name)
+
+ @classmethod
+ def commit(self, configView):
+ configView.commitChanges()
+
+ @classmethod
+ def updateConfiguration(self, xmsf, path, name, node, param):
+ view = Configuration.self.getConfigurationRoot(xmsf, path, True)
+ addConfigNode(path, name)
+ node.writeConfiguration(view, param)
+ view.commitChanges()
+
+ @classmethod
+ def removeNode(self, xmsf, path, name):
+ view = Configuration.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 UnoException, e:
+ traceback.print_exc()
+ return snames
+
+ @classmethod
+ def getChildNodebyIndex(self, _xNameAccess, _index):
+ try:
+ snames = _xNameAccess.getElementNames()
+ oNode = _xNameAccess.getByName(snames[_index])
+ return oNode
+ except UnoException, e:
+ traceback.print_exc()
+ return None
+
+ @classmethod
+ def getChildNodebyName(self, _xNameAccessNode, _SubNodeName):
+ try:
+ if _xNameAccessNode.hasByName(_SubNodeName):
+ return _xNameAccessNode.getByName(_SubNodeName)
+
+ except UnoException, 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 UnoException, 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 UnoException, 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 000000000000..75016033a533
--- /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 000000000000..a08f12c4f947
--- /dev/null
+++ b/wizards/com/sun/star/wizards/common/Desktop.py
@@ -0,0 +1,293 @@
+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 *
+from com.sun.star.uno import Exception as UnoException
+
+
+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 UnoException, 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 UnoException, 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 UnoException, 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 UnoException, 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 appends 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 ""
+
+ '''
+ @deprecated use Configuration.getConfigurationRoot() with the same parameters instead
+ @param xMSF
+ @param KeyName
+ @param bForUpdate
+ @return
+ '''
+
+ @classmethod
+ def getRegistryKeyContent(self, xMSF, KeyName, bForUpdate):
+ try:
+ aNodePath = range(1)
+ oConfigProvider = xMSF.createInstance("com.sun.star.configuration.ConfigurationProvider")
+ aNodePath[0] = uno.createUnoStruct('com.sun.star.beans.PropertyValue')
+ aNodePath[0].Name = "nodepath"
+ aNodePath[0].Value = KeyName
+ if bForUpdate:
+ return oConfigProvider.createInstanceWithArguments("com.sun.star.configuration.ConfigurationUpdateAccess", aNodePath)
+ else:
+ return oConfigProvider.createInstanceWithArguments("com.sun.star.configuration.ConfigurationAccess", aNodePath)
+
+ except UnoException, exception:
+ exception.printStackTrace(System.out)
+ return None
+
+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 000000000000..95f8646b1927
--- /dev/null
+++ b/wizards/com/sun/star/wizards/common/FileAccess.py
@@ -0,0 +1,789 @@
+import traceback
+from NoValidPathException import *
+from com.sun.star.ucb import CommandAbortedException
+from com.sun.star.uno import Exception as UnoException
+import types
+
+'''
+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 UnoException, 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 "" if 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:
+ if isinstance(Template_internal,tuple):
+ ReadPaths = ReadPaths + Template_internal
+ else:
+ ReadPaths = ReadPaths + (Template_internal,)
+ if type(Template_user) is not types.InstanceType:
+ if isinstance(Template_user,tuple):
+ ReadPaths = ReadPaths + Template_user
+ else:
+ ReadPaths = ReadPaths + (Template_internal,)
+ 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 UnoException, 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("vnd.sun.star.Expand:".length())
+ 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 UnoException, 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", VclWindowPeerAttribute.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", VclWindowPeerAttribute.OK, sMsgNoDir)
+ return False
+ except com.sun.star.uno.Exception, unoexception:
+ sMsgNoDir = JavaTools.replaceSubString(sNoDirCreation, Path, "%1")
+ SystemDialog.showMessageBox(xMSF, "ErrorBox", VclWindowPeerAttribute.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, String.valueOf(13), "<CR>")
+ iLeave = SystemDialog.showMessageBox(xMSF, "QueryBox", VclWindowPeerAttribute.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", VclWindowPeerAttribute.OK, sMsgFilePathInvalid)
+ return False
+ except com.sun.star.uno.Exception, exception:
+ traceback.print_exc()
+ SystemDialog.showMessageBox(xMSF, "ErrorBox", VclWindowPeerAttribute.OK, sMsgFilePathInvalid)
+ return False
+
+ '''
+ searches a directory for files which start with a certain
+ prefix, and returns their URLs and document-titles.
+ @param xMSF
+ @param FilterName the prefix of the filename. a "-" is added to the prefix !
+ @param FolderName the folder (URL) to look for files...
+ @return an array with two array members. The first one, with document titles,
+ the second with the corresponding URLs.
+ @deprecated please use the getFolderTitles() with ArrayList
+ '''
+
+ @classmethod
+ def getFolderTitles(self, xMSF, FilterName, FolderName):
+ LocLayoutFiles = [[2],[]]
+ try:
+ TitleVector = None
+ NameVector = None
+ xDocInterface = xMSF.createInstance("com.sun.star.document.DocumentProperties")
+ xInterface = xMSF.createInstance("com.sun.star.ucb.SimpleFileAccess")
+ nameList = xInterface.getFolderContents(FolderName, False)
+ TitleVector = []
+ NameVector = [len(nameList)]
+ if FilterName == None or FilterName == "":
+ FilterName = None
+ else:
+ FilterName = FilterName + "-"
+ fileName = ""
+ for i in nameList:
+ fileName = self.getFilename(i)
+ if FilterName == None or fileName.startswith(FilterName):
+ xDocInterface.loadFromMedium(i, tuple())
+ NameVector.append(i)
+ TitleVector.append(xDocInterface.Title)
+
+ LocLayoutFiles[1] = NameVector
+ LocLayoutFiles[0] = TitleVector
+ #COMMENTED
+ #JavaTools.bubblesortList(LocLayoutFiles)
+ except Exception, exception:
+ traceback.print_exc()
+
+ return LocLayoutFiles
+
+ '''
+ 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
+
+ @classmethod
+ def getFolderTitles2(self, xMSF, _sStartFilterName, FolderName, _sEndFilterName=""):
+ LocLayoutFiles = [[2],[]]
+ if FolderName.size() == 0:
+ raise NoValidPathException (None, "Path not given.");
+
+ TitleVector = []
+ URLVector = []
+ xInterface = None
+ try:
+ xInterface = xMSF.createInstance("com.sun.star.ucb.SimpleFileAccess")
+ except com.sun.star.uno.Exception, e:
+ traceback.print_exc()
+ raise NoValidPathException (None, "Internal error.");
+
+ j = 0
+ while j < FolderName.size():
+ sFolderName = FolderName.get(j)
+ try:
+ nameList = xInterface.getFolderContents(sFolderName, False)
+ if _sStartFilterName == None or _sStartFilterName.equals(""):
+ _sStartFilterName = None
+ else:
+ _sStartFilterName = _sStartFilterName + "-"
+
+ fileName = ""
+ i = 0
+ while i < nameList.length:
+ fileName = self.getFilename(i)
+ if _sStartFilterName == None or fileName.startsWith(_sStartFilterName):
+ if _sEndFilterName.equals(""):
+ sTitle = getTitle(xMSF, nameList[i])
+ elif fileName.endsWith(_sEndFilterName):
+ fileName = fileName.replaceAll(_sEndFilterName + "$", "")
+ sTitle = fileName
+ else:
+ # no or wrong (start|end) filter
+ continue
+
+ URLVector.add(nameList[i])
+ TitleVector.add(sTitle)
+
+ i += 1
+ except CommandAbortedException, exception:
+ traceback.print_exc()
+ except com.sun.star.uno.Exception, e:
+ pass
+
+ j += 1
+ LocNameList = [URLVector.size()]
+ LocTitleList = [TitleVector.size()]
+ # LLA: we have to check if this works
+ URLVector.toArray(LocNameList)
+
+ TitleVector.toArray(LocTitleList)
+
+ LocLayoutFiles[1] = LocNameList
+ LocLayoutFiles[0] = LocTitleList
+
+ #COMMENTED
+ #JavaTools.bubblesortList(LocLayoutFiles);
+ return LocLayoutFiles
+
+ 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, parentPath, childPath):
+ parent = self.filenameConverter.getSystemPathFromFileURL(parentPath)
+ f = File.File_unknown(parent, childPath)
+ r = self.filenameConverter.getFileURLFromSystemPath(parentPath, f.getAbsolutePath())
+ return r
+
+ def getURL(self, path):
+ f = File.File_unknown(path)
+ r = self.filenameConverter.getFileURLFromSystemPath(path, f.getAbsolutePath())
+ return r
+
+ 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 com.sun.star.uno.Exception, ex:
+ 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):
+ if url.endsWith("/"):
+ return getParentDir(url.substring(0, url.length() - 1))
+
+ pos = url.indexOf("/", pos + 1)
+ lastPos = 0
+ while pos > -1:
+ lastPos = pos
+ pos = url.indexOf("/", pos + 1)
+ return url.substring(0, lastPos)
+
+ 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 000000000000..ff939c3faf33
--- /dev/null
+++ b/wizards/com/sun/star/wizards/common/HelpIds.py
@@ -0,0 +1,1013 @@
+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 000000000000..908aa78a1b2b
--- /dev/null
+++ b/wizards/com/sun/star/wizards/common/Helper.py
@@ -0,0 +1,242 @@
+import uno
+import locale
+import traceback
+from com.sun.star.uno import Exception as UnoException
+from com.sun.star.uno import RuntimeException
+
+#TEMPORAL
+import inspect
+
+class Helper(object):
+
+ DAY_IN_MILLIS = (24 * 60 * 60 * 1000)
+
+ 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 xPSet.getPropertySetInfo().hasPropertyByName(PropertyName):
+ #xPSet.setPropertyValue(PropertyName, PropertyValue)
+ uno.invoke(xPSet,"setPropertyValue", (PropertyName,PropertyValue))
+ else:
+ selementnames = xPSet.getPropertySetInfo().getProperties()
+ raise ValueError("No Such Property: '" + PropertyName + "'");
+
+ except UnoException, exception:
+ print type(PropertyValue)
+ traceback.print_exc()
+
+ @classmethod
+ def getUnoObjectbyName(self, xName, ElementName):
+ try:
+ if xName.hasByName(ElementName) == True:
+ return xName.getByName(ElementName)
+ else:
+ raise RuntimeException();
+
+ except UnoException, exception:
+ traceback.print_exc()
+ return None
+
+ @classmethod
+ def getPropertyValue(self, CurPropertyValue, PropertyName):
+ MaxCount = len(CurPropertyValue)
+ i = 0
+ while i < MaxCount:
+ if CurPropertyValue[i] is not None:
+ if CurPropertyValue[i].Name.equals(PropertyName):
+ return CurPropertyValue[i].Value
+
+ i += 1
+ 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.equals(PropertyName):
+ return aValue.Value
+
+ i += 1
+ return None
+ except UnoException, 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 UnoException, 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 UnoException, exception:
+ traceback.print_exc()
+
+ return None
+
+ @classmethod
+ def getUnoStructValue(self, xPSet, PropertyName):
+ try:
+ if xPSet is not None:
+ if xPSet.getPropertySetInfo().hasPropertyByName(PropertyName) == True:
+ oObject = xPSet.getPropertyValue(PropertyName)
+ return oObject
+
+ return None
+ except UnoException, 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:
+ i = 0
+ while i < len(PropertyNames):
+ self.setUnoPropertyValue(xMultiPSetLst, PropertyNames[i], PropertyValues[i])
+ i += 1
+
+ except Exception, e:
+ curframe = inspect.currentframe()
+ calframe = inspect.getouterframes(curframe, 2)
+ #print "caller name:", calframe[1][3]
+ 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 UnoException, 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):
+
+ @classmethod
+ def DateUtils_XMultiServiceFactory_Object(self, xmsf, document):
+ tmp = DateUtils()
+ tmp.DateUtils_body_XMultiServiceFactory_Object(xmsf, document)
+ return tmp
+
+ def DateUtils_body_XMultiServiceFactory_Object(self, xmsf, docMSF):
+ defaults = docMSF.createInstance("com.sun.star.text.Defaults")
+ l = Helper.getUnoStructValue(defaults, "CharLocale")
+ jl = locale.setlocale(l.Language, l.Country, l.Variant)
+ self.calendar = Calendar.getInstance(jl)
+ self.formatSupplier = document
+ formatSettings = self.formatSupplier.getNumberFormatSettings()
+ date = Helper.getUnoPropertyValue(formatSettings, "NullDate")
+ self.calendar.set(date.Year, date.Month - 1, date.Day)
+ self.docNullTime = getTimeInMillis()
+ 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)
+
+ def getFormatter(self):
+ return self.formatter
+
+ def getTimeInMillis(self):
+ dDate = self.calendar.getTime()
+ return dDate.getTime()
+
+ '''
+ @param date a VCL date in form of 20041231
+ @return a document relative date
+ '''
+
+ def getDocumentDateAsDouble(self, date):
+ self.calendar.clear()
+ self.calendar.set(date / 10000, (date % 10000) / 100 - 1, date % 100)
+ date1 = getTimeInMillis()
+ '''
+ docNullTime and date1 are in millis, but
+ I need a day...
+ '''
+
+ daysDiff = (date1 - self.docNullTime) / DAY_IN_MILLIS + 1
+ return daysDiff
+
+ def getDocumentDateAsDouble(self, date):
+ return getDocumentDateAsDouble(date.Year * 10000 + date.Month * 100 + date.Day)
+
+ def getDocumentDateAsDouble(self, javaTimeInMillis):
+ self.calendar.clear()
+ JavaTools.setTimeInMillis(self.calendar, javaTimeInMillis)
+ date1 = getTimeInMillis()
+
+ '''
+ docNullTime and date1 are in millis, but
+ I need a day...
+ '''
+
+ daysDiff = (date1 - self.docNullTime) / DAY_IN_MILLIS + 1
+ return daysDiff
+
+ def format(self, formatIndex, date):
+ return self.formatter.convertNumberToString(formatIndex, getDocumentDateAsDouble(date))
+
+ def format(self, formatIndex, date):
+ return self.formatter.convertNumberToString(formatIndex, getDocumentDateAsDouble(date))
+
+ def format(self, formatIndex, javaTimeInMillis):
+ return self.formatter.convertNumberToString(formatIndex, getDocumentDateAsDouble(javaTimeInMillis))
diff --git a/wizards/com/sun/star/wizards/common/Listener.py b/wizards/com/sun/star/wizards/common/Listener.py
new file mode 100644
index 000000000000..238f22cac1a9
--- /dev/null
+++ b/wizards/com/sun/star/wizards/common/Listener.py
@@ -0,0 +1,111 @@
+#**********************************************************************
+#
+# 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 uno
+import unohelper
+
+#--------------------------------------------------
+# An ActionListener adapter.
+# This object implements com.sun.star.awt.XActionListener.
+# When actionPerformed is called, this will call an arbitrary
+# python procedure, passing it...
+# 1. the oActionEvent
+# 2. any other parameters you specified to this object's constructor (as a tuple).
+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, (oActionEvent,) + self.tParams )
+
+
+#--------------------------------------------------
+# An ItemListener adapter.
+# This object implements com.sun.star.awt.XItemListener.
+# When itemStateChanged is called, this will call an arbitrary
+# python procedure, passing it...
+# 1. the oItemEvent
+# 2. any other parameters you specified to this object's constructor (as a tuple).
+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 ):
+ apply( self.oProcToCall, (oItemEvent,) + self.tParams )
+
+
+#--------------------------------------------------
+# An TextListener adapter.
+# This object implements com.sun.star.awt.XTextistener.
+# When textChanged is called, this will call an arbitrary
+# python procedure, passing it...
+# 1. the oTextEvent
+# 2. any other parameters you specified to this object's constructor (as a tuple).
+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, (oTextEvent,) + self.tParams )
+
+#--------------------------------------------------
+# An Window adapter.
+# This object implements com.sun.star.awt.XWindowListener.
+# When textChanged is called, this will call an arbitrary
+# python procedure, passing it...
+# 1. the oTextEvent
+# 2. any other parameters you specified to this object's constructor (as a tuple).
+from com.sun.star.awt import XWindowListener
+class WindowListenerProcAdapter( unohelper.Base, XWindowListener ):
+ 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 windowResized(self, actionEvent):
+ if callable( self.oProcToCall ):
+ apply( self.oProcToCall, (actionEvent,) + self.tParams )
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 000000000000..96902883e5af
--- /dev/null
+++ b/wizards/com/sun/star/wizards/common/NoValidPathException.py
@@ -0,0 +1,9 @@
+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/PropertyNames.py b/wizards/com/sun/star/wizards/common/PropertyNames.py
new file mode 100644
index 000000000000..c1dde18522f3
--- /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 000000000000..4960b5380e1c
--- /dev/null
+++ b/wizards/com/sun/star/wizards/common/PropertySetHelper.py
@@ -0,0 +1,242 @@
+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:
+ // DebugHelper.writeInfo("PropertySetHelper.setProperty() can't get XPropertySet");
+ 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.orig b/wizards/com/sun/star/wizards/common/Resource.java.orig
new file mode 100644
index 000000000000..c7eb3e483db7
--- /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 000000000000..e6b37999255c
--- /dev/null
+++ b/wizards/com/sun/star/wizards/common/Resource.py
@@ -0,0 +1,66 @@
+from com.sun.star.awt.VclWindowPeerAttribute import OK
+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");
+
+
+ def showCommonResourceError(self, xMSF):
+ ProductName = Configuration.getProductName(xMSF)
+ 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", 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 000000000000..b88aadfafaa6
--- /dev/null
+++ b/wizards/com/sun/star/wizards/common/SystemDialog.py
@@ -0,0 +1,237 @@
+import uno
+import traceback
+from Configuration import Configuration
+from Resource import Resource
+from Desktop import Desktop
+
+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.uno import Exception as UnoException
+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)
+ listAny = [uno.Any("short",Type)]
+ if self.systemDialog != None:
+ self.systemDialog.initialize(listAny)
+
+ except UnoException, exception:
+ traceback.print_exc()
+
+ def createStoreDialog(self, xmsf):
+ return SystemDialog(xmsf, "com.sun.star.ui.dialogs.FilePicker", FILESAVE_AUTOEXTENSION)
+
+ def createOpenDialog(self, xmsf):
+ return SystemDialog(xmsf, "com.sun.star.ui.dialogs.FilePicker", FILEOPEN_SIMPLE)
+
+ def createFolderDialog(self, xmsf):
+ return SystemDialog(xmsf, "com.sun.star.ui.dialogs.FolderPicker", 0)
+
+ 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
+
+ '''
+ ATTENTION a BUG : TFILESAVE_AUTOEXTENSIONhe extension calculated
+ here gives the last 3 chars of the filename - what
+ if the extension is of 4 or more chars?
+ @param DisplayDirectory
+ @param DefaultName
+ @param sDocuType
+ @return
+ '''
+
+ def callStoreDialog(self, DisplayDirectory, DefaultName, sDocuType):
+ sExtension = DefaultName.substring(DefaultName.length() - 3, DefaultName.length())
+ addFilterToDialog(sExtension, sDocuType, True)
+ return callStoreDialog(DisplayDirectory, DefaultName)
+
+ '''
+ @param displayDir
+ @param defaultName
+ given url to a local path.
+ @return
+ '''
+
+ def callStoreDialog(self, displayDir, defaultName):
+ self.sStorePath = None
+ try:
+ self.systemDialog.setValue(CHECKBOX_AUTOEXTENSION, 0, True)
+ self.systemDialog.setDefaultName(defaultName)
+ self.systemDialog.setDisplayDirectory(subst(displayDir))
+ if execute(self.systemDialog):
+ sPathList = self.systemDialog.getFiles()
+ self.sStorePath = sPathList[0]
+
+ except UnoException, 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 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 execute(self.systemDialog):
+ return self.systemDialog.getFiles()
+
+ except UnoException, exception:
+ traceback.print_exc()
+
+ return None
+
+ def addFilterToDialog(self, sExtension, filterName, setToDefault):
+ try:
+ #get the localized filtername
+ uiName = getFilterUIName(filterName)
+ pattern = "*." + sExtension
+ #add the filter
+ 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 = [[getFilterUIName_(filterName)]]
+ s[0][0] = JavaTools.replaceSubString(s[0][0], prodName, "%productname%")
+ 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)
+ MaxCount = xPropertyValue.length
+ i = 0
+ while i < MaxCount:
+ aValue = xPropertyValue[i]
+ if aValue != None and aValue.Name.equals("UIName"):
+ return str(aValue.Value)
+
+ i += 1
+ raise NullPointerException ("UIName property not found for Filter " + filterName);
+ except UnoException, 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 UnoException, 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 000000000000..1e42b88e42ec
--- /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 000000000000..1219ba9aff7b
--- /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 000000000000..5692d90f47c6
--- /dev/null
+++ b/wizards/com/sun/star/wizards/document/OfficeDocument.py
@@ -0,0 +1,240 @@
+from com.sun.star.awt.WindowClass import TOP
+import traceback
+import uno
+
+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.getEvents(), "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.getCurrentController().getFrame()
+ 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
+
+ def createNewFrame(self, xMSF, listener):
+ return createNewFrame(xMSF, listener, "_blank")
+
+ def createNewFrame(self, xMSF, listener, FrameName):
+ xFrame = None
+ if FrameName.equalsIgnoreCase("WIZARD_LIVE_PREVIEW"):
+ xFrame = createNewPreviewFrame(xMSF, listener)
+ else:
+ xF = Desktop.getDesktop(xMSF)
+ xFrame = xF.findFrame(FrameName, 0)
+ if listener != None:
+ xFF = xF.getFrames()
+ xFF.remove(xFrame)
+ xF.addTerminateListener(listener)
+
+ return xFrame
+
+ 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.WindowDescriptor()
+ aDescriptor.Type = TOP
+ aDescriptor.WindowServiceName = "window"
+ aDescriptor.ParentIndex = -1
+ aDescriptor.Parent = None
+ aDescriptor.Bounds = Rectangle.Rectangle_unknown(10, 10, 640, 480)
+ aDescriptor.WindowAttributes = WindowAttribute.BORDER | WindowAttribute.MOVEABLE | WindowAttribute.SIZEABLE | VclWindowPeerAttribute.CLIPCHILDREN
+ #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 != None:
+ Desktop.getDesktop(xMSF).addTerminateListener(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, bStoreToUrl):
+ try:
+ if FilterName.length() > 0:
+ 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 bStoreToUrl == True:
+ xComponent.storeToURL(StorePath, oStoreProperties)
+ else:
+ xStoreable.storeAsURL(StorePath, oStoreProperties)
+
+ return True
+ 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/fax/CGFax.py b/wizards/com/sun/star/wizards/fax/CGFax.py
new file mode 100644
index 000000000000..24b5ae067c7d
--- /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 000000000000..a6729e4a5486
--- /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 000000000000..2bd940d82ec4
--- /dev/null
+++ b/wizards/com/sun/star/wizards/fax/CallWizard.py
@@ -0,0 +1,144 @@
+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.getName()):
+ 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.FaxWizardDialogImpl_unknown(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()).getBytes()
+ 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.getName())
+
+ '''
+ 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 000000000000..25db248c8b01
--- /dev/null
+++ b/wizards/com/sun/star/wizards/fax/FaxDocument.py
@@ -0,0 +1,109 @@
+import uno
+from text.TextDocument import *
+from com.sun.star.uno import Exception as UnoException
+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, "WIZARD_LIVE_PREVIEW")
+ self.keepLogoFrame = True
+ self.keepTypeFrame = True
+
+ def switchElement(self, sElement, bState):
+ try:
+ mySectionHandler = TextSectionHandler(self.xMSF, self.xTextDocument)
+ oSection = mySectionHandler.xTextDocument.getTextSections().getByName(sElement)
+ Helper.setUnoPropertyValue(oSection, "IsVisible", bState)
+ except UnoException, exception:
+ traceback.print_exc()
+
+ def updateDateFields(self):
+ FH = TextFieldHandler(self.xTextDocument, self.xTextDocument)
+ FH.updateDateFields()
+
+ def switchFooter(self, sPageStyle, bState, bPageNumber, sText):
+ if self.xTextDocument != None:
+ self.xTextDocument.lockControllers()
+ try:
+
+ xPageStyleCollection = self.xTextDocument.getStyleFamilies().getByName("PageStyles")
+ xPageStyle = xPageStyleCollection.getByName(sPageStyle)
+
+ if bState:
+ xPageStyle.setPropertyValue("FooterIsOn", True)
+ xFooterText = propertySet.getPropertyValue("FooterText")
+ xFooterText.setString(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 = xMSFDoc.createInstance("com.sun.star.text.TextField.PageNumber")
+ xPageNumberField.setPropertyValue("NumberingType", uno.Any("short",ARABIC))
+ xPageNumberField.setPropertyValue("SubType", CURRENT)
+ xFooterText.insertTextContent(xFooterText.getEnd(), xPageNumberField, False)
+
+ else:
+ Helper.setUnoPropertyValue(xPageStyle, "FooterIsOn", False)
+
+ self.xTextDocument.unlockControllers()
+ except UnoException, exception:
+ traceback.print_exc()
+
+ def hasElement(self, sElement):
+ if self.xTextDocument != None:
+ mySectionHandler = TextSectionHandler(self.xMSF, self.xTextDocument)
+ return mySectionHandler.hasTextSectionByName(sElement)
+ else:
+ return False
+
+ def switchUserField(self, sFieldName, sNewContent, bState):
+ myFieldHandler = TextFieldHandler(self.xMSF, self.xTextDocument)
+ if bState:
+ myFieldHandler.changeUserFieldContent(sFieldName, sNewContent)
+ else:
+ myFieldHandler.changeUserFieldContent(sFieldName, "")
+
+ def fillSenderWithUserData(self):
+ try:
+ myFieldHandler = TextFieldHandler(self.xTextDocument, self.xTextDocument)
+ oUserDataAccess = Configuration.getConfigurationRoot(self.xMSF, "org.openoffice.UserProfile/Data", False)
+ myFieldHandler.changeUserFieldContent("Company", 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 UnoException, exception:
+ traceback.print_exc()
+
+ def killEmptyUserFields(self):
+ myFieldHandler = TextFieldHandler(self.xMSF, self.xTextDocument)
+ myFieldHandler.removeUserFieldByContent("")
+
+ def killEmptyFrames(self):
+ try:
+ if not self.keepLogoFrame:
+ xTF = TextFrameHandler.getFrameByName("Company Logo", self.xTextDocument)
+ if xTF != None:
+ xTF.dispose()
+
+ if not self.keepTypeFrame:
+ xTF = TextFrameHandler.getFrameByName("Communication Type", self.xTextDocument)
+ if xTF != None:
+ xTF.dispose()
+
+ except UnoException, e:
+ 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 000000000000..9ff238354e63
--- /dev/null
+++ b/wizards/com/sun/star/wizards/fax/FaxWizardDialog.py
@@ -0,0 +1,101 @@
+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, uno.Any("short",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, uno.Any("short",1), 184))
+ 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, uno.Any("short",3), 74))
+ 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, uno.Any("short",2), 184))
+ 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, uno.Any("short",4), 74))
+ 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, uno.Any("short",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, uno.Any("short",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, uno.Any("short",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, uno.Any("short",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, uno.Any("short",0), 2, uno.Any("short",5), 212))
+ 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, uno.Any("short",0), 2,uno.Any("short",6), 212))
+ 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, uno.Any("short",0), 2, uno.Any("short",07), 100))
+ 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, uno.Any("short",8), 174))
+ 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, uno.Any("short",0), 2, uno.Any("short",9), 212))
+ 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, uno.Any("short",0), 2, uno.Any("short",10), 100))
+ 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, uno.Any("short",11), 174))
+ 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, uno.Any("short",0), 2, uno.Any("short",12), 100))
+ 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,uno.Any("short",13), 174))
+ 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, uno.Any("short",0), 2, uno.Any("short",14), 212))
+ 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, uno.Any("short",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, uno.Any("short",15), 149))
+ 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, uno.Any("short",16), 149))
+ 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, uno.Any("short",17), 119))
+ 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, uno.Any("short",18), 119))
+ 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, uno.Any("short",19), 25))
+ 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, uno.Any("short",20), 21))
+ 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, uno.Any("short",21), 65))
+ 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, uno.Any("short",22), 119))
+ 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, uno.Any("short",23), 200))
+ 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, uno.Any("short",24), 200))
+ 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, uno.Any("short",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, uno.Any("short",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, uno.Any("short",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, uno.Any("short",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, uno.Any("short",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, uno.Any("short",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, uno.Any("short",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, uno.Any("short",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, uno.Any("short",25), 203))
+ 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, uno.Any("short",0), 4, uno.Any("short",26), 202))
+ 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, uno.Any("short",0), 4, uno.Any("short",27), 201))
+ 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, uno.Any("short",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, uno.Any("short",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, uno.Any("short",28), self.resources.restxtTemplateName_value, 100))
+
+ 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, uno.Any("short",30), 198))
+ 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, uno.Any("short",31), 198))
+ 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, uno.Any("short",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, uno.Any("short",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, uno.Any("short",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), (uno.Any("short",0), 10, "private:resource/dbu/image/19205", 92, 145, False, 5, uno.Any("short",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, uno.Any("short",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, uno.Any("short",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 000000000000..05a5ba7372d6
--- /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 = "lstCommunicationTextChanged"
+CHKUSESUBJECT_ITEM_CHANGED = "chkUseSubjectItemChanged"
+CHKUSESALUTATION_ITEM_CHANGED = "chkUseSalutationItemChanged"
+LSTSALUTATION_ACTION_PERFORMED = None # "lstSalutationActionPerformed"
+LSTSALUTATION_ITEM_CHANGED = "lstSalutationItemChanged"
+LSTSALUTATION_TEXT_CHANGED = "lstSalutationTextChanged"
+CHKUSEGREETING_ITEM_CHANGED = "chkUseGreetingItemChanged"
+LSTGREETING_ACTION_PERFORMED = None # "lstGreetingActionPerformed"
+LSTGREETING_ITEM_CHANGED = "lstGreetingItemChanged"
+LSTGREETING_TEXT_CHANGED = "lstGreetingTextChanged"
+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 000000000000..b1500b02200c
--- /dev/null
+++ b/wizards/com/sun/star/wizards/fax/FaxWizardDialogImpl.py
@@ -0,0 +1,539 @@
+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 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)
+ print
+ print "lw.startWizard"
+ print
+ lw.startWizard(xLocMSF, None)
+ except RuntimeException, e:
+ # TODO Auto-generated catch block
+ traceback.print_exc()
+ except UnoException, e:
+ # TODO Auto-generated catch blocksetMaxStep
+ 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.setMaxStep(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.getText().lower() == "":
+ self.myPathSelection.initializePath()
+
+ self.xContainerWindow = self.myFaxDoc.xFrame.getContainerWindow()
+ 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.getComponentWindow().setEnable(False)
+
+ self.executeDialogFromComponent(self.myFaxDoc.xFrame)
+ self.removeTerminateListener()
+ self.closeDocument()
+ self.running = False
+ except UnoException, exception:
+ self.removeTerminateListener()
+ traceback.print_exc()
+ self.running = False
+ return
+
+ def cancelWizard(self):
+ xDialog.endExecute()
+ self.running = False
+
+ def finishWizard(self):
+ switchToStep(getCurrentStep(), getMaxStep())
+ self.myFaxDoc.setWizardTemplateDocInfo(self.resources.resFaxWizardDialog_title, self.resources.resTemplateDescription)
+ try:
+ fileAccess = FileAccess(xMSF)
+ self.sPath = self.myPathSelection.getSelectedPath()
+ if self.sPath.equals(""):
+ 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(xMSF, xControl.getPeer(), "MessBox", VclWindowPeerAttribute.YES_NO + VclWindowPeerAttribute.DEF_NO, self.resources.resOverwriteWarning)
+ if (answer == 3): # user said: no, do not overwrite....
+ return False
+
+
+ self.myFaxDoc.setWizardTemplateDocInfo(self.resources.resFaxWizardDialog_title, self.resources.resTemplateDescription)
+ self.myFaxDoc.killEmptyUserFields()
+ self.myFaxDoc.keepLogoFrame = (self.chkUseLogo.getState() != 0);
+ self.myFaxDoc.keepTypeFrame = (self.chkUseCommunicationType.getState() != 0);
+ self.myFaxDoc.killEmptyFrames()
+ self.bSaveSuccess = OfficeDocument.store(xMSF, self.xTextDocument, self.sPath, "writer8_template", False)
+ if self.bSaveSuccess:
+ saveConfiguration()
+ xIH = xMSF.createInstance("com.sun.star.comp.uui.UUIInteractionHandler")
+ loadValues = range(3)
+ 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 = uno.Any("short",ALWAYS_EXECUTE)
+ loadValues[2] = uno.createUnoStruct('com.sun.star.beans.PropertyValue')
+ loadValues[2].Name = "UpdateDocMode";
+ loadValues[2].Value = uno.Any("short",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(xMSF), self.sPath, "_default", loadValues)
+ myViewHandler = oDoc.getCurrentController().getViewSettings()
+ myViewHandler.setPropertyValue("ZoomType", uno.Any("short",OPTIMAL));
+ else:
+ pass
+ #TODO: Error Handling
+
+ except UnoException, e:
+ traceback.print_exc()
+ finally:
+ xDialog.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", self.BusinessFiles[0])
+ self.setControlProperty("lstPrivateStyle", "StringItemList", 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.getText() == "":
+ self.lstSalutation.setText(self.resources.SalutationLabels[0])
+
+ if self.lstGreeting.getText() == "":
+ self.lstGreeting.setText(self.resources.GreetingLabels[0])
+
+ if self.lstCommunicationType.getText() == "":
+ 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), None, True))
+ self.mainDA.append(UnoDataAware.attachListBox(self.myConfig.cp_BusinessFax, "cp_Style", self.lstBusinessStyle, None, True))
+ self.mainDA.append(UnoDataAware.attachListBox(self.myConfig.cp_PrivateFax, "cp_Style", self.lstPrivateStyle, None, True))
+ cgl = self.myConfig.cp_BusinessFax
+ self.faxDA.append(UnoDataAware.attachCheckBox(cgl, "cp_PrintCompanyLogo", self.chkUseLogo, None, True))
+ self.faxDA.append(UnoDataAware.attachCheckBox(cgl, "cp_PrintSubjectLine", self.chkUseSubject, None, True))
+ self.faxDA.append(UnoDataAware.attachCheckBox(cgl, "cp_PrintSalutation", self.chkUseSalutation, None, True))
+ self.faxDA.append(UnoDataAware.attachCheckBox(cgl, "cp_PrintDate", self.chkUseDate, None, True))
+ self.faxDA.append(UnoDataAware.attachCheckBox(cgl, "cp_PrintCommunicationType", self.chkUseCommunicationType, None, True))
+ self.faxDA.append(UnoDataAware.attachCheckBox(cgl, "cp_PrintGreeting", self.chkUseGreeting, None, True))
+ self.faxDA.append(UnoDataAware.attachCheckBox(cgl, "cp_PrintFooter", self.chkUseFooter, None, True))
+ self.faxDA.append(UnoDataAware.attachEditControl(cgl, "cp_Salutation", self.lstSalutation, None, True))
+ self.faxDA.append(UnoDataAware.attachEditControl(cgl, "cp_Greeting", self.lstGreeting, None, True))
+ self.faxDA.append(UnoDataAware.attachEditControl(cgl, "cp_CommunicationType", self.lstCommunicationType, None, True))
+ self.faxDA.append(RadioDataAware.attachRadioButtons(cgl, "cp_SenderAddressType", (self.optSenderDefine, self.optSenderPlaceholder), None, True))
+ self.faxDA.append(UnoDataAware.attachEditControl(cgl, "cp_SenderCompanyName", self.txtSenderName, None, True))
+ self.faxDA.append(UnoDataAware.attachEditControl(cgl, "cp_SenderStreet", self.txtSenderStreet, None, True))
+ self.faxDA.append(UnoDataAware.attachEditControl(cgl, "cp_SenderPostCode", self.txtSenderPostCode, None, True))
+ self.faxDA.append(UnoDataAware.attachEditControl(cgl, "cp_SenderState", self.txtSenderState, None, True))
+ self.faxDA.append(UnoDataAware.attachEditControl(cgl, "cp_SenderCity", self.txtSenderCity, None, True))
+ self.faxDA.append(UnoDataAware.attachEditControl(cgl, "cp_SenderFax", self.txtSenderFax, None, True))
+ self.faxDA.append(RadioDataAware.attachRadioButtons(cgl, "cp_ReceiverAddressType", (self.optReceiverDatabase, self.optReceiverPlaceholder), None, True))
+ self.faxDA.append(UnoDataAware.attachEditControl(cgl, "cp_Footer", self.txtFooter, None, True))
+ self.faxDA.append(UnoDataAware.attachCheckBox(cgl, "cp_FooterOnlySecondPage", self.chkFooterNextPages, None, True))
+ self.faxDA.append(UnoDataAware.attachCheckBox(cgl, "cp_FooterPageNumbers", self.chkFooterPageNumbers, None, True))
+ self.faxDA.append(RadioDataAware.attachRadioButtons(cgl, "cp_CreationType", (self.optCreateFax, self.optMakeChanges), None, True))
+ self.faxDA.append(UnoDataAware.attachEditControl(cgl, "cp_TemplateName", self.txtTemplateName, None, True))
+ self.faxDA.append(UnoDataAware.attachEditControl(cgl, "cp_TemplatePath", self.myPathSelection.xSaveTextBox, None, True))
+ except UnoException, exception:
+ traceback.print_exc()
+
+ def saveConfiguration(self):
+ try:
+ root = Configuration.getConfigurationRoot(xMSF, "/org.openoffice.Office.Writer/Wizards/Fax", True)
+ self.myConfig.writeConfiguration(root, "cp_")
+ Configuration.commit(root)
+ except UnoException, e:
+ traceback.print_exc()
+
+ def setConfiguration(self):
+ #set correct Configuration tree:
+ if self.optBusinessFax.getState():
+ self.optBusinessFaxItemChanged()
+ if self.optPrivateFax.getState():
+ 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):
+ self.xTextDocument = self.myFaxDoc.loadAsPreview(self.BusinessFiles[1][self.lstBusinessStyle.getSelectedItemPos()], 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):
+ self.xTextDocument = self.myFaxDoc.loadAsPreview(self.PrivateFiles[1][self.lstPrivateStyle.getSelectedItemPos()], False)
+ self.initializeElements()
+ self.setElements()
+
+ def txtTemplateNameTextChanged(self):
+ xDocProps = self.xTextDocument.getDocumentProperties()
+ xDocProps.Title = self.txtTemplateName.getText()
+
+ 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.txtSenderNameTextChanged()
+ self.txtSenderStreetTextChanged()
+ self.txtSenderPostCodeTextChanged()
+ self.txtSenderStateTextChanged()
+ self.txtSenderCityTextChanged()
+ self.txtSenderFaxTextChanged()
+
+ def optReceiverPlaceholderItemChanged(self):
+ OfficeDocument.attachEventCall(self.xTextDocument, "OnNew", "StarBasic", "macro:#/Template.Correspondence.Placeholder()")
+
+ def optReceiverDatabaseItemChanged(self):
+ OfficeDocument.attachEventCall(self.xTextDocument, "OnNew", "StarBasic", "macro:#/Template.Correspondence.Database()")
+
+ def optCreateFaxItemChanged(self):
+ self.bEditTemplate = False
+
+ def optMakeChangesItemChanged(self):
+ self.bEditTemplate = True
+
+ def txtSenderNameTextChanged(self):
+ myFieldHandler = TextFieldHandler(self.myFaxDoc.xMSF, self.xTextDocument)
+ myFieldHandler.changeUserFieldContent("Company", self.txtSenderName.getText())
+
+ def txtSenderStreetTextChanged(self):
+ myFieldHandler = TextFieldHandler(self.myFaxDoc.xMSF, self.xTextDocument)
+ myFieldHandler.changeUserFieldContent("Street", self.txtSenderStreet.getText())
+
+ def txtSenderCityTextChanged(self):
+ myFieldHandler = TextFieldHandler(self.myFaxDoc.xMSF, self.xTextDocument)
+ myFieldHandler.changeUserFieldContent("City", self.txtSenderCity.getText())
+
+ def txtSenderPostCodeTextChanged(self):
+ myFieldHandler = TextFieldHandler(self.myFaxDoc.xMSF, self.xTextDocument)
+ myFieldHandler.changeUserFieldContent("PostCode", self.txtSenderPostCode.getText())
+
+ def txtSenderStateTextChanged(self):
+ myFieldHandler = TextFieldHandler(self.myFaxDoc.xMSF, self.xTextDocument)
+ myFieldHandler.changeUserFieldContent(PropertyNames.PROPERTY_STATE, self.txtSenderState.getText())
+
+ def txtSenderFaxTextChanged(self):
+ myFieldHandler = TextFieldHandler(self.myFaxDoc.xMSF, self.xTextDocument)
+ myFieldHandler.changeUserFieldContent("Fax", self.txtSenderFax.getText())
+
+ #switch Elements on/off -------------------------------------------------------
+
+ def setElements(self):
+ #UI relevant:
+ if self.optSenderDefine.getState():
+ self.optSenderDefineItemChanged()
+
+ if self.optSenderPlaceholder.getState():
+ self.optSenderPlaceholderItemChanged()
+
+ self.chkUseLogoItemChanged()
+ self.chkUseSubjectItemChanged()
+ self.chkUseSalutationItemChanged()
+ self.chkUseGreetingItemChanged()
+ self.chkUseCommunicationItemChanged()
+ self.chkUseDateItemChanged()
+ self.chkUseFooterItemChanged()
+ self.txtTemplateNameTextChanged()
+ #not UI relevant:
+ if self.optReceiverDatabase.getState():
+ self.optReceiverDatabaseItemChanged()
+
+ if self.optReceiverPlaceholder.getState():
+ self.optReceiverPlaceholderItemChanged()
+
+ if self.optCreateFax.getState():
+ self.optCreateFaxItemChanged()
+
+ if self.optMakeChanges.getState():
+ self.optMakeChangesItemChanged()
+
+ def chkUseLogoItemChanged(self):
+ if self.myFaxDoc.hasElement("Company Logo"):
+ self.myFaxDoc.switchElement("Company Logo", (self.chkUseLogo.getState() != 0))
+
+ def chkUseSubjectItemChanged(self):
+ if self.myFaxDoc.hasElement("Subject Line"):
+ self.myFaxDoc.switchElement("Subject Line", (self.chkUseSubject.getState() != 0))
+
+ def chkUseDateItemChanged(self):
+ if self.myFaxDoc.hasElement("Date"):
+ self.myFaxDoc.switchElement("Date", (self.chkUseDate.getState() != 0))
+
+ def chkUseFooterItemChanged(self):
+ try:
+ bFooterPossible = (self.chkUseFooter.getState() != 0) and bool(getControlProperty("chkUseFooter", PropertyNames.PROPERTY_ENABLED))
+ if self.chkFooterNextPages.getState() != 0:
+ self.myFaxDoc.switchFooter("First Page", False, (self.chkFooterPageNumbers.getState() != 0), self.txtFooter.getText())
+ self.myFaxDoc.switchFooter("Standard", bFooterPossible, (self.chkFooterPageNumbers.getState() != 0), self.txtFooter.getText())
+ else:
+ self.myFaxDoc.switchFooter("First Page", bFooterPossible, (self.chkFooterPageNumbers.getState() != 0), self.txtFooter.getText())
+ self.myFaxDoc.switchFooter("Standard", bFooterPossible, (self.chkFooterPageNumbers.getState() != 0), self.txtFooter.getText())
+
+ #enable/disable roadmap item for footer page
+ BPaperItem = self.getRoadmapItemByID(FaxWizardDialogImpl.RM_FOOTER)
+ Helper.setUnoPropertyValue(BPaperItem, PropertyNames.PROPERTY_ENABLED, bFooterPossible)
+ except UnoException, exception:
+ traceback.print_exc()
+
+ def chkFooterNextPagesItemChanged(self):
+ chkUseFooterItemChanged()
+
+ def chkFooterPageNumbersItemChanged(self):
+ chkUseFooterItemChanged()
+
+ def txtFooterTextChanged(self):
+ chkUseFooterItemChanged()
+
+ def chkUseSalutationItemChanged(self):
+ self.myFaxDoc.switchUserField("Salutation", self.lstSalutation.getText(), (self.chkUseSalutation.getState() != 0))
+ self.setControlProperty("lstSalutation", PropertyNames.PROPERTY_ENABLED, self.chkUseSalutation.getState() != 0)
+
+ def lstSalutationItemChanged(self):
+ self.myFaxDoc.switchUserField("Salutation", self.lstSalutation.getText(), (self.chkUseSalutation.getState() != 0))
+
+ def chkUseCommunicationItemChanged(self):
+ self.myFaxDoc.switchUserField("CommunicationType", self.lstCommunicationType.getText(), (self.chkUseCommunicationType.getState() != 0))
+ self.setControlProperty("lstCommunicationType", PropertyNames.PROPERTY_ENABLED, self.chkUseCommunicationType.getState() != 0)
+
+ def lstCommunicationItemChanged(self):
+ self.myFaxDoc.switchUserField("CommunicationType", self.lstCommunicationType.getText(), (self.chkUseCommunicationType.getState() != 0))
+
+ def chkUseGreetingItemChanged(self):
+ self.myFaxDoc.switchUserField("Greeting", self.lstGreeting.getText(), (self.chkUseGreeting.getState() != 0))
+ self.setControlProperty("lstGreeting", PropertyNames.PROPERTY_ENABLED, (self.chkUseGreeting.getState() != 0))
+
+ def lstGreetingItemChanged(self):
+ self.myFaxDoc.switchUserField("Greeting", self.lstGreeting.getText(), (self.chkUseGreeting.getState() != 0))
+
+ def __setPossibleFooter(self, bState):
+ self.setControlProperty("chkUseFooter", PropertyNames.PROPERTY_ENABLED, bState)
+ if not bState:
+ self.chkUseFooter.setState(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 000000000000..dcb474ed6242
--- /dev/null
+++ b/wizards/com/sun/star/wizards/fax/FaxWizardDialogResources.py
@@ -0,0 +1,96 @@
+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):
+ i = 1
+ while i < 6:
+ self.RoadmapLabels = self.RoadmapLabels + ((self.getResText(FaxWizardDialogResources.RID_FAXWIZARDROADMAP_START + i)),)
+ i += 1
+
+ def loadSalutationResources(self):
+ i = 1
+ while i < 5:
+ self.SalutationLabels = self.SalutationLabels + ((self.getResText(FaxWizardDialogResources.RID_FAXWIZARDSALUTATION_START + i)),)
+ i += 1
+
+ def loadGreetingResources(self):
+ i = 1
+ while i < 5:
+ self.GreetingLabels = self.GreetingLabels + ((self.getResText(FaxWizardDialogResources.RID_FAXWIZARDGREETING_START + i)),)
+ i += 1
+
+ def loadCommunicationResources(self):
+ i = 1
+ while i < 4:
+ self.CommunicationLabels = self.CommunicationLabels+ ((self.getResText(FaxWizardDialogResources.RID_FAXWIZARDCOMMUNICATION_START + i)),)
+ 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 000000000000..ff5ad269ba10
--- /dev/null
+++ b/wizards/com/sun/star/wizards/fax/__init__.py
@@ -0,0 +1 @@
+"""fax """
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 000000000000..1da169d49ea9
--- /dev/null
+++ b/wizards/com/sun/star/wizards/text/TextDocument.py
@@ -0,0 +1,243 @@
+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
+
+class TextDocument(object):
+
+ def __init__(self, xMSF,listener=None,bShowStatusIndicator=None,
+ FrameName=None,_sPreviewURL=None,_moduleIdentifier=None,
+ _textDocument=None, xArgs=None):
+
+ self.xMSF = xMSF
+ self.xTextDocument = None
+
+ if listener:
+ if FrameName:
+ '''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:
+ '''creates an instance of TextDocument by loading a given URL as preview'''
+ self.xFrame = OfficeDocument.createNewFrame(xMSF, listener)
+ self.xTextDocument = self.loadAsPreview(_sPreviewURL, True)
+
+ elif xArgs:
+ '''creates an instance of TextDocument and creates a frame and loads a document'''
+ self.xDesktop = Desktop.getDesktop(xMSF);
+ self.xFrame = OfficeDocument.createNewFrame(xMSF, listener);
+ self.xTextDocument = OfficeDocument.load(xFrame, URL, "_self", xArgs);
+ self.xWindowPeer = xFrame.getComponentWindow()
+ self.m_xDocProps = self.xTextDocument.getDocumentProperties();
+ CharLocale = Helper.getUnoStructValue( self.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()
+ self.xTextDocument = self.xFrame.getController().getModel()
+
+ elif _moduleIdentifier:
+ try:
+ '''create the empty document, and set its module identifier'''
+ self.xTextDocument = xMSF.createInstance("com.sun.star.text.TextDocument")
+ self.xTextDocument.initNew()
+ self.xTextDocument.setIdentifier(_moduleIdentifier.getIdentifier())
+ # load the document into a blank frame
+ xDesktop = Desktop.getDesktop(xMSF)
+ loadArgs = range(1)
+ loadArgs[0] = "Model"
+ loadArgs[0] = -1
+ loadArgs[0] = self.xTextDocument
+ loadArgs[0] = DIRECT_VALUE
+ xDesktop.loadComponentFromURL("private:object", "_blank", 0, loadArgs)
+ # remember some things for later usage
+ self.xFrame = self.xTextDocument.getCurrentController().getFrame()
+ except Exception, e:
+ traceback.print_exc()
+
+ elif _textDocument:
+ '''creates an instance of TextDocument from a given XTextDocument'''
+ self.xFrame = _textDocument.getCurrentController().getFrame()
+ self.xTextDocument = _textDocument
+ if bShowStatusIndicator:
+ self.showStatusIndicator()
+ self.init()
+
+ def init(self):
+ self.xWindowPeer = self.xFrame.getComponentWindow()
+ self.m_xDocProps = self.xTextDocument.getDocumentProperties()
+ self.CharLocale = Helper.getUnoStructValue(self.xTextDocument, "CharLocale")
+ self.xText = self.xTextDocument.getText()
+
+ 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 self.xTextDocument is not None:
+ try:
+ self.xTextDocument.setModified(False)
+ except PropertyVetoException, e1:
+ traceback.print_exc()
+ self.xTextDocument = OfficeDocument.load(self.xFrame, sDefaultTemplate, "_self", loadValues)
+ self.DocSize = self.getPageSize()
+ myViewHandler = ViewHandler(self.xTextDocument, self.xTextDocument)
+ try:
+ myViewHandler.setViewSetting("ZoomType", uno.Any("short",ENTIRE_PAGE))
+ except Exception, e:
+ traceback.print_exc()
+ myFieldHandler = TextFieldHandler(self.xMSF, self.xTextDocument)
+ myFieldHandler.updateDocInfoFields()
+ return self.xTextDocument
+
+ def getPageSize(self):
+ try:
+ xNameAccess = self.xTextDocument.getStyleFamilies()
+ 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
+ self.xTextDocument.lockControllers()
+ iScaleLen = ScaleString.length()
+ xTextCursor = createTextCursor(self.xTextDocument.getText())
+ xTextCursor.gotoStart(False)
+ com.sun.star.wizards.common.Helper.setUnoPropertyValue(xTextCursor, "PageDescName", "First Page")
+ xTextCursor.setString(ScaleString)
+ xViewCursor = self.xTextDocument.getCurrentController()
+ xTextViewCursor = xViewCursor.getViewCursor()
+ xTextViewCursor.gotoStart(False)
+ iFirstPos = xTextViewCursor.getPosition().X
+ xTextViewCursor.gotoEnd(False)
+ iLastPos = xTextViewCursor.getPosition().X
+ iScale = (iLastPos - iFirstPos) / iScaleLen
+ xTextCursor.gotoStart(False)
+ xTextCursor.gotoEnd(True)
+ xTextCursor.setString("")
+ unlockallControllers()
+ return iScale
+
+ def unlockallControllers(self):
+ while self.xTextDocument.hasControllersLocked() == True:
+ self.xTextDocument.unlockControllers()
+
+ def refresh(self):
+ self.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)
+ cal = GregorianCalendar.GregorianCalendar()
+ year = cal.get(Calendar.YEAR)
+ month = cal.get(Calendar.MONTH)
+ day = cal.get(Calendar.DAY_OF_MONTH)
+ currentDate = DateTime.DateTime()
+ currentDate.Day = day
+ currentDate.Month = month
+ currentDate.Year = year
+ du = DateUtils(self.xMSF, self.xTextDocument)
+ ff = du.getFormat(NumberFormatIndex.DATE_SYS_DDMMYY)
+ myDate = du.format(ff, currentDate)
+ xDocProps2 = self.xTextDocument.getDocumentProperties()
+ xDocProps2.setAuthor(fullname)
+ xDocProps2.setModifiedBy(fullname)
+ description = xDocProps2.getDescription()
+ description = description + " " + TemplateDescription
+ description = JavaTools.replaceSubString(description, WizardName, "<wizard_name>")
+ description = JavaTools.replaceSubString(description, myDate, "<current_date>")
+ xDocProps2.setDescription(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)
+ 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()
+
+ '''
+ 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 000000000000..c318de0876c4
--- /dev/null
+++ b/wizards/com/sun/star/wizards/text/TextFieldHandler.py
@@ -0,0 +1,169 @@
+import traceback
+import time
+from com.sun.star.util import DateTime
+from common.PropertyNames import PropertyNames
+import unicodedata
+
+class TextFieldHandler(object):
+ '''
+ Creates a new instance of TextFieldHandler
+ @param xMSF
+ @param xTextDocument
+ '''
+
+ def __init__(self, xMSF, xTextDocument):
+ self.xMSFDoc = xMSF
+ self.xTextFieldsSupplier = xTextDocument
+
+ def refreshTextFields(self):
+ xUp = self.xTextFieldsSupplier.getTextFields()
+ 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.getTextFieldMasters().hasByName("com.sun.star.text.FieldMaster.User." + FieldName):
+ oMaster = self.xTextFieldsSupplier.getTextFieldMasters().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 __getTextFieldsByProperty(self, _PropertyName, _aPropertyValue, _TypeName):
+ try:
+ xDependentVector = []
+ if self.xTextFieldsSupplier.getTextFields().hasElements():
+ xEnum = self.xTextFieldsSupplier.getTextFields().createEnumeration()
+ while xEnum.hasMoreElements():
+ oTextField = xEnum.nextElement()
+ xPropertySet = oTextField.getTextFieldMaster()
+ if xPropertySet.getPropertySetInfo().hasPropertyByName(_PropertyName):
+ oValue = xPropertySet.getPropertyValue(_PropertyName)
+ if isinstance(oValue,unicode):
+ if _TypeName == "String":
+ sValue = unicodedata.normalize('NFKD', oValue).encode('ascii','ignore')
+ if sValue == _aPropertyValue:
+ xDependentVector.append(oTextField)
+ #COMMENTED
+ '''elif AnyConverter.isShort(oValue):
+ if _TypeName.equals("Short"):
+ iShortParam = (_aPropertyValue).shortValue()
+ ishortValue = AnyConverter.toShort(oValue)
+ if ishortValue == iShortParam:
+ xDependentVector.append(oTextField) '''
+
+ if len(xDependentVector) > 0:
+ return xDependentVector
+
+ except Exception, e:
+ #TODO Auto-generated catch block
+ traceback.print_exc()
+
+ return None
+
+ def changeUserFieldContent(self, _FieldName, _FieldContent):
+ try:
+ xDependentTextFields = self.__getTextFieldsByProperty(PropertyNames.PROPERTY_NAME, _FieldName, "String")
+ if xDependentTextFields != None:
+ for i in xDependentTextFields:
+ i.getTextFieldMaster().setPropertyValue("Content", _FieldContent)
+ self.refreshTextFields()
+
+ except Exception, e:
+ traceback.print_exc()
+
+ def updateDocInfoFields(self):
+ try:
+ xEnum = self.xTextFieldsSupplier.getTextFields().createEnumeration()
+ while xEnum.hasMoreElements():
+ oTextField = xEnum.nextElement()
+ if oTextField.supportsService("com.sun.star.text.TextField.ExtendedUser"):
+ oTextField.update()
+
+ if oTextField.supportsService("com.sun.star.text.TextField.User"):
+ oTextField.update()
+
+ except Exception, e:
+ traceback.print_exc()
+
+ def updateDateFields(self):
+ try:
+ xEnum = self.xTextFieldsSupplier.getTextFields().createEnumeration()
+ 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
+ while xEnum.hasMoreElements():
+ oTextField = xEnum.nextElement()
+ if oTextField.supportsService("com.sun.star.text.TextField.DateTime"):
+ oTextField.setPropertyValue("IsFixed", False)
+ oTextField.setPropertyValue("DateTimeValue", dt)
+
+ except Exception, e:
+ traceback.print_exc()
+
+ def fixDateFields(self, _bSetFixed):
+ try:
+ xEnum = self.xTextFieldsSupplier.getTextFields().createEnumeration()
+ while xEnum.hasMoreElements():
+ oTextField = xEnum.nextElement()
+ if oTextField.supportsService("com.sun.star.text.TextField.DateTime"):
+ oTextField.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", uno.Any("short",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 000000000000..f1c40ea563d7
--- /dev/null
+++ b/wizards/com/sun/star/wizards/text/TextSectionHandler.py
@@ -0,0 +1,121 @@
+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.getText()
+
+ def removeTextSectionbyName(self, SectionName):
+ try:
+ xAllTextSections = self.xTextDocument.getTextSections()
+ if xAllTextSections.hasByName(SectionName) == True:
+ oTextSection = self.xTextDocument.getTextSections().getByName(SectionName)
+ removeTextSection(oTextSection)
+
+ except Exception, exception:
+ traceback.print_exc()
+
+ def hasTextSectionByName(self, SectionName):
+ xAllTextSections = self.xTextDocument.getTextSections()
+ return xAllTextSections.hasByName(SectionName)
+
+ def removeLastTextSection(self):
+ try:
+ xAllTextSections = self.xTextDocument.getTextSections()
+ oTextSection = xAllTextSections.getByIndex(xAllTextSections.getCount() - 1)
+ 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.getTextSections()
+ TextSectionCount = xAllTextSections.getCount()
+ i = TextSectionCount - 1
+ while i >= 0:
+ xTextContentTextSection = xAllTextSections.getByIndex(i)
+ bRemoveTextSection = (not AnyConverter.toBoolean(xTextContentTextSection.getPropertyValue("IsVisible")))
+ if bRemoveTextSection:
+ self.xText.removeTextContent(xTextContentTextSection)
+
+ i -= 1
+ except Exception, exception:
+ traceback.print_exc()
+
+ def removeAllTextSections(self):
+ try:
+ TextSectionCount = self.xTextDocument.getTextSections().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.getTextSections().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.getTextSections().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.getTextSections().hasByName(sectionName) == True:
+ xTextSection = self.xTextDocument.getTextSections().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 000000000000..73462f871d3d
--- /dev/null
+++ b/wizards/com/sun/star/wizards/text/ViewHandler.py
@@ -0,0 +1,38 @@
+import uno
+
+class ViewHandler(object):
+ '''Creates a new instance of View '''
+
+ def __init__ (self, xMSF, xTextDocument):
+ self.xMSFDoc = xMSF
+ self.xTextDocument = xTextDocument
+ self.xTextViewCursorSupplier = self.xTextDocument.getCurrentController()
+
+ def selectFirstPage(self, oTextTableHandler):
+ try:
+ xPageCursor = self.xTextViewCursorSupplier.getViewCursor()
+ xPageCursor.jumpToFirstPage()
+ xPageCursor.jumpToStartOfPage()
+ Helper.setUnoPropertyValue(xPageCursor, "PageDescName", "First Page")
+ oPageStyles = self.xTextDocument.getStyleFamilies().getByName("PageStyles")
+ oPageStyle = oPageStyles.getByName("First Page")
+ xAllTextTables = oTextTableHandler.xTextTablesSupplier.getTextTables()
+ 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):
+ uno.invoke(self.xTextViewCursorSupplier.getViewSettings(),"setPropertyValue",(Setting, Value))
+
+ def collapseViewCursorToStart(self):
+ xTextViewCursor = self.xTextViewCursorSupplier.getViewCursor()
+ xTextViewCursor.collapseToStart()
+
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 000000000000..a1bdc9511e51
--- /dev/null
+++ b/wizards/com/sun/star/wizards/ui/PathSelection.py
@@ -0,0 +1,78 @@
+import traceback
+import uno
+from common.PropertyNames import *
+from common.FileAccess import *
+from com.sun.star.uno import Exception as UnoException
+
+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, uno.Any("short",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, uno.Any("short",(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, uno.Any("short",(CurTabIndex + 2)), 16], self)
+
+ def addSelectionListener(self, xAction):
+ self.xAction = xAction
+
+ def getSelectedPath(self):
+ return self.xSaveTextBox.getText()
+
+ def initializePath(self):
+ try:
+ myFA = FileAccess(self.xMSF)
+ self.xSaveTextBox.setText(myFA.getPath(self.sDefaultDirectory + "/" + self.sDefaultName, None))
+ except UnoException, e:
+ traceback.print_exc()
+
+ def triggerPathPicker(self):
+ try:
+ if iTransferMode == TransferMode.SAVE:
+ if iDialogType == DialogTypes.FOLDER:
+ #TODO: write code for picking a folder for saving
+ return
+ elif iDialogType == DialogTypes.FILE:
+ usedPathPicker = True
+ myFilePickerDialog = SystemDialog.createStoreDialog(xMSF)
+ myFilePickerDialog.callStoreDialog(sDefaultDirectory, sDefaultName, sDefaultFilter);
+ sStorePath = myFilePickerDialog.sStorePath;
+ if sStorePath:
+ myFA = FileAccess(xMSF);
+ xSaveTextBox.setText(myFA.getPath(sStorePath, None));
+ sDefaultDirectory = FileAccess.getParentDir(sStorePath);
+ 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 UnoException, e:
+ traceback.print_exc()
+
+ def callXPathSelectionListener(self):
+ if self.xAction != None:
+ self.xAction.validatePath()
diff --git a/wizards/com/sun/star/wizards/ui/PeerConfig.py b/wizards/com/sun/star/wizards/ui/PeerConfig.py
new file mode 100644
index 000000000000..b062846823db
--- /dev/null
+++ b/wizards/com/sun/star/wizards/ui/PeerConfig.py
@@ -0,0 +1,145 @@
+import traceback
+from common.Helper import *
+
+'''
+To change the template for this generated type comment go to
+Window>Preferences>Java>Code Generation>Code and Comments
+'''
+
+class PeerConfig(object):
+
+ def __init__(self, _oUnoDialog):
+ self.oUnoDialog = _oUnoDialog
+ #self.oUnoDialog.xUnoDialog.addWindowListener(self)
+ self.m_aPeerTasks = []
+ self.aControlTasks = []
+ self.aImageUrlTasks = []
+ self.oUnoDialog = None
+
+ class PeerTask(object):
+
+ def __init__(self,_xControl, propNames_, propValues_):
+ self.propnames = propNames_
+ self.propvalues = propValues_
+ self.xControl = _xControl
+
+ class ControlTask(object):
+
+ def __init__(self, _oModel, _propName, _propValue):
+ self.propname = _propName
+ self.propvalue = _propValue
+ self.oModel = _oModel
+
+ class ImageUrlTask(object):
+
+ def __init__(self, _oModel , _oResource, _oHCResource):
+ self.oResource = _oResource
+ self.oHCResource = _oHCResource
+ self.oModel = _oModel
+
+ def windowShown(self, arg0):
+ try:
+ i = 0
+ while i < self.m_aPeerTasks.size():
+ aPeerTask = self.m_aPeerTasks.elementAt(i)
+ xVclWindowPeer = aPeerTask.xControl.getPeer()
+ n = 0
+ while n < aPeerTask.propnames.length:
+ xVclWindowPeer.setProperty(aPeerTask.propnames[n], aPeerTask.propvalues[n])
+ n += 1
+ i += 1
+ i = 0
+ while i < self.aControlTasks.size():
+ aControlTask = self.aControlTasks.elementAt(i)
+ Helper.setUnoPropertyValue(aControlTask.oModel, aControlTask.propname, aControlTask.propvalue)
+ i += 1
+ i = 0
+ while i < self.aImageUrlTasks.size():
+ aImageUrlTask = self.aImageUrlTasks.elementAt(i)
+ sImageUrl = ""
+ if isinstance(aImageUrlTask.oResource,int):
+ sImageUrl = self.oUnoDialog.getWizardImageUrl((aImageUrlTask.oResource).intValue(), (aImageUrlTask.oHCResource).intValue())
+ elif isinstance(aImageUrlTask.oResource,str):
+ sImageUrl = self.oUnoDialog.getImageUrl((aImageUrlTask.oResource), (aImageUrlTask.oHCResource))
+
+ if not sImageUrl.equals(""):
+ Helper.setUnoPropertyValue(aImageUrlTask.oModel, PropertyNames.PROPERTY_IMAGEURL, sImageUrl)
+
+ i += 1
+ except RuntimeException, re:
+ traceback.print_exc
+ raise re;
+
+ '''
+ @param oAPIControl an API control that the interface XControl can be derived from
+ @param _saccessname
+ '''
+
+ def setAccessibleName(self, oAPIControl, _saccessname):
+ setPeerProperties(oAPIControl, ("AccessibleName"), (_saccessname))
+
+ def setAccessibleName(self, _xControl, _saccessname):
+ setPeerProperties(_xControl, ("AccessibleName"), (_saccessname))
+
+ '''
+ @param oAPIControl an API control that the interface XControl can be derived from
+ @param _propnames
+ @param _propvalues
+ '''
+
+ def setPeerProperties(self, oAPIControl, _propnames, _propvalues):
+ setPeerProperties(oAPIControl, _propnames, _propvalues)
+
+ def setPeerProperties(self, _xControl, propnames, propvalues):
+ oPeerTask = PeerTask(_xControl, propnames, propvalues)
+ self.m_aPeerTasks.append(oPeerTask)
+
+ '''
+ assigns an arbitrary property to a control as soon as the peer is created
+ Note: The property 'ImageUrl' should better be assigned with 'setImageurl(...)', to consider the High Contrast Mode
+ @param _ocontrolmodel
+ @param _spropname
+ @param _propvalue
+ '''
+
+ def setControlProperty(self, _ocontrolmodel, _spropname, _propvalue):
+ oControlTask = self.ControlTask.ControlTask_unknown(_ocontrolmodel, _spropname, _propvalue)
+ self.aControlTasks.append(oControlTask)
+
+ '''
+ Assigns an image to the property 'ImageUrl' of a dialog control. The image id must be assigned in a resource file
+ within the wizards project
+ wizards project
+ @param _ocontrolmodel
+ @param _nResId
+ @param _nhcResId
+ '''
+
+ def setImageUrl(self, _ocontrolmodel, _nResId, _nhcResId):
+ oImageUrlTask = ImageUrlTask(_ocontrolmodel,_nResId, _nhcResId)
+ self.aImageUrlTasks.append(oImageUrlTask)
+
+ '''
+ Assigns an image to the property 'ImageUrl' of a dialog control. The image ids that the Resource urls point to
+ may be assigned in a Resource file outside the wizards project
+ @param _ocontrolmodel
+ @param _sResourceUrl
+ @param _sHCResourceUrl
+ '''
+
+ def setImageUrl(self, _ocontrolmodel, _sResourceUrl, _sHCResourceUrl):
+ oImageUrlTask = ImageUrlTask(_ocontrolmodel, _sResourceUrl, _sHCResourceUrl)
+ self.aImageUrlTasks.append(oImageUrlTask)
+
+ '''
+ Assigns an image to the property 'ImageUrl' of a dialog control. The image id must be assigned in a resource file
+ within the wizards project
+ wizards project
+ @param _ocontrolmodel
+ @param _oResource
+ @param _oHCResource
+ '''
+
+ def setImageUrl(self, _ocontrolmodel, _oResource, _oHCResource):
+ oImageUrlTask = self.ImageUrlTask(_ocontrolmodel, _oResource, _oHCResource)
+ self.aImageUrlTasks.append(oImageUrlTask)
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 000000000000..f64ddedaf492
--- /dev/null
+++ b/wizards/com/sun/star/wizards/ui/UIConsts.py
@@ -0,0 +1,66 @@
+'''
+To change the template for this generated type comment go to
+Window>Preferences>Java>Code Generation>Code and Comments
+'''
+class UIConsts():
+
+ 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"
+ INFOIMAGEURL_HC = "private:resource/dbu/image/19230"
+ '''
+ 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
+ INTEGER_8 = 8
+ INTEGER_12 = 12
+ INTEGER_14 = 14
+ INTEGER_16 = 16
+ INTEGER_40 = 40
+ INTEGER_50 = 50
+
+ #Steps of the QueryWizard
+
+ SOFIELDSELECTIONPAGE = 1
+ SOSORTINGPAGE = 2
+ SOFILTERPAGE = 3
+ SOAGGREGATEPAGE = 4
+ SOGROUPSELECTIONPAGE = 5
+ SOGROUPFILTERPAGE = 6
+ SOTITLESPAGE = 7
+ SOSUMMARYPAGE = 8
+ INTEGERS = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
+
+ 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 000000000000..87a1a5d24c71
--- /dev/null
+++ b/wizards/com/sun/star/wizards/ui/UnoDialog.py
@@ -0,0 +1,648 @@
+import uno
+import traceback
+from common.PropertyNames import PropertyNames
+from com.sun.star.awt import Rectangle
+from common.Helper import Helper
+from PeerConfig import PeerConfig
+from common.Listener import *
+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.BisHighContrastModeActivated = None
+ self.m_oPeerConfig = None
+ self.xWindowPeer = None
+ except UnoException, 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 self.xDialogModel.hasByName(ControlName) == False:
+ return
+ xPSet = self.xDialogModel.getByName(ControlName)
+ if isinstance(PropertyValue,bool):
+ xPSet.setPropertyValue(PropertyName, PropertyValue)
+ else:
+ if isinstance(PropertyValue,list):
+ methodname = "[]short"
+ PropertyValue = tuple(PropertyValue)
+ elif isinstance(PropertyValue,tuple):
+ methodname = "[]string"
+ else:
+ PropertyValue = (PropertyValue,)
+ methodname = "[]string"
+ uno.invoke(xPSet, "setPropertyValue", (PropertyName, uno.Any( \
+ methodname, PropertyValue)))
+
+ except Exception, exception:
+ traceback.print_exc()
+
+ def transform( self, struct , propName, value ):
+ myinv = self.inv.createInstanceWithArguments( (struct,) )
+ access = self.insp.inspect( myinv )
+ method = access.getMethod( "setValue" , -1 )
+ uno.invoke( method, "invoke", ( myinv, ( propName , value ) ))
+ method = access.getMethod( "getMaterial" , -1 )
+ ret,dummy = method.invoke(myinv,() )
+ return ret
+
+ def getResource(self):
+ return self.m_oResource
+
+ def setControlProperties(self, ControlName, PropertyNames, PropertyValues):
+ self.setControlProperty(ControlName, PropertyNames, PropertyValues)
+
+ def getControlProperty(self, ControlName, PropertyName):
+ try:
+ xPSet = self.xDialogModel().getByName(ControlName)
+ oPropValuezxPSet.getPropertyValue(PropertyName)
+ except com.sun.star.uno.Exception, exception:
+ traceback.print_exc()
+ return None
+
+
+ def printControlProperties(self, ControlName):
+ try:
+ xControlModel = self.xDialogModel().getByName(ControlName)
+ allProps = xControlModel.getPropertySetInfo().getProperties()
+ i = 0
+ while i < allProps.length:
+ sName = allProps[i].Name
+ i += 1
+ except com.sun.star.uno.Exception, exception:
+ traceback.print_exc()
+
+ def getMAPConversionFactor(self, ControlName):
+ xControl2 = self.xUnoDialog.getControl(ControlName)
+ aSize = xControl2.getSize()
+ dblMAPWidth = ((Helper.getUnoPropertyValue(xControl2.getModel(), PropertyNames.PROPERTY_WIDTH)).intValue())
+ dblFactor = (((aSize.Width)) / dblMAPWidth)
+ return dblFactor
+
+ def getpreferredLabelSize(self, LabelName, sLabel):
+ xControl2 = self.xUnoDialog.getControl(LabelName)
+ OldText = xControl2.getText()
+ xControl2.setText(sLabel)
+ aSize = xControl2.getPreferredSize()
+ xControl2.setText(OldText)
+ return aSize
+
+ def removeSelectedItems(self, xListBox):
+ SelList = xListBox.getSelectedItemsPos()
+ 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, MainList.length)
+ 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()
+
+ self.BisHighContrastModeActivated = self.isHighContrastModeActivated()
+ 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.getPosSize())
+
+ '''
+ @param XComponent
+ @return 0 for cancel, 1 for ok
+ @throws com.sun.star.uno.Exception
+ '''
+
+ def executeDialogFromComponent(self, xComponent):
+ if xComponent != None:
+ w = xComponent.getComponentWindow()
+ if w != None:
+ return self.executeDialog(w.getPosSize())
+
+ 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 getModel(self, control):
+ return control.getModel()
+
+ @classmethod
+ def setEnabled(self, control, enabled):
+ setEnabled(control, enabled)
+
+ @classmethod
+ def setEnabled(self, control, enabled):
+ Helper.setUnoPropertyValue(getModel(control), PropertyNames.PROPERTY_ENABLED, enabled)
+
+ '''
+ @author bc93774
+ @param oControlModel the model of a control
+ @return the LabelType according to UIConsts.CONTROLTYPE
+ '''
+
+ @classmethod
+ def getControlModelType(self, oControlModel):
+ if oControlModel.supportsService("com.sun.star.awt.UnoControlFixedTextModel"):
+ return UIConsts.CONTROLTYPE.FIXEDTEXT
+ elif oControlModel.supportsService("com.sun.star.awt.UnoControlButtonModel"):
+ return UIConsts.CONTROLTYPE.BUTTON
+ elif oControlModel.supportsService("com.sun.star.awt.UnoControlCurrencyFieldModel"):
+ return UIConsts.CONTROLTYPE.CURRENCYFIELD
+ elif oControlModel.supportsService("com.sun.star.awt.UnoControlDateFieldModel"):
+ return UIConsts.CONTROLTYPE.DATEFIELD
+ elif oControlModel.supportsService("com.sun.star.awt.UnoControlFixedLineModel"):
+ return UIConsts.CONTROLTYPE.FIXEDLINE
+ elif oControlModel.supportsService("com.sun.star.awt.UnoControlFormattedFieldModel"):
+ return UIConsts.CONTROLTYPE.FORMATTEDFIELD
+ elif oControlModel.supportsService("com.sun.star.awt.UnoControlRoadmapModel"):
+ return UIConsts.CONTROLTYPE.ROADMAP
+ elif oControlModel.supportsService("com.sun.star.awt.UnoControlNumericFieldModel"):
+ return UIConsts.CONTROLTYPE.NUMERICFIELD
+ elif oControlModel.supportsService("com.sun.star.awt.UnoControlPatternFieldModel"):
+ return UIConsts.CONTROLTYPE.PATTERNFIELD
+ elif oControlModel.supportsService("com.sun.star.awt.UnoControlHyperTextModel"):
+ return UIConsts.CONTROLTYPE.HYPERTEXT
+ elif oControlModel.supportsService("com.sun.star.awt.UnoControlProgressBarModel"):
+ return UIConsts.CONTROLTYPE.PROGRESSBAR
+ elif oControlModel.supportsService("com.sun.star.awt.UnoControlTimeFieldModel"):
+ return UIConsts.CONTROLTYPE.TIMEFIELD
+ elif oControlModel.supportsService("com.sun.star.awt.UnoControlImageControlModel"):
+ return UIConsts.CONTROLTYPE.IMAGECONTROL
+ elif oControlModel.supportsService("com.sun.star.awt.UnoControlRadioButtonModel"):
+ return UIConsts.CONTROLTYPE.RADIOBUTTON
+ elif oControlModel.supportsService("com.sun.star.awt.UnoControlCheckBoxModel"):
+ return UIConsts.CONTROLTYPE.CHECKBOX
+ elif oControlModel.supportsService("com.sun.star.awt.UnoControlEditModel"):
+ return UIConsts.CONTROLTYPE.EDITCONTROL
+ elif oControlModel.supportsService("com.sun.star.awt.UnoControlComboBoxModel"):
+ return UIConsts.CONTROLTYPE.COMBOBOX
+ else:
+ if (oControlModel.supportsService("com.sun.star.awt.UnoControlListBoxModel")):
+ return UIConsts.CONTROLTYPE.LISTBOX
+ else:
+ return UIConsts.CONTROLTYPE.UNKNOWN
+
+ '''
+ @author bc93774
+ @param oControlModel
+ @return the name of the property that contains the value of a controlmodel
+ '''
+
+ @classmethod
+ def getDisplayProperty(self, oControlModel):
+ itype = getControlModelType(oControlModel)
+ return getDisplayProperty(itype)
+
+ '''
+ @param itype The type of the control conforming to UIConst.ControlType
+ @return the name of the property that contains the value of a controlmodel
+ '''
+
+ '''
+ @classmethod
+ def getDisplayProperty(self, itype):
+ # String propertyname = "";
+ tmp_switch_var1 = itype
+ if 1:
+ pass
+ else:
+ return ""
+ '''
+
+ def addResourceHandler(self, _Unit, _Module):
+ self.m_oResource = Resource.Resource_unknown(self.xMSF, _Unit, _Module)
+
+ def setInitialTabindex(self, _istep):
+ return (short)(_istep * 100)
+
+ def isHighContrastModeActivated(self):
+ if self.xContainerWindow != None:
+ if self.BisHighContrastModeActivated == None:
+ try:
+ nUIColor = int(self.xContainerWindow.getProperty("DisplayBackgroundColor"))
+ except IllegalArgumentException, e:
+ traceback.print_exc()
+ return False
+
+ #TODO: The following methods could be wrapped in an own class implementation
+ nRed = self.getRedColorShare(nUIColor)
+ nGreen = self.getGreenColorShare(nUIColor)
+ nBlue = self.getBlueColorShare(nUIColor)
+ nLuminance = ((nBlue * 28 + nGreen * 151 + nRed * 77) / 256)
+ bisactivated = (nLuminance <= 25)
+ self.BisHighContrastModeActivated = bisactivated
+ return bisactivated
+ else:
+ return self.BisHighContrastModeActivated.booleanValue()
+
+ else:
+ return False
+
+ def getRedColorShare(self, _nColor):
+ nRed = _nColor / 65536
+ nRedModulo = _nColor % 65536
+ nGreen = (int)(nRedModulo / 256)
+ nGreenModulo = (nRedModulo % 256)
+ nBlue = nGreenModulo
+ return nRed
+
+ def getGreenColorShare(self, _nColor):
+ nRed = _nColor / 65536
+ nRedModulo = _nColor % 65536
+ nGreen = (int)(nRedModulo / 256)
+ return nGreen
+
+ def getBlueColorShare(self, _nColor):
+ nRed = _nColor / 65536
+ nRedModulo = _nColor % 65536
+ nGreen = (int)(nRedModulo / 256)
+ nGreenModulo = (nRedModulo % 256)
+ nBlue = nGreenModulo
+ return nBlue
+
+ def getWizardImageUrl(self, _nResId, _nHCResId):
+ if isHighContrastModeActivated():
+ return "private:resource/wzi/image/" + _nHCResId
+ else:
+ return "private:resource/wzi/image/" + _nResId
+
+ def getImageUrl(self, _surl, _shcurl):
+ if isHighContrastModeActivated():
+ return _shcurl
+ else:
+ return _surl
+
+ 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 000000000000..8c2d805a3ab6
--- /dev/null
+++ b/wizards/com/sun/star/wizards/ui/UnoDialog2.py
@@ -0,0 +1,192 @@
+from UnoDialog import *
+from ui.event.CommonListener import *
+from common.Desktop import Desktop
+from UIConsts import *
+
+'''
+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 AbstractListener, CommonListener, MethodInvocation for details.
+'''
+
+class UnoDialog2(UnoDialog):
+
+ '''
+ Override this method to return another listener.
+ @return
+ '''
+
+ def __init__(self, xmsf):
+ super(UnoDialog2,self).__init__(xmsf,(), ())
+ self.guiEventListener = CommonListener()
+
+ def insertButton(self, sName, actionPerformed, sPropNames, oPropValues, eventTarget=None):
+ xButton = self.insertControlModel2("com.sun.star.awt.UnoControlButtonModel", sName, sPropNames, oPropValues)
+ if actionPerformed != None:
+ xButton.addActionListener(ActionListenerProcAdapter(self.guiEventListener))
+ self.guiEventListener.add(sName, EVENT_ACTION_PERFORMED, actionPerformed, eventTarget)
+
+ return xButton
+
+ def insertImageButton(self, sName, actionPerformed, sPropNames, oPropValues):
+ xButton = self.insertControlModel2("com.sun.star.awt.UnoControlButtonModel", sName, sPropNames, oPropValues)
+ if actionPerformed != None:
+ xButton.addActionListener(ActionListenerProcAdapter(actionPerformed))
+
+ return xButton
+
+ def insertCheckBox(self, sName, itemChanged, sPropNames, oPropValues, eventTarget=None):
+ xCheckBox = self.insertControlModel2("com.sun.star.awt.UnoControlCheckBoxModel", sName, sPropNames, oPropValues)
+ if itemChanged != None:
+ if eventTarget is None:
+ eventTarget = self
+ xCheckBox.addItemListener(ItemListenerProcAdapter(self.guiEventListener))
+ self.guiEventListener.add(sName, EVENT_ITEM_CHANGED, itemChanged, eventTarget)
+
+ return xCheckBox
+
+ def insertComboBox(self, sName, actionPerformed, itemChanged, textChanged, sPropNames, oPropValues, eventTarget=None):
+ xComboBox = self.insertControlModel2("com.sun.star.awt.UnoControlComboBoxModel", sName, sPropNames, oPropValues)
+ if eventTarget is None:
+ eventTarget = self
+ if actionPerformed != None:
+ xComboBox.addActionListener(self.guiEventListener)
+ self.guiEventListener.add(sName, EVENT_ACTION_PERFORMED, actionPerformed, eventTarget)
+
+ if itemChanged != None:
+ xComboBox.addItemListener(ItemListenerProcAdapter(self.guiEventListener))
+ self.guiEventListener.add(sName, EVENT_ITEM_CHANGED, itemChanged, eventTarget)
+
+ if textChanged != None:
+ xComboBox.addTextListener(TextListenerProcAdapter(self.guiEventListener))
+ self.guiEventListener.add(sName, EVENT_TEXT_CHANGED, textChanged, eventTarget)
+
+ return xComboBox
+
+ def insertListBox(self, sName, actionPerformed, itemChanged, sPropNames, oPropValues, eventTarget=None):
+ xListBox = self.insertControlModel2("com.sun.star.awt.UnoControlListBoxModel",
+ sName, sPropNames, oPropValues)
+
+ if eventTarget is None:
+ eventTarget = self
+
+ if actionPerformed != None:
+ xListBox.addActionListener(self.guiEventListener)
+ self.guiEventListener.add(sName, EVENT_ACTION_PERFORMED, actionPerformed, eventTarget)
+
+ if itemChanged != None:
+ xListBox.addItemListener(ItemListenerProcAdapter(self.guiEventListener))
+ self.guiEventListener.add(sName, EVENT_ITEM_CHANGED, itemChanged, eventTarget)
+
+ return xListBox
+
+ def insertRadioButton(self, sName, itemChanged, sPropNames, oPropValues, eventTarget=None):
+ xRadioButton = self.insertControlModel2("com.sun.star.awt.UnoControlRadioButtonModel",
+ sName, sPropNames, oPropValues)
+ if itemChanged != None:
+ if eventTarget is None:
+ eventTarget = self
+ xRadioButton.addItemListener(ItemListenerProcAdapter(self.guiEventListener))
+ self.guiEventListener.add(sName, EVENT_ITEM_CHANGED, itemChanged, eventTarget)
+
+ 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, eventTarget=None):
+ return self.insertEditField(sName, sTextChanged, eventTarget,
+ "com.sun.star.awt.UnoControlEditModel", sPropNames, oPropValues)
+
+ 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),(uno.Any("short",0), 10, UIConsts.INFOIMAGEURL, _posx, _posy, False, _iStep, 10))
+ self.getPeerConfiguration().setImageUrl(self.getModel(xImgControl), UIConsts.INFOIMAGEURL, UIConsts.INFOIMAGEURL_HC)
+ return xImgControl
+
+ '''
+ This method is used for creating Edit, Currency, Date, Formatted, Pattern, File
+ and Time edit components.
+ '''
+
+ def insertEditField(self, sName, sTextChanged, eventTarget, sModelClass, sPropNames, oPropValues):
+ xField = self.insertControlModel2(sModelClass, sName, sPropNames, oPropValues)
+ if sTextChanged != None:
+ if eventTarget is None:
+ eventTarget = self
+ xField.addTextListener(TextListenerProcAdapter(self.guiEventListener))
+ self.guiEventListener.add(sName, EVENT_TEXT_CHANGED, sTextChanged, eventTarget)
+
+ return xField
+
+ def insertFileControl(self, sName, sTextChanged, sPropNames, oPropValues, eventTarget=None):
+ return self.insertEditField(sName, sTextChanged, eventTarget, "com.sun.star.awt.UnoControlFileControlModel", sPropNames, oPropValues)
+
+ def insertCurrencyField(self, sName, sTextChanged, sPropNames, oPropValues, eventTarget=None):
+ return self.insertEditField(sName, sTextChanged, eventTarget, "com.sun.star.awt.UnoControlCurrencyFieldModel", sPropNames, oPropValues)
+
+ def insertDateField(self, sName, sTextChanged, sPropNames, oPropValues, eventTarget=None):
+ return self.insertEditField(sName, sTextChanged, eventTarget, "com.sun.star.awt.UnoControlDateFieldModel", sPropNames, oPropValues)
+
+ def insertNumericField(self, sName, sTextChanged, sPropNames, oPropValues, eventTarget=None):
+ return self.insertEditField(sName, sTextChanged, eventTarget, "com.sun.star.awt.UnoControlNumericFieldModel", sPropNames, oPropValues)
+
+ def insertTimeField(self, sName, sTextChanged, sPropNames, oPropValues, eventTarget=None):
+ return self.insertEditField(sName, sTextChanged, eventTarget, "com.sun.star.awt.UnoControlTimeFieldModel", sPropNames, oPropValues)
+
+ def insertPatternField(self, sName, sTextChanged, oPropValues, eventTarget=None):
+ return self.insertEditField(sName, sTextChanged, eventTarget, "com.sun.star.awt.UnoControlPatternFieldModel", sPropNames, oPropValues)
+
+ def insertFormattedField(self, sName, sTextChanged, sPropNames, oPropValues, eventTarget=None):
+ return self.insertEditField(sName, sTextChanged, eventTarget, "com.sun.star.awt.UnoControlFormattedFieldModel", sPropNames, oPropValues)
+
+ 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 < names.length:
+ print " Settings: ", names[i]
+ Helper.setUnoPropertyValue(model, names[i], values[i])
+ i += 1
+
+ def translateURL(self, relativeURL):
+ return ""
+
+ def getControlModel(self, unoControl):
+ obj = unoControl.getModel()
+ return obj
+
+ def showMessageBox(self, windowServiceName, windowAttribute, MessageText):
+ return SystemDialog.showMessageBox(xMSF, self.xControl.getPeer(), 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 000000000000..6dbdf53cea5e
--- /dev/null
+++ b/wizards/com/sun/star/wizards/ui/WizardDialog.py
@@ -0,0 +1,422 @@
+from UnoDialog2 import *
+from common.Resource import Resource
+from abc import ABCMeta, abstractmethod
+from com.sun.star.lang import NoSuchMethodException
+from com.sun.star.uno import Exception as UnoException
+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
+from event.MethodInvocation import *
+from event.EventNames import EVENT_ITEM_CHANGED
+
+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 = "callHelp"
+ '''
+ 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.vetos = VetoableChangeSupport.VetoableChangeSupport_unknown(this)
+
+ def getResource(self):
+ return self.__oWizardResource
+
+ def activate(self):
+ try:
+ if self.xUnoDialog != None:
+ self.xUnoDialog.toFront()
+
+ except UnoException, ex:
+ pass
+ # do nothing;
+
+ def setMaxStep(self, i):
+ self.__nMaxStep = i
+
+ def getMaxStep(self):
+ return self.__nMaxStep
+
+ def setOldStep(self, i):
+ self.__nOldStep = i
+
+ def getOldStep(self):
+ return self.__nOldStep
+
+ def setNewStep(self, i):
+ self.__nNewStep = i
+
+ def getNewStep(self):
+ return self.__nNewStep
+
+ #@see java.beans.VetoableChangeListener#vetoableChange(java.beans.PropertyChangeEvent)
+
+
+ def vetoableChange(self, arg0):
+ self.__nNewStep = self.__nOldStep
+
+ def itemStateChanged(self, itemEvent):
+ try:
+ self.__nNewStep = itemEvent.ItemId
+ self.__nOldStep = int(Helper.getUnoPropertyValue(self.xDialogModel, PropertyNames.PROPERTY_STEP))
+ if self.__nNewStep != self.__nOldStep:
+ 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", uno.Any("short",ID))
+
+ def getCurrentRoadmapItemID(self):
+ try:
+ return int(Helper.getUnoPropertyValue(self.oRoadmap, "CurrentItemID"))
+ except UnoException, 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, uno.Any("short",85)))
+ self.oRoadmap.setPropertyValue(PropertyNames.PROPERTY_NAME, "rdmNavi")
+
+ mi = MethodInvocation("itemStateChanged", self)
+ self.guiEventListener.add("rdmNavi", EVENT_ITEM_CHANGED, mi)
+ self.xRoadmapControl = self.xUnoDialog.getControl("rdmNavi")
+ self.xRoadmapControl.addItemListener(ItemListenerProcAdapter(self.guiEventListener))
+
+ Helper.setUnoPropertyValue(self.oRoadmap, "Text", self.__oWizardResource.getResText(UIConsts.RID_COMMON + 16))
+ except NoSuchMethodException, ex:
+ Resource.showCommonResourceError(xMSF)
+ except UnoException, 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, _LabelID, _CurItemID):
+ return insertRoadmapItem(_Index, _bEnabled, self.sRMItemLabels(_LabelID), _CurItemID)
+
+ def insertRoadmapItem(self, Index, _bEnabled, _sLabel, _CurItemID):
+ try:
+ 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 UnoException, exception:
+ traceback.print_exc()
+ return -1
+
+ def getRMItemCount(self):
+ return self.oRoadmap.getCount()
+
+ def getRoadmapItemByID(self, _ID):
+ try:
+ i = 0
+ while i < self.oRoadmap.getCount():
+ CurRoadmapItem = self.oRoadmap.getByIndex(i)
+ CurID = int(Helper.getUnoPropertyValue(CurRoadmapItem, "ID"))
+ if CurID == _ID:
+ return CurRoadmapItem
+
+ i += 1
+ return None
+ except UnoException, exception:
+ traceback.print_exc()
+ return None
+
+ def switchToStep(self,_nOldStep=None, _nNewStep=None):
+ if _nOldStep and _nNewStep:
+ self.__nOldStep = _nOldStep
+ self.__nNewStep = _nNewStep
+
+ leaveStep(self.__nOldStep, self.__nNewStep)
+ if self.__nNewStep != self.__nOldStep:
+ if self.__nNewStep == self.__nMaxStep:
+ setControlProperty("btnWizardNext", "DefaultButton", False)
+ setControlProperty("btnWizardFinish", "DefaultButton", True)
+ else:
+ setControlProperty("btnWizardNext", "DefaultButton", True)
+ setControlProperty("btnWizardFinish", "DefaultButton", False)
+
+ changeToStep(self.__nNewStep)
+ 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)
+ setCurrentRoadmapItemID((short)(nNewStep))
+ enableNextButton(getNextAvailableStep() > 0)
+ 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.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.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.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.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.setControlProperty("btnWizardNext", "DefaultButton", True)
+ # add a window listener, to know
+ # if the user used "escape" key to
+ # close the dialog.
+ windowHidden = MethodInvocation("windowHidden", self)
+ self.xUnoDialog.addWindowListener(WindowListenerProcAdapter(self.guiEventListener))
+ dialogName = Helper.getUnoPropertyValue(self.xDialogModel, PropertyNames.PROPERTY_NAME)
+ self.guiEventListener.add(dialogName, EVENT_ACTION_PERFORMED, windowHidden)
+ 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 getNextAvailableStep() > 0:
+ enableNextButton(bEnabled)
+
+ def enableNavigationButtons(self, _bEnableBack, _bEnableNext, _bEnableFinish):
+ enableBackButton(_bEnableBack)
+ enableNextButton(_bEnableNext)
+ enableFinishButton(_bEnableFinish)
+
+ def enableBackButton(self, enabled):
+ setControlProperty("btnWizardBack", PropertyNames.PROPERTY_ENABLED, enabled)
+
+ def enableNextButton(self, enabled):
+ setControlProperty("btnWizardNext", PropertyNames.PROPERTY_ENABLED, enabled)
+
+ def enableFinishButton(self, enabled):
+ 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 = 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 UnoException, exception:
+ traceback.print_exc()
+ return False
+
+ def gotoPreviousAvailableStep(self):
+ if self.__nNewStep > 1:
+ self.__nOldStep = self.__nNewStep
+ self.__nNewStep -= 1
+ while self.__nNewStep > 0:
+ bIsEnabled = isStepEnabled(self.__nNewStep)
+ if bIsEnabled:
+ break;
+
+ self.__nNewStep -= 1
+ # Exception???
+ if (self.__nNewStep == 0):
+ self.__nNewStep = self.__nOldStep
+ switchToStep()
+
+ #TODO discuss with rp
+
+ def getNextAvailableStep(self):
+ if isRoadmapComplete():
+ i = self.__nNewStep + 1
+ while i <= self.__nMaxStep:
+ if isStepEnabled(i):
+ return i
+
+ i += 1
+
+ return -1
+
+ def gotoNextAvailableStep(self):
+ self.__nOldStep = self.__nNewStep
+ self.__nNewStep = getNextAvailableStep()
+ if self.__nNewStep > -1:
+ switchToStep()
+
+ @abstractmethod
+ def finishWizard(self):
+ pass
+
+ #This function will call if the finish button is pressed on the UI.
+
+ def finishWizard_1(self):
+ enableFinishButton(False)
+ success = False
+ try:
+ success = finishWizard()
+ finally:
+ if not success:
+ enableFinishButton(True)
+
+ if success:
+ removeTerminateListener()
+
+ def getMaximalStep(self):
+ return self.__nMaxStep
+
+ def getCurrentStep(self):
+ try:
+ return int(Helper.getUnoPropertyValue(self.MSFDialogModel, PropertyNames.PROPERTY_STEP))
+ except UnoException, 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, uno.Any("short",12), 212))
+ i += 1
+
+ def cancelWizard(self):
+ #can be overwritten by extending class
+ xDialog.endExecute()
+
+ def removeTerminateListener(self):
+ if self.__bTerminateListenermustberemoved:
+ #COMMENTED
+ #Desktop.getDesktop(self.xMSF).removeTerminateListener( \
+ # ActionListenerProcAdapter(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):
+ cancelWizard()
+ removeTerminateListener()
+
+ def windowHidden(self):
+ cancelWizard_1()
+
+ def notifyTermination(self, arg0):
+ cancelWizard_1()
+
+ def queryTermination(self, arg0):
+ activate()
+ raise TerminationVetoException ();
+
+ def disposing(self, arg0):
+ cancelWizard_1()
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 000000000000..1f065209d2ea
--- /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 000000000000..51429ce86cfb
--- /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/AbstractListener.py b/wizards/com/sun/star/wizards/ui/event/AbstractListener.py
new file mode 100644
index 000000000000..a3337c66d13f
--- /dev/null
+++ b/wizards/com/sun/star/wizards/ui/event/AbstractListener.py
@@ -0,0 +1,67 @@
+from MethodInvocation import MethodInvocation
+import traceback
+'''
+This class is a base class for listener classes.
+It uses a hashtable to map between a ComponentName, EventName and a MethodInvokation Object.
+To use this class do the following:<br/>
+<list>
+<li>Write a subclass which implements the needed Listener(s).</li>
+in the even methods, use invoke(...).
+<li>When instanciating the component, register the subclass as the event listener.</li>
+<li>Write the methods which should be performed when the event occures.</li>
+<li>call the "add" method, to define a component-event-action mapping.</li>
+</list>
+@author rpiterman
+'''
+
+class AbstractListener(object):
+ '''Creates a new instance of AbstractListener'''
+
+ mHashtable = {}
+
+ def add(self, componentName, eventName, mi, target=None):
+ try:
+ if target is not None:
+ mi = MethodInvocation(mi, target)
+ AbstractListener.mHashtable[componentName + eventName] = mi
+ except Exception, e:
+ traceback.print_exc()
+
+
+ def get(self, componentName, eventName):
+ return AbstractListener.mHashtable[componentName + eventName]
+
+ @classmethod
+ def invoke(self, componentName, eventName, param):
+ try:
+ mi = self.get(componentName, eventName)
+ if mi != None:
+ return mi.invoke(param)
+ else:
+ return None
+
+ except InvocationTargetException, ite:
+ print "======================================================="
+ print "=== Note: An Exception was thrown which should have ==="
+ print "=== caused a crash. I caught it. Please report this ==="
+ print "=== to libreoffice.org ==="
+ print "======================================================="
+ traceback.print_exc()
+ except IllegalAccessException, iae:
+ traceback.print_exc()
+ except Exception, ex:
+ print "======================================================="
+ print "=== Note: An Exception was thrown which should have ==="
+ print "=== caused a crash. I Catched it. Please report this =="
+ print "=== to libreoffice.org =="
+ print "======================================================="
+ traceback.print_exc()
+
+ return None
+
+ '''
+ Rerurns the property "name" of the Object which is the source of the event.
+ '''
+ def getEventSourceName(self, eventObject):
+ return Helper.getUnoPropertyValue(eventObject.Source.getModel(), PropertyNames.PROPERTY_NAME)
+
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 000000000000..570be2557c75
--- /dev/null
+++ b/wizards/com/sun/star/wizards/ui/event/CommonListener.py
@@ -0,0 +1,73 @@
+'''
+import com.sun.star.awt.*;
+
+import com.sun.star.lang.EventObject;
+'''
+from AbstractListener import AbstractListener
+from EventNames import *
+
+class CommonListener(AbstractListener):
+
+ def __init__(self):
+ pass
+
+ '''Implementation of com.sun.star.awt.XActionListener'''
+ def actionPerformed(self, actionEvent):
+ self.invoke(self.getEventSourceName(actionEvent), EVENT_ACTION_PERFORMED, actionEvent)
+
+ '''Implementation of com.sun.star.awt.XItemListener'''
+ def itemStateChanged(self, itemEvent):
+ self.invoke(self.getEventSourceName(itemEvent), EVENT_ITEM_CHANGED, itemEvent)
+
+ '''Implementation of com.sun.star.awt.XTextListener'''
+ def textChanged(self, textEvent):
+ self.invoke(self.getEventSourceName(textEvent), EVENT_TEXT_CHANGED, textEvent)
+
+ '''@see com.sun.star.awt.XWindowListener#windowResized(com.sun.star.awt.WindowEvent)'''
+ def windowResized(self, event):
+ self.invoke(self.getEventSourceName(event), EVENT_WINDOW_RESIZED, event)
+
+ '''@see com.sun.star.awt.XWindowListener#windowMoved(com.sun.star.awt.WindowEvent)'''
+ def windowMoved(self, event):
+ self.invoke(self.getEventSourceName(event), EVENT_WINDOW_MOVED, event)
+
+ '''@see com.sun.star.awt.XWindowListener#windowShown(com.sun.star.lang.EventObject)'''
+ def windowShown(self, event):
+ self.invoke(self.getEventSourceName(event), EVENT_WINDOW_SHOWN, event)
+
+ '''@see com.sun.star.awt.XWindowListener#windowHidden(com.sun.star.lang.EventObject)'''
+ def windowHidden(self, event):
+ self.invoke(self.getEventSourceName(event), EVENT_WINDOW_HIDDEN, event)
+
+ '''@see com.sun.star.awt.XMouseListener#mousePressed(com.sun.star.awt.MouseEvent)'''
+ def mousePressed(self, event):
+ self.invoke(self.getEventSourceName(event), EVENT_MOUSE_PRESSED, event)
+
+ '''@see com.sun.star.awt.XMouseListener#mouseReleased(com.sun.star.awt.MouseEvent)'''
+ def mouseReleased(self, event):
+ self.invoke(self.getEventSourceName(event), EVENT_KEY_RELEASED, event)
+
+ '''@see com.sun.star.awt.XMouseListener#mouseEntered(com.sun.star.awt.MouseEvent)'''
+ def mouseEntered(self, event):
+ self.invoke(self.getEventSourceName(event), EVENT_MOUSE_ENTERED, event)
+
+ '''@see com.sun.star.awt.XMouseListener#mouseExited(com.sun.star.awt.MouseEvent)'''
+ def mouseExited(self, event):
+ self.invoke(self.getEventSourceName(event), EVENT_MOUSE_EXITED, event)
+
+ '''@see com.sun.star.awt.XFocusListener#focusGained(com.sun.star.awt.FocusEvent)'''
+ def focusGained(self, event):
+ self.invoke(self.getEventSourceName(event), EVENT_FOCUS_GAINED, event)
+
+ '''@see com.sun.star.awt.XFocusListener#focusLost(com.sun.star.awt.FocusEvent)'''
+ def focusLost(self, event):
+ self.invoke(self.getEventSourceName(event), EVENT_FOCUS_LOST, event)
+
+ '''@see com.sun.star.awt.XKeyListener#keyPressed(com.sun.star.awt.KeyEvent)'''
+ def keyPressed(self, event):
+ self.invoke(c(event), EVENT_KEY_PRESSED, event)
+
+ '''@see com.sun.star.awt.XKeyListener#keyReleased(com.sun.star.awt.KeyEvent)'''
+ def keyReleased(self, event):
+ self.invoke(self.getEventSourceName(event), EVENT_KEY_RELEASED, event)
+
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 000000000000..dfd62438b5ac
--- /dev/null
+++ b/wizards/com/sun/star/wizards/ui/event/DataAware.py
@@ -0,0 +1,291 @@
+from common.PropertyNames import *
+from abc import ABCMeta, abstractmethod
+import traceback
+
+#TEMPORAL
+import inspect
+
+'''
+@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_, value_):
+ self._dataObject = dataObject_
+ self._value = value_
+
+ '''
+ Sets the given value to the data object.
+ this method delegates the job to the
+ Value object, but can be overwritten if
+ another kind of Data is needed.
+ @param newValue the new value to set to the DataObject.
+ '''
+
+ def setToData(self, newValue):
+ self._value.set(newValue, self._dataObject)
+
+ '''
+ gets the current value from the data obejct.
+ this method delegates the job to
+ the value object.
+ @return the current value of the data object.
+ '''
+
+ def getFromData(self):
+ return self._value.get(self._dataObject)
+
+ '''
+ 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 = self.getFromData()
+ ui = self.getFromUI()
+ if data != 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):
+ data = self.getFromData()
+ ui = self.getFromUI()
+ if not equals(data, ui):
+ setToData(ui)
+
+ class Listener(object):
+ @abstractmethod
+ def eventPerformed (self, event):
+ pass
+
+ '''
+ compares the two given objects.
+ This method is null safe and returns true also if both are null...
+ If both are arrays, treats them as array of short and compares them.
+ @param a first object to compare
+ @param b second object to compare.
+ @return true if both are null or both are equal.
+ '''
+
+ def equals(self, a, b):
+ if not a and not b :
+ return True
+
+ if not a or not b:
+ return False
+
+ if a.getClass().isArray():
+ if b.getClass().isArray():
+ return Arrays.equals(a, b)
+ else:
+ return False
+
+ return a.equals(b)
+
+ '''
+ 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 != None and not (type(self._value) 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);
+
+ '''
+ Value objects read and write a value from and
+ to an object. Typically using reflection and JavaBeans properties
+ or directly using memeber reflection API.
+ DataAware delegates the handling of the DataObject
+ to a Value object.
+ 2 implementations currently exist: PropertyValue,
+ using JavaBeans properties reflection, and DataAwareFields classes
+ which implement different memeber types.
+ '''
+ class Value (object):
+
+ '''gets a value from the given object.
+ @param target the object to get the value from.
+ @return the value from the given object.
+ '''
+ @abstractmethod
+ def Get (self, target):
+ pass
+
+ '''
+ sets a value to the given object.
+ @param value the value to set to the object.
+ @param target the object to set the value to.
+ '''
+ @abstractmethod
+ def Set (self, value, target):
+ pass
+
+ '''
+ checks if this Value object can handle
+ the given object type as a target.
+ @param type the type of a target to check
+ @return true if the given class is acceptible for
+ the Value object. False if not.
+ '''
+ @abstractmethod
+ def isAssifrom(self, Type):
+ pass
+
+ '''
+ implementation of Value, handling JavaBeans properties through
+ reflection.
+ This Object gets and sets a value a specific
+ (JavaBean-style) property on a given object.
+ @author rp143992
+ '''
+ class PropertyValue(Value):
+
+ __EMPTY_ARRAY = range(0)
+
+ '''
+ creates a PropertyValue for the property with
+ the given name, of the given JavaBean object.
+ @param propertyName the property to access. Must be a Cup letter (e.g. PropertyNames.PROPERTY_NAME for getName() and setName("..."). )
+ @param propertyOwner the object which "own" or "contains" the property.
+ '''
+
+ def __init__(self, propertyName, propertyOwner):
+ self.getMethod = createGetMethod(propertyName, propertyOwner)
+ self.setMethod = createSetMethod(propertyName, propertyOwner, self.getMethod.getReturnType())
+
+ '''
+ called from the constructor, and creates a get method reflection object
+ for the given property and object.
+ @param propName the property name0
+ @param obj the object which contains the property.
+ @return the get method reflection object.
+ '''
+
+ def createGetMethod(self, propName, obj):
+ m = None
+ try:
+ #try to get a "get" method.
+ m = obj.getClass().getMethod("get" + propName, self.__class__.__EMPTY_ARRAY)
+ except NoSuchMethodException, ex1:
+ raise IllegalArgumentException ("get" + propName + "() method does not exist on " + obj.getClass().getName());
+
+ return m
+
+ def Get(self, target):
+ try:
+ return self.getMethod.invoke(target, self.__class__.__EMPTY_ARRAY)
+ except IllegalAccessException, ex1:
+ ex1.printStackTrace()
+ except InvocationTargetException, ex2:
+ ex2.printStackTrace()
+ except NullPointerException, npe:
+ if isinstance(self.getMethod.getReturnType(),str):
+ return ""
+
+ if isinstance(self.getMethod.getReturnType(),int ):
+ return 0
+
+ if isinstance(self.getMethod.getReturnType(),tuple):
+ return 0
+
+ if isinstance(self.getMethod.getReturnType(),list ):
+ return []
+
+ return None
+
+ def createSetMethod(self, propName, obj, paramClass):
+ m = None
+ try:
+ m = obj.getClass().getMethod("set" + propName, [paramClass])
+ except NoSuchMethodException, ex1:
+ raise IllegalArgumentException ("set" + propName + "(" + self.getMethod.getReturnType().getName() + ") method does not exist on " + obj.getClass().getName());
+
+ return m
+
+ def Set(self, value, target):
+ try:
+ self.setMethod.invoke(target, [value])
+ except IllegalAccessException, ex1:
+ ex1.printStackTrace()
+ except InvocationTargetException, ex2:
+ ex2.printStackTrace()
+
+ def isAssignable(self, type):
+ return self.getMethod.getDeclaringClass().isAssignableFrom(type) and self.setMethod.getDeclaringClass().isAssignableFrom(type)
+
diff --git a/wizards/com/sun/star/wizards/ui/event/DataAwareFields.java b/wizards/com/sun/star/wizards/ui/event/DataAwareFields.java
index 119b2b6e1e51..7a6b19ce6d7f 100644
--- a/wizards/com/sun/star/wizards/ui/event/DataAwareFields.java
+++ b/wizards/com/sun/star/wizards/ui/event/DataAwareFields.java
@@ -318,6 +318,7 @@ public class DataAwareFields
{
if (s == null || s.equals(""))
{
+ System.out.println(Any.VOID);
return Any.VOID;
}
else
@@ -329,6 +330,7 @@ public class DataAwareFields
{
if (s == null || s.equals(""))
{
+ System.out.println(Any.VOID);
return Any.VOID;
}
else
diff --git a/wizards/com/sun/star/wizards/ui/event/DataAwareFields.py b/wizards/com/sun/star/wizards/ui/event/DataAwareFields.py
new file mode 100644
index 000000000000..efa017f55755
--- /dev/null
+++ b/wizards/com/sun/star/wizards/ui/event/DataAwareFields.py
@@ -0,0 +1,158 @@
+import traceback
+from DataAware import *
+import uno
+'''
+This class is a factory for Value objects for different types of
+memebers.
+Other than some Value implementations classes this class contains static
+type conversion methods and factory methods.
+
+@see com.sun.star.wizards.ui.event.DataAware.Value
+'''
+
+class DataAwareFields(object):
+ TRUE = "true"
+ FALSE = "false"
+ '''
+ returns a Value Object which sets and gets values
+ and converting them to other types, according to the "value" argument.
+
+ @param owner
+ @param fieldname
+ @param value
+ @return
+ @throws NoSuchFieldException
+ '''
+
+ @classmethod
+ def getFieldValueFor(self, owner, fieldname, value):
+ try:
+ f = getattr(owner, fieldname)
+ if isinstance(f,bool):
+ return self.__BooleanFieldValue(fieldname, value)
+ elif isinstance(f,str):
+ return self.__ConvertedStringValue(fieldname, value)
+ elif isinstance(f,int):
+ return self.__IntFieldValue(fieldname, value)
+ else:
+ return SimpleFieldValue(f)
+
+ except AttributeError, ex:
+ traceback.print_exc()
+ return None
+
+ '''__ConvertedStringValue
+ an abstract implementation of DataAware.Value to access
+ object memebers (fields) usign reflection.
+ '''
+ class __FieldValue(DataAware.Value):
+ __metaclass__ = ABCMeta
+
+ def __init__(self, field_):
+ self.field = field_
+
+ def isAssignable(self, type_):
+ return self.field.getDeclaringClass().isAssignableFrom(type_)
+
+ class __BooleanFieldValue(__FieldValue):
+
+ def __init__(self, f, convertTo_):
+ super(type(self),self).__init__(f)
+ self.convertTo = convertTo_
+
+ def get(self, target):
+ try:
+ b = getattr(target, self.field)
+
+ if isinstance(self.convertTo,bool):
+ if b:
+ return True
+ else:
+ return False
+ elif isinstance(self.convertTo,int):
+ return int(b)
+ elif isinstance(self.convertTo,str):
+ return str(b)
+ elif self.convertTo.type == uno.Any("short",0).type:
+ return uno.Any("short",b)
+ else:
+ raise AttributeError("Cannot convert boolean value to given type (" + str(type(self.convertTo)) + ").");
+
+ except Exception, ex:
+ traceback.print_exc()
+ return None
+
+ def set(self, value, target):
+ try:
+ self.field.setBoolean(target, toBoolean(value))
+ except Exception, ex:
+ traceback.print_exc()
+
+ class __IntFieldValue(__FieldValue):
+
+ def __init__(self, f, convertTo_):
+ super(type(self),self).__init__(f)
+ self.convertTo = convertTo_
+
+ def get(self, target):
+ try:
+ i = getattr(target, self.field)
+ if isinstance(self.convertTo,bool):
+ if i:
+ return True
+ else:
+ return False
+ elif isinstance(self.convertTo, int):
+ return int(i)
+ elif isinstance(self.convertTo,str):
+ return str(i)
+ else:
+ raise AttributeError("Cannot convert int value to given type (" + str(type(self.convertTo)) + ").");
+
+ except Exception, ex:
+ traceback.print_exc()
+ #traceback.print_exc__ConvertedStringValue()
+ return None
+
+ def set(self, value, target):
+ try:
+ self.field.setInt(target, toDouble(value))
+ except Exception, ex:
+ traceback.print_exc()
+
+ class __ConvertedStringValue(__FieldValue):
+
+ def __init__(self, f, convertTo_):
+ super(type(self),self).__init__(f)
+ self.convertTo = convertTo_
+
+ def get(self, target):
+ try:
+ s = getattr(target, self.field)
+ if isinstance(self.convertTo,bool):
+ if s != None and not s == "" and s == "true":
+ return True
+ else:
+ return False
+ elif isinstance(self.convertTo,str):
+ if s == None or s == "":
+ pass
+ else:
+ return s
+ else:
+ raise AttributeError("Cannot convert int value to given type (" \
+ + str(type(self.convertTo)) + ")." )
+
+ except Exception, ex:
+ traceback.print_exc()
+ return None
+
+ def set(self, value, target):
+ try:
+ string_aux = ""
+ #if value is not None or not isinstance(value,uno.Any()):
+ # string_aux = str(value)
+
+ self.field.set(target, string_aux)
+ except Exception, ex:
+ traceback.print_exc()
diff --git a/wizards/com/sun/star/wizards/ui/event/EventNames.py b/wizards/com/sun/star/wizards/ui/event/EventNames.py
new file mode 100644
index 000000000000..49845ceb11db
--- /dev/null
+++ b/wizards/com/sun/star/wizards/ui/event/EventNames.py
@@ -0,0 +1,15 @@
+EVENT_ACTION_PERFORMED = "APR"
+EVENT_ITEM_CHANGED = "ICH"
+EVENT_TEXT_CHANGED = "TCH" #window events (XWindow)
+EVENT_WINDOW_RESIZED = "WRE"
+EVENT_WINDOW_MOVED = "WMO"
+EVENT_WINDOW_SHOWN = "WSH"
+EVENT_WINDOW_HIDDEN = "WHI" #focus events (XWindow)
+EVENT_FOCUS_GAINED = "FGA"
+EVENT_FOCUS_LOST = "FLO" #keyboard events
+EVENT_KEY_PRESSED = "KPR"
+EVENT_KEY_RELEASED = "KRE" #mouse events
+EVENT_MOUSE_PRESSED = "MPR"
+EVENT_MOUSE_RELEASED = "MRE"
+EVENT_MOUSE_ENTERED = "MEN"
+EVENT_MOUSE_EXITED = "MEX"
diff --git a/wizards/com/sun/star/wizards/ui/event/MethodInvocation.py b/wizards/com/sun/star/wizards/ui/event/MethodInvocation.py
new file mode 100644
index 000000000000..0a662d2f2075
--- /dev/null
+++ b/wizards/com/sun/star/wizards/ui/event/MethodInvocation.py
@@ -0,0 +1,34 @@
+'''import java.lang.reflect.InvocationTargetException;
+
+import java.lang.reflect.Method;
+
+import com.sun.star.wizards.common.PropertyNames;
+'''
+
+'''Encapsulate a Method invocation.
+In the constructor one defines a method, a target object and an optional
+Parameter.
+Then one calls "invoke", with or without a parameter. <br/>
+Limitations: I do not check anything myself. If the param is not ok, from the
+wrong type, or the mothod doesnot exist on the given object.
+You can trick this class howmuch you want: it will all throw exceptions
+on the java level. i throw no error warnings or my own excceptions...
+'''
+
+class MethodInvocation(object):
+
+ EMPTY_ARRAY = ()
+
+ '''Creates a new instance of MethodInvokation'''
+ def __init__(self, method, obj, paramClass=None):
+ self.mMethod = method
+ self.mObject = obj
+ self.mWithParam = not (paramClass==None)
+
+ '''Returns the result of calling the method on the object, or null, if no result. '''
+
+ def invoke(self, param=None):
+ if self.mWithParam:
+ return self.mMethod.invoke(self.mObject, (param))
+ else:
+ return self.mMethod.invoke(self.mObject, EMPTY_ARRAY)
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 000000000000..1c33e4d0b9ed
--- /dev/null
+++ b/wizards/com/sun/star/wizards/ui/event/RadioDataAware.py
@@ -0,0 +1,45 @@
+from DataAware import *
+from DataAwareFields 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, radioButs):
+ super(RadioDataAware,self).__init__(data, value)
+ self.radioButtons = radioButs
+
+ def setToUI(self, value):
+ selected = int(value)
+ if selected == -1:
+ i = 0
+ while i < self.radioButtons.length:
+ self.radioButtons[i].setState(False)
+ i += 1
+ else:
+ self.radioButtons[selected].setState(True)
+
+ def getFromUI(self):
+ for i in self.radioButtons:
+ if i.getState():
+ return i
+
+ return -1
+
+ @classmethod
+ def attachRadioButtons(self, data, dataProp, buttons, listener, field):
+ if field:
+ aux = DataAwareFields.getFieldValueFor(data, dataProp, 0)
+ else:
+ aux = DataAware.PropertyValue (dataProp, data)
+
+ da = RadioDataAware(data, aux , buttons)
+ xil = UnoDataAware.ItemListener(da, listener)
+ for i in da.radioButtons:
+ i.addItemListener(xil)
+ 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 000000000000..65d22bf6181e
--- /dev/null
+++ b/wizards/com/sun/star/wizards/ui/event/UnoDataAware.py
@@ -0,0 +1,184 @@
+from DataAware import *
+import unohelper
+from com.sun.star.awt import XItemListener
+from com.sun.star.awt import XTextListener
+from DataAwareFields 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, value, unoObject_, unoPropName_):
+ super(UnoDataAware,self).__init__(dataObject, value)
+ self.unoControl = unoObject_
+ self.unoModel = self.getModel(self.unoControl)
+ self.unoPropName = unoPropName_
+ self.disableObjects = range(0)
+ self.inverse = False
+
+ def setInverse(self, i):
+ self.inverse = i
+
+ def enableControls(self, value):
+ b = getBoolean(value)
+ if self.inverse:
+ if b.booleanValue():
+ b = False
+ else:
+ b = True
+
+ i = 0
+ while i < self.disableObjects.length:
+ setEnabled(self.disableObjects[i], b)
+ i += 1
+
+ def setToUI(self, value):
+ Helper.setUnoPropertyValue(self.unoModel, self.unoPropName, value)
+
+ def stringof(self, value):
+ if value.getClass().isArray():
+ sb = StringBuffer.StringBuffer_unknown("[")
+ i = 0
+ while i < (value).length:
+ sb.append((value)[i]).append(" , ")
+ i += 1
+ sb.append("]")
+ return sb.toString()
+ else:
+ return value.toString()
+
+ '''
+ Try to get from an arbitrary object a boolean value.
+ Null returns False;
+ A Boolean object returns itself.
+ An Array returns true if it not empty.
+ An Empty String returns False.
+ everything else returns a True.
+ @param value
+ @return
+ '''
+
+ def getBoolean(self, value):
+ if value == None:
+ return False
+
+ if isinstance(value, bool):
+ return value
+ elif value.getClass().isArray():
+ if value.length != 0:
+ return True
+ else:
+ return False
+ elif value.equals(""):
+ return False
+ elif isinstance(value, int):
+ if value == 0:
+ return True
+ else:
+ return False
+ else:
+ return True
+
+ def disableControls(self, controls):
+ self.disableObjects = controls
+
+ def getFromUI(self):
+ return Helper.getUnoPropertyValue(self.unoModel, self.unoPropName)
+
+ @classmethod
+ def __attachTextControl(self, data, prop, unoText, listener, unoProperty, field, value):
+ if field:
+ aux = DataAwareFields.getFieldValueFor(data, prop, value)
+ else:
+ aux = DataAware.PropertyValue (prop, data)
+ uda = UnoDataAware(data, aux, unoText, unoProperty)
+ unoText.addTextListener(self.TextListener(uda,listener))
+ return uda
+
+ class TextListener(unohelper.Base, XTextListener):
+
+ def __init__(self, uda,listener):
+ self.uda = uda
+ self.listener = listener
+
+ def textChanged(te):
+ self.uda.updateData()
+ if self.listener:
+ self.listener.eventPerformed(te)
+
+ def disposing(self,eo):
+ pass
+
+ @classmethod
+ def attachEditControl(self, data, prop, unoControl, listener, field):
+ return self.__attachTextControl(data, prop, unoControl, listener, "Text", field, "")
+
+ @classmethod
+ def attachDateControl(self, data, prop, unoControl, listener, field):
+ return self.__attachTextControl(data, prop, unoControl, listener, "Date", field, 0)
+
+ def attachTimeControl(self, data, prop, unoControl, listener, field):
+ return self.__attachTextControl(data, prop, unoControl, listener, "Time", field, 0)
+
+ def attachNumericControl(self, data, prop, unoControl, listener, field):
+ return self.__attachTextControl(data, prop, unoControl, listener, "Value", field, float(0))
+
+ @classmethod
+ def attachCheckBox(self, data, prop, checkBox, listener, field):
+ if field:
+ aux = DataAwareFields.getFieldValueFor(data, prop, uno.Any("short",0))
+ else:
+ aux = DataAware.PropertyValue (prop, data)
+ uda = UnoDataAware(data, aux , checkBox, PropertyNames.PROPERTY_STATE)
+ checkBox.addItemListener(self.ItemListener(uda, listener))
+ return uda
+
+ class ItemListener(unohelper.Base, XItemListener):
+
+ def __init__(self, da, listener):
+ self.da = da
+ self.listener = listener
+
+ def itemStateChanged(self, ie):
+ self.da.updateData()
+ if self.listener != None:
+ self.listener.eventPerformed(ie)
+
+ def disposing(self, eo):
+ pass
+
+ def attachLabel(self, data, prop, label, listener, field):
+ if field:
+ aux = DataAwareFields.getFieldValueFor(data, prop, "")
+ else:
+ aux = DataAware.PropertyValue (prop, data)
+ return UnoDataAware(data, aux, label, PropertyNames.PROPERTY_LABEL)
+
+ @classmethod
+ def attachListBox(self, data, prop, listBox, listener, field):
+ if field:
+ aux = DataAwareFields.getFieldValueFor(data, prop, 0)
+ else:
+ aux = DataAware.PropertyValue (prop, data)
+ uda = UnoDataAware(data, aux, listBox, "SelectedItems")
+ listBox.addItemListener(self.ItemListener(uda,listener))
+ return uda
+
+ def getModel(self, control):
+ return control.getModel()
+
+ def setEnabled(self, control, enabled):
+ setEnabled(control, enabled)
+
+ def setEnabled(self, control, enabled):
+ Helper.setUnoPropertyValue(getModel(control), PropertyNames.PROPERTY_ENABLED, enabled)