summaryrefslogtreecommitdiff
path: root/scratch/layout-src2xml
diff options
context:
space:
mode:
authorKohei Yoshida <kyoshida@novell.com>2007-07-03 14:33:58 +0000
committerKohei Yoshida <kyoshida@novell.com>2007-07-03 14:33:58 +0000
commit389e408a473070b0656269e2f65fe3dad1e1ba43 (patch)
tree854a343571f591aae7c705f8a835c3f1166b4cb5 /scratch/layout-src2xml
parent7d8d77e31b48a9e000832a820143d8efb7a3c735 (diff)
Re-worked.
* scratch/layout-src2xml/*.sh: re-worked. * scratch/layout-src2xml/include-*.lst: individual include list for each module. * scratch/layout-src2xml/src-*.lst: individual src list for each module. * scratch/layout-src2xml/source/*.py: added support for code visibility tracking with #if ... #elif ... #else ... #endif type of macros.
Diffstat (limited to 'scratch/layout-src2xml')
-rwxr-xr-xscratch/layout-src2xml/dryrunall.sh2
-rw-r--r--scratch/layout-src2xml/include-sc.lst7
-rw-r--r--scratch/layout-src2xml/include-sd.lst5
-rwxr-xr-xscratch/layout-src2xml/sc.sh3
-rwxr-xr-xscratch/layout-src2xml/sd.sh3
-rw-r--r--scratch/layout-src2xml/source/globals.py15
-rw-r--r--scratch/layout-src2xml/source/macroparser.py4
-rwxr-xr-xscratch/layout-src2xml/source/src2xml.py11
-rw-r--r--scratch/layout-src2xml/source/srclexer.py232
-rw-r--r--scratch/layout-src2xml/source/srcparser.py6
-rw-r--r--scratch/layout-src2xml/src-sc.lst57
-rw-r--r--scratch/layout-src2xml/src-sd.lst124
12 files changed, 397 insertions, 72 deletions
diff --git a/scratch/layout-src2xml/dryrunall.sh b/scratch/layout-src2xml/dryrunall.sh
index 1c024d035..b97b14d94 100755
--- a/scratch/layout-src2xml/dryrunall.sh
+++ b/scratch/layout-src2xml/dryrunall.sh
@@ -1 +1 @@
-./source/src2xml.py --dry-run --file-list=./src.lst --include-dir-list=./include.lst
+./source/src2xml.py --dry-run --file-list=./src.lst --include-dir-list=./include.lst $@
diff --git a/scratch/layout-src2xml/include-sc.lst b/scratch/layout-src2xml/include-sc.lst
new file mode 100644
index 000000000..0ba86f37e
--- /dev/null
+++ b/scratch/layout-src2xml/include-sc.lst
@@ -0,0 +1,7 @@
+../../build/current/solver/680/unxlngi6.pro/inc
+../../build/current/sc/inc
+../../build/current/sc/addin/inc
+../../build/current/sc/source/ui/inc
+../../build/current/sc/source/core/inc
+../../build/current/sc/source/filter/inc
+../../build/current/sc/unxlngi6.pro/inc
diff --git a/scratch/layout-src2xml/include-sd.lst b/scratch/layout-src2xml/include-sd.lst
new file mode 100644
index 000000000..f402276cf
--- /dev/null
+++ b/scratch/layout-src2xml/include-sd.lst
@@ -0,0 +1,5 @@
+../../build/current/solver/680/unxlngi6.pro/inc
+../../build/current/sd/inc
+../../build/current/sd/source/ui/inc
+../../build/current/sd/source/ui/slidesorter/inc
+../../build/current/sd/unxlngi6.pro/inc
diff --git a/scratch/layout-src2xml/sc.sh b/scratch/layout-src2xml/sc.sh
new file mode 100755
index 000000000..905fe79f4
--- /dev/null
+++ b/scratch/layout-src2xml/sc.sh
@@ -0,0 +1,3 @@
+#!/bin/bash
+
+./source/src2xml.py --file-list=./src-sc.lst --include-dir-list=./include-sc.lst --dry-run
diff --git a/scratch/layout-src2xml/sd.sh b/scratch/layout-src2xml/sd.sh
new file mode 100755
index 000000000..c2654acd9
--- /dev/null
+++ b/scratch/layout-src2xml/sd.sh
@@ -0,0 +1,3 @@
+#!/bin/bash
+
+./source/src2xml.py --file-list=./src-sd.lst --include-dir-list=./include-sd.lst --dry-run
diff --git a/scratch/layout-src2xml/source/globals.py b/scratch/layout-src2xml/source/globals.py
index 6177b047b..7bf6273bb 100644
--- a/scratch/layout-src2xml/source/globals.py
+++ b/scratch/layout-src2xml/source/globals.py
@@ -15,6 +15,21 @@ def output (msg):
sys.stdout.write(msg)
+def cloneList (list):
+ newlist = []
+ for item in list:
+ newlist.append(item)
+ return newlist
+
+
+def cloneDict (dict):
+ newdict = []
+ for key in dict.keys():
+ newdict[key] = dict[key]
+
+ return newdict
+
+
def removeQuote (text):
"""Remove quotes from a literal.
"""
diff --git a/scratch/layout-src2xml/source/macroparser.py b/scratch/layout-src2xml/source/macroparser.py
index 1fdb47d2f..c5d24aaf8 100644
--- a/scratch/layout-src2xml/source/macroparser.py
+++ b/scratch/layout-src2xml/source/macroparser.py
@@ -100,6 +100,7 @@ character is the open paren.
# tokinize it using lexer.
mclexer = srclexer.SrcLexer(content)
mclexer.expandHeaders = False
+ mclexer.inMacroDefine = True
mclexer.tokenize()
self.macro.tokens = mclexer.getTokens()
if self.debug:
@@ -119,7 +120,8 @@ character is the open paren.
n = len(macro.tokens)
if n == 0:
return False
- elif macro.name.startswith('SID_') or macro.name.startswith('RID_'):
+ 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
diff --git a/scratch/layout-src2xml/source/src2xml.py b/scratch/layout-src2xml/source/src2xml.py
index 494bb11ab..4cf80dd2a 100755
--- a/scratch/layout-src2xml/source/src2xml.py
+++ b/scratch/layout-src2xml/source/src2xml.py
@@ -35,18 +35,19 @@ def convert (filepath, params):
params.includeDirs[os.path.dirname(fullpath)] = True
chars = open(fullpath, 'r').read()
- lexer = SrcLexer(chars)
+ lexer = SrcLexer(chars, fullpath)
lexer.expandHeaders = not params.ignoreHeaders
lexer.includeDirs = params.includeDirs
lexer.stopOnHeader = params.stopOnHeader
lexer.debugMacro = params.debugMacro
+# lexer.debug = True
if params.debugLexer:
lexer.debug = True
lexer.tokenize()
- error("-"*68 + "\n")
- error("** token dump\n")
- lexer.dumpTokens(True)
- error("** end of token dump\n")
+ output("-"*68 + "\n")
+ output("** token dump\n")
+ lexer.dumpTokens()
+ output("** end of token dump\n")
return
# Tokenize it using lexer
diff --git a/scratch/layout-src2xml/source/srclexer.py b/scratch/layout-src2xml/source/srclexer.py
index fc0629ed7..765c8da76 100644
--- a/scratch/layout-src2xml/source/srclexer.py
+++ b/scratch/layout-src2xml/source/srclexer.py
@@ -16,6 +16,7 @@ class BOF(Exception):
def str (self):
return "beginning of file"
+
def removeHeaderQuotes (orig):
if len(orig) <= 2:
return orig
@@ -66,6 +67,13 @@ def dumpTokens (tokens, toError=False):
else:
sys.stdout.write(chars)
+
+class HeaderData(object):
+ def __init__ (self):
+ self.defines = {}
+ self.tokens = []
+
+
class SrcLexer(object):
"""Lexicographical analyzer for .src format.
@@ -73,26 +81,36 @@ 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 = {}
- def __init__ (self, chars):
+ 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)
# Properties that can be copied.
+ self.headerList = {}
self.debug = False
self.debugMacro = False
self.includeDirs = {}
self.expandHeaders = True
+ self.inMacroDefine = False
self.stopOnHeader = False
def copyProperties (self, other):
"""Copy properties from another instance of SrcLexer."""
+ self.headerList = other.headerList
self.debug = other.debug
self.debugMacro = other.debugMacro
- self.includeDirs = other.includeDirs
+ self.includeDirs = other.includeDirs.copy()
self.expandHeaders = other.expandHeaders
+ self.inMacroDefine = other.inMacroDefine
self.stopOnHeader = other.stopOnHeader
def init (self):
@@ -100,6 +118,7 @@ build the syntax tree.
self.token = ''
self.tokens = []
self.defines = {}
+ self.visibilityStack = []
def getTokens (self):
return self.tokens
@@ -133,6 +152,14 @@ build the syntax tree.
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()
@@ -143,13 +170,15 @@ build the syntax tree.
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 == '/':
+ if c == '#':
+ i = self.pound(i)
+ elif c == '/':
i = self.slash(i)
elif c == "\n":
i = self.lineBreak(i)
- elif c == '#':
- i = self.pound(i)
elif c == '"':
i = self.doubleQuote(i)
elif c in [' ', "\t"]:
@@ -157,7 +186,7 @@ build the syntax tree.
elif c in ";()[]{}<>,=+-*":
# Any outstanding single-character token.
i = self.anyToken(i, c)
- else:
+ elif self.isCodeVisible():
self.token += c
try:
@@ -169,11 +198,12 @@ build the syntax tree.
self.tokens.append(self.token)
if self.parentLexer == None and self.debug:
- output("all defines found:\n")
+ output("-"*68 + "\n")
+ output("All defines found in this translation unit:\n")
keys = self.defines.keys()
keys.sort()
for key in keys:
- output(" %s\n"%key)
+ output("@ %s\n"%key)
def dumpTokens (self, toError=False):
dumpTokens(self.tokens, toError)
@@ -189,18 +219,28 @@ build the syntax tree.
# 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)
@@ -212,29 +252,97 @@ build the syntax tree.
break
if c == "\n":
+ if len(buf) > 0 and len(command) == 0:
+ command = buf
i = self.prevPos(i)
break
- elif c in [' ', "\t"] and len(buf) > 0:
+ 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
- # Use another instance of lexer to tokinize the content of the
- # preprocessor macro.
-
if command == 'define':
- self.__getMacroDefine(buf)
+ self.handleMacroDefine(buf)
elif command == 'include':
- self.__getMacroInclude(buf)
+ 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 AssertWrong
+
+ 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 AssertWrong
+
+ 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 AssertWrong
+ 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 __getMacroDefine (self, buf):
+ def evalCodeVisibility (self, buf):
+ try:
+ return eval(buf)
+ except:
+ return True
+
+ def handleMacroDefine (self, buf):
mparser = macroparser.MacroParser(buf)
mparser.debug = self.debugMacro
@@ -242,35 +350,8 @@ build the syntax tree.
macro = mparser.getMacro()
if not macro == None:
self.defines[macro.name] = macro
- return
-
- pos = buf.find(' ')
- name = buf
- if pos < 0:
- name = buf
- else:
- name = buf[:pos]
- buf = buf[pos:]
-
- mclexer = SrcLexer(buf)
- mclexer.copyProperties(self)
- mclexer.parentLexer = self
- mclexer.expandHeaders = False
- mclexer.tokenize()
- tokens = mclexer.getTokens()
- if len(tokens) > 0:
- macro = Macro(name)
- macro.tokens = tokens
- self.defines[name] = macro
-
- if self.debug:
- error("-"*68 + "\n")
- error('#' + command + ' ' + name + "\n")
- mclexer.dumpTokens(True)
- error("end of define\n")
-
- def __getMacroInclude (self, buf):
+ def handleMacroInclude (self, buf):
# Strip excess string if any.
pos = buf.find(' ')
@@ -281,43 +362,68 @@ build the syntax tree.
if not self.expandHeaders:
# We don't want to expand headers. Bail out.
if self.debug:
- output("%s ignored\n", headerSub)
+ output("%s ignored\n"%headerSub)
return
defines = {}
headerPath = None
for includeDir in self.includeDirs.keys():
hpath = includeDir + '/' + headerSub
- if os.path.isfile(hpath):
+ if os.path.isfile(hpath) and hpath != self.filepath:
headerPath = hpath
break
if headerPath == None:
error("included header file " + headerSub + " not found\n", self.stopOnHeader)
return
- else:
+
+ if self.debug:
+ output("%s found\n"%headerPath)
+
+ if self.headerList.has_key(headerPath):
if self.debug:
- output("%s found\n"%headerPath)
- chars = open(headerPath, 'r').read()
- mclexer = SrcLexer(chars)
- mclexer.copyProperties(self)
- mclexer.parentLexer = self
- mclexer.expandHeaders = False
- mclexer.tokenize()
- headerDefines = mclexer.getDefines()
- for key in headerDefines.keys():
- defines[key] = headerDefines[key]
+ output("%s already included\n"%headerPath)
+ return
+
+ if SrcLexer.headerCache.has_key(headerPath):
+ if self.debug:
+ output("%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.headerList[headerPath] = True
+ SrcLexer.headerCache[headerPath] = hdrData
+
+ # Update the list of headers that have already been expaneded.
+ for key in mclexer.headerList.keys():
+ self.headerList[key] = True
if self.debug:
- output("defines found in header:\n")
+ output("defines found in header %s:\n"%headerSub)
for key in defines.keys():
- output(" %s\n"%key)
+ output(" '%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 = ''
@@ -345,14 +451,19 @@ build the syntax tree.
def lineBreak (self, i):
-
self.firstNonBlank = ''
+ 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:
@@ -367,6 +478,9 @@ build the syntax tree.
def anyToken (self, i, token):
+ if not self.isCodeVisible():
+ return i
+
self.maybeAddToken()
self.token = token
self.maybeAddToken()
diff --git a/scratch/layout-src2xml/source/srcparser.py b/scratch/layout-src2xml/source/srcparser.py
index 0fd352ee3..581fd2be6 100644
--- a/scratch/layout-src2xml/source/srcparser.py
+++ b/scratch/layout-src2xml/source/srcparser.py
@@ -2,12 +2,6 @@ import sys
from globals import *
import srclexer
-def cloneList (list):
- newlist = []
- for item in list:
- newlist.append(item)
- return newlist
-
def transName (name):
"""Translate a mixed-casing name to dash-separated name.
diff --git a/scratch/layout-src2xml/src-sc.lst b/scratch/layout-src2xml/src-sc.lst
new file mode 100644
index 000000000..d568ae1a7
--- /dev/null
+++ b/scratch/layout-src2xml/src-sc.lst
@@ -0,0 +1,57 @@
+../../build/current/sc/util/hidother.src
+../../build/current/sc/addin/datefunc/dfa.src
+../../build/current/sc/addin/rot13/rot13.src
+../../build/current/sc/source/ui/src/crnrdlg.src
+../../build/current/sc/source/ui/src/hdrcont.src
+../../build/current/sc/source/ui/src/solvrdlg.src
+../../build/current/sc/source/ui/src/miscdlgs.src
+../../build/current/sc/source/ui/src/tabopdlg.src
+../../build/current/sc/source/ui/src/popup.src
+../../build/current/sc/source/ui/src/autofmt.src
+../../build/current/sc/source/ui/src/toolbox.src
+../../build/current/sc/source/ui/src/opredlin.src
+../../build/current/sc/source/ui/src/namedlg.src
+../../build/current/sc/source/ui/src/sortdlg.src
+../../build/current/sc/source/ui/src/textdlgs.src
+../../build/current/sc/source/ui/src/optdlg.src
+../../build/current/sc/source/ui/src/scwarngs.src
+../../build/current/sc/source/ui/src/scfuncs.src
+../../build/current/sc/source/ui/src/filter.src
+../../build/current/sc/source/ui/src/simpref.src
+../../build/current/sc/source/ui/src/attrdlg.src
+../../build/current/sc/source/ui/src/sc.src
+../../build/current/sc/source/ui/src/globstr.src
+../../build/current/sc/source/ui/src/scstring.src
+../../build/current/sc/source/ui/src/dbnamdlg.src
+../../build/current/sc/source/ui/src/subtdlg.src
+../../build/current/sc/source/ui/src/pseudo.src
+../../build/current/sc/source/ui/src/condfrmt.src
+../../build/current/sc/source/ui/src/chartdlg.src
+../../build/current/sc/source/ui/src/scerrors.src
+../../build/current/sc/source/ui/dbgui/outline.src
+../../build/current/sc/source/ui/dbgui/pvfundlg.src
+../../build/current/sc/source/ui/dbgui/scendlg.src
+../../build/current/sc/source/ui/dbgui/pivot.src
+../../build/current/sc/source/ui/dbgui/dpgroupdlg.src
+../../build/current/sc/source/ui/dbgui/dapitype.src
+../../build/current/sc/source/ui/dbgui/imoptdlg.src
+../../build/current/sc/source/ui/dbgui/consdlg.src
+../../build/current/sc/source/ui/dbgui/validate.src
+../../build/current/sc/source/ui/dbgui/asciiopt.src
+../../build/current/sc/source/ui/drawfunc/objdraw.src
+../../build/current/sc/source/ui/drawfunc/drformsh.src
+../../build/current/sc/source/ui/styleui/scstyles.src
+../../build/current/sc/source/ui/styleui/styledlg.src
+../../build/current/sc/source/ui/formdlg/parawin.src
+../../build/current/sc/source/ui/formdlg/dwfunctr.src
+../../build/current/sc/source/ui/formdlg/formdlgs.src
+../../build/current/sc/source/ui/navipi/navipi.src
+../../build/current/sc/source/ui/miscdlgs/acredlin.src
+../../build/current/sc/source/ui/miscdlgs/highred.src
+../../build/current/sc/source/ui/miscdlgs/linkarea.src
+../../build/current/sc/source/ui/miscdlgs/instbdlg.src
+../../build/current/sc/source/ui/pagedlg/pagedlg.src
+../../build/current/sc/source/ui/pagedlg/tphf.src
+../../build/current/sc/source/ui/pagedlg/hfedtdlg.src
+../../build/current/sc/source/ui/docshell/tpstat.src
+../../build/current/sc/source/core/src/compiler.src
diff --git a/scratch/layout-src2xml/src-sd.lst b/scratch/layout-src2xml/src-sd.lst
new file mode 100644
index 000000000..4f30cce0c
--- /dev/null
+++ b/scratch/layout-src2xml/src-sd.lst
@@ -0,0 +1,124 @@
+../../build/current/sd/util/hidother.src
+../../build/current/sd/source/ui/app/tbxids_tmpl.src
+../../build/current/sd/source/ui/app/popup2_tmpl.src
+../../build/current/sd/source/ui/app/popup.src
+../../build/current/sd/source/ui/app/toolbox.src
+../../build/current/sd/source/ui/app/menuids2_tmpl.src
+../../build/current/sd/source/ui/app/sdstring.src
+../../build/current/sd/source/ui/app/menu_tmpl.src
+../../build/current/sd/source/ui/app/strings.src
+../../build/current/sd/source/ui/app/menuids_tmpl.src
+../../build/current/sd/source/ui/app/accel_tmpl.src
+../../build/current/sd/source/ui/app/tbx_ww.src
+../../build/current/sd/source/ui/app/accelids_tmpl.src
+../../build/current/sd/source/ui/app/menuportal_tmpl.src
+../../build/current/sd/source/ui/app/menuids3_tmpl.src
+../../build/current/sd/source/ui/app/app.src
+../../build/current/sd/source/ui/app/res_bmp.src
+../../build/current/sd/source/ui/app/pseudo.src
+../../build/current/sd/source/ui/app/menuids4_tmpl.src
+../../build/current/sd/source/ui/app/toolbox2_tmpl.src
+../../build/current/sd/source/ui/dlg/headerfooterdlg.src
+../../build/current/sd/source/ui/dlg/dlgfield.src
+../../build/current/sd/source/ui/dlg/sdobjpal.src
+../../build/current/sd/source/ui/dlg/morphdlg.src
+../../build/current/sd/source/ui/dlg/PaneDockingWindow.src
+../../build/current/sd/source/ui/dlg/dlgsnap.src
+../../build/current/sd/source/ui/dlg/tpoption.src
+../../build/current/sd/source/ui/dlg/present.src
+../../build/current/sd/source/ui/dlg/sdpreslt.src
+../../build/current/sd/source/ui/dlg/dlgass.src
+../../build/current/sd/source/ui/dlg/tpaction.src
+../../build/current/sd/source/ui/dlg/prntopts.src
+../../build/current/sd/source/ui/dlg/prltempl.src
+../../build/current/sd/source/ui/dlg/custsdlg.src
+../../build/current/sd/source/ui/dlg/inspagob.src
+../../build/current/sd/source/ui/dlg/paragr.src
+../../build/current/sd/source/ui/dlg/dlgpage.src
+../../build/current/sd/source/ui/dlg/vectdlg.src
+../../build/current/sd/source/ui/dlg/dlgolbul.src
+../../build/current/sd/source/ui/dlg/copydlg.src
+../../build/current/sd/source/ui/dlg/dlg_char.src
+../../build/current/sd/source/ui/dlg/printdlg.src
+../../build/current/sd/source/ui/dlg/ins_page.src
+../../build/current/sd/source/ui/dlg/animobjs.src
+../../build/current/sd/source/ui/dlg/ins_paste.src
+../../build/current/sd/source/ui/dlg/tabtempl.src
+../../build/current/sd/source/ui/dlg/LayerDialog.src
+../../build/current/sd/source/ui/dlg/masterlayoutdlg.src
+../../build/current/sd/source/ui/dlg/navigatr.src
+../../build/current/sd/source/ui/dlg/brkdlg.src
+../../build/current/sd/source/ui/slidesorter/shell/SlideSorterChildWindow.src
+../../build/current/sd/source/ui/notes/NotesChildWindow.src
+../../build/current/sd/source/ui/toolpanel/ToolPanelChildWindow.src
+../../build/current/sd/source/ui/animations/CustomAnimationCreateDialog.src
+../../build/current/sd/source/ui/animations/CustomAnimationDialog.src
+../../build/current/sd/source/ui/animations/CustomAnimation.src
+../../build/current/sd/source/ui/animations/CustomAnimationSchemesPane.src
+../../build/current/sd/source/ui/animations/SlideTransitionPane.src
+../../build/current/sd/source/ui/animations/AnimationSchemesPane.src
+../../build/current/sd/source/ui/animations/CustomAnimationPane.src
+../../build/current/sd/source/ui/accessibility/accessibility.src
+../../build/current/sd/source/ui/slideshow/slideshow.src
+../../build/current/sd/source/core/glob.src
+../../build/current/sd/source/filter/html/pubdlg.src
+../../build/current/sd/unxlngi6.pro/inc/menu.src
+../../build/current/sd/unxlngi6.pro/inc/menuids2.src
+../../build/current/sd/unxlngi6.pro/inc/menuids3.src
+../../build/current/sd/unxlngi6.pro/inc/menuids4.src
+../../build/current/sd/unxlngi6.pro/inc/popup2.src
+../../build/current/sd/unxlngi6.pro/inc/toolbox2.src
+../../build/current/sd/unxlngi6.pro/inc/accel.src
+../../build/current/sd/unxlngi6.pro/inc/menuids.src
+../../build/current/sd/unxlngi6.pro/inc/menuportal.src
+../../build/current/sd/unxlngi6.pro/inc/accelids.src
+../../build/current/sd/unxlngi6.pro/inc/tbxids.src
+../../build/current/sd/unxlngi6.pro/misc/app/popup.src
+../../build/current/sd/unxlngi6.pro/misc/app/toolbox.src
+../../build/current/sd/unxlngi6.pro/misc/app/sdstring.src
+../../build/current/sd/unxlngi6.pro/misc/app/strings.src
+../../build/current/sd/unxlngi6.pro/misc/app/tbx_ww.src
+../../build/current/sd/unxlngi6.pro/misc/app/app.src
+../../build/current/sd/unxlngi6.pro/misc/app/res_bmp.src
+../../build/current/sd/unxlngi6.pro/misc/app/pseudo.src
+../../build/current/sd/unxlngi6.pro/misc/dlg/headerfooterdlg.src
+../../build/current/sd/unxlngi6.pro/misc/dlg/dlgfield.src
+../../build/current/sd/unxlngi6.pro/misc/dlg/morphdlg.src
+../../build/current/sd/unxlngi6.pro/misc/dlg/PaneDockingWindow.src
+../../build/current/sd/unxlngi6.pro/misc/dlg/dlgsnap.src
+../../build/current/sd/unxlngi6.pro/misc/dlg/tpoption.src
+../../build/current/sd/unxlngi6.pro/misc/dlg/present.src
+../../build/current/sd/unxlngi6.pro/misc/dlg/sdpreslt.src
+../../build/current/sd/unxlngi6.pro/misc/dlg/dlgass.src
+../../build/current/sd/unxlngi6.pro/misc/dlg/tpaction.src
+../../build/current/sd/unxlngi6.pro/misc/dlg/prntopts.src
+../../build/current/sd/unxlngi6.pro/misc/dlg/prltempl.src
+../../build/current/sd/unxlngi6.pro/misc/dlg/custsdlg.src
+../../build/current/sd/unxlngi6.pro/misc/dlg/inspagob.src
+../../build/current/sd/unxlngi6.pro/misc/dlg/paragr.src
+../../build/current/sd/unxlngi6.pro/misc/dlg/dlgpage.src
+../../build/current/sd/unxlngi6.pro/misc/dlg/vectdlg.src
+../../build/current/sd/unxlngi6.pro/misc/dlg/dlgolbul.src
+../../build/current/sd/unxlngi6.pro/misc/dlg/copydlg.src
+../../build/current/sd/unxlngi6.pro/misc/dlg/dlg_char.src
+../../build/current/sd/unxlngi6.pro/misc/dlg/printdlg.src
+../../build/current/sd/unxlngi6.pro/misc/dlg/ins_page.src
+../../build/current/sd/unxlngi6.pro/misc/dlg/animobjs.src
+../../build/current/sd/unxlngi6.pro/misc/dlg/ins_paste.src
+../../build/current/sd/unxlngi6.pro/misc/dlg/tabtempl.src
+../../build/current/sd/unxlngi6.pro/misc/dlg/LayerDialog.src
+../../build/current/sd/unxlngi6.pro/misc/dlg/masterlayoutdlg.src
+../../build/current/sd/unxlngi6.pro/misc/dlg/navigatr.src
+../../build/current/sd/unxlngi6.pro/misc/dlg/brkdlg.src
+../../build/current/sd/unxlngi6.pro/misc/core/glob.src
+../../build/current/sd/unxlngi6.pro/misc/html/pubdlg.src
+../../build/current/sd/unxlngi6.pro/misc/notes/NotesChildWindow.src
+../../build/current/sd/unxlngi6.pro/misc/accessibility/accessibility.src
+../../build/current/sd/unxlngi6.pro/misc/animui/CustomAnimationCreateDialog.src
+../../build/current/sd/unxlngi6.pro/misc/animui/CustomAnimationDialog.src
+../../build/current/sd/unxlngi6.pro/misc/animui/CustomAnimation.src
+../../build/current/sd/unxlngi6.pro/misc/animui/CustomAnimationSchemesPane.src
+../../build/current/sd/unxlngi6.pro/misc/animui/SlideTransitionPane.src
+../../build/current/sd/unxlngi6.pro/misc/animui/AnimationSchemesPane.src
+../../build/current/sd/unxlngi6.pro/misc/animui/CustomAnimationPane.src
+../../build/current/sd/unxlngi6.pro/misc/slideshow/slideshow.src