update
This commit is contained in:
@@ -0,0 +1,59 @@
|
||||
#
|
||||
# This file is part of the LibreOffice project.
|
||||
#
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
#
|
||||
# This file incorporates work covered by the following license notice:
|
||||
#
|
||||
# Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
# contributor license agreements. See the NOTICE file distributed
|
||||
# with this work for additional information regarding copyright
|
||||
# ownership. The ASF licenses this file to you under the Apache
|
||||
# License, Version 2.0 (the "License"); you may not use this file
|
||||
# except in compliance with the License. You may obtain a copy of
|
||||
# the License at http://www.apache.org/licenses/LICENSE-2.0 .
|
||||
#
|
||||
import inspect
|
||||
|
||||
class ConfigGroup(object):
|
||||
|
||||
root = None
|
||||
|
||||
def __init__(self):
|
||||
self.root = None
|
||||
|
||||
def writeConfiguration(self, configurationView, param):
|
||||
for name,data in inspect.getmembers(self):
|
||||
if name.startswith(param):
|
||||
self.writeField( name, configurationView, param)
|
||||
|
||||
def writeField(self, field, configView, prefix):
|
||||
propertyName = field[len(prefix):]
|
||||
child = getattr(self, field)
|
||||
if isinstance(child, ConfigGroup):
|
||||
child.writeConfiguration(configView.getByName(propertyName),
|
||||
prefix)
|
||||
else:
|
||||
setattr(configView,propertyName,getattr(self,field))
|
||||
|
||||
def readConfiguration(self, configurationView, param):
|
||||
for name,data in inspect.getmembers(self):
|
||||
if name.startswith(param):
|
||||
self.readField( name, configurationView, param)
|
||||
|
||||
def readField(self, field, configView, prefix):
|
||||
propertyName = field[len(prefix):]
|
||||
child = getattr(self, field)
|
||||
if isinstance(child, ConfigGroup):
|
||||
child.setRoot(self.root);
|
||||
child.readConfiguration(configView.getByName(propertyName),
|
||||
prefix)
|
||||
else:
|
||||
value = configView.getByName(propertyName)
|
||||
if value is not None:
|
||||
setattr(self,field, value)
|
||||
|
||||
def setRoot(self, newRoot):
|
||||
self.root = newRoot
|
||||
@@ -0,0 +1,67 @@
|
||||
#
|
||||
# This file is part of the LibreOffice project.
|
||||
#
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
#
|
||||
# This file incorporates work covered by the following license notice:
|
||||
#
|
||||
# Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
# contributor license agreements. See the NOTICE file distributed
|
||||
# with this work for additional information regarding copyright
|
||||
# ownership. The ASF licenses this file to you under the Apache
|
||||
# License, Version 2.0 (the "License"); you may not use this file
|
||||
# except in compliance with the License. You may obtain a copy of
|
||||
# the License at http://www.apache.org/licenses/LICENSE-2.0 .
|
||||
#
|
||||
import traceback
|
||||
from .ConfigGroup import ConfigGroup
|
||||
|
||||
class ConfigSet(ConfigGroup):
|
||||
'''
|
||||
After reading the configuration set items,
|
||||
the ConfigSet checks this field.
|
||||
If it is true, it will remove any nulls from
|
||||
the vector.
|
||||
subclasses can change this field in the constructor
|
||||
to avoid this "deletion" of nulls.
|
||||
'''
|
||||
|
||||
def __init__(self, childType):
|
||||
self.childType = childType
|
||||
self.childrenList = []
|
||||
self.childrenListLen = 0
|
||||
|
||||
def writeConfiguration(self, configurationView, param):
|
||||
for i in range(self.childrenListLen):
|
||||
#remove previous configuration
|
||||
configurationView.removeByName(i)
|
||||
for index,item in enumerate(self.childrenList):
|
||||
try:
|
||||
childView = configurationView.createInstance()
|
||||
configurationView.insertByName(index, childView)
|
||||
if callable( self.childType ):
|
||||
topic = self.childType()
|
||||
topic.cp_Index = item[0].Value
|
||||
topic.cp_Topic = item[1].Value
|
||||
topic.cp_Responsible = item[2].Value
|
||||
topic.cp_Time = item[3].Value
|
||||
topic.writeConfiguration(childView, param)
|
||||
except Exception:
|
||||
traceback.print_exc()
|
||||
|
||||
def readConfiguration(self, configurationView, param):
|
||||
#each iteration represents a Topic row
|
||||
names = configurationView.ElementNames
|
||||
if names:
|
||||
for i in names:
|
||||
try:
|
||||
if callable( self.childType ):
|
||||
topic = self.childType()
|
||||
topic.readConfiguration(
|
||||
configurationView.getByName(i), param)
|
||||
self.childrenList.append(topic)
|
||||
except Exception:
|
||||
traceback.print_exc()
|
||||
self.childrenListLen = len(self.childrenList)
|
||||
@@ -0,0 +1,70 @@
|
||||
#
|
||||
# This file is part of the LibreOffice project.
|
||||
#
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
#
|
||||
# This file incorporates work covered by the following license notice:
|
||||
#
|
||||
# Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
# contributor license agreements. See the NOTICE file distributed
|
||||
# with this work for additional information regarding copyright
|
||||
# ownership. The ASF licenses this file to you under the Apache
|
||||
# License, Version 2.0 (the "License"); you may not use this file
|
||||
# except in compliance with the License. You may obtain a copy of
|
||||
# the License at http://www.apache.org/licenses/LICENSE-2.0 .
|
||||
#
|
||||
import uno
|
||||
import traceback
|
||||
|
||||
class Configuration(object):
|
||||
'''This class gives access to the OO configuration api.'''
|
||||
|
||||
@classmethod
|
||||
def getConfigurationRoot(self, xmsf, sPath, updateable):
|
||||
oConfigProvider = xmsf.createInstance(
|
||||
"com.sun.star.configuration.ConfigurationProvider")
|
||||
args = []
|
||||
|
||||
aPathArgument = uno.createUnoStruct(
|
||||
'com.sun.star.beans.PropertyValue')
|
||||
aPathArgument.Name = "nodepath"
|
||||
aPathArgument.Value = sPath
|
||||
|
||||
args.append(aPathArgument)
|
||||
|
||||
if updateable:
|
||||
sView = "com.sun.star.configuration.ConfigurationUpdateAccess"
|
||||
else:
|
||||
sView = "com.sun.star.configuration.ConfigurationAccess"
|
||||
|
||||
return oConfigProvider.createInstanceWithArguments(sView, tuple(args))
|
||||
|
||||
@classmethod
|
||||
def getProductName(self, xMSF):
|
||||
try:
|
||||
oProdNameAccess = self.getConfigurationRoot(xMSF, "org.openoffice.Setup/Product", False);
|
||||
return oProdNameAccess.getByName("ooName")
|
||||
except Exception:
|
||||
traceback.print_exc()
|
||||
return "Unknown"
|
||||
|
||||
@classmethod
|
||||
def getNode(self, name, parent):
|
||||
return parent.getByName(name)
|
||||
|
||||
@classmethod
|
||||
def commit(self, configView):
|
||||
configView.commitChanges()
|
||||
|
||||
@classmethod
|
||||
def getInt(self, name, parent):
|
||||
o = getNode(name, parent)
|
||||
if (com.sun.star.uno.AnyConverter.isVoid(o)):
|
||||
return 0
|
||||
return com.sun.star.uno.AnyConverter.toInt(o)
|
||||
|
||||
@classmethod
|
||||
def set(self, value, name, parent):
|
||||
parent.setHierarchicalPropertyValue(name, value)
|
||||
@@ -0,0 +1,96 @@
|
||||
#
|
||||
# This file is part of the LibreOffice project.
|
||||
#
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
#
|
||||
# This file incorporates work covered by the following license notice:
|
||||
#
|
||||
# Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
# contributor license agreements. See the NOTICE file distributed
|
||||
# with this work for additional information regarding copyright
|
||||
# ownership. The ASF licenses this file to you under the Apache
|
||||
# License, Version 2.0 (the "License"); you may not use this file
|
||||
# except in compliance with the License. You may obtain a copy of
|
||||
# the License at http://www.apache.org/licenses/LICENSE-2.0 .
|
||||
#
|
||||
import uno
|
||||
import traceback
|
||||
|
||||
from com.sun.star.frame.FrameSearchFlag import ALL
|
||||
from com.sun.star.util import URL
|
||||
from com.sun.star.i18n.KParseTokens import ANY_LETTER_OR_NUMBER, ASC_UNDERSCORE
|
||||
|
||||
class Desktop(object):
|
||||
|
||||
@classmethod
|
||||
def getDesktop(self, xMSF):
|
||||
xDesktop = None
|
||||
if xMSF is not None:
|
||||
try:
|
||||
xDesktop = xMSF.createInstance( "com.sun.star.frame.Desktop")
|
||||
except Exception:
|
||||
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 getDispatcher(self, xMSF, xFrame, _stargetframe, oURL):
|
||||
try:
|
||||
xDispatch = xFrame.queryDispatch(oURL, _stargetframe, ALL)
|
||||
return xDispatch
|
||||
except Exception:
|
||||
traceback.print_exc()
|
||||
|
||||
return None
|
||||
|
||||
@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 getIncrementSuffix(self, xElementContainer, sElementName):
|
||||
bElementexists = True
|
||||
i = 1
|
||||
sIncSuffix = ""
|
||||
BaseName = sElementName
|
||||
while bElementexists:
|
||||
try:
|
||||
bElementexists = xElementContainer.hasByName(sElementName)
|
||||
except:
|
||||
bElementexists = xElementContainer.hasByHierarchicalName(
|
||||
sElementName)
|
||||
if bElementexists:
|
||||
i += 1
|
||||
sElementName = BaseName + str(i)
|
||||
|
||||
if i > 1:
|
||||
sIncSuffix = str(i)
|
||||
|
||||
return sIncSuffix
|
||||
|
||||
'''
|
||||
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):
|
||||
sIncSuffix = self.getIncrementSuffix(xElementContainer, sElementName)
|
||||
return sElementName + sIncSuffix
|
||||
|
||||
@@ -0,0 +1,226 @@
|
||||
#
|
||||
# This file is part of the LibreOffice project.
|
||||
#
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
#
|
||||
# This file incorporates work covered by the following license notice:
|
||||
#
|
||||
# Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
# contributor license agreements. See the NOTICE file distributed
|
||||
# with this work for additional information regarding copyright
|
||||
# ownership. The ASF licenses this file to you under the Apache
|
||||
# License, Version 2.0 (the "License"); you may not use this file
|
||||
# except in compliance with the License. You may obtain a copy of
|
||||
# the License at http://www.apache.org/licenses/LICENSE-2.0 .
|
||||
#
|
||||
import traceback
|
||||
|
||||
from os import sep as FileSeparator
|
||||
|
||||
'''
|
||||
This class delivers static convenience methods
|
||||
to use with ucb SimpleFileAccess service.
|
||||
You can also instantiate the class, to encapsulate
|
||||
some functionality of SimpleFileAccess. The instance
|
||||
keeps a reference to an XSimpleFileAccess and an
|
||||
XFileIdentifierConverter, saves the permanent
|
||||
overhead of querying for those interfaces, and delivers
|
||||
convenience methods for using them.
|
||||
These Convenience methods include mainly Exception-handling.
|
||||
'''
|
||||
|
||||
class FileAccess(object):
|
||||
|
||||
def __init__(self, xmsf):
|
||||
#get the file identifier converter
|
||||
self.filenameConverter = xmsf.createInstance(
|
||||
"com.sun.star.ucb.FileContentProvider")
|
||||
self.xInterface = xmsf.createInstance(
|
||||
"com.sun.star.ucb.SimpleFileAccess")
|
||||
|
||||
@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(getattr(xInterface, sPath))
|
||||
ResultPath = self.deleteLastSlashfromUrl(ResultPath)
|
||||
return ResultPath
|
||||
except Exception:
|
||||
traceback.print_exc()
|
||||
return ""
|
||||
|
||||
@classmethod
|
||||
def getFolderTitles(self, xMSF, FilterName, FolderName, resDict=None):
|
||||
#Returns and ordered dict containing the template's name and path
|
||||
|
||||
locLayoutFiles = []
|
||||
try:
|
||||
xDocInterface = xMSF.createInstance(
|
||||
"com.sun.star.document.DocumentProperties")
|
||||
xInterface = xMSF.createInstance(
|
||||
"com.sun.star.ucb.SimpleFileAccess")
|
||||
nameList = xInterface.getFolderContents(FolderName, False)
|
||||
if FilterName is None or FilterName == "":
|
||||
FilterName = None
|
||||
else:
|
||||
FilterName += "-"
|
||||
|
||||
locLayoutDict = {}
|
||||
for i in nameList:
|
||||
fileName = self.getFilename(i)
|
||||
if FilterName is None or fileName.startswith(FilterName):
|
||||
xDocInterface.loadFromMedium(i, tuple())
|
||||
if resDict is None:
|
||||
title = xDocInterface.Title
|
||||
else:
|
||||
if xDocInterface.Title in resDict:
|
||||
# localise string at runtime
|
||||
title = resDict[xDocInterface.Title]
|
||||
else:
|
||||
title = xDocInterface.Title
|
||||
locLayoutDict[title] = i
|
||||
|
||||
#sort the dictionary and create a list containing the
|
||||
#keys list and the values list
|
||||
keysList = sorted(locLayoutDict.keys())
|
||||
valuesList= []
|
||||
for i in keysList:
|
||||
valuesList.append(locLayoutDict[i])
|
||||
locLayoutFiles.append(keysList)
|
||||
locLayoutFiles.append(valuesList)
|
||||
except Exception:
|
||||
traceback.print_exc()
|
||||
|
||||
return locLayoutFiles
|
||||
|
||||
@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:
|
||||
traceback.print_exc()
|
||||
|
||||
return sTitle
|
||||
|
||||
def getPath(self, parentURL, childURL):
|
||||
string = ""
|
||||
if childURL is not None and childURL != "":
|
||||
string = "/" + childURL
|
||||
return self.filenameConverter.getSystemPathFromFileURL(
|
||||
parentURL + string)
|
||||
|
||||
def copy(self, source, target):
|
||||
try:
|
||||
self.xInterface.copy(source, target)
|
||||
return True
|
||||
except Exception:
|
||||
traceback.print_exc()
|
||||
return False
|
||||
|
||||
def exists(self, filename, default):
|
||||
try:
|
||||
return self.xInterface.exists(filename)
|
||||
except Exception:
|
||||
traceback.print_exc()
|
||||
return default
|
||||
|
||||
def delete(self, filename):
|
||||
try:
|
||||
self.xInterface.kill(filename)
|
||||
return True
|
||||
except Exception:
|
||||
traceback.print_exc()
|
||||
return False
|
||||
|
||||
# lists the files in a given directory
|
||||
# @param dir
|
||||
# @param includeFolders
|
||||
# @return
|
||||
def listFiles(self, folder, includeFolders):
|
||||
try:
|
||||
return self.xInterface.getFolderContents(folder, includeFolders)
|
||||
except Exception:
|
||||
traceback.print_exc()
|
||||
return [""]
|
||||
|
||||
def getSize(self, url):
|
||||
try:
|
||||
return self.xInterface.getSize(url)
|
||||
except Exception:
|
||||
traceback.print_exc()
|
||||
return -1
|
||||
|
||||
def getURL(self, parentURL, childPath):
|
||||
if len(childPath) > 0 and childPath[0] == "/":
|
||||
path = parentURL + childPath
|
||||
else:
|
||||
path = parentURL + "/" + childPath
|
||||
return path
|
||||
|
||||
@classmethod
|
||||
def getFilename(self, path, pathSeparator = "/"):
|
||||
return path.split(pathSeparator)[-1]
|
||||
|
||||
'''
|
||||
if the path points to file, gives the directory in which the file is.
|
||||
'''
|
||||
|
||||
@classmethod
|
||||
def getParentDir(self, url):
|
||||
while url[-1] == "/":
|
||||
url = url[:-1]
|
||||
return url[:url.rfind("/")]
|
||||
|
||||
@classmethod
|
||||
def connectURLs(self, urlFolder, urlFilename):
|
||||
stringFolder = ""
|
||||
stringFileName = urlFilename
|
||||
if not urlFolder.endswith("/"):
|
||||
stringFolder = "/"
|
||||
if urlFilename.startswith("/"):
|
||||
stringFileName = urlFilename[1:]
|
||||
return urlFolder + stringFolder + stringFileName
|
||||
|
||||
# @param filename
|
||||
# @return the extension of the given filename.
|
||||
@classmethod
|
||||
def getExtension(self, filename):
|
||||
p = filename.find(".")
|
||||
if (p == -1):
|
||||
return ""
|
||||
else:
|
||||
while (True):
|
||||
filename = filename[(p+1):]
|
||||
p = filename.find(".")
|
||||
if (p == -1):
|
||||
break
|
||||
return filename
|
||||
|
||||
@classmethod
|
||||
def filename(self, name, ext, i):
|
||||
return name + ("" if (i == 0) else str(i)) + ("" if (ext == "") else ("." + ext))
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,28 @@
|
||||
#
|
||||
# This file is part of the LibreOffice project.
|
||||
#
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
#
|
||||
# This file incorporates work covered by the following license notice:
|
||||
#
|
||||
# Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
# contributor license agreements. See the NOTICE file distributed
|
||||
# with this work for additional information regarding copyright
|
||||
# ownership. The ASF licenses this file to you under the Apache
|
||||
# License, Version 2.0 (the "License"); you may not use this file
|
||||
# except in compliance with the License. You may obtain a copy of
|
||||
# the License at http://www.apache.org/licenses/LICENSE-2.0 .
|
||||
|
||||
from abc import abstractmethod
|
||||
|
||||
# A General interface which gives a string
|
||||
# that represents the rendered argument object.
|
||||
# Can be used to reference resources, internationalizartion
|
||||
# a.s.o
|
||||
class IRenderer:
|
||||
|
||||
@abstractmethod
|
||||
def render(object):
|
||||
pass
|
||||
@@ -0,0 +1,35 @@
|
||||
#
|
||||
# This file is part of the LibreOffice project.
|
||||
#
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
#
|
||||
# This file incorporates work covered by the following license notice:
|
||||
#
|
||||
# Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
# contributor license agreements. See the NOTICE file distributed
|
||||
# with this work for additional information regarding copyright
|
||||
# ownership. The ASF licenses this file to you under the Apache
|
||||
# License, Version 2.0 (the "License"); you may not use this file
|
||||
# except in compliance with the License. You may obtain a copy of
|
||||
# the License at http://www.apache.org/licenses/LICENSE-2.0 .
|
||||
#
|
||||
|
||||
from abc import abstractmethod
|
||||
|
||||
class ListModel(object):
|
||||
|
||||
@abstractmethod
|
||||
def getSize(self):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
def getElementAt(self, arg0):
|
||||
pass
|
||||
|
||||
def addListDataListener(self, listener):
|
||||
pass
|
||||
|
||||
def removeListDataListener(self, listener):
|
||||
pass
|
||||
@@ -0,0 +1,53 @@
|
||||
#
|
||||
# This file is part of the LibreOffice project.
|
||||
#
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
#
|
||||
# This file incorporates work covered by the following license notice:
|
||||
#
|
||||
# Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
# contributor license agreements. See the NOTICE file distributed
|
||||
# with this work for additional information regarding copyright
|
||||
# ownership. The ASF licenses this file to you under the Apache
|
||||
# License, Version 2.0 (the "License"); you may not use this file
|
||||
# except in compliance with the License. You may obtain a copy of
|
||||
# the License at http://www.apache.org/licenses/LICENSE-2.0 .
|
||||
#
|
||||
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:
|
||||
import sys, os
|
||||
|
||||
if sys.version_info < (3,4):
|
||||
import imp
|
||||
imp.load_source('strings', os.path.join(os.path.dirname(__file__), '../common/strings.hrc'))
|
||||
import strings
|
||||
elif sys.version_info < (3,7):
|
||||
# imp is deprecated since Python v.3.4
|
||||
from importlib.machinery import SourceFileLoader
|
||||
SourceFileLoader('strings', os.path.join(os.path.dirname(__file__), '../common/strings.hrc')).load_module()
|
||||
import strings
|
||||
else:
|
||||
# have to jump through hoops since 3.7, partly because python does not like loading modules that do have a .py extension
|
||||
import importlib
|
||||
import importlib.util
|
||||
import importlib.machinery
|
||||
module_name = 'strings'
|
||||
path = os.path.join(os.path.dirname(__file__), '../common/strings.hrc')
|
||||
spec = importlib.util.spec_from_loader(
|
||||
module_name,
|
||||
importlib.machinery.SourceFileLoader(module_name, path)
|
||||
)
|
||||
module = importlib.util.module_from_spec(spec)
|
||||
spec.loader.exec_module(module)
|
||||
sys.modules[module_name] = module
|
||||
strings = module
|
||||
|
||||
SystemDialog.showErrorBox(xMSF, strings.RID_COMMON_START_21) #OfficePathnotavailable
|
||||
|
||||
@@ -0,0 +1,86 @@
|
||||
#
|
||||
# This file is part of the LibreOffice project.
|
||||
#
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
#
|
||||
# This file incorporates work covered by the following license notice:
|
||||
#
|
||||
# Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
# contributor license agreements. See the NOTICE file distributed
|
||||
# with this work for additional information regarding copyright
|
||||
# ownership. The ASF licenses this file to you under the Apache
|
||||
# License, Version 2.0 (the "License"); you may not use this file
|
||||
# except in compliance with the License. You may obtain a copy of
|
||||
# the License at http://www.apache.org/licenses/LICENSE-2.0 .
|
||||
#
|
||||
import traceback
|
||||
from com.sun.star.lang import Locale
|
||||
|
||||
class NumberFormatter(object):
|
||||
|
||||
def __init__(self, _xNumberFormatsSupplier, _aLocale, _xMSF=None):
|
||||
self.iDateFormatKey = -1
|
||||
self.iDateTimeFormatKey = -1
|
||||
self.iNumberFormatKey = -1
|
||||
self.iTextFormatKey = -1
|
||||
self.iTimeFormatKey = -1
|
||||
self.iLogicalFormatKey = -1
|
||||
self.bNullDateCorrectionIsDefined = False
|
||||
self.aLocale = _aLocale
|
||||
if _xMSF is not None:
|
||||
self.xNumberFormatter = _xMSF.createInstance(
|
||||
"com.sun.star.util.NumberFormatter")
|
||||
self.xNumberFormats = _xNumberFormatsSupplier.NumberFormats
|
||||
self.xNumberFormatSettings = \
|
||||
_xNumberFormatsSupplier.NumberFormatSettings
|
||||
self.xNumberFormatter.attachNumberFormatsSupplier(
|
||||
_xNumberFormatsSupplier)
|
||||
|
||||
'''
|
||||
@param _xMSF
|
||||
@param _xNumberFormatsSupplier
|
||||
@return
|
||||
@throws Exception
|
||||
@deprecated
|
||||
'''
|
||||
|
||||
@classmethod
|
||||
def createNumberFormatter(self, _xMSF, _xNumberFormatsSupplier):
|
||||
oNumberFormatter = _xMSF.createInstance(
|
||||
"com.sun.star.util.NumberFormatter")
|
||||
oNumberFormatter.attachNumberFormatsSupplier(_xNumberFormatsSupplier)
|
||||
return oNumberFormatter
|
||||
|
||||
'''
|
||||
gives a key to pass to a NumberFormat object. <br/>
|
||||
example: <br/>
|
||||
<pre>
|
||||
XNumberFormatsSupplier nsf =
|
||||
(XNumberFormatsSupplier)UnoRuntime.queryInterface(...,document)
|
||||
int key = Desktop.getNumberFormatterKey(
|
||||
nsf, ...star.i18n.NumberFormatIndex.DATE...)
|
||||
XNumberFormatter nf = Desktop.createNumberFormatter(xmsf, nsf);
|
||||
nf.convertNumberToString( key, 1972 );
|
||||
</pre>
|
||||
@param numberFormatsSupplier
|
||||
@param type - a constant out of i18n.NumberFormatIndex enumeration.
|
||||
@return a key to use with a util.NumberFormat instance.
|
||||
'''
|
||||
|
||||
@classmethod
|
||||
def getNumberFormatterKey(self, numberFormatsSupplier, Type):
|
||||
return numberFormatsSupplier.NumberFormats.getFormatIndex(
|
||||
Type, Locale())
|
||||
|
||||
def convertNumberToString(self, _nkey, _dblValue, _xNumberFormatter=None):
|
||||
if _xNumberFormatter is None:
|
||||
return self.xNumberFormatter.convertNumberToString(
|
||||
_nkey, _dblValue)
|
||||
else:
|
||||
return _xNumberFormatter.convertNumberToString(_nkey, _dblValue)
|
||||
|
||||
def convertStringToNumber(self, _nkey, _sString):
|
||||
return self.xNumberFormatter.convertStringToNumber(_nkey, _sString)
|
||||
|
||||
@@ -0,0 +1,62 @@
|
||||
#
|
||||
# This file is part of the LibreOffice project.
|
||||
#
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
#
|
||||
# This file incorporates work covered by the following license notice:
|
||||
#
|
||||
# Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
# contributor license agreements. See the NOTICE file distributed
|
||||
# with this work for additional information regarding copyright
|
||||
# ownership. The ASF licenses this file to you under the Apache
|
||||
# License, Version 2.0 (the "License"); you may not use this file
|
||||
# except in compliance with the License. You may obtain a copy of
|
||||
# the License at http://www.apache.org/licenses/LICENSE-2.0 .
|
||||
#
|
||||
from com.sun.star.beans import PropertyValue
|
||||
|
||||
'''
|
||||
Simplifies handling Arrays of PropertyValue.
|
||||
To make a use of this class, instantiate it, and call
|
||||
the put(propName,propValue) method.
|
||||
caution: propName should always be a String.
|
||||
When finished, call the getProperties() method to get an array of the set properties.
|
||||
'''
|
||||
|
||||
class Properties(dict):
|
||||
|
||||
@classmethod
|
||||
def getPropertyValue(self, props, propName):
|
||||
for i in props:
|
||||
if propName == i.Name:
|
||||
return i.Value
|
||||
|
||||
raise AttributeError ("Property '" + propName + "' not found.")
|
||||
|
||||
@classmethod
|
||||
def hasPropertyValue(self, props, propName):
|
||||
for i in props:
|
||||
if propName == i.Name:
|
||||
return True
|
||||
return False
|
||||
|
||||
@classmethod
|
||||
def getProperties(self, _map):
|
||||
pv = []
|
||||
for k,v in _map.items():
|
||||
pv.append(self.createProperty(k, v))
|
||||
return pv
|
||||
|
||||
@classmethod
|
||||
def createProperty(self, name, value, handle=None):
|
||||
pv = PropertyValue()
|
||||
pv.Name = name
|
||||
pv.Value = value
|
||||
if handle is not None:
|
||||
pv.Handle = handle
|
||||
return pv
|
||||
|
||||
def getProperties1(self):
|
||||
return self.getProperties(self)
|
||||
@@ -0,0 +1,34 @@
|
||||
#
|
||||
# This file is part of the LibreOffice project.
|
||||
#
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
#
|
||||
# This file incorporates work covered by the following license notice:
|
||||
#
|
||||
# Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
# contributor license agreements. See the NOTICE file distributed
|
||||
# with this work for additional information regarding copyright
|
||||
# ownership. The ASF licenses this file to you under the Apache
|
||||
# License, Version 2.0 (the "License"); you may not use this file
|
||||
# except in compliance with the License. You may obtain a copy of
|
||||
# the License at http://www.apache.org/licenses/LICENSE-2.0 .
|
||||
#
|
||||
class 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"
|
||||
PROPERTY_TITLE = "Title"
|
||||
PROPERTY_MOVEABLE = "Moveable"
|
||||
PROPERTY_CLOSEABLE = "Closeable"
|
||||
@@ -0,0 +1,180 @@
|
||||
#
|
||||
# This file is part of the LibreOffice project.
|
||||
#
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
#
|
||||
# This file incorporates work covered by the following license notice:
|
||||
#
|
||||
# Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
# contributor license agreements. See the NOTICE file distributed
|
||||
# with this work for additional information regarding copyright
|
||||
# ownership. The ASF licenses this file to you under the Apache
|
||||
# License, Version 2.0 (the "License"); you may not use this file
|
||||
# except in compliance with the License. You may obtain a copy of
|
||||
# the License at http://www.apache.org/licenses/LICENSE-2.0 .
|
||||
#
|
||||
import traceback
|
||||
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.lang import IllegalArgumentException
|
||||
from com.sun.star.awt.VclWindowPeerAttribute import OK
|
||||
|
||||
class SystemDialog(object):
|
||||
|
||||
def __init__(self, xMSF, ServiceName, Type):
|
||||
try:
|
||||
self.xMSF = xMSF
|
||||
self.systemDialog = xMSF.createInstance(ServiceName)
|
||||
self.xStringSubstitution = self.createStringSubstitution(xMSF)
|
||||
|
||||
# Add a name textbox to the filepicker
|
||||
if self.systemDialog is not None:
|
||||
if (hasattr(self.systemDialog, "initialize")):
|
||||
self.systemDialog.initialize((Type,))
|
||||
|
||||
except Exception:
|
||||
traceback.print_exc()
|
||||
|
||||
@classmethod
|
||||
def createStoreDialog(self, xmsf):
|
||||
return SystemDialog(
|
||||
xmsf, "com.sun.star.ui.dialogs.FilePicker",
|
||||
FILESAVE_AUTOEXTENSION)
|
||||
|
||||
def subst(self, path):
|
||||
try:
|
||||
s = self.xStringSubstitution.substituteVariables(path, False)
|
||||
return s
|
||||
except Exception:
|
||||
traceback.print_exc()
|
||||
return path
|
||||
|
||||
def callStoreDialog(self, displayDir, defaultName, sDocuType=None):
|
||||
if sDocuType is not None:
|
||||
self.addFilterToDialog(defaultName[-3:], sDocuType, True)
|
||||
|
||||
self.sStorePath = None
|
||||
try:
|
||||
self.systemDialog.setValue(CHECKBOX_AUTOEXTENSION, 0, True)
|
||||
self.systemDialog.setDefaultName(defaultName)
|
||||
self.systemDialog.setDisplayDirectory(self.subst(displayDir))
|
||||
if self.execute(self.systemDialog):
|
||||
sPathList = self.systemDialog.getFiles()
|
||||
self.sStorePath = sPathList[0]
|
||||
|
||||
except Exception:
|
||||
traceback.print_exc()
|
||||
|
||||
return self.sStorePath
|
||||
|
||||
def execute(self, execDialog):
|
||||
return execDialog.execute() == 1
|
||||
|
||||
def addFilterToDialog(self, sExtension, filterName, setToDefault):
|
||||
try:
|
||||
#get the localized filtername
|
||||
uiName = self.getFilterUIName(filterName)
|
||||
pattern = "*." + sExtension
|
||||
#add the filter
|
||||
self.addFilter(uiName, pattern, setToDefault)
|
||||
except Exception:
|
||||
traceback.print_exc()
|
||||
|
||||
def addFilter(self, uiName, pattern, setToDefault):
|
||||
try:
|
||||
self.systemDialog.appendFilter(uiName, pattern)
|
||||
if setToDefault:
|
||||
self.systemDialog.setCurrentFilter(uiName)
|
||||
|
||||
except Exception:
|
||||
traceback.print_exc()
|
||||
|
||||
'''
|
||||
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 = oFactory.getByName(filterName)
|
||||
xPropertyValue = list(oObject)
|
||||
for i in xPropertyValue:
|
||||
if i is not None and i.Name == "UIName":
|
||||
return str(i.Value).replace("%productname%", "LibreOffice")
|
||||
|
||||
raise Exception(
|
||||
"UIName property not found for Filter " + filterName);
|
||||
except Exception:
|
||||
traceback.print_exc()
|
||||
return None
|
||||
|
||||
@classmethod
|
||||
def showErrorBox(self, xMSF, sErrorMessage, AddTag=None, AddString=None):
|
||||
sErrorMessage = sErrorMessage.replace("%PRODUCTNAME", "LibreOffice" )
|
||||
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.MessageText = MessageText
|
||||
iMessage = xMsgPeer.execute()
|
||||
xMsgPeer.dispose()
|
||||
except Exception:
|
||||
traceback.print_exc()
|
||||
|
||||
return iMessage
|
||||
|
||||
@classmethod
|
||||
def createStringSubstitution(self, xMSF):
|
||||
xPathSubst = None
|
||||
try:
|
||||
xPathSubst = xMSF.createInstance(
|
||||
"com.sun.star.util.PathSubstitution")
|
||||
return xPathSubst
|
||||
except Exception:
|
||||
traceback.print_exc()
|
||||
return None
|
||||
@@ -0,0 +1,148 @@
|
||||
#
|
||||
# This file is part of the LibreOffice project.
|
||||
#
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
#
|
||||
# This file incorporates work covered by the following license notice:
|
||||
#
|
||||
# Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
# contributor license agreements. See the NOTICE file distributed
|
||||
# with this work for additional information regarding copyright
|
||||
# ownership. The ASF licenses this file to you under the Apache
|
||||
# License, Version 2.0 (the "License"); you may not use this file
|
||||
# except in compliance with the License. You may obtain a copy of
|
||||
# the License at http://www.apache.org/licenses/LICENSE-2.0 .
|
||||
|
||||
import uno
|
||||
import traceback
|
||||
|
||||
from abc import abstractmethod
|
||||
|
||||
from ..common.FileAccess import FileAccess
|
||||
|
||||
from com.sun.star.beans import Property
|
||||
|
||||
from com.sun.star.ucb import Command
|
||||
from com.sun.star.ucb import GlobalTransferCommandArgument
|
||||
from com.sun.star.ucb.NameClash import OVERWRITE
|
||||
from com.sun.star.ucb import OpenCommandArgument2
|
||||
from com.sun.star.ucb.OpenMode import ALL
|
||||
from com.sun.star.ucb.TransferCommandOperation import COPY
|
||||
|
||||
|
||||
# This class is used to copy the content of a folder to
|
||||
# another folder.
|
||||
# There is an inconsistency with argument order.
|
||||
# It should be always: dir,filename.
|
||||
class UCB(object):
|
||||
|
||||
ucb = None
|
||||
fa = None
|
||||
xmsf = None
|
||||
|
||||
def __init__(self, xmsf):
|
||||
self.ucb = xmsf.createInstanceWithArguments("com.sun.star.ucb.UniversalContentBroker", ())
|
||||
self.fa = FileAccess(xmsf)
|
||||
self.xmsf = xmsf
|
||||
|
||||
def delete(self, filename):
|
||||
# System.out.println("UCB.delete(" + filename)
|
||||
self.executeCommand(self.getContent(filename),"delete", True)
|
||||
|
||||
def copy(self, sourceDir, targetDir):
|
||||
self.copy1(sourceDir,targetDir, None)
|
||||
|
||||
def copy1(self, sourceDir, targetDir, verifier):
|
||||
files = self.listFiles(sourceDir, verifier)
|
||||
for i in range(len(files)):
|
||||
self.copy2(sourceDir, files[i], targetDir, "")
|
||||
|
||||
def copy2(self, sourceDir, filename, targetDir, targetName):
|
||||
if (not self.fa.exists(targetDir, True)):
|
||||
self.fa.xInterface.createFolder(targetDir)
|
||||
self.executeCommand(self.ucb, "globalTransfer", self.copyArg(sourceDir, filename, targetDir, targetName))
|
||||
|
||||
# target name can be PropertyNames.EMPTY_STRING, in which case the name stays lige the source name
|
||||
# @param sourceDir
|
||||
# @param sourceFilename
|
||||
# @param targetDir
|
||||
# @param targetFilename
|
||||
# @return
|
||||
def copyArg(self, sourceDir, sourceFilename, targetDir, targetFilename):
|
||||
aArg = GlobalTransferCommandArgument()
|
||||
aArg.Operation = COPY
|
||||
aArg.SourceURL = self.fa.getURL(sourceDir, sourceFilename)
|
||||
aArg.TargetURL = targetDir
|
||||
aArg.NewTitle = targetFilename
|
||||
# fail, if object with same name exists in target folder
|
||||
aArg.NameClash = OVERWRITE
|
||||
return aArg
|
||||
|
||||
def executeCommand(self, xContent, aCommandName, aArgument):
|
||||
aCommand = Command()
|
||||
aCommand.Name = aCommandName
|
||||
aCommand.Handle = -1 # not available
|
||||
aCommand.Argument = aArgument
|
||||
return xContent.execute(aCommand, 0, None)
|
||||
|
||||
def listFiles(self, path, verifier):
|
||||
xContent = self.getContent(path)
|
||||
|
||||
aArg = OpenCommandArgument2()
|
||||
aArg.Mode = ALL
|
||||
aArg.Priority = 32768
|
||||
|
||||
# Fill info for the properties wanted.
|
||||
aArg.Properties = (Property(),)
|
||||
|
||||
aArg.Properties[0].Name = "Title"
|
||||
aArg.Properties[0].Handle = -1
|
||||
|
||||
xSet = self.executeCommand(xContent, "open", aArg)
|
||||
|
||||
xResultSet = xSet.getStaticResultSet()
|
||||
|
||||
files = []
|
||||
|
||||
if (xResultSet.first()):
|
||||
# obtain XContentAccess interface for child content access and XRow for properties
|
||||
while (True):
|
||||
# Obtain URL of child.
|
||||
if (hasattr(xResultSet, "queryContentIdentifierString")):
|
||||
aId = xResultSet.queryContentIdentifierString()
|
||||
aTitle = FileAccess.getFilename(aId)
|
||||
elif (hasattr(xResultSet, "getString")):
|
||||
# First column: Title (column numbers are 1-based!)
|
||||
aTitle = xResultSet.getString(1)
|
||||
else:
|
||||
aTitle = ""
|
||||
#if (len(aTitle) == 0 and xResultSet.wasNull()):
|
||||
if (len(aTitle) == 0):
|
||||
# ignore
|
||||
pass
|
||||
else:
|
||||
files.append(aTitle)
|
||||
if (not xResultSet.next()):
|
||||
break
|
||||
# next child
|
||||
if (verifier is not None):
|
||||
for i in range(len(files)):
|
||||
if (not verifier.verify(files[i])):
|
||||
files.pop(i) # FIXME !!! dangerous
|
||||
return files
|
||||
|
||||
def getContent(self, path):
|
||||
try:
|
||||
ident = self.ucb.createContentIdentifier(path)
|
||||
return self.ucb.queryContent(ident)
|
||||
except Exception:
|
||||
traceback.print_exc()
|
||||
return None
|
||||
|
||||
class Verifier:
|
||||
@abstractmethod
|
||||
def verify(object):
|
||||
pass
|
||||
|
||||
@@ -0,0 +1,318 @@
|
||||
# -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*-
|
||||
#
|
||||
# This file is part of the LibreOffice project.
|
||||
#
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
#
|
||||
|
||||
import gettext
|
||||
import uno
|
||||
import unohelper
|
||||
|
||||
localeDir = "$BRAND_BASE_DIR/$BRAND_SHARE_RESOURCE_SUBDIR"
|
||||
|
||||
gettext.bindtextdomain('wiz', unohelper.fileUrlToSystemPath(
|
||||
uno.getComponentContext().getByName(
|
||||
"/singletons/com.sun.star.util.theMacroExpander").expandMacros(localeDir)))
|
||||
|
||||
gettext.textdomain('wiz')
|
||||
|
||||
def NC_(context, string):
|
||||
# Contextual strings are stored with the concatenation of
|
||||
# the context, an EOT byte, and the original string, instead of the original string
|
||||
# see https://www.gnu.org/software/gettext/manual/html_node/MO-Files.html
|
||||
ret = gettext.gettext(context + chr(4) + string)
|
||||
if ret.find(chr(4)) == -1:
|
||||
return ret
|
||||
return string
|
||||
|
||||
# common section
|
||||
RID_COMMON_START_0 = NC_("RID_COMMON_START_0", "The directory '%1' could not be created.<BR>There may not be enough space left on your hard disk.")
|
||||
RID_COMMON_START_1 = NC_("RID_COMMON_START_1", "The text document could not be created.<BR>Please check if the module '%PRODUCTNAME Writer' is installed.")
|
||||
RID_COMMON_START_2 = NC_("RID_COMMON_START_2", "The spreadsheet could not be created.<BR>Please check if the module '%PRODUCTNAME Calc' is installed.")
|
||||
RID_COMMON_START_3 = NC_("RID_COMMON_START_3", "The presentation could not be created.<BR>Please check if the module '%PRODUCTNAME Impress' is installed.")
|
||||
RID_COMMON_START_4 = NC_("RID_COMMON_START_4", "The drawing could not be created.<BR>Please check if the module '%PRODUCTNAME Draw' is installed.")
|
||||
RID_COMMON_START_5 = NC_("RID_COMMON_START_5", "The formula could not be created.<BR>Please check if the module '%PRODUCTNAME Math' is installed.")
|
||||
RID_COMMON_START_6 = NC_("RID_COMMON_START_6", "The files required could not be found.<BR>Please start the %PRODUCTNAME Setup and choose 'Repair'.")
|
||||
RID_COMMON_START_7 = NC_("RID_COMMON_START_7", "The file '<PATH>' already exists.<BR><BR>Would you like to overwrite the existing file?")
|
||||
RID_COMMON_START_8 = NC_("RID_COMMON_START_8", "Yes")
|
||||
RID_COMMON_START_9 = NC_("RID_COMMON_START_9", "Yes to All")
|
||||
RID_COMMON_START_10 = NC_("RID_COMMON_START_10", "No")
|
||||
RID_COMMON_START_11 = NC_("RID_COMMON_START_11", "Cancel")
|
||||
RID_COMMON_START_12 = NC_("RID_COMMON_START_12", "~Finish")
|
||||
RID_COMMON_START_13 = NC_("RID_COMMON_START_13", "< ~Back")
|
||||
RID_COMMON_START_14 = NC_("RID_COMMON_START_14", "~Next >")
|
||||
RID_COMMON_START_15 = NC_("RID_COMMON_START_15", "~Help")
|
||||
RID_COMMON_START_16 = NC_("RID_COMMON_START_16", "Steps")
|
||||
RID_COMMON_START_17 = NC_("RID_COMMON_START_17", "Close")
|
||||
RID_COMMON_START_18 = NC_("RID_COMMON_START_18", "OK")
|
||||
RID_COMMON_START_19 = NC_("RID_COMMON_START_19", "The file already exists. Do you want to overwrite it?")
|
||||
RID_COMMON_START_20 = NC_("RID_COMMON_START_20", "Template created via <wizard_name> on <current_date>.")
|
||||
RID_COMMON_START_21 = NC_("RID_COMMON_START_21", "The wizard could not be run, because important files were not found.\nUnder 'Tools - Options - %PRODUCTNAME - Paths' click the 'Default' button to reset the paths to the original default settings.\nThen run the wizard again.")
|
||||
|
||||
# LETTER WIZARD RESOURCES
|
||||
RID_LETTERWIZARDDIALOG_START_1 = NC_("RID_LETTERWIZARDDIALOG_START_1", "Letter Wizard")
|
||||
RID_LETTERWIZARDDIALOG_START_2 = NC_("RID_LETTERWIZARDDIALOG_START_2", "Label9")
|
||||
RID_LETTERWIZARDDIALOG_START_3 = NC_("RID_LETTERWIZARDDIALOG_START_3", "~Business Letter")
|
||||
RID_LETTERWIZARDDIALOG_START_4 = NC_("RID_LETTERWIZARDDIALOG_START_4", "~Formal Personal Letter")
|
||||
RID_LETTERWIZARDDIALOG_START_5 = NC_("RID_LETTERWIZARDDIALOG_START_5", "~Personal Letter")
|
||||
RID_LETTERWIZARDDIALOG_START_6 = NC_("RID_LETTERWIZARDDIALOG_START_6", "~Use letterhead paper with pre-printed elements")
|
||||
RID_LETTERWIZARDDIALOG_START_7 = NC_("RID_LETTERWIZARDDIALOG_START_7", "~Logo")
|
||||
RID_LETTERWIZARDDIALOG_START_8 = NC_("RID_LETTERWIZARDDIALOG_START_8", "Return address")
|
||||
RID_LETTERWIZARDDIALOG_START_9 = NC_("RID_LETTERWIZARDDIALOG_START_9", "~Include footer")
|
||||
RID_LETTERWIZARDDIALOG_START_10 = NC_("RID_LETTERWIZARDDIALOG_START_10", "~Return address in envelope window")
|
||||
RID_LETTERWIZARDDIALOG_START_11 = NC_("RID_LETTERWIZARDDIALOG_START_11", "~Logo")
|
||||
RID_LETTERWIZARDDIALOG_START_12 = NC_("RID_LETTERWIZARDDIALOG_START_12", "~Return address in envelope window")
|
||||
RID_LETTERWIZARDDIALOG_START_13 = NC_("RID_LETTERWIZARDDIALOG_START_13", "Letter signs")
|
||||
RID_LETTERWIZARDDIALOG_START_14 = NC_("RID_LETTERWIZARDDIALOG_START_14", "S~ubject line")
|
||||
RID_LETTERWIZARDDIALOG_START_15 = NC_("RID_LETTERWIZARDDIALOG_START_15", "Salu~tation")
|
||||
RID_LETTERWIZARDDIALOG_START_16 = NC_("RID_LETTERWIZARDDIALOG_START_16", "Fold ~marks")
|
||||
RID_LETTERWIZARDDIALOG_START_17 = NC_("RID_LETTERWIZARDDIALOG_START_17", "~Complimentary close")
|
||||
RID_LETTERWIZARDDIALOG_START_18 = NC_("RID_LETTERWIZARDDIALOG_START_18", "~Footer")
|
||||
RID_LETTERWIZARDDIALOG_START_19 = NC_("RID_LETTERWIZARDDIALOG_START_19", "~Use user data for return address")
|
||||
RID_LETTERWIZARDDIALOG_START_20 = NC_("RID_LETTERWIZARDDIALOG_START_20", "~New sender address:")
|
||||
RID_LETTERWIZARDDIALOG_START_21 = NC_("RID_LETTERWIZARDDIALOG_START_21", "Use placeholders for ~recipient's address")
|
||||
RID_LETTERWIZARDDIALOG_START_22 = NC_("RID_LETTERWIZARDDIALOG_START_22", "Use address database for ~mail merge")
|
||||
RID_LETTERWIZARDDIALOG_START_23 = NC_("RID_LETTERWIZARDDIALOG_START_23", "Include ~only on second and following pages")
|
||||
RID_LETTERWIZARDDIALOG_START_24 = NC_("RID_LETTERWIZARDDIALOG_START_24", "~Include page number")
|
||||
RID_LETTERWIZARDDIALOG_START_25 = NC_("RID_LETTERWIZARDDIALOG_START_25", "Letter Template")
|
||||
RID_LETTERWIZARDDIALOG_START_26 = NC_("RID_LETTERWIZARDDIALOG_START_26", "Create a ~letter from this template")
|
||||
RID_LETTERWIZARDDIALOG_START_27 = NC_("RID_LETTERWIZARDDIALOG_START_27", "Make ~manual changes to this letter template")
|
||||
RID_LETTERWIZARDDIALOG_START_28 = NC_("RID_LETTERWIZARDDIALOG_START_28", "Page design")
|
||||
RID_LETTERWIZARDDIALOG_START_29 = NC_("RID_LETTERWIZARDDIALOG_START_29", "Page design")
|
||||
RID_LETTERWIZARDDIALOG_START_30 = NC_("RID_LETTERWIZARDDIALOG_START_30", "Page design")
|
||||
RID_LETTERWIZARDDIALOG_START_31 = NC_("RID_LETTERWIZARDDIALOG_START_31", "This wizard helps you to create a letter template. You can then use the template as the basis for writing letters as often as desired.")
|
||||
RID_LETTERWIZARDDIALOG_START_32 = NC_("RID_LETTERWIZARDDIALOG_START_32", "~Height:")
|
||||
RID_LETTERWIZARDDIALOG_START_33 = NC_("RID_LETTERWIZARDDIALOG_START_33", "~Width:")
|
||||
RID_LETTERWIZARDDIALOG_START_34 = NC_("RID_LETTERWIZARDDIALOG_START_34", "S~pacing to left margin:")
|
||||
RID_LETTERWIZARDDIALOG_START_35 = NC_("RID_LETTERWIZARDDIALOG_START_35", "Spacing ~to top margin:")
|
||||
RID_LETTERWIZARDDIALOG_START_36 = NC_("RID_LETTERWIZARDDIALOG_START_36", "Height:")
|
||||
RID_LETTERWIZARDDIALOG_START_37 = NC_("RID_LETTERWIZARDDIALOG_START_37", "Width:")
|
||||
RID_LETTERWIZARDDIALOG_START_38 = NC_("RID_LETTERWIZARDDIALOG_START_38", "S~pacing to left margin:")
|
||||
RID_LETTERWIZARDDIALOG_START_39 = NC_("RID_LETTERWIZARDDIALOG_START_39", "Spacing ~to top margin:")
|
||||
RID_LETTERWIZARDDIALOG_START_40 = NC_("RID_LETTERWIZARDDIALOG_START_40", "Height:")
|
||||
RID_LETTERWIZARDDIALOG_START_42 = NC_("RID_LETTERWIZARDDIALOG_START_42", "Sender's address")
|
||||
RID_LETTERWIZARDDIALOG_START_43 = NC_("RID_LETTERWIZARDDIALOG_START_43", "Name:")
|
||||
RID_LETTERWIZARDDIALOG_START_44 = NC_("RID_LETTERWIZARDDIALOG_START_44", "Street:")
|
||||
RID_LETTERWIZARDDIALOG_START_45 = NC_("RID_LETTERWIZARDDIALOG_START_45", "ZIP code/State/City:")
|
||||
RID_LETTERWIZARDDIALOG_START_46 = NC_("RID_LETTERWIZARDDIALOG_START_46", "Recipient's address")
|
||||
RID_LETTERWIZARDDIALOG_START_47 = NC_("RID_LETTERWIZARDDIALOG_START_47", "Footer")
|
||||
RID_LETTERWIZARDDIALOG_START_48 = NC_("RID_LETTERWIZARDDIALOG_START_48", "This wizard creates a letter template which enables you to create multiple letters with the same layout and settings.")
|
||||
RID_LETTERWIZARDDIALOG_START_49 = NC_("RID_LETTERWIZARDDIALOG_START_49", "To create another new letter out of the template just navigate to the template location and double-click it.")
|
||||
RID_LETTERWIZARDDIALOG_START_50 = NC_("RID_LETTERWIZARDDIALOG_START_50", "Template name:")
|
||||
RID_LETTERWIZARDDIALOG_START_51 = NC_("RID_LETTERWIZARDDIALOG_START_51", "Location and file name:")
|
||||
RID_LETTERWIZARDDIALOG_START_52 = NC_("RID_LETTERWIZARDDIALOG_START_52", "How do you want to proceed?")
|
||||
RID_LETTERWIZARDDIALOG_START_53 = NC_("RID_LETTERWIZARDDIALOG_START_53", "Please choose the type of letter and page design")
|
||||
RID_LETTERWIZARDDIALOG_START_54 = NC_("RID_LETTERWIZARDDIALOG_START_54", "Select the items to be printed")
|
||||
RID_LETTERWIZARDDIALOG_START_55 = NC_("RID_LETTERWIZARDDIALOG_START_55", "Specify items already on your letterhead paper")
|
||||
RID_LETTERWIZARDDIALOG_START_56 = NC_("RID_LETTERWIZARDDIALOG_START_56", "Specify the sender and recipient information")
|
||||
RID_LETTERWIZARDDIALOG_START_57 = NC_("RID_LETTERWIZARDDIALOG_START_57", "Fill in the information you would like in the footer")
|
||||
RID_LETTERWIZARDDIALOG_START_58 = NC_("RID_LETTERWIZARDDIALOG_START_58", "Please specify last settings")
|
||||
RID_LETTERWIZARDDIALOG_START_59 = NC_("RID_LETTERWIZARDDIALOG_START_59", "Subject:")
|
||||
RID_LETTERWIZARDDIALOG_START_60 = NC_("RID_LETTERWIZARDDIALOG_START_60", "Elegant")
|
||||
RID_LETTERWIZARDDIALOG_START_61 = NC_("RID_LETTERWIZARDDIALOG_START_61", "Modern")
|
||||
RID_LETTERWIZARDDIALOG_START_62 = NC_("RID_LETTERWIZARDDIALOG_START_62", "Office")
|
||||
RID_LETTERWIZARDDIALOG_START_63 = NC_("RID_LETTERWIZARDDIALOG_START_63", "Bottle")
|
||||
RID_LETTERWIZARDDIALOG_START_64 = NC_("RID_LETTERWIZARDDIALOG_START_64", "Mail")
|
||||
RID_LETTERWIZARDDIALOG_START_65 = NC_("RID_LETTERWIZARDDIALOG_START_65", "Marine")
|
||||
RID_LETTERWIZARDDIALOG_START_66 = NC_("RID_LETTERWIZARDDIALOG_START_66", "Red Line")
|
||||
|
||||
# Letter Wizard Greeting Start
|
||||
RID_LETTERWIZARDSALUTATION_START_1 = NC_("RID_LETTERWIZARDSALUTATION_START_1", "To Whom it May Concern")
|
||||
RID_LETTERWIZARDSALUTATION_START_2 = NC_("RID_LETTERWIZARDSALUTATION_START_2", "Dear Sir or Madam")
|
||||
RID_LETTERWIZARDSALUTATION_START_3 = NC_("RID_LETTERWIZARDSALUTATION_START_3", "Hello")
|
||||
|
||||
# Letter Wizard Greeting Start
|
||||
RID_LETTERWIZARDGREETING_START_1 = NC_("RID_LETTERWIZARDGREETING_START_1", "Sincerely")
|
||||
RID_LETTERWIZARDGREETING_START_2 = NC_("RID_LETTERWIZARDGREETING_START_2", "Best regards")
|
||||
RID_LETTERWIZARDGREETING_START_3 = NC_("RID_LETTERWIZARDGREETING_START_3", "Cheers")
|
||||
|
||||
# Letter Wizard Roadmap Start
|
||||
RID_LETTERWIZARDROADMAP_START_1 = NC_("RID_LETTERWIZARDROADMAP_START_1", "Page Design")
|
||||
RID_LETTERWIZARDROADMAP_START_2 = NC_("RID_LETTERWIZARDROADMAP_START_2", "Letterhead Layout")
|
||||
RID_LETTERWIZARDROADMAP_START_3 = NC_("RID_LETTERWIZARDROADMAP_START_3", "Printed Items")
|
||||
RID_LETTERWIZARDROADMAP_START_4 = NC_("RID_LETTERWIZARDROADMAP_START_4", "Recipient and Sender")
|
||||
RID_LETTERWIZARDROADMAP_START_5 = NC_("RID_LETTERWIZARDROADMAP_START_5", "Footer")
|
||||
RID_LETTERWIZARDROADMAP_START_6 = NC_("RID_LETTERWIZARDROADMAP_START_6", "Name and Location")
|
||||
|
||||
# FAX WIZARD RESOURCES
|
||||
RID_FAXWIZARDDIALOG_START_1 = NC_("RID_FAXWIZARDDIALOG_START_1", "Fax Wizard")
|
||||
RID_FAXWIZARDDIALOG_START_2 = NC_("RID_FAXWIZARDDIALOG_START_2", "Label9")
|
||||
RID_FAXWIZARDDIALOG_START_3 = NC_("RID_FAXWIZARDDIALOG_START_3", "~Business Fax")
|
||||
RID_FAXWIZARDDIALOG_START_4 = NC_("RID_FAXWIZARDDIALOG_START_4", "~Personal Fax")
|
||||
RID_FAXWIZARDDIALOG_START_5 = NC_("RID_FAXWIZARDDIALOG_START_5", "~Logo")
|
||||
RID_FAXWIZARDDIALOG_START_6 = NC_("RID_FAXWIZARDDIALOG_START_6", "S~ubject line")
|
||||
RID_FAXWIZARDDIALOG_START_7 = NC_("RID_FAXWIZARDDIALOG_START_7", "S~alutation")
|
||||
RID_FAXWIZARDDIALOG_START_8 = NC_("RID_FAXWIZARDDIALOG_START_8", "~Complimentary close")
|
||||
RID_FAXWIZARDDIALOG_START_9 = NC_("RID_FAXWIZARDDIALOG_START_9", "~Footer")
|
||||
RID_FAXWIZARDDIALOG_START_10 = NC_("RID_FAXWIZARDDIALOG_START_10", "~Use user data for return address")
|
||||
RID_FAXWIZARDDIALOG_START_11 = NC_("RID_FAXWIZARDDIALOG_START_11", "~New return address")
|
||||
RID_FAXWIZARDDIALOG_START_12 = NC_("RID_FAXWIZARDDIALOG_START_12", "My Fax Template")
|
||||
RID_FAXWIZARDDIALOG_START_13 = NC_("RID_FAXWIZARDDIALOG_START_13", "Create a ~fax from this template")
|
||||
RID_FAXWIZARDDIALOG_START_14 = NC_("RID_FAXWIZARDDIALOG_START_14", "Make ~manual changes to this fax template")
|
||||
RID_FAXWIZARDDIALOG_START_15 = NC_("RID_FAXWIZARDDIALOG_START_15", "Page design")
|
||||
RID_FAXWIZARDDIALOG_START_16 = NC_("RID_FAXWIZARDDIALOG_START_16", "Page design")
|
||||
RID_FAXWIZARDDIALOG_START_17 = NC_("RID_FAXWIZARDDIALOG_START_17", "This wizard helps you to create a fax template. The template can then be used to create a fax whenever needed.")
|
||||
RID_FAXWIZARDDIALOG_START_18 = NC_("RID_FAXWIZARDDIALOG_START_18", "Return address")
|
||||
RID_FAXWIZARDDIALOG_START_19 = NC_("RID_FAXWIZARDDIALOG_START_19", "Name:")
|
||||
RID_FAXWIZARDDIALOG_START_20 = NC_("RID_FAXWIZARDDIALOG_START_20", "Street:")
|
||||
RID_FAXWIZARDDIALOG_START_21 = NC_("RID_FAXWIZARDDIALOG_START_21", "ZIP code/State/City:")
|
||||
RID_FAXWIZARDDIALOG_START_22 = NC_("RID_FAXWIZARDDIALOG_START_22", "Footer")
|
||||
RID_FAXWIZARDDIALOG_START_23 = NC_("RID_FAXWIZARDDIALOG_START_23", "This wizard creates a fax template which enables you to create multiple faxes with the same layout and settings.")
|
||||
RID_FAXWIZARDDIALOG_START_24 = NC_("RID_FAXWIZARDDIALOG_START_24", "To create another new fax out of the template, go to the location where you saved the template and double-click the file.")
|
||||
RID_FAXWIZARDDIALOG_START_25 = NC_("RID_FAXWIZARDDIALOG_START_25", "Template name:")
|
||||
RID_FAXWIZARDDIALOG_START_26 = NC_("RID_FAXWIZARDDIALOG_START_26", "Location and file name:")
|
||||
RID_FAXWIZARDDIALOG_START_27 = NC_("RID_FAXWIZARDDIALOG_START_27", "What do you want to do next?")
|
||||
RID_FAXWIZARDDIALOG_START_28 = NC_("RID_FAXWIZARDDIALOG_START_28", "Choose the type of fax and a page design")
|
||||
RID_FAXWIZARDDIALOG_START_29 = NC_("RID_FAXWIZARDDIALOG_START_29", "Select items to include in the fax template")
|
||||
RID_FAXWIZARDDIALOG_START_30 = NC_("RID_FAXWIZARDDIALOG_START_30", "Specify sender and recipient information")
|
||||
RID_FAXWIZARDDIALOG_START_31 = NC_("RID_FAXWIZARDDIALOG_START_31", "Enter text for the footer")
|
||||
RID_FAXWIZARDDIALOG_START_32 = NC_("RID_FAXWIZARDDIALOG_START_32", "Choose a name and save the template")
|
||||
RID_FAXWIZARDDIALOG_START_33 = NC_("RID_FAXWIZARDDIALOG_START_33", "Include ~only on second and following pages")
|
||||
RID_FAXWIZARDDIALOG_START_34 = NC_("RID_FAXWIZARDDIALOG_START_34", "~Include page number")
|
||||
RID_FAXWIZARDDIALOG_START_35 = NC_("RID_FAXWIZARDDIALOG_START_35", "~Date")
|
||||
RID_FAXWIZARDDIALOG_START_36 = NC_("RID_FAXWIZARDDIALOG_START_36", "~Type of message")
|
||||
RID_FAXWIZARDDIALOG_START_37 = NC_("RID_FAXWIZARDDIALOG_START_37", "Fax Number:")
|
||||
RID_FAXWIZARDDIALOG_START_38 = NC_("RID_FAXWIZARDDIALOG_START_38", "Use placeholders for ~recipient's address")
|
||||
RID_FAXWIZARDDIALOG_START_39 = NC_("RID_FAXWIZARDDIALOG_START_39", "Use address database for ~mail merge")
|
||||
RID_FAXWIZARDDIALOG_START_40 = NC_("RID_FAXWIZARDDIALOG_START_40", "~New return address")
|
||||
RID_FAXWIZARDDIALOG_START_41 = NC_("RID_FAXWIZARDDIALOG_START_41", "To:")
|
||||
RID_FAXWIZARDDIALOG_START_42 = NC_("RID_FAXWIZARDDIALOG_START_42", "From:")
|
||||
RID_FAXWIZARDDIALOG_START_43 = NC_("RID_FAXWIZARDDIALOG_START_43", "Fax:")
|
||||
RID_FAXWIZARDDIALOG_START_44 = NC_("RID_FAXWIZARDDIALOG_START_44", "Tel:")
|
||||
RID_FAXWIZARDDIALOG_START_45 = NC_("RID_FAXWIZARDDIALOG_START_45", "Email:")
|
||||
RID_FAXWIZARDDIALOG_START_46 = NC_("RID_FAXWIZARDDIALOG_START_46", "This template consists of")
|
||||
RID_FAXWIZARDDIALOG_START_47 = NC_("RID_FAXWIZARDDIALOG_START_47", "page")
|
||||
RID_FAXWIZARDDIALOG_START_48 = NC_("RID_FAXWIZARDDIALOG_START_48", "Please inform us if transmission errors occur.")
|
||||
RID_FAXWIZARDDIALOG_START_49 = NC_("RID_FAXWIZARDDIALOG_START_49", "Bottle")
|
||||
RID_FAXWIZARDDIALOG_START_50 = NC_("RID_FAXWIZARDDIALOG_START_50", "Lines")
|
||||
RID_FAXWIZARDDIALOG_START_51 = NC_("RID_FAXWIZARDDIALOG_START_51", "Marine")
|
||||
RID_FAXWIZARDDIALOG_START_52 = NC_("RID_FAXWIZARDDIALOG_START_52", "Classic Fax")
|
||||
RID_FAXWIZARDDIALOG_START_53 = NC_("RID_FAXWIZARDDIALOG_START_53", "Classic Fax from Private")
|
||||
RID_FAXWIZARDDIALOG_START_54 = NC_("RID_FAXWIZARDDIALOG_START_54", "Modern Fax")
|
||||
RID_FAXWIZARDDIALOG_START_55 = NC_("RID_FAXWIZARDDIALOG_START_55", "Modern Fax from Private")
|
||||
RID_FAXWIZARDDIALOG_START_56 = NC_("RID_FAXWIZARDDIALOG_START_56", "Fax")
|
||||
|
||||
# Fax Wizard Communication Start
|
||||
RID_FAXWIZARDCOMMUNICATION_START_1 = NC_("RID_FAXWIZARDCOMMUNICATION_START_1", "Important Information!")
|
||||
RID_FAXWIZARDCOMMUNICATION_START_2 = NC_("RID_FAXWIZARDCOMMUNICATION_START_2", "For your information")
|
||||
RID_FAXWIZARDCOMMUNICATION_START_3 = NC_("RID_FAXWIZARDCOMMUNICATION_START_3", "News!")
|
||||
|
||||
# Fax Wizard Salutation Start
|
||||
RID_FAXWIZARDSALUTATION_START_1 = NC_("RID_FAXWIZARDSALUTATION_START_1", "To whom it may concern,")
|
||||
RID_FAXWIZARDSALUTATION_START_2 = NC_("RID_FAXWIZARDSALUTATION_START_2", "Dear Sir or Madam,")
|
||||
RID_FAXWIZARDSALUTATION_START_3 = NC_("RID_FAXWIZARDSALUTATION_START_3", "Hello,")
|
||||
RID_FAXWIZARDSALUTATION_START_4 = NC_("RID_FAXWIZARDSALUTATION_START_4", "Hi,")
|
||||
|
||||
# Fax Wizard Greeting Start
|
||||
RID_FAXWIZARDGREETING_START_1 = NC_("RID_FAXWIZARDGREETING_START_1", "Sincerely")
|
||||
RID_FAXWIZARDGREETING_START_2 = NC_("RID_FAXWIZARDGREETING_START_2", "Yours faithfully")
|
||||
RID_FAXWIZARDGREETING_START_3 = NC_("RID_FAXWIZARDGREETING_START_3", "Regards")
|
||||
RID_FAXWIZARDGREETING_START_4 = NC_("RID_FAXWIZARDGREETING_START_4", "Love")
|
||||
|
||||
# Fax Wizard Roadmap Start
|
||||
RID_FAXWIZARDROADMAP_START_1 = NC_("RID_FAXWIZARDROADMAP_START_1", "Page Design")
|
||||
RID_FAXWIZARDROADMAP_START_2 = NC_("RID_FAXWIZARDROADMAP_START_2", "Items to Include")
|
||||
RID_FAXWIZARDROADMAP_START_3 = NC_("RID_FAXWIZARDROADMAP_START_3", "Sender and Recipient")
|
||||
RID_FAXWIZARDROADMAP_START_4 = NC_("RID_FAXWIZARDROADMAP_START_4", "Footer")
|
||||
RID_FAXWIZARDROADMAP_START_5 = NC_("RID_FAXWIZARDROADMAP_START_5", "Name and Location")
|
||||
|
||||
# AGENDA WIZARD RESOURCES
|
||||
RID_AGENDAWIZARDDIALOG_START_1 = NC_("RID_AGENDAWIZARDDIALOG_START_1", "Agenda Wizard")
|
||||
RID_AGENDAWIZARDDIALOG_START_2 = NC_("RID_AGENDAWIZARDDIALOG_START_2", "Make ~manual changes to this agenda template")
|
||||
RID_AGENDAWIZARDDIALOG_START_3 = NC_("RID_AGENDAWIZARDDIALOG_START_3", "Template name:")
|
||||
RID_AGENDAWIZARDDIALOG_START_4 = NC_("RID_AGENDAWIZARDDIALOG_START_4", "Location and file name:")
|
||||
RID_AGENDAWIZARDDIALOG_START_5 = NC_("RID_AGENDAWIZARDDIALOG_START_5", "What do you want to do next?")
|
||||
RID_AGENDAWIZARDDIALOG_START_6 = NC_("RID_AGENDAWIZARDDIALOG_START_6", "Please choose the page design for the agenda")
|
||||
RID_AGENDAWIZARDDIALOG_START_7 = NC_("RID_AGENDAWIZARDDIALOG_START_7", "Please select the headings you wish to include in your agenda template")
|
||||
RID_AGENDAWIZARDDIALOG_START_8 = NC_("RID_AGENDAWIZARDDIALOG_START_8", "Please enter general information for the event")
|
||||
RID_AGENDAWIZARDDIALOG_START_9 = NC_("RID_AGENDAWIZARDDIALOG_START_9", "Please specify items for the agenda")
|
||||
RID_AGENDAWIZARDDIALOG_START_10 = NC_("RID_AGENDAWIZARDDIALOG_START_10", "Please select the names you wish to include in your agenda template")
|
||||
RID_AGENDAWIZARDDIALOG_START_11 = NC_("RID_AGENDAWIZARDDIALOG_START_11", "Choose a name and save the template")
|
||||
RID_AGENDAWIZARDDIALOG_START_12 = NC_("RID_AGENDAWIZARDDIALOG_START_12", "Include form for recording minutes")
|
||||
RID_AGENDAWIZARDDIALOG_START_13 = NC_("RID_AGENDAWIZARDDIALOG_START_13", "This wizard helps you to create an agenda template. The template can then be used to create an agenda whenever needed.")
|
||||
RID_AGENDAWIZARDDIALOG_START_14 = NC_("RID_AGENDAWIZARDDIALOG_START_14", "Time:")
|
||||
RID_AGENDAWIZARDDIALOG_START_15 = NC_("RID_AGENDAWIZARDDIALOG_START_15", "Name:")
|
||||
RID_AGENDAWIZARDDIALOG_START_16 = NC_("RID_AGENDAWIZARDDIALOG_START_16", "Location:")
|
||||
RID_AGENDAWIZARDDIALOG_START_17 = NC_("RID_AGENDAWIZARDDIALOG_START_17", "Placeholders will be used in empty fields. You can replace placeholders with text later.")
|
||||
RID_AGENDAWIZARDDIALOG_START_18 = NC_("RID_AGENDAWIZARDDIALOG_START_18", "...")
|
||||
RID_AGENDAWIZARDDIALOG_START_19 = NC_("RID_AGENDAWIZARDDIALOG_START_19", "Create an ~agenda from this template")
|
||||
RID_AGENDAWIZARDDIALOG_START_20 = NC_("RID_AGENDAWIZARDDIALOG_START_20", "To create a new agenda out of the template, go to the location where you saved the template and double-click the file.")
|
||||
RID_AGENDAWIZARDDIALOG_START_21 = NC_("RID_AGENDAWIZARDDIALOG_START_21", "Agenda item")
|
||||
RID_AGENDAWIZARDDIALOG_START_22 = NC_("RID_AGENDAWIZARDDIALOG_START_22", "Responsible")
|
||||
RID_AGENDAWIZARDDIALOG_START_23 = NC_("RID_AGENDAWIZARDDIALOG_START_23", "Duration")
|
||||
RID_AGENDAWIZARDDIALOG_START_24 = NC_("RID_AGENDAWIZARDDIALOG_START_24", "Meeting called by")
|
||||
RID_AGENDAWIZARDDIALOG_START_25 = NC_("RID_AGENDAWIZARDDIALOG_START_25", "Chairperson")
|
||||
RID_AGENDAWIZARDDIALOG_START_26 = NC_("RID_AGENDAWIZARDDIALOG_START_26", "Minute keeper")
|
||||
RID_AGENDAWIZARDDIALOG_START_27 = NC_("RID_AGENDAWIZARDDIALOG_START_27", "Moderator")
|
||||
RID_AGENDAWIZARDDIALOG_START_28 = NC_("RID_AGENDAWIZARDDIALOG_START_28", "Attendees")
|
||||
RID_AGENDAWIZARDDIALOG_START_29 = NC_("RID_AGENDAWIZARDDIALOG_START_29", "Observers")
|
||||
RID_AGENDAWIZARDDIALOG_START_30 = NC_("RID_AGENDAWIZARDDIALOG_START_30", "Facility personnel")
|
||||
RID_AGENDAWIZARDDIALOG_START_31 = NC_("RID_AGENDAWIZARDDIALOG_START_31", "The agenda template will include placeholders for the names of the selected people. When creating an agenda from the template, you can replace these placeholder with the appropriate names.")
|
||||
RID_AGENDAWIZARDDIALOG_START_32 = NC_("RID_AGENDAWIZARDDIALOG_START_32", "Type of meeting")
|
||||
RID_AGENDAWIZARDDIALOG_START_33 = NC_("RID_AGENDAWIZARDDIALOG_START_33", "Please read")
|
||||
RID_AGENDAWIZARDDIALOG_START_34 = NC_("RID_AGENDAWIZARDDIALOG_START_34", "Please bring")
|
||||
RID_AGENDAWIZARDDIALOG_START_35 = NC_("RID_AGENDAWIZARDDIALOG_START_35", "Notes")
|
||||
RID_AGENDAWIZARDDIALOG_START_36 = NC_("RID_AGENDAWIZARDDIALOG_START_36", "The agenda template will include placeholders for the selected items.")
|
||||
RID_AGENDAWIZARDDIALOG_START_38 = NC_("RID_AGENDAWIZARDDIALOG_START_38", "Date:")
|
||||
RID_AGENDAWIZARDDIALOG_START_39 = NC_("RID_AGENDAWIZARDDIALOG_START_39", "This wizard creates an agenda template which enables you to create multiple agendas with the same layout and settings.")
|
||||
RID_AGENDAWIZARDDIALOG_START_40 = NC_("RID_AGENDAWIZARDDIALOG_START_40", "Page design:")
|
||||
RID_AGENDAWIZARDDIALOG_START_41 = NC_("RID_AGENDAWIZARDDIALOG_START_41", "myAgendaTemplate.stw")
|
||||
RID_AGENDAWIZARDDIALOG_START_42 = NC_("RID_AGENDAWIZARDDIALOG_START_42", "My Agenda Template")
|
||||
RID_AGENDAWIZARDDIALOG_START_43 = NC_("RID_AGENDAWIZARDDIALOG_START_43", "An error occurred while saving the agenda template.")
|
||||
RID_AGENDAWIZARDDIALOG_START_44 = NC_("RID_AGENDAWIZARDDIALOG_START_44", "Name")
|
||||
RID_AGENDAWIZARDDIALOG_START_45 = NC_("RID_AGENDAWIZARDDIALOG_START_45", "Date")
|
||||
RID_AGENDAWIZARDDIALOG_START_46 = NC_("RID_AGENDAWIZARDDIALOG_START_46", "Time")
|
||||
RID_AGENDAWIZARDDIALOG_START_47 = NC_("RID_AGENDAWIZARDDIALOG_START_47", "Location")
|
||||
RID_AGENDAWIZARDDIALOG_START_48 = NC_("RID_AGENDAWIZARDDIALOG_START_48", "Click to replace this text")
|
||||
RID_AGENDAWIZARDDIALOG_START_50 = NC_("RID_AGENDAWIZARDDIALOG_START_50", "Page Design")
|
||||
RID_AGENDAWIZARDDIALOG_START_51 = NC_("RID_AGENDAWIZARDDIALOG_START_51", "General Information")
|
||||
RID_AGENDAWIZARDDIALOG_START_52 = NC_("RID_AGENDAWIZARDDIALOG_START_52", "Headings to Include")
|
||||
RID_AGENDAWIZARDDIALOG_START_53 = NC_("RID_AGENDAWIZARDDIALOG_START_53", "Names")
|
||||
RID_AGENDAWIZARDDIALOG_START_54 = NC_("RID_AGENDAWIZARDDIALOG_START_54", "Agenda Items")
|
||||
RID_AGENDAWIZARDDIALOG_START_55 = NC_("RID_AGENDAWIZARDDIALOG_START_55", "Name and Location")
|
||||
RID_AGENDAWIZARDDIALOG_START_56 = NC_("RID_AGENDAWIZARDDIALOG_START_56", "An error occurred while opening the agenda template.")
|
||||
RID_AGENDAWIZARDDIALOG_START_57 = NC_("RID_AGENDAWIZARDDIALOG_START_57", "Type of meeting")
|
||||
RID_AGENDAWIZARDDIALOG_START_58 = NC_("RID_AGENDAWIZARDDIALOG_START_58", "Please bring")
|
||||
RID_AGENDAWIZARDDIALOG_START_59 = NC_("RID_AGENDAWIZARDDIALOG_START_59", "Please read")
|
||||
RID_AGENDAWIZARDDIALOG_START_60 = NC_("RID_AGENDAWIZARDDIALOG_START_60", "Notes")
|
||||
RID_AGENDAWIZARDDIALOG_START_61 = NC_("RID_AGENDAWIZARDDIALOG_START_61", "Meeting called by")
|
||||
RID_AGENDAWIZARDDIALOG_START_62 = NC_("RID_AGENDAWIZARDDIALOG_START_62", "Chairperson")
|
||||
RID_AGENDAWIZARDDIALOG_START_63 = NC_("RID_AGENDAWIZARDDIALOG_START_63", "Attendees")
|
||||
RID_AGENDAWIZARDDIALOG_START_64 = NC_("RID_AGENDAWIZARDDIALOG_START_64", "Minute keeper")
|
||||
RID_AGENDAWIZARDDIALOG_START_65 = NC_("RID_AGENDAWIZARDDIALOG_START_65", "Moderator")
|
||||
RID_AGENDAWIZARDDIALOG_START_66 = NC_("RID_AGENDAWIZARDDIALOG_START_66", "Observers")
|
||||
RID_AGENDAWIZARDDIALOG_START_67 = NC_("RID_AGENDAWIZARDDIALOG_START_67", "Facility personnel")
|
||||
RID_AGENDAWIZARDDIALOG_START_68 = NC_("RID_AGENDAWIZARDDIALOG_START_68", "Insert")
|
||||
RID_AGENDAWIZARDDIALOG_START_69 = NC_("RID_AGENDAWIZARDDIALOG_START_69", "Remove")
|
||||
RID_AGENDAWIZARDDIALOG_START_70 = NC_("RID_AGENDAWIZARDDIALOG_START_70", "Move up")
|
||||
RID_AGENDAWIZARDDIALOG_START_71 = NC_("RID_AGENDAWIZARDDIALOG_START_71", "Move down")
|
||||
RID_AGENDAWIZARDDIALOG_START_72 = NC_("RID_AGENDAWIZARDDIALOG_START_72", "Date:")
|
||||
RID_AGENDAWIZARDDIALOG_START_73 = NC_("RID_AGENDAWIZARDDIALOG_START_73", "Time:")
|
||||
RID_AGENDAWIZARDDIALOG_START_74 = NC_("RID_AGENDAWIZARDDIALOG_START_74", "Location:")
|
||||
RID_AGENDAWIZARDDIALOG_START_75 = NC_("RID_AGENDAWIZARDDIALOG_START_75", "Topics")
|
||||
RID_AGENDAWIZARDDIALOG_START_76 = NC_("RID_AGENDAWIZARDDIALOG_START_76", "Num.")
|
||||
RID_AGENDAWIZARDDIALOG_START_77 = NC_("RID_AGENDAWIZARDDIALOG_START_77", "Topic")
|
||||
RID_AGENDAWIZARDDIALOG_START_78 = NC_("RID_AGENDAWIZARDDIALOG_START_78", "Responsible")
|
||||
RID_AGENDAWIZARDDIALOG_START_79 = NC_("RID_AGENDAWIZARDDIALOG_START_79", "Time")
|
||||
RID_AGENDAWIZARDDIALOG_START_80 = NC_("RID_AGENDAWIZARDDIALOG_START_80", "Additional information")
|
||||
RID_AGENDAWIZARDDIALOG_START_81 = NC_("RID_AGENDAWIZARDDIALOG_START_81", "Minutes for")
|
||||
RID_AGENDAWIZARDDIALOG_START_82 = NC_("RID_AGENDAWIZARDDIALOG_START_82", "Discussion:")
|
||||
RID_AGENDAWIZARDDIALOG_START_83 = NC_("RID_AGENDAWIZARDDIALOG_START_83", "Conclusion:")
|
||||
RID_AGENDAWIZARDDIALOG_START_84 = NC_("RID_AGENDAWIZARDDIALOG_START_84", "To do:")
|
||||
RID_AGENDAWIZARDDIALOG_START_85 = NC_("RID_AGENDAWIZARDDIALOG_START_85", "Responsible party:")
|
||||
RID_AGENDAWIZARDDIALOG_START_86 = NC_("RID_AGENDAWIZARDDIALOG_START_86", "Deadline:")
|
||||
RID_AGENDAWIZARDDIALOG_START_87 = NC_("RID_AGENDAWIZARDDIALOG_START_87", "Blue")
|
||||
RID_AGENDAWIZARDDIALOG_START_88 = NC_("RID_AGENDAWIZARDDIALOG_START_88", "Classic")
|
||||
RID_AGENDAWIZARDDIALOG_START_89 = NC_("RID_AGENDAWIZARDDIALOG_START_89", "Colorful")
|
||||
RID_AGENDAWIZARDDIALOG_START_90 = NC_("RID_AGENDAWIZARDDIALOG_START_90", "Elegant")
|
||||
RID_AGENDAWIZARDDIALOG_START_91 = NC_("RID_AGENDAWIZARDDIALOG_START_91", "Green")
|
||||
RID_AGENDAWIZARDDIALOG_START_92 = NC_("RID_AGENDAWIZARDDIALOG_START_92", "Grey")
|
||||
RID_AGENDAWIZARDDIALOG_START_93 = NC_("RID_AGENDAWIZARDDIALOG_START_93", "Modern")
|
||||
RID_AGENDAWIZARDDIALOG_START_94 = NC_("RID_AGENDAWIZARDDIALOG_START_94", "Orange")
|
||||
RID_AGENDAWIZARDDIALOG_START_95 = NC_("RID_AGENDAWIZARDDIALOG_START_95", "Red")
|
||||
RID_AGENDAWIZARDDIALOG_START_96 = NC_("RID_AGENDAWIZARDDIALOG_START_96", "Simple")
|
||||
|
||||
# vim: set shiftwidth=4 softtabstop=4 expandtab:
|
||||
Reference in New Issue
Block a user