diff options
author | Kohei Yoshida <kyoshida@novell.com> | 2007-07-03 14:33:58 +0000 |
---|---|---|
committer | Kohei Yoshida <kyoshida@novell.com> | 2007-07-03 14:33:58 +0000 |
commit | 389e408a473070b0656269e2f65fe3dad1e1ba43 (patch) | |
tree | 854a343571f591aae7c705f8a835c3f1166b4cb5 /scratch/layout-src2xml | |
parent | 7d8d77e31b48a9e000832a820143d8efb7a3c735 (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-x | scratch/layout-src2xml/dryrunall.sh | 2 | ||||
-rw-r--r-- | scratch/layout-src2xml/include-sc.lst | 7 | ||||
-rw-r--r-- | scratch/layout-src2xml/include-sd.lst | 5 | ||||
-rwxr-xr-x | scratch/layout-src2xml/sc.sh | 3 | ||||
-rwxr-xr-x | scratch/layout-src2xml/sd.sh | 3 | ||||
-rw-r--r-- | scratch/layout-src2xml/source/globals.py | 15 | ||||
-rw-r--r-- | scratch/layout-src2xml/source/macroparser.py | 4 | ||||
-rwxr-xr-x | scratch/layout-src2xml/source/src2xml.py | 11 | ||||
-rw-r--r-- | scratch/layout-src2xml/source/srclexer.py | 232 | ||||
-rw-r--r-- | scratch/layout-src2xml/source/srcparser.py | 6 | ||||
-rw-r--r-- | scratch/layout-src2xml/src-sc.lst | 57 | ||||
-rw-r--r-- | scratch/layout-src2xml/src-sd.lst | 124 |
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 |