diff options
Diffstat (limited to 'toolkit/src2xml')
-rw-r--r-- | toolkit/src2xml/README | 16 | ||||
-rw-r--r-- | toolkit/src2xml/dryrunall.sh | 2 | ||||
-rw-r--r-- | toolkit/src2xml/include-sc.lst | 8 | ||||
-rw-r--r-- | toolkit/src2xml/include-sd.lst | 6 | ||||
-rw-r--r-- | toolkit/src2xml/include-sw.lst | 5 | ||||
-rw-r--r-- | toolkit/src2xml/include.lst | 303 | ||||
-rw-r--r-- | toolkit/src2xml/sc.sh | 3 | ||||
-rw-r--r-- | toolkit/src2xml/sd.sh | 3 | ||||
-rw-r--r-- | toolkit/src2xml/source/boxer.py | 73 | ||||
-rw-r--r-- | toolkit/src2xml/source/expression.py | 111 | ||||
-rw-r--r-- | toolkit/src2xml/source/expression_test.py | 23 | ||||
-rw-r--r-- | toolkit/src2xml/source/globals.py | 115 | ||||
-rw-r--r-- | toolkit/src2xml/source/macroexpander_test.py | 71 | ||||
-rw-r--r-- | toolkit/src2xml/source/macroparser.py | 130 | ||||
-rw-r--r-- | toolkit/src2xml/source/macroparser_test.py | 20 | ||||
-rw-r--r-- | toolkit/src2xml/source/src2xml.py | 227 | ||||
-rw-r--r-- | toolkit/src2xml/source/srclexer.py | 488 | ||||
-rw-r--r-- | toolkit/src2xml/source/srcparser.py | 416 | ||||
-rw-r--r-- | toolkit/src2xml/src-sc.lst | 57 | ||||
-rw-r--r-- | toolkit/src2xml/src-sd.lst | 124 | ||||
-rw-r--r-- | toolkit/src2xml/src-sw.lst | 121 | ||||
-rw-r--r-- | toolkit/src2xml/src.lst | 696 | ||||
-rw-r--r-- | toolkit/src2xml/sw.sh | 3 |
23 files changed, 3021 insertions, 0 deletions
diff --git a/toolkit/src2xml/README b/toolkit/src2xml/README new file mode 100644 index 000000000000..ef30040f2133 --- /dev/null +++ b/toolkit/src2xml/README @@ -0,0 +1,16 @@ +SRC2XML: Convert OO.o resource to Layout XML. + +This directory contains a Python script to convert OO.o's existing dialog +resource files into XML layout files. + +The main executable file is located in ./source/src2xml.py. Run + + source/src2xml.py --help + +for more information. + +See also: source/dryrunall.sh and ../workben/run-s2x + + +Author: Kohei Yoshida <kyoshida@novell.com> +Modifications: Jan Nieuwenhuizen <jnieuwenhuizen@novell.com> diff --git a/toolkit/src2xml/dryrunall.sh b/toolkit/src2xml/dryrunall.sh new file mode 100644 index 000000000000..a2bd803cc7fb --- /dev/null +++ b/toolkit/src2xml/dryrunall.sh @@ -0,0 +1,2 @@ +#! /bin/bash +source/src2xml.py --dry-run --includes-from=include.lst $(cat src.lst) "$@" diff --git a/toolkit/src2xml/include-sc.lst b/toolkit/src2xml/include-sc.lst new file mode 100644 index 000000000000..7b821a2a8407 --- /dev/null +++ b/toolkit/src2xml/include-sc.lst @@ -0,0 +1,8 @@ +../../solver/680/unxlngi6.pro/inc +../../sc +../../sc/inc +../../sc/addin/inc +../../sc/source/ui/inc +../../sc/source/core/inc +../../sc/source/filter/inc +../../sc/unxlngi6.pro/inc diff --git a/toolkit/src2xml/include-sd.lst b/toolkit/src2xml/include-sd.lst new file mode 100644 index 000000000000..44b1f66a5ffc --- /dev/null +++ b/toolkit/src2xml/include-sd.lst @@ -0,0 +1,6 @@ +../../solver/680/unxlngi6.pro/inc +../../sd +../../sd/inc +../../sd/source/ui/inc +../../sd/source/ui/slidesorter/inc +../../sd/unxlngi6.pro/inc diff --git a/toolkit/src2xml/include-sw.lst b/toolkit/src2xml/include-sw.lst new file mode 100644 index 000000000000..44fa8951eecb --- /dev/null +++ b/toolkit/src2xml/include-sw.lst @@ -0,0 +1,5 @@ +../../solver/680/unxlngi6.pro/inc +../../sw/source/ui/inc +../../sw/source/core/inc +../../sw/source/filter/inc +../../sw/unxlngi6.pro/inc diff --git a/toolkit/src2xml/include.lst b/toolkit/src2xml/include.lst new file mode 100644 index 000000000000..d4be6f5e3517 --- /dev/null +++ b/toolkit/src2xml/include.lst @@ -0,0 +1,303 @@ +../../solver/680/unxlngi6.pro/inc +../../io/inc +../../io/unxlngi6.pro/inc +../../sc/inc +../../sc/addin/inc +../../sc/source/ui/inc +../../sc/source/core/inc +../../sc/source/filter/inc +../../sc/unxlngi6.pro/inc +../../sd/inc +../../sd/source/ui/inc +../../sd/source/ui/slidesorter/inc +../../sd/unxlngi6.pro/inc +../../sw/inc +../../sw/source/ui/inc +../../sw/source/core/inc +../../sw/source/filter/inc +../../sw/unxlngi6.pro/inc +../../xt/unxlngi6.pro/inc +../../agg/inc +../../icu/unxlngi6.pro/inc +../../idl/inc +../../idl/unxlngi6.pro/inc +../../nas/unxlngi6.pro/inc +../../odk/inc +../../sal/qa/inc +../../sal/inc +../../sal/unxlngi6.pro/inc +../../sax/unxlngi6.pro/inc +../../sch/inc +../../sch/source/ui/inc +../../sch/unxlngi6.pro/inc +../../sj2/inc +../../sj2/source/inc +../../sj2/unxlngi6.pro/inc +../../rsc/inc +../../rsc/unxlngi6.pro/inc +../../so3/inc +../../so3/unxlngi6.pro/inc +../../sot/inc +../../sot/unxlngi6.pro/inc +../../svx/inc +../../svx/source/inc +../../svx/source/unodialogs/inc +../../svx/unxlngi6.pro/inc +../../ucb/inc +../../ucb/source/inc +../../ucb/unxlngi6.pro/inc +../../udm/inc +../../udm/source/inc +../../vcl/inc +../../vcl/unx/inc +../../vcl/unx/source/inc +../../vcl/win/inc +../../vcl/aqua/inc +../../vcl/unxlngi6.pro/inc +../../ure/unxlngi6.pro/inc +../../uui/unxlngi6.pro/inc +../../vos/inc +../../vos/unxlngi6.pro/inc +../../dbaccess/inc +../../dbaccess/source/ui/inc +../../dbaccess/source/inc +../../dbaccess/source/core/inc +../../dbaccess/source/sdbtools/inc +../../dbaccess/unxlngi6.pro/inc +../../transex3/inc +../../transex3/unxlngi6.pro/inc +../../bean/unxlngi6.pro/inc +../../cosv/inc +../../cosv/source/inc +../../cppu/inc +../../cppu/unxlngi6.pro/inc +../../idlc/inc +../../idlc/unxlngi6.pro/inc +../../o3tl/inc +../../o3tl/unxlngi6.pro/inc +../../jurt/unxlngi6.pro/inc +../../sane/inc +../../scp2/inc +../../scp2/unxlngi6.pro/inc +../../sfx2/inc +../../sfx2/source/inc +../../sfx2/unxlngi6.pro/inc +../../stoc/inc +../../stoc/unxlngi6.pro/inc +../../framework/inc +../../framework/source/inc +../../framework/unxlngi6.pro/inc +../../desktop/inc +../../desktop/source/inc +../../desktop/source/deployment/inc +../../desktop/source/deployment/registry/inc +../../desktop/unxlngi6.pro/inc +../../external/unxlngi6.pro/inc +../../xml2cmp/source/inc +../../xml2cmp/unxlngi6.pro/inc +../../xmlhelp/inc +../../xmlhelp/unxlngi6.pro/inc +../../soltools/inc +../../soltools/testSHL/inc +../../soltools/unxlngi6.pro/inc +../../unixODBC/inc +../../basic/inc +../../basic/source/inc +../../basic/unxlngi6.pro/inc +../../boost/unxlngi6.pro/inc +../../XmlSearch/unxlngi6.pro/inc +../../fondu/unxlngi6.pro/inc +../../forms/inc +../../forms/source/inc +../../forms/source/solar/inc +../../forms/unxlngi6.pro/inc +../../ridljar/unxlngi6.pro/inc +../../offuh/unxlngi6.pro/inc +../../pyuno/inc +../../pyuno/unxlngi6.pro/inc +../../shell/inc +../../shell/unxlngi6.pro/inc +../../store/inc +../../store/unxlngi6.pro/inc +../../sysui/unxlngi6.pro/inc +../../tools/inc +../../tools/win/inc +../../tools/unxlngi6.pro/inc +../../twain/inc +../../unoil/unxlngi6.pro/inc +../../cppcanvas/inc +../../cppcanvas/source/inc +../../cppcanvas/unxlngi6.pro/inc +../../eventattacher/unxlngi6.pro/inc +../../unotools/inc +../../unotools/unxlngi6.pro/inc +../../scaddins/unxlngi6.pro/inc +../../javaunohelper/inc +../../javaunohelper/unxlngi6.pro/inc +../../configmgr/inc +../../configmgr/source/inc +../../configmgr/unxlngi6.pro/inc +../../hwpfilter/inc +../../hwpfilter/unxlngi6.pro/inc +../../libxmlsec/unxlngi6.pro/inc +../../jvmaccess/inc +../../jvmaccess/unxlngi6.pro/inc +../../comphelper/inc +../../comphelper/unxlngi6.pro/inc +../../helpcontent2/unxlngi6.pro/inc +../../animations/inc +../../animations/unxlngi6.pro/inc +../../fileaccess/unxlngi6.pro/inc +../../i18npool/inc +../../i18npool/unxlngi6.pro/inc +../../i18nutil/inc +../../i18nutil/unxlngi6.pro/inc +../../accessibility/inc +../../accessibility/unxlngi6.pro/inc +../../testshl2/inc +../../testshl2/source/inc +../../testshl2/unxlngi6.pro/inc +../../lpsolve/unxlngi6.pro/inc +../../setup_native/inc +../../setup_native/unxlngi6.pro/inc +../../embedserv/source/inc +../../psprint_config/unxlngi6.pro/inc +../../basctl/inc +../../basctl/source/inc +../../basctl/unxlngi6.pro/inc +../../cpputools/unxlngi6.pro/inc +../../stlport/unxlngi6.pro/inc +../../canvas/inc +../../canvas/unxlngi6.pro/inc +../../embeddedobj/inc +../../embeddedobj/source/inc +../../embeddedobj/unxlngi6.pro/inc +../../chart2/inc +../../chart2/source/inc +../../chart2/source/view/inc +../../chart2/source/model/inc +../../chart2/source/controller/inc +../../chart2/unxlngi6.pro/inc +../../scsolver/source/inc +../../scsolver/unxlngi6.pro/inc +../../automation/inc +../../automation/source/inc +../../automation/unxlngi6.pro/inc +../../portaudio/unxlngi6.pro/inc +../../svtools/inc +../../svtools/unx/inc +../../svtools/source/inc +../../svtools/unxlngi6.pro/inc +../../dtrans/inc +../../dtrans/source/inc +../../dtrans/unxlngi6.pro/inc +../../x11_extensions/inc +../../fpicker/inc +../../fpicker/unxlngi6.pro/inc +../../filter/inc +../../filter/unxlngi6.pro/inc +../../extras/unxlngi6.pro/inc +../../writerperfect/unxlngi6.pro/inc +../../toolkit/inc +../../toolkit/unxlngi6.pro/inc +../../officecfg/unxlngi6.pro/inc +../../unodevtools/inc +../../unodevtools/unxlngi6.pro/inc +../../cppuhelper/inc +../../cppuhelper/unxlngi6.pro/inc +../../jvmfwk/inc +../../jvmfwk/unxlngi6.pro/inc +../../layout/inc +../../layout/unxlngi6.pro/inc +../../linguistic/inc +../../linguistic/unxlngi6.pro/inc +../../libegg/inc +../../libegg/unxlngi6.pro/inc +../../libwpd/unxlngi6.pro/inc +../../libwpg/unxlngi6.pro/inc +../../libwps/unxlngi6.pro/inc +../../lingucomponent/inc +../../lingucomponent/unxlngi6.pro/inc +../../np_sdk/unxlngi6.pro/inc +../../offapi/unxlngi6.pro/inc +../../xmlsecurity/inc +../../xmlsecurity/unxlngi6.pro/inc +../../padmin/unxlngi6.pro/inc +../../goodies/inc +../../goodies/unxlngi6.pro/inc +../../regexp/inc +../../regexp/unxlngi6.pro/inc +../../ucbhelper/inc +../../ucbhelper/unxlngi6.pro/inc +../../berkeleydb/unxlngi6.pro/inc +../../UnoControls/inc +../../UnoControls/source/inc +../../UnoControls/unxlngi6.pro/inc +../../msfontextract/unxlngi6.pro/inc +../../solenv/inc +../../solenv/unxmacxp/inc +../../solver/680/unxlngi6.pro/inc +../../postprocess/unxlngi6.pro/inc +../../udkapi/unxlngi6.pro/inc +../../unoxml/unxlngi6.pro/inc +../../starmath/inc +../../starmath/unxlngi6.pro/inc +../../mdbtools/unxlngi6.pro/inc +../../basebmp/inc +../../basegfx/inc +../../basegfx/source/inc +../../basegfx/unxlngi6.pro/inc +../../xmerge/inc +../../xmerge/source/inc +../../xmerge/unxlngi6.pro/inc +../../xmloff/inc +../../xmloff/unxlngi6.pro/inc +../../oovbaapi/unxlngi6.pro/inc +../../package/inc +../../package/unxlngi6.pro/inc +../../extensions/inc +../../extensions/source/inc +../../extensions/source/plugin/inc +../../extensions/unxlngi6.pro/inc +../../codemaker/inc +../../codemaker/unxlngi6.pro/inc +../../salhelper/inc +../../salhelper/unxlngi6.pro/inc +../../rdbmaker/inc +../../rdbmaker/unxlngi6.pro/inc +../../instsetoo_native/unxlngi6.pro/inc +../../autodoc/inc +../../autodoc/source/ary/inc +../../autodoc/source/inc +../../autodoc/source/display/inc +../../autodoc/source/parser_i/inc +../../autodoc/source/parser/inc +../../avmedia/inc +../../avmedia/source/inc +../../avmedia/unxlngi6.pro/inc +../../lotuswordpro/unxlngi6.pro/inc +../../remotebridges/unxlngi6.pro/inc +../../slideshow/inc +../../slideshow/source/inc +../../slideshow/unxlngi6.pro/inc +../../connectivity/inc +../../connectivity/source/inc +../../connectivity/unxlngi6.pro/inc +../../readlicense_oo/unxlngi6.pro/inc +../../scripting/inc +../../scripting/source/inc +../../scripting/unxlngi6.pro/inc +../../wizards/unxlngi6.pro/inc +../../xmlscript/inc +../../xmlscript/source/inc +../../xmlscript/unxlngi6.pro/inc +../../bridges/inc +../../bridges/unxlngi6.pro/inc +../../testtools/inc +../../testtools/unxlngi6.pro/inc +../../registry/inc +../../registry/unxlngi6.pro/inc +../../cli_ure/inc +../../cli_ure/unxlngi6.pro/inc +../../psprint/inc +../../psprint/unxlngi6.pro/inc diff --git a/toolkit/src2xml/sc.sh b/toolkit/src2xml/sc.sh new file mode 100644 index 000000000000..1bfb213ccf12 --- /dev/null +++ b/toolkit/src2xml/sc.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +source/src2xml.py --include-path=$(tr '\n' ':' < include-sc.lst) --dry-run $(cat src-sc.lst) "$@" diff --git a/toolkit/src2xml/sd.sh b/toolkit/src2xml/sd.sh new file mode 100644 index 000000000000..78b47201fc00 --- /dev/null +++ b/toolkit/src2xml/sd.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +source/src2xml.py --include-path=$(tr '\n' ':' < include-sd.lst) --dry-run $(cat src-sd.lst) "$@" diff --git a/toolkit/src2xml/source/boxer.py b/toolkit/src2xml/source/boxer.py new file mode 100644 index 000000000000..1b716d757299 --- /dev/null +++ b/toolkit/src2xml/source/boxer.py @@ -0,0 +1,73 @@ + +from globals import * + + +class DlgLayoutBuilder(object): + def __init__ (self, dlgnode): + self.dlgnode = dlgnode + self.rows = {} + + def addWidget (self, elem): + x, y = int(elem.getAttr('x')), int(elem.getAttr('y')) + self.rows[y] = self.rows.get (y, {}) + while self.rows[y].has_key(x): + y += 1 + self.rows[y] = self.rows.get (y, {}) + self.rows[y][x] = elem + + def build (self): + root = Element('vbox') + ys = self.rows.keys() + ys.sort() + for y in ys: + xs = self.rows[y].keys() + xs.sort() + + if len(xs) == 1: + root.appendChild(self.rows[y][xs[0]]) + continue + + hbox = Element('hbox') + root.appendChild(hbox) + for x in xs: + elem = self.rows[y][x] + hbox.appendChild(elem) + + return root + + +class Boxer(object): + def __init__ (self, root): + self.root = root + + def layout (self): + + newroot = RootNode() + for dlgnode in self.root.children: + newdlgnode = self.__walkDlgNode(dlgnode) + newroot.children.append(newdlgnode) + + return newroot + + def __walkDlgNode (self, dlgnode): + + newnode = Element(dlgnode.name) + newnode.clone(dlgnode) + if dlgnode.name == 'string': + return newnode + newnode.setAttr("xmlns", "http://openoffice.org/2007/layout") + newnode.setAttr("xmlns:cnt", "http://openoffice.org/2007/layout/container") + mx = DlgLayoutBuilder(newnode) + + # Each dialog node is expected to have a flat list of widgets. + for widget in dlgnode.children: + if widget.hasAttr('x') and widget.hasAttr('y'): + mx.addWidget(widget) + else: + newnode.appendChild(widget) + + vbox = mx.build() + if len(vbox.children) > 0: + newnode.appendChild(vbox) + + return newnode diff --git a/toolkit/src2xml/source/expression.py b/toolkit/src2xml/source/expression.py new file mode 100644 index 000000000000..b5f58c42d112 --- /dev/null +++ b/toolkit/src2xml/source/expression.py @@ -0,0 +1,111 @@ + +import sys +import globals + +def toString (node): + + if node == None: + return '' + + chars = '(' + + if type(node.left) == type(0): + chars += "%d"%node.left + else: + chars += toString(node.left) + + chars += node.op + + if type(node.right) == type(0): + chars += "%d"%node.right + else: + chars += toString(node.right) + + chars += ")" + + return chars + +class Node(object): + def __init__ (self): + self.left = None + self.right = None + self.parent = None + self.op = None + +class ExpParser(object): + + def __init__ (self, tokens): + self.tokens = tokens + + def jumpToRoot (self): + while self.ptr.parent != None: + self.ptr = self.ptr.parent + + def build (self): + self.ptr = Node() + + for token in self.tokens: + + if token in '+-': + if self.ptr.left == None: + raise globals.ParseError ('') + if self.ptr.right == None: + self.ptr.op = token + else: + self.jumpToRoot() + self.ptr.parent = Node() + self.ptr.parent.left = self.ptr + self.ptr = self.ptr.parent + self.ptr.op = token + + elif token in '*/': + if self.ptr.left == None: + raise globals.ParseError ('') + elif self.ptr.right == None: + self.ptr.op = token + else: + num = self.ptr.right + self.ptr.right = Node() + self.ptr.right.parent = self.ptr + self.ptr.right.left = num + self.ptr.right.op = token + self.ptr = self.ptr.right + + elif token == '(': + if self.ptr.left == None: + self.ptr.left = Node() + self.ptr.left.parent = self.ptr + self.ptr = self.ptr.left + elif self.ptr.right == None: + self.ptr.right = Node() + self.ptr.right.parent = self.ptr + self.ptr = self.ptr.right + else: + raise globals.ParseError ('') + + elif token == ')': + if self.ptr.left == None: + raise globals.ParseError ('') + elif self.ptr.right == None: + raise globals.ParseError ('') + elif self.ptr.parent == None: + pass + else: + self.ptr = self.ptr.parent + + else: + num = int(token) + if self.ptr.left == None: + self.ptr.left = num + elif self.ptr.right == None: + self.ptr.right = num + else: + raise globals.ParseError ('') + + def dumpTree (self): + self.jumpToRoot() + print toString(self.ptr) + + + + diff --git a/toolkit/src2xml/source/expression_test.py b/toolkit/src2xml/source/expression_test.py new file mode 100644 index 000000000000..7e7393fb2fba --- /dev/null +++ b/toolkit/src2xml/source/expression_test.py @@ -0,0 +1,23 @@ +#!/usr/bin/env python + +import sys +import expression + +def run (exp): + tokens = exp.split() + expparser = expression.ExpParser(tokens) + expparser.build() + expparser.dumpTree() + +def main (): + run("6 + 34") + run("6 + 34 - 10") + run("6 + 34 - 10 + 200") + run("6 + 34 - 10 * 200") + run("6 + 34 - 10 * 200 + 18") + run("6 + 34 - 10 * 200 + 18 / 2") + + run("6 * ( ( 10 + 2 ) - 10 ) * 33") + +if __name__ == '__main__': + main() diff --git a/toolkit/src2xml/source/globals.py b/toolkit/src2xml/source/globals.py new file mode 100644 index 000000000000..5e170b8c2a6e --- /dev/null +++ b/toolkit/src2xml/source/globals.py @@ -0,0 +1,115 @@ +import sys + +class ParseError (Exception): + pass + +def error (msg, exit=0): + sys.stderr.write (msg) + if exit: + sys.exit (exit) + +def progress (msg): + sys.stderr.write(msg) + + +def removeQuote (text): + """Remove quotes from a literal. +""" + if len(text) >= 2 and text[0] == text[len(text)-1] == '"': + text = text[1:-1] + return text + + +class Macro(object): + def __init__ (self, name): + self.name = name + self.tokens = [] + self.vars = {} + + +class Node(object): + def __init__ (self): + self.children = [] + + def appendChild (self, childnode): + self.children.append(childnode) + childnode.parent = self + + def getChildren (self): + return self.children + + +class RootNode(Node): + def __init__ (self): + Node.__init__(self) + + def dump (self): + chars = '' + for child in self.getChildren(): + chars += child.dump() + return chars + + +class Element(Node): + + INDENT = " " + + def __init__ (self, name, rid = None): + Node.__init__(self) + self.name = name + self.parent = None +# print "name: " + self.name - stats ... + + # The following attributes are copied when 'clone'ed. + self.rid = rid + self.attrs = {} + + def dump (self, level = 0): + chars = '' + chars += "\n" + Element.INDENT*level + chars += '<%s'%self.name + + if self.rid != None: + self.setAttr("rid", self.rid) + + chars += self.__dumpAttrs() + + if len(self.children) == 0: + chars += '/>' + else: + chars += '>' + for child in self.getChildren(): + chars += child.dump(level+1) + + chars += "\n"+Element.INDENT*level + chars += "</%s>"%self.name + + return chars + + def hasAttr (self, name): + return self.attrs.has_key(name) + + def getAttr (self, name): + return self.attrs[name] + + def setAttr (self, name, value): + if type(value) == type(0): + value = "%d"%value + self.attrs[name] = removeQuote(value) +# print "attr: " + self.name + "." + name - stats ... + return + + def clone (self, elem): + keys = elem.attrs.keys() + for key in keys: + self.attrs[key] = elem.attrs[key] + self.rid = elem.rid + + def __dumpAttrs (self): + text = '' + keys = self.attrs.keys() + keys.sort() + for key in keys: + value = self.attrs[key] + text += ' %s="%s"'%(key, value) + return text diff --git a/toolkit/src2xml/source/macroexpander_test.py b/toolkit/src2xml/source/macroexpander_test.py new file mode 100644 index 000000000000..823bcdb36bc2 --- /dev/null +++ b/toolkit/src2xml/source/macroexpander_test.py @@ -0,0 +1,71 @@ +#!/usr/bin/env python + +import srclexer, srcparser, globals + +class TestCase: + + @staticmethod + def run (tokens, defines): + mcExpander = srcparser.MacroExpander(tokens, defines) + mcExpander.debug = True + mcExpander.expand() + tokens = mcExpander.getTokens() + print tokens + + @staticmethod + def simpleNoArgs (): + tokens = ['FUNC_FOO', '(', 'left', ',', 'right', ')'] + defines = {} + macro = globals.Macro('FUNC_FOO') + macro.tokens = ['Here', 'comes', 'X', 'and', 'Y'] + defines['FUNC_FOO'] = macro + TestCase.run(tokens, defines) + + @staticmethod + def simpleArgs (): + tokens = ['FUNC_FOO', '(', 'left', ',', 'right', ')'] + defines = {} + macro = globals.Macro('FUNC_FOO') + macro.tokens = ['Here', 'comes', 'X', 'and', 'Y'] + macro.vars['X'] = 0 + macro.vars['Y'] = 1 + defines['FUNC_FOO'] = macro + TestCase.run(tokens, defines) + + @staticmethod + def multiTokenArgs (): + tokens = ['FUNC_FOO', '(', 'left1', 'left2', 'left3', ',', 'right', ')'] + defines = {} + macro = globals.Macro('FUNC_FOO') + macro.tokens = ['Here', 'comes', 'X', 'and', 'Y'] + macro.vars['X'] = 0 + macro.vars['Y'] = 1 + defines['FUNC_FOO'] = macro + TestCase.run(tokens, defines) + + @staticmethod + def nestedTokenArgs (): + tokens = ['FUNC_BAA', '(', 'left', ',', 'right', ')'] + defines = {} + macro = globals.Macro('FUNC_FOO') + macro.tokens = ['Here', 'comes', 'X', 'and', 'Y'] + macro.vars['X'] = 0 + macro.vars['Y'] = 1 + defines['FUNC_FOO'] = macro + macro = globals.Macro('FUNC_BAA') + macro.tokens = ['FUNC_FOO'] + defines['FUNC_BAA'] = macro + TestCase.run(tokens, defines) + +def main (): + print "simple expansion with no arguments" + TestCase.simpleNoArgs() + print "simple argument expansion" + TestCase.simpleArgs() + print "multi-token argument expansion" + TestCase.multiTokenArgs() + print "nested argument expansion" + TestCase.nestedTokenArgs() + +if __name__ == '__main__': + main() diff --git a/toolkit/src2xml/source/macroparser.py b/toolkit/src2xml/source/macroparser.py new file mode 100644 index 000000000000..1a221b404d42 --- /dev/null +++ b/toolkit/src2xml/source/macroparser.py @@ -0,0 +1,130 @@ + +import sys +from globals import * +import srclexer + +class MacroParser(object): + + def __init__ (self, buf): + self.buffer = buf + self.macro = None + self.debug = False + + def parse (self): + """ +A macro with arguments must have its open paren immediately following +its name without any whitespace. +""" + if self.debug: + print "-"*68 + print "parsing '%s'"%self.buffer + + i = 0 + bufSize = len(self.buffer) + name, buf = '', '' + while i < bufSize: + c = self.buffer[i] + if c in [' ', "\t"] and len(name) == 0: + # This is a simple macro with no arguments. + name = buf + vars = [] + content = self.buffer[i:] + self.setMacro(name, vars, content) + return + elif c == '(' and len(name) == 0: + # This one has arguments. + name = buf + buf = self.buffer[i:] + vars, content = self.parseArgs(buf) + self.setMacro(name, vars, content) + return + else: + buf += c + i += 1 + + def parseArgs (self, buffer): + """Parse arguments. + +The buffer is expected to be formatted like '(a, b, c)' where the first +character is the open paren. +""" + scope = 0 + buf = '' + vars = [] + content = '' + bufSize = len(buffer) + i = 0 + while i < bufSize: + c = buffer[i] + if c == '(': + scope += 1 + elif c == ')': + scope -= 1 + if len(buf) > 0: + vars.append(buf) + if scope == 0: + break + elif c == ',': + if len(buf) == 0: + raise globals.ParseError ('') + vars.append(buf) + buf = '' + elif c in " \t" and scope > 0: + pass + else: + buf += c + + i += 1 + + if scope > 0: + raise globals.ParseError ('') + + return vars, buffer[i+1:] + + + def setMacro (self, name, vars, content): + if self.debug: + print "-"*68 + print "name: %s"%name + for var in vars: + print "var: %s"%var + if len(vars) == 0: + print "no vars" + print "content: '%s'"%content + + if len(content) > 0: + self.macro = Macro(name) + for i in xrange(0, len(vars)): + self.macro.vars[vars[i]] = i + + # tokinize it using lexer. + mclexer = srclexer.SrcLexer(content) + mclexer.expandHeaders = False + mclexer.inMacroDefine = True + mclexer.tokenize() + self.macro.tokens = mclexer.getTokens() + if self.debug: + print self.macro.tokens + + if not self.isValidMacro(self.macro): + self.macro = None + + if self.debug: + if self.macro != None: + print "macro registered!" + else: + print "macro not registered" + + def isValidMacro (self, macro): + + n = len(macro.tokens) + if n == 0: + return False + elif len(macro.name) > 4 and macro.name[1:4] == 'ID_': + # We don't want to expand macros like HID_, SID_, WID_, etc. + return False + return True + + + def getMacro (self): + return self.macro diff --git a/toolkit/src2xml/source/macroparser_test.py b/toolkit/src2xml/source/macroparser_test.py new file mode 100644 index 000000000000..a7064832d1f8 --- /dev/null +++ b/toolkit/src2xml/source/macroparser_test.py @@ -0,0 +1,20 @@ +#!/usr/bin/env python + +import macroparser + +def runParser (buf): + mparser = macroparser.MacroParser(buf) + mparser.debug = True + mparser.parse() + +def main (): + buf = 'FOO (asdfsdaf)' + runParser(buf) + buf = 'FOO (x, y) (x) + (y)' + runParser(buf) + buf = 'FOO(x, y) (x) + (y)' + runParser(buf) + + +if __name__ == '__main__': + main() diff --git a/toolkit/src2xml/source/src2xml.py b/toolkit/src2xml/source/src2xml.py new file mode 100644 index 000000000000..b03c5e61ede1 --- /dev/null +++ b/toolkit/src2xml/source/src2xml.py @@ -0,0 +1,227 @@ +#!/usr/bin/env python + +import getopt +import os +import re +import sys +# +from srclexer import SrcLexer +from srcparser import SrcParser +from boxer import Boxer +# FIXME +from globals import * + +def option_parser (): + import optparse + p = optparse.OptionParser () + + p.usage = '''src2xml.py [OPTION]... SRC-FILE...''' + + examples = ''' +Examples: + src2xml.py --output-dir=. --post-process --ignore-includes zoom.src + src2xml.py --dry-run -I svx/inc -I svx/source/dialog zoom.src +''' + + def format_examples (self): + return examples + + if 'epilog' in p.__dict__: + p.formatter.format_epilog = format_examples + p.epilog = examples + else: + p.formatter.format_description = format_examples + p.description = examples + + p.description = '''OOo SRC To Layout XML Converter. + +Convert OO.o's existing dialog resource files into XML layout files. +''' + + p.add_option ('-l', '--debug-lexer', action='store_true', + dest='debug_lexer', default=False, + help='debug lexer') + + p.add_option ('-p', '--debug-parser', action='store_true', + dest='debug_parser', default=False, + help='debug parser') + + p.add_option ('-m', '--debug-macro', action='store_true', + dest='debug_macro', default=False, + help='debug macro') + + p.add_option ('-n', '--dry-run', action='store_true', + dest='dry_run', default=False, + help='dry run') + + p.add_option ('-k', '--keep-going', action='store_true', + dest='keep_going', default=False, + help='continue after error') + + p.add_option ('-i', '--ignore-includes', action='store_true', + dest='ignore_includes', default=False, + help='ignore #include directives') + + p.add_option ('-I', '--include-dir', action='append', + dest='include_path', + default=[], + metavar='DIR', + help='append DIR to include path') + + def from_file (option, opt_str, value, parser): + lst = getattr (parser.values, option.dest) + lst += file (value).read ().split ('\n') + setattr (parser.values, option.dest, lst) + + def from_path (option, opt_str, value, parser): + lst = getattr (parser.values, option.dest) + lst += value.split (':') + setattr (parser.values, option.dest, lst) + + # Junk me? + p.add_option ('--includes-from-file', action='callback', callback=from_file, + dest='include_path', + default=[], + type='string', + metavar='FILE', + help='append directory list from FILE to include path') + + p.add_option ('--include-path', action='callback', callback=from_path, + dest='include_path', + type='string', + default=[], + metavar='PATH', + help='append PATH to include path') + + p.add_option ('--only-expand-macros', action='store_true', + dest='only_expand_macros', default=False, + help='FIXME: better to say what NOT to expand?') + + p.add_option ('-o', '--output-dir', action='store', + dest='output_dir', default=None, + metavar='DIR', + help='Output to DIR') + + p.add_option ('-s', '--post-process', action='store_true', + dest='post_process', default=False, + help='post process output for use in Layout') + + p.add_option ('--stop-on-header', action='store_true', + dest='stopOnHeader', default=False, + help='FIXME: remove this?') + + return p + + +def convert (file_name, options): + progress ("parsing %(file_name)s ..." % locals ()) + fullpath = os.path.abspath(file_name) + if not os.path.isfile(fullpath): + error("no such file", exit=True) + + ##options.include_path.append (os.path.dirname (fullpath)) + + input = file (fullpath, 'r').read() + lexer = SrcLexer(input, fullpath) + lexer.expandHeaders = not options.ignore_includes + lexer.includeDirs = options.include_path + lexer.stopOnHeader = options.stopOnHeader + lexer.debugMacro = options.debug_macro + if options.debug_lexer: + lexer.debug = True + lexer.tokenize() + progress ("-"*68 + "\n") + progress ("** token dump\n") + lexer.dumpTokens() + progress ("** end of token dump\n") + return + + # Tokenize it using lexer + lexer.tokenize() + + parser = SrcParser(lexer.getTokens(), lexer.getDefines()) + parser.only_expand_macros = options.only_expand_macros + if options.debug_parser: + parser.debug = True + root = parser.parse() + s = root.dump() + return s + + # Parse the tokens. + root = parser.parse() + + # Box it, and return the XML tree. + root = Boxer(root).layout() + output = root.dump() + if not options.dry_run: + progress ("\n") + return output + +def dry_one_file (file_name, options): + try: + str = convert(file_name, options) + progress (" SUCCESS\n") + except Exception, e: + if options.keep_going: + progress (" FAILED\n") + else: + import traceback + print traceback.format_exc (None) + raise e + +def post_process (s): + """Make output directly usable by layout module.""" + s = re.sub ('(</?)([a-z]+)-([a-z]+)-([a-z]+)', r'\1\2\3\4', s) + s = re.sub ('(</?)([a-z]+)-([a-z]+)', r'\1\2\3', s) + s = re.sub ('(<(checkbox|(cancel|help|ignore|ok|push|more|no|radio|reset|retry|yes)button|(fixed(info|text)))[^>]*) text=', r'\1 label=', s) + s = re.sub (' (height|width|x|y)="[0-9]*"', '', s) + s = re.sub (' (label|text|title)="', r' _\1="', s) + s = re.sub ('&([^m][^p]*[^;]*)', r'&\1', s) + s = re.sub (' hide="(TRUE|true|1)"', ' show="false"', s) + + s = s.replace ('<modaldialog', '<modaldialog sizeable="true"') + s = s.replace (' rid=', ' id=') + s = s.replace (' border="true"', ' has_border="true"') + s = s.replace (' def-button="true"', ' defbutton="true"') + s = s.replace (' drop-down="', ' dropdown="') + s = s.replace (' tab-stop="', ' tabstop="') + return s + +XML_HEADER = '''<?xml version="1.0" encoding="UTF-8"?> +<!-- This is a template. i18n translation is not performed in-place; + i18n translated XML files are generated from this template by + transex3/layout/tralay. !--> +''' + +def do_one_file (file_name, options): + str = XML_HEADER + str += convert(file_name, options) + str += '\n' + + if options.post_process: + str = post_process (str) + h = sys.stdout + if options.output_dir: + base = os.path.basename (file_name) + root, ext = os.path.splitext (base) + out_name = options.output_dir + '/' + root + '.xml' + progress ("writing %(out_name)s ..." % locals ()) + h = file (out_name, 'w') + h.write (str) + h.flush () + progress ("\n") + +def main (): + p = option_parser () + (options, files) = option_parser ().parse_args () + if not files: + p.error ("no input files") + + for f in files: + if options.dry_run: + dry_one_file (f, options) + else: + do_one_file (f, options) + +if __name__ == '__main__': + main () diff --git a/toolkit/src2xml/source/srclexer.py b/toolkit/src2xml/source/srclexer.py new file mode 100644 index 000000000000..5a5a3319b0d1 --- /dev/null +++ b/toolkit/src2xml/source/srclexer.py @@ -0,0 +1,488 @@ +import sys, os.path +from globals import * +import macroparser + +class EOF(Exception): + def __init__ (self): + pass + + def str (self): + return "end of file" + +class BOF(Exception): + def __init__ (self): + pass + + def str (self): + return "beginning of file" + + +def removeHeaderQuotes (orig): + if len(orig) <= 2: + return orig + elif orig[0] == orig[-1] == '"': + return orig[1:-1] + elif orig[0] == '<' and orig[-1] == '>': + return orig[1:-1] + + return orig + + +def dumpTokens (tokens, toError=False): + + scope = 0 + indent = " " + line = '' + chars = '' + + for token in tokens: + if token in '{<': + if len(line) > 0: + chars += indent*scope + line + "\n" + line = '' + chars += indent*scope + token + "\n" + scope += 1 + + elif token in '}>': + if len(line) > 0: + chars += indent*scope + line + "\n" + line = '' + scope -= 1 + chars += indent*scope + token + + elif token == ';': + if len(line) > 0: + chars += indent*scope + line + ";\n" + line = '' + else: + chars += ";\n" + elif len(token) > 0: + line += token + ' ' + + if len(line) > 0: + chars += line + chars += "\n" + if toError: + sys.stderr.write(chars) + else: + sys.stdout.write(chars) + + +class HeaderData(object): + def __init__ (self): + self.defines = {} + self.tokens = [] + + +class SrcLexer(object): + """Lexicographical analyzer for .src format. + +The role of a lexer is to parse the source file and break it into +appropriate tokens. Such tokens are later passed to a parser to +build the syntax tree. +""" + headerCache = {} + + VISIBLE = 0 + INVISIBLE_PRE = 1 + INVISIBLE_POST = 2 + + def __init__ (self, chars, filepath = None): + self.filepath = filepath + self.parentLexer = None + self.chars = chars + self.bufsize = len(self.chars) + + # TODO: use parameters for this + # Properties that can be copied. + self.headerDict = dict () + self.debug = False + self.debugMacro = False + self.includeDirs = list () + self.expandHeaders = True + self.inMacroDefine = False + self.stopOnHeader = False + + def copyProperties (self, other): + """Copy properties from another instance of SrcLexer.""" + + # TODO: use parameters for this + self.headerDict = other.headerDict + self.debug = other.debug + self.debugMacro = other.debugMacro + self.includeDirs = other.includeDirs[:] + self.expandHeaders = other.expandHeaders + self.inMacroDefine = other.inMacroDefine + self.stopOnHeader = other.stopOnHeader + + def init (self): + self.firstNonBlank = '' + self.token = '' + self.tokens = [] + self.defines = {} + self.visibilityStack = [] + + def getTokens (self): + return self.tokens + + def getDefines (self): + return self.defines + + def nextPos (self, i): + while True: + i += 1 + try: + c = self.chars[i] + except IndexError: + raise EOF + + if ord(c) in [0x0D]: + continue + break + return i + + def prevPos (self, i): + while True: + i -= 1 + try: + c = self.chars[i] + except IndexError: + raise BOF + + if ord(c) in [0x0D]: + continue + break + return i + + def isCodeVisible (self): + if len(self.visibilityStack) == 0: + return True + for item in self.visibilityStack: + if item != SrcLexer.VISIBLE: + return False + return True + + def tokenize (self): + self.init() + + i = 0 + while True: + c = self.chars[i] + + if self.firstNonBlank == '' and not c in [' ', "\n", "\t"]: + # Store the first non-blank in a line. + self.firstNonBlank = c + elif c == "\n": + self.firstNonBlank = '' + + if c == '#': + i = self.pound(i) + elif c == '/': + i = self.slash(i) + elif c == "\n": + i = self.lineBreak(i) + elif c == '"': + i = self.doubleQuote(i) + elif c in [' ', "\t"]: + i = self.blank(i) + elif c in ";()[]{}<>,=+-*": + # Any outstanding single-character token. + i = self.anyToken(i, c) + elif self.isCodeVisible(): + self.token += c + + try: + i = self.nextPos(i) + except EOF: + break + + if len(self.token): + self.tokens.append(self.token) + + if not self.parentLexer and self.debug: + progress ("-"*68 + "\n") + progress ("All defines found in this translation unit:\n") + keys = self.defines.keys() + keys.sort() + for key in keys: + progress ("@ %s\n"%key) + + def dumpTokens (self, toError=False): + dumpTokens(self.tokens, toError) + + + def maybeAddToken (self): + if len(self.token) > 0: + self.tokens.append(self.token) + self.token = '' + + + #-------------------------------------------------------------------- + # character handlers + + def blank (self, i): + if not self.isCodeVisible(): + return i + + self.maybeAddToken() + return i + + + def pound (self, i): + + if self.inMacroDefine: + return i + + if not self.firstNonBlank == '#': + return i + + self.maybeAddToken() + # We are in preprocessing mode. + + # Get the macro command name '#<command> .....' + + command, define, buf = '', '', '' + firstNonBlank = False + while True: + try: + i = self.nextPos(i) + c = self.chars[i] + if c == '\\' and self.chars[self.nextPos(i)] == "\n": + i = self.nextPos(i) + continue + except EOF: + break + + if c == "\n": + if len(buf) > 0 and len(command) == 0: + command = buf + i = self.prevPos(i) + break + elif c in [' ', "\t"]: + if not firstNonBlank: + # Ignore any leading blanks after the '#'. + continue + + if len(command) == 0: + command = buf + buf = '' + else: + buf += ' ' + elif c == '(': + if len(buf) > 0 and len(command) == 0: + command = buf + buf += c + else: + if not firstNonBlank: + firstNonBlank = True + buf += c + + if command == 'define': + self.handleMacroDefine(buf) + elif command == 'include': + self.handleMacroInclude(buf) + elif command == 'ifdef': + defineName = buf.strip() + if self.defines.has_key(defineName): + self.visibilityStack.append(SrcLexer.VISIBLE) + else: + self.visibilityStack.append(SrcLexer.INVISIBLE_PRE) + + elif command == 'ifndef': + defineName = buf.strip() + if self.defines.has_key(defineName): + self.visibilityStack.append(SrcLexer.INVISIBLE_PRE) + else: + self.visibilityStack.append(SrcLexer.VISIBLE) + + elif command == 'if': + if self.evalCodeVisibility(buf): + self.visibilityStack.append(SrcLexer.VISIBLE) + else: + self.visibilityStack.append(SrcLexer.INVISIBLE_PRE) + + elif command == 'elif': + if len(self.visibilityStack) == 0: + raise ParseError ('') + + if self.visibilityStack[-1] == SrcLexer.VISIBLE: + self.visibilityStack[-1] = SrcLexer.INVISIBLE_POST + elif self.visibilityStack[-1] == SrcLexer.INVISIBLE_PRE: + # Evaluate only if the current visibility is false. + if self.evalCodeVisibility(buf): + self.visibilityStack[-1] = SrcLexer.VISIBLE + + elif command == 'else': + if len(self.visibilityStack) == 0: + raise ParseError ('') + + if self.visibilityStack[-1] == SrcLexer.VISIBLE: + self.visibilityStack[-1] = SrcLexer.INVISIBLE_POST + if self.visibilityStack[-1] == SrcLexer.INVISIBLE_PRE: + self.visibilityStack[-1] = SrcLexer.VISIBLE + + elif command == 'endif': + if len(self.visibilityStack) == 0: + raise ParseError ('') + self.visibilityStack.pop() + + elif command == 'undef': + pass + elif command in ['error', 'pragma']: + pass + else: + print "'%s' '%s'"%(command, buf) + print self.filepath + sys.exit(0) + + return i + + + def evalCodeVisibility (self, buf): + try: + return eval(buf) + except: + return True + + def handleMacroDefine (self, buf): + + mparser = macroparser.MacroParser(buf) + mparser.debug = self.debugMacro + mparser.parse() + macro = mparser.getMacro() + if macro: + self.defines[macro.name] = macro + + def handleMacroInclude (self, buf): + + # Strip excess string if any. + pos = buf.find(' ') + if pos >= 0: + buf = buf[:pos] + headerSub = removeHeaderQuotes(buf) + + if not self.expandHeaders: + # We don't want to expand headers. Bail out. + if self.debug: + progress ("%s ignored\n"%headerSub) + return + + defines = {} + headerPath = None + for includeDir in self.includeDirs: + hpath = includeDir + '/' + headerSub + if os.path.isfile(hpath) and hpath != self.filepath: + headerPath = hpath + break + + if not headerPath: + error("included header file " + headerSub + " not found\n", self.stopOnHeader) + return + + if self.debug: + progress ("%s found\n"%headerPath) + + if headerPath in self.headerDict: + if self.debug: + progress ("%s already included\n"%headerPath) + return + + if SrcLexer.headerCache.has_key(headerPath): + if self.debug: + progress ("%s in cache\n"%headerPath) + for key in SrcLexer.headerCache[headerPath].defines.keys(): + self.defines[key] = SrcLexer.headerCache[headerPath].defines[key] + return + + chars = open(headerPath, 'r').read() + mclexer = SrcLexer(chars, headerPath) + mclexer.copyProperties(self) + mclexer.parentLexer = self + mclexer.tokenize() + hdrData = HeaderData() + hdrData.tokens = mclexer.getTokens() + headerDefines = mclexer.getDefines() + for key in headerDefines.keys(): + defines[key] = headerDefines[key] + hdrData.defines[key] = headerDefines[key] + + self.headerDict[headerPath] = True + SrcLexer.headerCache[headerPath] = hdrData + + # Update the list of headers that have already been expaneded. + for key in mclexer.headerDict.keys(): + self.headerDict[key] = True + + if self.debug: + progress ("defines found in header %s:\n"%headerSub) + for key in defines.keys(): + progress (" '%s'\n"%key) + + for key in defines.keys(): + self.defines[key] = defines[key] + + + def slash (self, i): + if not self.isCodeVisible(): + return i + + if i < self.bufsize - 1 and self.chars[i+1] == '/': + # Parse line comment. + line = '' + i += 2 + while i < self.bufsize: + c = self.chars[i] + if ord(c) in [0x0A, 0x0D]: + return i - 1 + line += c + i += 1 + self.token = '' + elif i < self.bufsize - 1 and self.chars[i+1] == '*': + comment = '' + i += 2 + while i < self.bufsize: + c = self.chars[i] + if c == '/' and self.chars[i-1] == '*': + return i + comment += c + i += 1 + else: + return self.anyToken(i, '/') + + return i + + + def lineBreak (self, i): + if not self.isCodeVisible(): + return i + + self.maybeAddToken() + + return i + + + def doubleQuote (self, i): + if not self.isCodeVisible(): + return i + + literal = '' + i += 1 + while i < self.bufsize: + c = self.chars[i] + if c == '"': + self.tokens.append('"'+literal+'"') + break + literal += c + i += 1 + + return i + + + def anyToken (self, i, token): + if not self.isCodeVisible(): + return i + + self.maybeAddToken() + self.token = token + self.maybeAddToken() + return i diff --git a/toolkit/src2xml/source/srcparser.py b/toolkit/src2xml/source/srcparser.py new file mode 100644 index 000000000000..b25d39ecb66e --- /dev/null +++ b/toolkit/src2xml/source/srcparser.py @@ -0,0 +1,416 @@ +import sys +from globals import * +import srclexer + +# simple name translation map +postTransMap = {"ok-button": "okbutton", + "cancel-button": "cancelbutton", + "help-button": "helpbutton"} + +def transName (name): + """Translate a mixed-casing name to dash-separated name. + +Translate a mixed-casing name (e.g. MyLongName) to a dash-separated name +(e.g. my-long-name). +""" + def isUpper (c): + return c >= 'A' and c <= 'Z' + + newname = '' + parts = [] + buf = '' + for c in name: + if isUpper(c) and len(buf) > 1: + parts.append(buf) + buf = c + else: + buf += c + + if len(buf) > 0: + parts.append(buf) + + first = True + for part in parts: + if first: + first = False + else: + newname += '-' + newname += part.lower() + + # special-case mapping ... + if 0: #postTransMap.has_key(newname): + newname = postTransMap[newname] + + return newname + + +def transValue (value): + """Translate certain values. + +Examples of translated values include TRUE -> true, FALSE -> false. +""" + if value.lower() in ["true", "false"]: + value = value.lower() + return value + + +def renameAttribute (name, elemName): + + # TODO: all manner of evil special cases ... + if elemName == 'metric-field' and name == 'spin-size': + return 'step-size' + + return name + + +class Statement(object): + """Container to hold information for a single statement. + +Each statement consists of the left-hand-side token(s), and right-hand-side +tokens, separated by a '=' token. This class stores the information on the +left-hand-side tokens. +""" + def __init__ (self): + self.leftTokens = [] + self.leftScope = None + + +class MacroExpander(object): + def __init__ (self, tokens, defines): + self.tokens = tokens + self.defines = defines + + def expand (self): + self.pos = 0 + while self.pos < len(self.tokens): + self.expandToken() + + def expandToken (self): + token = self.tokens[self.pos] + if not self.defines.has_key(token): + self.pos += 1 + return + + macro = self.defines[token] + nvars = len(macro.vars.keys()) + if nvars == 0: + # Simple expansion + self.tokens[self.pos:self.pos+1] = macro.tokens + return + else: + # Expansion with arguments. + values, lastPos = self.parseValues() + newtokens = [] + for mtoken in macro.tokens: + if macro.vars.has_key(mtoken): + # variable + pos = macro.vars[mtoken] + valtokens = values[pos] + for valtoken in valtokens: + newtokens.append(valtoken) + else: + # not a variable + newtokens.append(mtoken) + + self.tokens[self.pos:self.pos+lastPos+1] = newtokens + + + def parseValues (self): + """Parse tokens to get macro function variable values. + +Be aware that there is an implicit quotes around the text between the open +paren, the comma(s), and the close paren. For instance, if a macro is defined +as FOO(a, b) and is used as FOO(one two three, and four), then the 'a' must be +replaced with 'one two three', and the 'b' replaced with 'and four'. In other +words, whitespace does not end a token. + +""" + values = [] + i = 1 + scope = 0 + value = [] + while True: + try: + tk = self.tokens[self.pos+i] + except IndexError: + progress ("error parsing values (%d)\n"%i) + for j in xrange(0, i): + print self.tokens[self.pos+j], + print '' + srclexer.dumpTokens(self.tokens) + srclexer.dumpTokens(self.newtokens) + print "tokens expanded so far:" + for tk in self.expandedTokens: + print "-"*20 + print tk + srclexer.dumpTokens(self.defines[tk].tokens) + sys.exit(1) + if tk == '(': + value = [] + scope += 1 + elif tk == ',': + values.append(value) + value = [] + elif tk == ')': + scope -= 1 + values.append(value) + value = [] + if scope == 0: + break + else: + raise ParseError ('') + else: + value.append(tk) + i += 1 + + return values, i + + def getTokens (self): + return self.tokens + + +class SrcParser(object): + + def __init__ (self, tokens, defines = None): + self.tokens = tokens + self.defines = defines + self.debug = False + self.onlyExpandMacros = False + + def init (self): + self.elementStack = [RootNode()] + self.stmtData = Statement() + self.tokenBuf = [] + self.leftTokens = [] + + # Expand defined macros. + if self.debug: + progress ("-"*68+"\n") + for key in self.defines.keys(): + progress ("define: %s\n"%key) + + self.expandMacro() + self.tokenSize = len(self.tokens) + + def expandMacro (self): + macroExp = MacroExpander(self.tokens, self.defines) + macroExp.expand() + self.tokens = macroExp.getTokens() + if self.onlyExpandMacros: + srclexer.dumpTokens(self.tokens) + sys.exit(0) + + def parse (self): + """Parse it! + +This is the main loop for the parser. This is where it all begins and ends. +""" + self.init() + + i = 0 + while i < self.tokenSize: + tk = self.tokens[i] + if tk == '{': + i = self.openBrace(i) + elif tk == '}': + i = self.closeBrace(i) + elif tk == ';': + i = self.semiColon(i) + elif tk == '=': + i = self.assignment(i) + else: + self.tokenBuf.append(tk) + + i += 1 + + return self.elementStack[0] + + #------------------------------------------------------------------------- + # Token Handlers + + """ +Each token handler takes the current token position and returns the position +of the last token processed. For the most part, the current token position +and the last processed token are one and the same, in which case the handler +can simply return the position value it receives without incrementing it. + +If you need to read ahead to process more tokens than just the current token, +make sure that the new token position points to the last token that has been +processed, not the next token that has not yet been processed. This is +because the main loop increments the token position when it returns from the +handler. +""" + + # assignment token '=' + def assignment (self, i): + self.leftTokens = self.tokenBuf[:] + if self.stmtData.leftScope == None: + # Keep track of lhs data in case of compound statement. + self.stmtData.leftTokens = self.tokenBuf[:] + self.stmtData.leftScope = len(self.elementStack) - 1 + + self.tokenBuf = [] + return i + + # open brace token '{' + def openBrace (self, i): + bufSize = len(self.tokenBuf) + leftSize = len(self.leftTokens) + obj = None + if bufSize == 0 and leftSize > 0: + # Name = { ... + obj = Element(self.leftTokens[0]) + + elif bufSize > 0 and leftSize == 0: + # Type Name { ... + wgtType = self.tokenBuf[0] + wgtRID = None + if bufSize >= 2: + wgtRID = self.tokenBuf[1] + obj = Element(wgtType, wgtRID) + + else: + # LeftName = Name { ... + obj = Element(self.leftTokens[0]) + obj.setAttr("type", self.tokenBuf[0]) + + obj.name = transName(obj.name) + + if obj.name == 'string-list': + i = self.parseStringList(i) + elif obj.name == 'filter-list': + i = self.parseFilterList(i, obj) + else: + self.elementStack[-1].appendChild(obj) + self.elementStack.append(obj) + + self.tokenBuf = [] + self.leftTokens = [] + + return i + + # close brace token '}' + def closeBrace (self, i): + if len(self.tokenBuf) > 0: + if self.debug: + print self.tokenBuf + raise ParseError ('') + self.elementStack.pop() + return i + + # semi colon token ';' + def semiColon (self, i): + stackSize = len(self.elementStack) + scope = stackSize - 1 + if len(self.tokenBuf) == 0: + pass + elif scope == 0: + # We are not supposed to have any statment in global scope. + # Just ignore this statement. + pass + else: + # Statement within a scope. Import it as an attribute for the + # current element. + elem = self.elementStack[-1] + + name = "none" + if len(self.leftTokens) > 0: + # Use the leftmost token as the name for now. If we need to + # do more complex parsing of lhs, add more code here. + name = self.leftTokens[0] + name = transName(name) + + if name == 'pos': + i = self.parsePosAttr(i) + elif name == 'size': + i = self.parseSizeAttr(i) + elif len (self.tokenBuf) == 1: + # Simple value + value = transValue(self.tokenBuf[0]) + name = renameAttribute(name, elem.name) + elem.setAttr(name, value) + + if not self.stmtData.leftScope == None and self.stmtData.leftScope < scope: + # This is a nested scope within a statement. Do nothing for now. + pass + + if self.stmtData.leftScope == scope: + # end of (nested) statement. + self.stmtData.leftScope = None + + self.tokenBuf = [] + self.leftTokens = [] + + return i + + def parseStringList (self, i): + + i += 1 + while i < self.tokenSize: + tk = self.tokens[i] + if tk == '}': + break + i += 1 + + return i + + def parseFilterList (self, i, obj): + self.elementStack[-1].appendChild(obj) + self.elementStack.append(obj) + + return i + + def parsePosAttr (self, i): + + # MAP_APPFONT ( 6 , 5 ) + elem = self.elementStack[-1] + x, y = self.parseMapAppfont(self.tokenBuf) + elem.setAttr("x", x) + elem.setAttr("y", y) + + return i + + def parseSizeAttr (self, i): + + # MAP_APPFONT ( 6 , 5 ) + elem = self.elementStack[-1] + width, height = self.parseMapAppfont(self.tokenBuf) + elem.setAttr("width", width) + elem.setAttr("height", height) + + return i + + def parseMapAppfont (self, tokens): + values = [] + scope = 0 + val = '' + for tk in tokens: + if tk == '(': + scope += 1 + if scope == 1: + val = '' + else: + val += tk + elif tk == ')': + scope -= 1 + if scope == 0: + if len(val) == 0: + raise ParseError ('') + values.append(val) + break + else: + val += tk + elif tk == ',': + if len(val) == 0: + raise ParseError ('') + values.append(val) + val = '' + elif scope > 0: + val += tk + + if len(values) != 2: + raise ParseError ('') + + return eval(values[0]), eval(values[1]) + + diff --git a/toolkit/src2xml/src-sc.lst b/toolkit/src2xml/src-sc.lst new file mode 100644 index 000000000000..bb2417d47da8 --- /dev/null +++ b/toolkit/src2xml/src-sc.lst @@ -0,0 +1,57 @@ +../../sc/util/hidother.src +../../sc/addin/datefunc/dfa.src +../../sc/addin/rot13/rot13.src +../../sc/source/ui/src/crnrdlg.src +../../sc/source/ui/src/hdrcont.src +../../sc/source/ui/src/solvrdlg.src +../../sc/source/ui/src/miscdlgs.src +../../sc/source/ui/src/tabopdlg.src +../../sc/source/ui/src/popup.src +../../sc/source/ui/src/autofmt.src +../../sc/source/ui/src/toolbox.src +../../sc/source/ui/src/opredlin.src +../../sc/source/ui/src/namedlg.src +../../sc/source/ui/src/sortdlg.src +../../sc/source/ui/src/textdlgs.src +../../sc/source/ui/src/optdlg.src +../../sc/source/ui/src/scwarngs.src +../../sc/source/ui/src/scfuncs.src +../../sc/source/ui/src/filter.src +../../sc/source/ui/src/simpref.src +../../sc/source/ui/src/attrdlg.src +../../sc/source/ui/src/sc.src +../../sc/source/ui/src/globstr.src +../../sc/source/ui/src/scstring.src +../../sc/source/ui/src/dbnamdlg.src +../../sc/source/ui/src/subtdlg.src +../../sc/source/ui/src/pseudo.src +../../sc/source/ui/src/condfrmt.src +../../sc/source/ui/src/chartdlg.src +../../sc/source/ui/src/scerrors.src +../../sc/source/ui/dbgui/outline.src +../../sc/source/ui/dbgui/pvfundlg.src +../../sc/source/ui/dbgui/scendlg.src +../../sc/source/ui/dbgui/pivot.src +../../sc/source/ui/dbgui/dpgroupdlg.src +../../sc/source/ui/dbgui/dapitype.src +../../sc/source/ui/dbgui/imoptdlg.src +../../sc/source/ui/dbgui/consdlg.src +../../sc/source/ui/dbgui/validate.src +../../sc/source/ui/dbgui/asciiopt.src +../../sc/source/ui/drawfunc/objdraw.src +../../sc/source/ui/drawfunc/drformsh.src +../../sc/source/ui/styleui/scstyles.src +../../sc/source/ui/styleui/styledlg.src +../../sc/source/ui/formdlg/parawin.src +../../sc/source/ui/formdlg/dwfunctr.src +../../sc/source/ui/formdlg/formdlgs.src +../../sc/source/ui/navipi/navipi.src +../../sc/source/ui/miscdlgs/acredlin.src +../../sc/source/ui/miscdlgs/highred.src +../../sc/source/ui/miscdlgs/linkarea.src +../../sc/source/ui/miscdlgs/instbdlg.src +../../sc/source/ui/pagedlg/pagedlg.src +../../sc/source/ui/pagedlg/tphf.src +../../sc/source/ui/pagedlg/hfedtdlg.src +../../sc/source/ui/docshell/tpstat.src +../../sc/source/core/src/compiler.src diff --git a/toolkit/src2xml/src-sd.lst b/toolkit/src2xml/src-sd.lst new file mode 100644 index 000000000000..6dc236e38ff2 --- /dev/null +++ b/toolkit/src2xml/src-sd.lst @@ -0,0 +1,124 @@ +../../sd/util/hidother.src +../../sd/source/ui/app/tbxids_tmpl.src +../../sd/source/ui/app/popup2_tmpl.src +../../sd/source/ui/app/popup.src +../../sd/source/ui/app/toolbox.src +../../sd/source/ui/app/menuids2_tmpl.src +../../sd/source/ui/app/sdstring.src +../../sd/source/ui/app/menu_tmpl.src +../../sd/source/ui/app/strings.src +../../sd/source/ui/app/menuids_tmpl.src +../../sd/source/ui/app/accel_tmpl.src +../../sd/source/ui/app/tbx_ww.src +../../sd/source/ui/app/accelids_tmpl.src +../../sd/source/ui/app/menuportal_tmpl.src +../../sd/source/ui/app/menuids3_tmpl.src +../../sd/source/ui/app/app.src +../../sd/source/ui/app/res_bmp.src +../../sd/source/ui/app/pseudo.src +../../sd/source/ui/app/menuids4_tmpl.src +../../sd/source/ui/app/toolbox2_tmpl.src +../../sd/source/ui/dlg/headerfooterdlg.src +../../sd/source/ui/dlg/dlgfield.src +../../sd/source/ui/dlg/sdobjpal.src +../../sd/source/ui/dlg/morphdlg.src +../../sd/source/ui/dlg/PaneDockingWindow.src +../../sd/source/ui/dlg/dlgsnap.src +../../sd/source/ui/dlg/tpoption.src +../../sd/source/ui/dlg/present.src +../../sd/source/ui/dlg/sdpreslt.src +../../sd/source/ui/dlg/dlgass.src +../../sd/source/ui/dlg/tpaction.src +../../sd/source/ui/dlg/prntopts.src +../../sd/source/ui/dlg/prltempl.src +../../sd/source/ui/dlg/custsdlg.src +../../sd/source/ui/dlg/inspagob.src +../../sd/source/ui/dlg/paragr.src +../../sd/source/ui/dlg/dlgpage.src +../../sd/source/ui/dlg/vectdlg.src +../../sd/source/ui/dlg/dlgolbul.src +../../sd/source/ui/dlg/copydlg.src +../../sd/source/ui/dlg/dlg_char.src +../../sd/source/ui/dlg/printdlg.src +../../sd/source/ui/dlg/ins_page.src +../../sd/source/ui/dlg/animobjs.src +../../sd/source/ui/dlg/ins_paste.src +../../sd/source/ui/dlg/tabtempl.src +../../sd/source/ui/dlg/LayerDialog.src +../../sd/source/ui/dlg/masterlayoutdlg.src +../../sd/source/ui/dlg/navigatr.src +../../sd/source/ui/dlg/brkdlg.src +../../sd/source/ui/slidesorter/shell/SlideSorterChildWindow.src +../../sd/source/ui/notes/NotesChildWindow.src +../../sd/source/ui/toolpanel/ToolPanelChildWindow.src +../../sd/source/ui/animations/CustomAnimationCreateDialog.src +../../sd/source/ui/animations/CustomAnimationDialog.src +../../sd/source/ui/animations/CustomAnimation.src +../../sd/source/ui/animations/CustomAnimationSchemesPane.src +../../sd/source/ui/animations/SlideTransitionPane.src +../../sd/source/ui/animations/AnimationSchemesPane.src +../../sd/source/ui/animations/CustomAnimationPane.src +../../sd/source/ui/accessibility/accessibility.src +../../sd/source/ui/slideshow/slideshow.src +../../sd/source/core/glob.src +../../sd/source/filter/html/pubdlg.src +../../sd/unxlngi6.pro/inc/menu.src +../../sd/unxlngi6.pro/inc/menuids2.src +../../sd/unxlngi6.pro/inc/menuids3.src +../../sd/unxlngi6.pro/inc/menuids4.src +../../sd/unxlngi6.pro/inc/popup2.src +../../sd/unxlngi6.pro/inc/toolbox2.src +../../sd/unxlngi6.pro/inc/accel.src +../../sd/unxlngi6.pro/inc/menuids.src +../../sd/unxlngi6.pro/inc/menuportal.src +../../sd/unxlngi6.pro/inc/accelids.src +../../sd/unxlngi6.pro/inc/tbxids.src +../../sd/unxlngi6.pro/misc/app/popup.src +../../sd/unxlngi6.pro/misc/app/toolbox.src +../../sd/unxlngi6.pro/misc/app/sdstring.src +../../sd/unxlngi6.pro/misc/app/strings.src +../../sd/unxlngi6.pro/misc/app/tbx_ww.src +../../sd/unxlngi6.pro/misc/app/app.src +../../sd/unxlngi6.pro/misc/app/res_bmp.src +../../sd/unxlngi6.pro/misc/app/pseudo.src +../../sd/unxlngi6.pro/misc/dlg/headerfooterdlg.src +../../sd/unxlngi6.pro/misc/dlg/dlgfield.src +../../sd/unxlngi6.pro/misc/dlg/morphdlg.src +../../sd/unxlngi6.pro/misc/dlg/PaneDockingWindow.src +../../sd/unxlngi6.pro/misc/dlg/dlgsnap.src +../../sd/unxlngi6.pro/misc/dlg/tpoption.src +../../sd/unxlngi6.pro/misc/dlg/present.src +../../sd/unxlngi6.pro/misc/dlg/sdpreslt.src +../../sd/unxlngi6.pro/misc/dlg/dlgass.src +../../sd/unxlngi6.pro/misc/dlg/tpaction.src +../../sd/unxlngi6.pro/misc/dlg/prntopts.src +../../sd/unxlngi6.pro/misc/dlg/prltempl.src +../../sd/unxlngi6.pro/misc/dlg/custsdlg.src +../../sd/unxlngi6.pro/misc/dlg/inspagob.src +../../sd/unxlngi6.pro/misc/dlg/paragr.src +../../sd/unxlngi6.pro/misc/dlg/dlgpage.src +../../sd/unxlngi6.pro/misc/dlg/vectdlg.src +../../sd/unxlngi6.pro/misc/dlg/dlgolbul.src +../../sd/unxlngi6.pro/misc/dlg/copydlg.src +../../sd/unxlngi6.pro/misc/dlg/dlg_char.src +../../sd/unxlngi6.pro/misc/dlg/printdlg.src +../../sd/unxlngi6.pro/misc/dlg/ins_page.src +../../sd/unxlngi6.pro/misc/dlg/animobjs.src +../../sd/unxlngi6.pro/misc/dlg/ins_paste.src +../../sd/unxlngi6.pro/misc/dlg/tabtempl.src +../../sd/unxlngi6.pro/misc/dlg/LayerDialog.src +../../sd/unxlngi6.pro/misc/dlg/masterlayoutdlg.src +../../sd/unxlngi6.pro/misc/dlg/navigatr.src +../../sd/unxlngi6.pro/misc/dlg/brkdlg.src +../../sd/unxlngi6.pro/misc/core/glob.src +../../sd/unxlngi6.pro/misc/html/pubdlg.src +../../sd/unxlngi6.pro/misc/notes/NotesChildWindow.src +../../sd/unxlngi6.pro/misc/accessibility/accessibility.src +../../sd/unxlngi6.pro/misc/animui/CustomAnimationCreateDialog.src +../../sd/unxlngi6.pro/misc/animui/CustomAnimationDialog.src +../../sd/unxlngi6.pro/misc/animui/CustomAnimation.src +../../sd/unxlngi6.pro/misc/animui/CustomAnimationSchemesPane.src +../../sd/unxlngi6.pro/misc/animui/SlideTransitionPane.src +../../sd/unxlngi6.pro/misc/animui/AnimationSchemesPane.src +../../sd/unxlngi6.pro/misc/animui/CustomAnimationPane.src +../../sd/unxlngi6.pro/misc/slideshow/slideshow.src diff --git a/toolkit/src2xml/src-sw.lst b/toolkit/src2xml/src-sw.lst new file mode 100644 index 000000000000..8d43400462d8 --- /dev/null +++ b/toolkit/src2xml/src-sw.lst @@ -0,0 +1,121 @@ +../../sw/sdi/swslots.src +../../sw/util/hidother.src +../../sw/source/ui/app/mn.src +../../sw/source/ui/app/app.src +../../sw/source/ui/app/error.src +../../sw/source/ui/web/web.src +../../sw/source/ui/dbui/addresslistdialog.src +../../sw/source/ui/dbui/customizeaddresslistdialog.src +../../sw/source/ui/dbui/mailmergewizard.src +../../sw/source/ui/dbui/mmlayoutpage.src +../../sw/source/ui/dbui/dbui.src +../../sw/source/ui/dbui/createaddresslistdialog.src +../../sw/source/ui/dbui/mmoutputpage.src +../../sw/source/ui/dbui/dbtablepreviewdialog.src +../../sw/source/ui/dbui/mmmergepage.src +../../sw/source/ui/dbui/dbinsdlg.src +../../sw/source/ui/dbui/selectdbtabledialog.src +../../sw/source/ui/dbui/mmoutputtypepage.src +../../sw/source/ui/dbui/mailmergechildwindow.src +../../sw/source/ui/dbui/mmpreparemergepage.src +../../sw/source/ui/dbui/mmdocselectpage.src +../../sw/source/ui/dbui/mmgreetingspage.src +../../sw/source/ui/dbui/mmaddressblockpage.src +../../sw/source/ui/misc/linenum.src +../../sw/source/ui/misc/outline.src +../../sw/source/ui/misc/glosbib.src +../../sw/source/ui/misc/pgfnote.src +../../sw/source/ui/misc/redlndlg.src +../../sw/source/ui/misc/glossary.src +../../sw/source/ui/misc/numberingtypelistbox.src +../../sw/source/ui/misc/autocorr.src +../../sw/source/ui/misc/insfnote.src +../../sw/source/ui/misc/srtdlg.src +../../sw/source/ui/misc/num.src +../../sw/source/ui/misc/pggrid.src +../../sw/source/ui/misc/bookmark.src +../../sw/source/ui/misc/docfnote.src +../../sw/source/ui/misc/insrule.src +../../sw/source/ui/docvw/docvw.src +../../sw/source/ui/docvw/access.src +../../sw/source/ui/fldui/javaedit.src +../../sw/source/ui/fldui/fldref.src +../../sw/source/ui/fldui/fldtdlg.src +../../sw/source/ui/fldui/fldfunc.src +../../sw/source/ui/fldui/flddok.src +../../sw/source/ui/fldui/flddinf.src +../../sw/source/ui/fldui/inpdlg.src +../../sw/source/ui/fldui/flddb.src +../../sw/source/ui/fldui/changedb.src +../../sw/source/ui/fldui/fldvar.src +../../sw/source/ui/fldui/DropDownFieldDialog.src +../../sw/source/ui/fldui/fldui.src +../../sw/source/ui/fmtui/tmpdlg.src +../../sw/source/ui/fmtui/fmtui.src +../../sw/source/ui/index/cnttab.src +../../sw/source/ui/index/multmrk.src +../../sw/source/ui/index/idxmrk.src +../../sw/source/ui/lingu/olmenu.src +../../sw/source/ui/table/colwd.src +../../sw/source/ui/table/rowht.src +../../sw/source/ui/table/tautofmt.src +../../sw/source/ui/table/splittbl.src +../../sw/source/ui/table/chartins.src +../../sw/source/ui/table/tabledlg.src +../../sw/source/ui/table/split.src +../../sw/source/ui/table/convert.src +../../sw/source/ui/table/insrc.src +../../sw/source/ui/table/table.src +../../sw/source/ui/table/mergetbl.src +../../sw/source/ui/table/instable.src +../../sw/source/ui/utlui/utlui.src +../../sw/source/ui/utlui/initui.src +../../sw/source/ui/utlui/navipi.src +../../sw/source/ui/utlui/attrdesc.src +../../sw/source/ui/utlui/gloslst.src +../../sw/source/ui/utlui/poolfmt.src +../../sw/source/ui/utlui/unotools.src +../../sw/source/ui/wrtsh/wrtsh.src +../../sw/source/ui/chrdlg/chardlg.src +../../sw/source/ui/chrdlg/swbreak.src +../../sw/source/ui/chrdlg/ccoll.src +../../sw/source/ui/chrdlg/paradlg.src +../../sw/source/ui/chrdlg/drpcps.src +../../sw/source/ui/chrdlg/chrdlg.src +../../sw/source/ui/chrdlg/numpara.src +../../sw/source/ui/config/mailconfigpage.src +../../sw/source/ui/config/optcomp.src +../../sw/source/ui/config/optdlg.src +../../sw/source/ui/config/optload.src +../../sw/source/ui/config/redlopt.src +../../sw/source/ui/dialog/abstract.src +../../sw/source/ui/dialog/docstdlg.src +../../sw/source/ui/dialog/ascfldlg.src +../../sw/source/ui/dialog/dialog.src +../../sw/source/ui/dialog/regionsw.src +../../sw/source/ui/dialog/wordcountdialog.src +../../sw/source/ui/dochdl/dochdl.src +../../sw/source/ui/dochdl/selglos.src +../../sw/source/ui/envelp/mailmrge.src +../../sw/source/ui/envelp/envelp.src +../../sw/source/ui/envelp/labprt.src +../../sw/source/ui/envelp/envlop.src +../../sw/source/ui/envelp/label.src +../../sw/source/ui/envelp/envfmt.src +../../sw/source/ui/envelp/labfmt.src +../../sw/source/ui/envelp/envprt.src +../../sw/source/ui/smartmenu/stmenu.src +../../sw/source/ui/frmdlg/frmpage.src +../../sw/source/ui/frmdlg/cption.src +../../sw/source/ui/frmdlg/column.src +../../sw/source/ui/frmdlg/wrap.src +../../sw/source/ui/frmdlg/frmui.src +../../sw/source/ui/globdoc/globdoc.src +../../sw/source/ui/ribbar/tbxanchr.src +../../sw/source/ui/ribbar/workctrl.src +../../sw/source/ui/ribbar/inputwin.src +../../sw/source/ui/ribbar/tblctrl.src +../../sw/source/ui/shells/shells.src +../../sw/source/ui/uiview/pview.src +../../sw/source/ui/uiview/view.src +../../sw/source/core/undo/undo.src diff --git a/toolkit/src2xml/src.lst b/toolkit/src2xml/src.lst new file mode 100644 index 000000000000..5375af00b8f0 --- /dev/null +++ b/toolkit/src2xml/src.lst @@ -0,0 +1,696 @@ +../../sc/util/hidother.src +../../sc/addin/datefunc/dfa.src +../../sc/addin/rot13/rot13.src +../../sc/source/ui/src/crnrdlg.src +../../sc/source/ui/src/hdrcont.src +../../sc/source/ui/src/solvrdlg.src +../../sc/source/ui/src/miscdlgs.src +../../sc/source/ui/src/tabopdlg.src +../../sc/source/ui/src/popup.src +../../sc/source/ui/src/autofmt.src +../../sc/source/ui/src/toolbox.src +../../sc/source/ui/src/opredlin.src +../../sc/source/ui/src/namedlg.src +../../sc/source/ui/src/sortdlg.src +../../sc/source/ui/src/textdlgs.src +../../sc/source/ui/src/optdlg.src +../../sc/source/ui/src/scwarngs.src +../../sc/source/ui/src/scfuncs.src +../../sc/source/ui/src/filter.src +../../sc/source/ui/src/simpref.src +../../sc/source/ui/src/attrdlg.src +../../sc/source/ui/src/sc.src +../../sc/source/ui/src/globstr.src +../../sc/source/ui/src/scstring.src +../../sc/source/ui/src/dbnamdlg.src +../../sc/source/ui/src/subtdlg.src +../../sc/source/ui/src/pseudo.src +../../sc/source/ui/src/condfrmt.src +../../sc/source/ui/src/scerrors.src +../../sc/source/ui/dbgui/outline.src +../../sc/source/ui/dbgui/pvfundlg.src +../../sc/source/ui/dbgui/scendlg.src +../../sc/source/ui/dbgui/pivot.src +../../sc/source/ui/dbgui/dpgroupdlg.src +../../sc/source/ui/dbgui/dapitype.src +../../sc/source/ui/dbgui/imoptdlg.src +../../sc/source/ui/dbgui/consdlg.src +../../sc/source/ui/dbgui/validate.src +../../sc/source/ui/dbgui/asciiopt.src +../../sc/source/ui/drawfunc/objdraw.src +../../sc/source/ui/drawfunc/drformsh.src +../../sc/source/ui/styleui/scstyles.src +../../sc/source/ui/styleui/styledlg.src +../../sc/source/ui/formdlg/parawin.src +../../sc/source/ui/formdlg/dwfunctr.src +../../sc/source/ui/formdlg/formdlgs.src +../../sc/source/ui/navipi/navipi.src +../../sc/source/ui/miscdlgs/acredlin.src +../../sc/source/ui/miscdlgs/highred.src +../../sc/source/ui/miscdlgs/linkarea.src +../../sc/source/ui/miscdlgs/instbdlg.src +../../sc/source/ui/pagedlg/pagedlg.src +../../sc/source/ui/pagedlg/tphf.src +../../sc/source/ui/pagedlg/hfedtdlg.src +../../sc/source/ui/docshell/tpstat.src +../../sc/source/core/src/compiler.src +../../sd/util/hidother.src +../../sd/source/ui/app/tbxids_tmpl.src +../../sd/source/ui/app/popup2_tmpl.src +../../sd/source/ui/app/popup.src +../../sd/source/ui/app/toolbox.src +../../sd/source/ui/app/menuids2_tmpl.src +../../sd/source/ui/app/sdstring.src +../../sd/source/ui/app/menu_tmpl.src +../../sd/source/ui/app/strings.src +../../sd/source/ui/app/menuids_tmpl.src +../../sd/source/ui/app/accel_tmpl.src +../../sd/source/ui/app/tbx_ww.src +../../sd/source/ui/app/accelids_tmpl.src +../../sd/source/ui/app/menuportal_tmpl.src +../../sd/source/ui/app/menuids3_tmpl.src +../../sd/source/ui/app/app.src +../../sd/source/ui/app/res_bmp.src +../../sd/source/ui/app/pseudo.src +../../sd/source/ui/app/menuids4_tmpl.src +../../sd/source/ui/app/toolbox2_tmpl.src +../../sd/source/ui/dlg/headerfooterdlg.src +../../sd/source/ui/dlg/dlgfield.src +../../sd/source/ui/dlg/sdobjpal.src +../../sd/source/ui/dlg/morphdlg.src +../../sd/source/ui/dlg/PaneDockingWindow.src +../../sd/source/ui/dlg/dlgsnap.src +../../sd/source/ui/dlg/tpoption.src +../../sd/source/ui/dlg/present.src +../../sd/source/ui/dlg/sdpreslt.src +../../sd/source/ui/dlg/dlgass.src +../../sd/source/ui/dlg/tpaction.src +../../sd/source/ui/dlg/prntopts.src +../../sd/source/ui/dlg/prltempl.src +../../sd/source/ui/dlg/custsdlg.src +../../sd/source/ui/dlg/inspagob.src +../../sd/source/ui/dlg/paragr.src +../../sd/source/ui/dlg/dlgpage.src +../../sd/source/ui/dlg/vectdlg.src +../../sd/source/ui/dlg/dlgolbul.src +../../sd/source/ui/dlg/copydlg.src +../../sd/source/ui/dlg/dlg_char.src +../../sd/source/ui/dlg/printdlg.src +../../sd/source/ui/dlg/animobjs.src +../../sd/source/ui/dlg/ins_paste.src +../../sd/source/ui/dlg/tabtempl.src +../../sd/source/ui/dlg/LayerDialog.src +../../sd/source/ui/dlg/masterlayoutdlg.src +../../sd/source/ui/dlg/navigatr.src +../../sd/source/ui/dlg/brkdlg.src +../../sd/source/ui/slidesorter/shell/SlideSorterChildWindow.src +../../sd/source/ui/notes/NotesChildWindow.src +../../sd/source/ui/toolpanel/ToolPanelChildWindow.src +../../sd/source/ui/animations/CustomAnimationCreateDialog.src +../../sd/source/ui/animations/CustomAnimationDialog.src +../../sd/source/ui/animations/CustomAnimation.src +../../sd/source/ui/animations/CustomAnimationSchemesPane.src +../../sd/source/ui/animations/SlideTransitionPane.src +../../sd/source/ui/animations/AnimationSchemesPane.src +../../sd/source/ui/animations/CustomAnimationPane.src +../../sd/source/ui/accessibility/accessibility.src +../../sd/source/ui/slideshow/slideshow.src +../../sd/source/core/glob.src +../../sd/source/filter/html/pubdlg.src +../../sw/sdi/swslots.src +../../sw/util/hidother.src +../../sw/source/ui/app/mn.src +../../sw/source/ui/app/app.src +../../sw/source/ui/app/error.src +../../sw/source/ui/web/web.src +../../sw/source/ui/dbui/addresslistdialog.src +../../sw/source/ui/dbui/customizeaddresslistdialog.src +../../sw/source/ui/dbui/mailmergewizard.src +../../sw/source/ui/dbui/mmlayoutpage.src +../../sw/source/ui/dbui/dbui.src +../../sw/source/ui/dbui/createaddresslistdialog.src +../../sw/source/ui/dbui/mmoutputpage.src +../../sw/source/ui/dbui/dbtablepreviewdialog.src +../../sw/source/ui/dbui/mmmergepage.src +../../sw/source/ui/dbui/dbinsdlg.src +../../sw/source/ui/dbui/selectdbtabledialog.src +../../sw/source/ui/dbui/mmoutputtypepage.src +../../sw/source/ui/dbui/mailmergechildwindow.src +../../sw/source/ui/dbui/mmpreparemergepage.src +../../sw/source/ui/dbui/mmdocselectpage.src +../../sw/source/ui/dbui/mmgreetingspage.src +../../sw/source/ui/dbui/mmaddressblockpage.src +../../sw/source/ui/misc/linenum.src +../../sw/source/ui/misc/outline.src +../../sw/source/ui/misc/glosbib.src +../../sw/source/ui/misc/pgfnote.src +../../sw/source/ui/misc/redlndlg.src +../../sw/source/ui/misc/glossary.src +../../sw/source/ui/misc/numberingtypelistbox.src +../../sw/source/ui/misc/autocorr.src +../../sw/source/ui/misc/insfnote.src +../../sw/source/ui/misc/srtdlg.src +../../sw/source/ui/misc/num.src +../../sw/source/ui/misc/pggrid.src +../../sw/source/ui/misc/bookmark.src +../../sw/source/ui/misc/docfnote.src +../../sw/source/ui/misc/insrule.src +../../sw/source/ui/docvw/docvw.src +../../sw/source/ui/docvw/access.src +../../sw/source/ui/fldui/javaedit.src +../../sw/source/ui/fldui/fldref.src +../../sw/source/ui/fldui/fldtdlg.src +../../sw/source/ui/fldui/fldfunc.src +../../sw/source/ui/fldui/flddok.src +../../sw/source/ui/fldui/flddinf.src +../../sw/source/ui/fldui/inpdlg.src +../../sw/source/ui/fldui/flddb.src +../../sw/source/ui/fldui/changedb.src +../../sw/source/ui/fldui/fldvar.src +../../sw/source/ui/fldui/DropDownFieldDialog.src +../../sw/source/ui/fldui/fldui.src +../../sw/source/ui/fmtui/tmpdlg.src +../../sw/source/ui/fmtui/fmtui.src +../../sw/source/ui/index/cnttab.src +../../sw/source/ui/index/multmrk.src +../../sw/source/ui/index/idxmrk.src +../../sw/source/ui/lingu/olmenu.src +../../sw/source/ui/table/colwd.src +../../sw/source/ui/table/rowht.src +../../sw/source/ui/table/tautofmt.src +../../sw/source/ui/table/splittbl.src +../../sw/source/ui/table/chartins.src +../../sw/source/ui/table/tabledlg.src +../../sw/source/ui/table/split.src +../../sw/source/ui/table/convert.src +../../sw/source/ui/table/insrc.src +../../sw/source/ui/table/table.src +../../sw/source/ui/table/mergetbl.src +../../sw/source/ui/table/instable.src +../../sw/source/ui/utlui/utlui.src +../../sw/source/ui/utlui/initui.src +../../sw/source/ui/utlui/navipi.src +../../sw/source/ui/utlui/attrdesc.src +../../sw/source/ui/utlui/gloslst.src +../../sw/source/ui/utlui/poolfmt.src +../../sw/source/ui/utlui/unotools.src +../../sw/source/ui/wrtsh/wrtsh.src +../../sw/source/ui/chrdlg/chardlg.src +../../sw/source/ui/chrdlg/swbreak.src +../../sw/source/ui/chrdlg/ccoll.src +../../sw/source/ui/chrdlg/paradlg.src +../../sw/source/ui/chrdlg/drpcps.src +../../sw/source/ui/chrdlg/chrdlg.src +../../sw/source/ui/chrdlg/numpara.src +../../sw/source/ui/config/mailconfigpage.src +../../sw/source/ui/config/optcomp.src +../../sw/source/ui/config/optdlg.src +../../sw/source/ui/config/optload.src +../../sw/source/ui/config/redlopt.src +../../sw/source/ui/dialog/abstract.src +../../sw/source/ui/dialog/docstdlg.src +../../sw/source/ui/dialog/ascfldlg.src +../../sw/source/ui/dialog/dialog.src +../../sw/source/ui/dialog/regionsw.src +../../sw/source/ui/dialog/wordcountdialog.src +../../sw/source/ui/dochdl/dochdl.src +../../sw/source/ui/dochdl/selglos.src +../../sw/source/ui/envelp/mailmrge.src +../../sw/source/ui/envelp/envelp.src +../../sw/source/ui/envelp/labprt.src +../../sw/source/ui/envelp/envlop.src +../../sw/source/ui/envelp/label.src +../../sw/source/ui/envelp/envfmt.src +../../sw/source/ui/envelp/labfmt.src +../../sw/source/ui/envelp/envprt.src +../../sw/source/ui/smartmenu/stmenu.src +../../sw/source/ui/frmdlg/frmpage.src +../../sw/source/ui/frmdlg/cption.src +../../sw/source/ui/frmdlg/column.src +../../sw/source/ui/frmdlg/wrap.src +../../sw/source/ui/frmdlg/frmui.src +../../sw/source/ui/globdoc/globdoc.src +../../sw/source/ui/ribbar/tbxanchr.src +../../sw/source/ui/ribbar/workctrl.src +../../sw/source/ui/ribbar/inputwin.src +../../sw/source/ui/ribbar/tblctrl.src +../../sw/source/ui/shells/shells.src +../../sw/source/ui/uiview/pview.src +../../sw/source/ui/uiview/view.src +../../sw/source/core/undo/undo.src +../../sch/util/hidother.src +../../sch/source/ui/app/res_hc_bmp.src +../../sch/source/ui/app/menu_tmpl.src +../../sch/source/ui/app/strings.src +../../sch/source/ui/app/menuids_tmpl.src +../../sch/source/ui/app/app.src +../../sch/source/ui/app/res_bmp.src +../../sch/source/ui/dlg/axisgrid.src +../../sch/source/ui/dlg/attrib2.src +../../sch/source/ui/dlg/attrib3.src +../../sch/source/ui/dlg/attrib4.src +../../sch/source/ui/dlg/tpappopt.src +../../sch/source/ui/dlg/tplabel.src +../../sch/source/ui/dlg/attrib.src +../../sch/source/ui/dlg/title.src +../../sch/source/ui/dlg/lightdlg.src +../../sch/source/ui/dlg/viewdlg.src +../../sch/source/ui/dlg/dgrdata.src +../../sch/source/ui/dlg/dlggraut.src +../../sch/source/ui/dlg/tpscaley.src +../../sch/source/ui/dlg/datdescr.src +../../sch/source/ui/dlg/legend.src +../../sch/source/ui/dlg/diagrtyp.src +../../sch/source/ui/dlg/datstat.src +../../sch/source/core/glob.src +../../so3/src/svuidlg.src +../../so3/src/formats.src +../../so3/src/nocode.src +../../so3/util/hidother.src +../../so3/workben/ddetest/ddetest.src +../../so3/workben/paintdlg.src +../../so3/workben/svser.src +../../so3/workben/paint.src +../../svx/util/hidother.src +../../svx/source/src/app.src +../../svx/source/form/fmstring.src +../../svx/source/form/filtnav.src +../../svx/source/form/fmexpl.src +../../svx/source/form/fmsearch.src +../../svx/source/form/tbxform.src +../../svx/source/form/formshell.src +../../svx/source/form/datanavi.src +../../svx/source/intro/ooo.src +../../svx/source/intro/iso.src +../../svx/source/items/svxitems.src +../../svx/source/items/svxerr.src +../../svx/source/editeng/editeng.src +../../svx/source/accessibility/accessibility.src +../../svx/source/mnuctrls/mnuctrls.src +../../svx/source/engine3d/float3d.src +../../svx/source/engine3d/string3d.src +../../svx/source/dialog/textanim.src +../../svx/source/dialog/hyperdlg.src +../../svx/source/dialog/textattr.src +../../svx/source/dialog/tabarea.src +../../svx/source/dialog/rubydialog.src +../../svx/source/dialog/frmdirlbox.src +../../svx/source/dialog/chardlg.src +../../svx/source/dialog/numfmt.src +../../svx/source/dialog/doclinkdialog.src +../../svx/source/dialog/treeopt.src +../../svx/source/dialog/page.src +../../svx/source/dialog/opthtml.src +../../svx/source/dialog/frmsel.src +../../svx/source/dialog/ruler.src +../../svx/source/dialog/optgdlg.src +../../svx/source/dialog/fontwork.src +../../svx/source/dialog/backgrnd.src +../../svx/source/dialog/SpellDialog.src +../../svx/source/dialog/labdlg.src +../../svx/source/dialog/charmap.src +../../svx/source/dialog/zoom.src +../../svx/source/dialog/border.src +../../svx/source/dialog/svuidlg.src +../../svx/source/dialog/impgrf.src +../../svx/source/dialog/dlgname.src +../../svx/source/dialog/test.src +../../svx/source/dialog/selector.src +../../svx/source/dialog/optupdt.src +../../svx/source/dialog/numpages.src +../../svx/source/dialog/thesdlg.src +../../svx/source/dialog/tabline.src +../../svx/source/dialog/srchdlg.src +../../svx/source/dialog/contdlg.src +../../svx/source/dialog/paragrph.src +../../svx/source/dialog/commonlingui.src +../../svx/source/dialog/sdstring.src +../../svx/source/dialog/optmemory.src +../../svx/source/dialog/grfflt.src +../../svx/source/dialog/langbox.src +../../svx/source/dialog/bbdlg.src +../../svx/source/dialog/hangulhanjadlg.src +../../svx/source/dialog/txenctab.src +../../svx/source/dialog/connpooloptions.src +../../svx/source/dialog/dbregister.src +../../svx/source/dialog/macropg.src +../../svx/source/dialog/fontsubs.src +../../svx/source/dialog/align.src +../../svx/source/dialog/hyprlink.src +../../svx/source/dialog/imapdlg.src +../../svx/source/dialog/dlgctrl.src +../../svx/source/dialog/tabstpge.src +../../svx/source/dialog/readonlyimage.src +../../svx/source/dialog/docrecovery.src +../../svx/source/dialog/hlmarkwn.src +../../svx/source/dialog/internationaloptions.src +../../svx/source/dialog/optjava.src +../../svx/source/dialog/language.src +../../svx/source/dialog/hdft.src +../../svx/source/dialog/lingu.src +../../svx/source/dialog/grfpage.src +../../svx/source/dialog/iconcdlg.src +../../svx/source/dialog/swframeposstrings.src +../../svx/source/dialog/connect.src +../../svx/source/dialog/bmpmask.src +../../svx/source/dialog/postdlg.src +../../svx/source/dialog/checklbx.src +../../svx/source/dialog/autocdlg.src +../../svx/source/dialog/measure.src +../../svx/source/dialog/cfg.src +../../svx/source/dialog/scriptdlg.src +../../svx/source/dialog/langtab.src +../../svx/source/dialog/srchxtra.src +../../svx/source/dialog/ctredlin.src +../../svx/source/dialog/passwd.src +../../svx/source/dialog/transfrm.src +../../svx/source/dialog/optfltr.src +../../svx/source/dialog/prtqry.src +../../svx/source/dialog/eventdlg.src +../../svx/source/dialog/hyphen.src +../../svx/source/dialog/swpossizetabpage.src +../../svx/source/dialog/dstribut.src +../../svx/source/svxlink/linkmgr.src +../../svx/source/fmcomp/gridctrl.src +../../svx/source/fmcomp/showcols.src +../../svx/source/outliner/outliner.src +../../svx/source/unodraw/unodraw.src +../../svx/source/svdraw/svdstr.src +../../svx/source/stbctrls/stbctrls.src +../../svx/source/unodialogs/textconversiondlgs/chinese_translationdialog.src +../../svx/source/unodialogs/textconversiondlgs/chinese_dictionarydialog.src +../../svx/source/toolbars/fontworkbar.src +../../svx/source/toolbars/extrusionbar.src +../../svx/source/options/optlingu.src +../../svx/source/options/optasian.src +../../svx/source/options/optdict.src +../../svx/source/options/optinet2.src +../../svx/source/options/optspell.src +../../svx/source/options/optsave.src +../../svx/source/options/optgrid.src +../../svx/source/options/multipat.src +../../svx/source/options/optcolor.src +../../svx/source/options/optpath.src +../../svx/source/options/optctl.src +../../svx/source/options/optaccessibility.src +../../svx/source/options/optjsearch.src +../../svx/source/options/optgenrl.src +../../svx/source/gallery2/gallery.src +../../svx/source/gallery2/galtheme.src +../../svx/source/tbxctrls/extrusioncontrols.src +../../svx/source/tbxctrls/tbcontrl.src +../../svx/source/tbxctrls/fontworkgallery.src +../../svx/source/tbxctrls/lboxctrl.src +../../svx/source/tbxctrls/linectrl.src +../../svx/source/tbxctrls/tbxdraw.src +../../svx/source/tbxctrls/grafctrl.src +../../svx/source/tbxctrls/colrctrl.src +../../vcl/source/src/menu.src +../../vcl/source/src/stdtext.src +../../vcl/source/src/images.src +../../vcl/source/src/helptext.src +../../vcl/source/src/btntext.src +../../vcl/source/src/units.src +../../uui/source/passworderrs.src +../../uui/source/logindlg.src +../../uui/source/passworddlg.src +../../uui/source/ids.src +../../uui/source/masterpassworddlg.src +../../uui/source/passcrtdlg.src +../../uui/source/cookiedg.src +../../uui/source/fltdlg.src +../../uui/source/masterpasscrtdlg.src +../../dbaccess/util/hidother.src +../../dbaccess/source/ui/app/app.src +../../dbaccess/source/ui/dlg/indexdialog.src +../../dbaccess/source/ui/dlg/RelationDlg.src +../../dbaccess/source/ui/dlg/queryfilter.src +../../dbaccess/source/ui/dlg/AdvancedPageDlg.src +../../dbaccess/source/ui/dlg/queryorder.src +../../dbaccess/source/ui/dlg/dbadmin.src +../../dbaccess/source/ui/dlg/dsselect.src +../../dbaccess/source/ui/dlg/paramdialog.src +../../dbaccess/source/ui/dlg/CollectionView.src +../../dbaccess/source/ui/dlg/sqlmessage.src +../../dbaccess/source/ui/dlg/UserAdmin.src +../../dbaccess/source/ui/dlg/ConnectionPage.src +../../dbaccess/source/ui/dlg/dlgattr.src +../../dbaccess/source/ui/dlg/AutoControls.src +../../dbaccess/source/ui/dlg/dlgsave.src +../../dbaccess/source/ui/dlg/UserAdminDlg.src +../../dbaccess/source/ui/dlg/directsql.src +../../dbaccess/source/ui/dlg/dlgsize.src +../../dbaccess/source/ui/dlg/AdabasStat.src +../../dbaccess/source/ui/dlg/dbfindex.src +../../dbaccess/source/ui/dlg/dbadminsetup.src +../../dbaccess/source/ui/dlg/AdabasStatDlg.src +../../dbaccess/source/ui/dlg/adtabdlg.src +../../dbaccess/source/ui/dlg/dbadmin2.src +../../dbaccess/source/ui/uno/dbinteraction.src +../../dbaccess/source/ui/misc/WizardPages.src +../../dbaccess/source/ui/misc/dbumiscres.src +../../dbaccess/source/ui/control/undosqledit.src +../../dbaccess/source/ui/control/TableGrantCtrl.src +../../dbaccess/source/ui/control/tabletree.src +../../dbaccess/source/ui/imagelists/dbimagelists.src +../../dbaccess/source/ui/relationdesign/relation.src +../../dbaccess/source/ui/tabledesign/table.src +../../dbaccess/source/ui/querydesign/querydlg.src +../../dbaccess/source/ui/querydesign/query.src +../../dbaccess/source/ui/browser/bcommon.src +../../dbaccess/source/ui/browser/sbagrid.src +../../dbaccess/source/ui/browser/sbabrw.src +../../dbaccess/source/core/resource/strings.src +../../dbaccess/source/sdbtools/resource/sdbt_strings.src +../../sfx2/util/hidother.src +../../sfx2/source/doc/sfxbasemodel.src +../../sfx2/source/doc/doctempl.src +../../sfx2/source/doc/doc.src +../../sfx2/source/doc/secmacrowarnings.src +../../sfx2/source/doc/new.src +../../sfx2/source/doc/docvor.src +../../sfx2/source/doc/graphhelp.src +../../sfx2/source/doc/doctdlg.src +../../sfx2/source/appl/dde.src +../../sfx2/source/appl/newhelp.src +../../sfx2/source/appl/sfx.src +../../sfx2/source/appl/app.src +../../sfx2/source/menu/menu.src +../../sfx2/source/view/view.src +../../sfx2/source/bastyp/fltfnc.src +../../sfx2/source/bastyp/bastyp.src +../../sfx2/source/config/config.src +../../sfx2/source/dialog/recfloat.src +../../sfx2/source/dialog/templdlg.src +../../sfx2/source/dialog/newstyle.src +../../sfx2/source/dialog/dinfdlg.src +../../sfx2/source/dialog/alienwarn.src +../../sfx2/source/dialog/dinfedt.src +../../sfx2/source/dialog/printopt.src +../../sfx2/source/dialog/srchdlg.src +../../sfx2/source/dialog/mailwindow.src +../../sfx2/source/dialog/dialog.src +../../sfx2/source/dialog/macropg.src +../../sfx2/source/dialog/versdlg.src +../../sfx2/source/dialog/mgetempl.src +../../sfx2/source/dialog/filedlghelper.src +../../sfx2/source/dialog/cfg.src +../../sfx2/source/dialog/passwd.src +../../framework/util/hidother.src +../../framework/source/classes/resource.src +../../desktop/util/hidother.src +../../desktop/source/app/desktop.src +../../desktop/source/deployment/gui/dp_gui_dependencydialog.src +../../desktop/source/deployment/gui/dp_gui_backend.src +../../desktop/source/deployment/gui/dp_gui_versionboxes.src +../../desktop/source/deployment/gui/dp_gui_updatedialog.src +../../desktop/source/deployment/gui/dp_gui_updateinstalldialog.src +../../desktop/source/deployment/gui/dp_gui_dialog.src +../../desktop/source/deployment/misc/dp_misc.src +../../desktop/source/deployment/manager/dp_manager.src +../../desktop/source/deployment/unopkg/unopkg.src +../../desktop/source/deployment/registry/sfwk/dp_sfwk.src +../../desktop/source/deployment/registry/component/dp_component.src +../../desktop/source/deployment/registry/dp_registry.src +../../desktop/source/deployment/registry/configuration/dp_configuration.src +../../desktop/source/deployment/registry/script/dp_script.src +../../desktop/source/deployment/registry/package/dp_package.src +../../desktop/source/migration/migration.src +../../desktop/source/migration/wizard.src +../../basic/source/app/basic.src +../../basic/source/app/ttmsg.src +../../basic/source/app/svtmsg.src +../../basic/source/app/testtool.src +../../basic/source/app/basmsg.src +../../basic/source/sbx/format.src +../../basic/source/classes/sb.src +../../basic/workben/basmgr.src +../../forms/source/resource/xforms.src +../../forms/source/resource/strings.src +../../scaddins/source/datefunc/datefunc.src +../../scaddins/source/analysis/analysis_deffuncnames.src +../../scaddins/source/analysis/analysis.src +../../scaddins/source/analysis/analysis_funcnames.src +../../basctl/util/hidother.src +../../basctl/source/dlged/dlgresid.src +../../basctl/source/dlged/managelang.src +../../basctl/source/basicide/tbxctl.src +../../basctl/source/basicide/moptions.src +../../basctl/source/basicide/macrodlg.src +../../basctl/source/basicide/objdlg.src +../../basctl/source/basicide/basidesh.src +../../basctl/source/basicide/moduldlg.src +../../basctl/source/basicide/brkdlg.src +../../chart2/source/controller/menu/ContextMenu.src +../../chart2/source/controller/menu/MainMenu.src +../../chart2/source/controller/dialogs/tp_DataLabel.src +../../chart2/source/controller/dialogs/Strings_ChartTypes.src +../../chart2/source/controller/dialogs/dlg_InsertTitle.src +../../chart2/source/controller/dialogs/Strings.src +../../chart2/source/controller/dialogs/tp_SeriesStatistic.src +../../chart2/source/controller/dialogs/dlg_InsertDataLabel.src +../../chart2/source/controller/dialogs/Strings_Statistic.src +../../chart2/source/controller/dialogs/dlg_InsertLegend.src +../../chart2/source/controller/dialogs/dlg_RotateDiagram.src +../../chart2/source/controller/dialogs/tp_PointGeometry.src +../../chart2/source/controller/dialogs/dlg_ObjectProperties.src +../../chart2/source/controller/dialogs/Bitmaps_HC.src +../../chart2/source/controller/dialogs/tp_TitleRotation.src +../../chart2/source/controller/dialogs/dlg_ChartType.src +../../chart2/source/controller/dialogs/Bitmaps.src +../../chart2/source/controller/dialogs/dlg_InsertStatistic.src +../../chart2/source/controller/dialogs/Strings_Scale.src +../../chart2/source/controller/dialogs/tp_LegendPosition.src +../../chart2/source/controller/dialogs/dlg_InsertAxis_Grid.src +../../chart2/source/controller/dialogs/tp_AxisLabel.src +../../chart2/source/controller/dialogs/tp_SeriesToAxis.src +../../chart2/source/controller/dialogs/tp_Scale.src +../../scsolver/source/ui/scsolver.src +../../automation/source/miniapp/servres.src +../../svtools/util/hidother.src +../../svtools/bmpmaker/bmp.src +../../svtools/source/uno/unoifac2.src +../../svtools/source/java/javaerror.src +../../svtools/source/java/patchjavaerror.src +../../svtools/source/misc/imagemgr.src +../../svtools/source/misc/iniman.src +../../svtools/source/misc/config.src +../../svtools/source/misc/errtxt.src +../../svtools/source/misc/ehdl.src +../../svtools/source/misc/helpagent.src +../../svtools/source/control/ctrlbox.src +../../svtools/source/control/ctrltool.src +../../svtools/source/control/calendar.src +../../svtools/source/control/filectrl.src +../../svtools/source/dialogs/colrdlg.src +../../svtools/source/dialogs/addresstemplate.src +../../svtools/source/dialogs/prnsetup.src +../../svtools/source/dialogs/formats.src +../../svtools/source/dialogs/filedlg2.src +../../svtools/source/dialogs/so3res.src +../../svtools/source/dialogs/printdlg.src +../../svtools/source/dialogs/logindlg.src +../../svtools/source/dialogs/wizardmachine.src +../../svtools/source/misc1/mediatyp.src +../../svtools/source/brwbox/editbrowsebox.src +../../svtools/source/contnr/fileview.src +../../svtools/source/contnr/svcontnr.src +../../svtools/source/contnr/templwin.src +../../svtools/source/items1/cstitem.src +../../svtools/source/filter.vcl/filter/dlgepng.src +../../svtools/source/filter.vcl/filter/dlgexpor.src +../../svtools/source/filter.vcl/filter/dlgejpg.src +../../svtools/source/filter.vcl/filter/strings.src +../../svtools/source/Accessibility/accessiblelistboxentry.src +../../svtools/source/productregistration/registrationdlg.src +../../svtools/source/plugapp/commtest.src +../../svtools/source/plugapp/testtool.src +../../fpicker/source/office/OfficeFilePicker.src +../../fpicker/source/office/iodlg.src +../../filter/source/pdf/impdialog.src +../../filter/source/pdf/pdf.src +../../filter/source/t602/t602filter.src +../../filter/source/flash/impswfdialog.src +../../filter/source/xsltdialog/xmlfiltertabdialog.src +../../filter/source/xsltdialog/xmlfiltersettingsdialog.src +../../filter/source/xsltdialog/xmlfileview.src +../../filter/source/xsltdialog/xmlfilterdialogstrings.src +../../filter/source/xsltdialog/hidother.src +../../filter/source/xsltdialog/xmlfiltertabpagexslt.src +../../filter/source/xsltdialog/xmlfiltertestdialog.src +../../filter/source/xsltdialog/xmlfiltertabpagebasic.src +../../toolkit/source/awt/accessiblestrings.src +../../toolkit/source/awt/xthrobber.src +../../xmlsecurity/source/dialogs/warnings.src +../../xmlsecurity/source/dialogs/macrosecurity.src +../../xmlsecurity/source/dialogs/certificatechooser.src +../../xmlsecurity/source/dialogs/digitalsignaturesdialog.src +../../xmlsecurity/source/dialogs/certificateviewer.src +../../xmlsecurity/source/component/warnbox.src +../../padmin/source/rtsetup.src +../../padmin/source/padialog.src +../../goodies/source/inv/strings.src +../../goodies/source/inv/gegner.src +../../goodies/source/filter.vcl/eps/epsstr.src +../../goodies/source/filter.vcl/eps/dlgeps.src +../../goodies/source/filter.vcl/egif/dlgegif.src +../../goodies/source/filter.vcl/egif/egifstr.src +../../goodies/source/filter.vcl/epbm/dlgepbm.src +../../goodies/source/filter.vcl/epbm/epbmstr.src +../../goodies/source/filter.vcl/epgm/dlgepgm.src +../../goodies/source/filter.vcl/epgm/epgmstr.src +../../goodies/source/filter.vcl/eppm/dlgeppm.src +../../goodies/source/filter.vcl/eppm/eppmstr.src +../../goodies/source/filter.vcl/epict/dlgepct.src +../../goodies/source/filter.vcl/epict/epictstr.src +../../goodies/source/filter.vcl/eos2met/dlgeos2.src +../../goodies/source/filter.vcl/eos2met/eos2mstr.src +../../ucbhelper/workben/ucbexplorer/ucbexplorer.src +../../starmath/util/hidother.src +../../starmath/source/commands.src +../../starmath/source/symbol.src +../../starmath/source/menu_tmpl.src +../../starmath/source/smres.src +../../extensions/qa/complex/extensions/orl_de.src +../../extensions/qa/complex/extensions/orl_en-US.src +../../extensions/util/hidother.src +../../extensions/source/bibliography/menu.src +../../extensions/source/bibliography/toolbar.src +../../extensions/source/bibliography/datman.src +../../extensions/source/bibliography/sections.src +../../extensions/source/bibliography/hidother.src +../../extensions/source/bibliography/bib.src +../../extensions/source/scanner/grid.src +../../extensions/source/scanner/sanedlg.src +../../extensions/source/dbpilots/dbpilots.src +../../extensions/source/dbpilots/gridpages.src +../../extensions/source/dbpilots/listcombopages.src +../../extensions/source/dbpilots/groupboxpages.src +../../extensions/source/dbpilots/commonpagesdbp.src +../../extensions/source/abpilot/abspilot.src +../../extensions/source/update/ui/updatecheckui.src +../../extensions/source/propctrlr/taborder.src +../../extensions/source/propctrlr/listselectiondlg.src +../../extensions/source/propctrlr/formlinkdialog.src +../../extensions/source/propctrlr/fontdialog.src +../../extensions/source/propctrlr/selectlabeldialog.src +../../extensions/source/propctrlr/pcrmiscres.src +../../extensions/source/propctrlr/formres.src +../../extensions/source/propctrlr/newdatatype.src +../../extensions/source/propctrlr/propres.src +../../extensions/source/preload/preload.src +../../extensions/workben/testresource.src +../../avmedia/util/hidother.src +../../avmedia/source/framework/mediacontrol.src +../../avmedia/source/viewer/mediawindow.src +../../connectivity/source/resource/conn_shared_res.src +../../connectivity/source/drivers/hsqldb/hsqlui.src +../../scripting/source/runtimemgr/ScriptExecDialog.src +../../wizards/util/hidother.src +../../wizards/source/euro/euro.src +../../wizards/source/imagelists/imagelists.src +../../wizards/source/webwizard/webwizar.src +../../wizards/source/template/template.src +../../wizards/source/schedule/schedule.src +../../wizards/source/importwizard/importwi.src +../../wizards/source/formwizard/dbwizres.src diff --git a/toolkit/src2xml/sw.sh b/toolkit/src2xml/sw.sh new file mode 100644 index 000000000000..22f16d4b6c57 --- /dev/null +++ b/toolkit/src2xml/sw.sh @@ -0,0 +1,3 @@ +#! /bin/bash + +source/src2xml.py --include-path=$(tr '\n' ':' < include-sw.lst) --dry-run $(cat src-sw.lst) "$@" |