X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/eaa785079ca4234e6bb97983e24e54d7af21c257..2db3b9a6a40343d0a2b6c5008e5ed9768f4a7358:/misc/scripts/update_doc_libs.py diff --git a/misc/scripts/update_doc_libs.py b/misc/scripts/update_doc_libs.py index fbedee375e..1656c59547 100755 --- a/misc/scripts/update_doc_libs.py +++ b/misc/scripts/update_doc_libs.py @@ -1,100 +1,100 @@ -############################################################################## -# Name: misc/scripts/update_doc_libs.py -# Purpose: Automatically insert \Library{} headers in the doc files -# Created: 2007-07-28 -# RCS-ID: $Id: makeunixtags.sh 46320 2007-06-04 11:02:29Z VZ $ -# Copyright: (c) 2007 Francesco Montorsi -# Licence: wxWindows licence -############################################################################## - -from update_doc_utils import scanTexFiles - -INCLUDE_PATH="../../include" - -def myCallback(classname, texFileName, content, i): - tofix.add(texFileName) # consider this .tex broken - - # now search the include file for this class - include = "" - for j in range(i,len(content)): - line = content[j] - if "wx/" in line and ".h" in line: - include = line[line.find("wx/"):line.find(".h")+2] - break - if include == "": - print " no include file declared for class %s" % classname - return True # go on with next \class - - include = include.replace("\\_", "_") - print " the include file for %s is %s" % (classname, include) - - # does this .tex already contains the \wxheading{Library} section nearby the include file? - for k in range(j,min(len(content), j+3)): - line = content[k] - if "\wxheading{Library}" in line: - print " this \class section already has its \wxheading{Library} section... skipping" - tofix.remove(texFileName) # was a valid .tex (at least for current class) - return True # go on with next \class - - # now try to understand which lib contains this class - include = INCLUDE_PATH + "/" + include - header = open(include, "r") - if not header: - print " could not open %s" % include - return True # go on with next \class - - decl = "" - content2 = header.readlines() - - # if they exist append port-specific headers contents - for c in ["wx/gtk/", "wx/msw/", "wx/mac/", "wx/generic/"]: - try: - temp = include.replace("wx/", c) - print " trying to open %s..." % temp - header = open(temp, "r") - headercontents = header.readlines() - content2 = content2 + headercontents - print " added %d lines from %s" % (len(headercontents), temp) - except: - pass - - # now search for the export-declaration associated with this class - for line in content2: - if "class " in line and classname in line: - if line.find("class") < line.find(classname): # could be a comment - if "_" in line: - decl = line[line.find("_")+1:] - decl = decl[:decl.find(" ")] - decl = decl.replace("FWD_", "") - decl = decl[0:1].upper() + decl[1:].lower() - break - elif " WXDLLEXPORT " in line: - decl = "Core" - break - - if decl == "": - print " no declaration associated with %s" % classname - return True # go on with next \class - - print " the declaration associated with %s is %s" % (classname, decl) - tofix.remove(texFileName) # was a valid .tex (at least for current class) - - # now modify the .tex file - content.insert(j+2, "\wxheading{Library}\n\n\helpref{wx%s}{librarieslist}\n\n" % decl) - - # write it - file = open(texFileName, "w") - file.write(''.join(content)) - file.flush() - - print " updated %s" % texFileName - fixed = fixed+1 - - return True - -fixed = 0 -tofix = set() -count = scanTexFiles(myCallback) - -print "\nProcessed %d files, automatically fixed %d files." % (count, fixed) -print "There are %d files to fix manually:\n%s" % (len(tofix), '\n'.join(tofix)) +############################################################################## +# Name: misc/scripts/update_doc_libs.py +# Purpose: Automatically insert \Library{} headers in the doc files +# Created: 2007-07-28 +# RCS-ID: $Id$ +# Copyright: (c) 2007 Francesco Montorsi +# Licence: wxWindows licence +############################################################################## + +from update_doc_utils import scanTexFiles + +INCLUDE_PATH="../../include" + +def myCallback(classname, texFileName, content, i): + tofix.add(texFileName) # consider this .tex broken + + # now search the include file for this class + include = "" + for j in range(i,len(content)): + line = content[j] + if "wx/" in line and ".h" in line: + include = line[line.find("wx/"):line.find(".h")+2] + break + if include == "": + print " no include file declared for class %s" % classname + return True # go on with next \class + + include = include.replace("\\_", "_") + print " the include file for %s is %s" % (classname, include) + + # does this .tex already contains the \wxheading{Library} section nearby the include file? + for k in range(j,min(len(content), j+3)): + line = content[k] + if "\wxheading{Library}" in line: + print " this \class section already has its \wxheading{Library} section... skipping" + tofix.remove(texFileName) # was a valid .tex (at least for current class) + return True # go on with next \class + + # now try to understand which lib contains this class + include = INCLUDE_PATH + "/" + include + header = open(include, "r") + if not header: + print " could not open %s" % include + return True # go on with next \class + + decl = "" + content2 = header.readlines() + + # if they exist append port-specific headers contents + for c in ["wx/gtk/", "wx/msw/", "wx/mac/", "wx/generic/"]: + try: + temp = include.replace("wx/", c) + print " trying to open %s..." % temp + header = open(temp, "r") + headercontents = header.readlines() + content2 = content2 + headercontents + print " added %d lines from %s" % (len(headercontents), temp) + except: + pass + + # now search for the export-declaration associated with this class + for line in content2: + if "class " in line and classname in line: + if line.find("class") < line.find(classname): # could be a comment + if "_" in line: + decl = line[line.find("_")+1:] + decl = decl[:decl.find(" ")] + decl = decl.replace("FWD_", "") + decl = decl[0:1].upper() + decl[1:].lower() + break + elif " WXDLLEXPORT " in line: + decl = "Core" + break + + if decl == "": + print " no declaration associated with %s" % classname + return True # go on with next \class + + print " the declaration associated with %s is %s" % (classname, decl) + tofix.remove(texFileName) # was a valid .tex (at least for current class) + + # now modify the .tex file + content.insert(j+2, "\wxheading{Library}\n\n\helpref{wx%s}{librarieslist}\n\n" % decl) + + # write it + file = open(texFileName, "w") + file.write(''.join(content)) + file.flush() + + print " updated %s" % texFileName + fixed = fixed+1 + + return True + +fixed = 0 +tofix = set() +count = scanTexFiles(myCallback) + +print "\nProcessed %d files, automatically fixed %d files." % (count, fixed) +print "There are %d files to fix manually:\n%s" % (len(tofix), '\n'.join(tofix))