diff --git a/misc/scripts/update_doc_libs.py b/misc/scripts/update_doc_libs.py new file mode 100644 index 0000000000..3a57056ca2 --- /dev/null +++ b/misc/scripts/update_doc_libs.py @@ -0,0 +1,109 @@ +############################################################################## +# 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 +############################################################################## + +import sys, os, glob, distutils.file_util + +tofix = set() +count = 0 +for f in glob.glob('*.tex'): + file = open(f, "r") + if not file: + print "could not open %s" % f + continue + print "opened file %s" % f + count = count + 1 + + # search \class + content = file.readlines() + classdecl = 0 + for i in range(len(content)): + line = content[i] + if "\class{" in line: + classdecl = classdecl + 1 + + classname = line + classname = classname[classname.find("\class{"):] + classname = classname[classname.find("{")+1:classname.find("}")] + print " the class declared is named '%s'" % classname + + tofix.add(f) # 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 + continue + + include = include.replace("\\_", "_") + print " the include file for %s is %s" % (classname, include) + + # now try to understand which libs contains this class + include = "../../../include/" + include + header = open(include, "r") + if not file: + print " could not open %s" % include + continue + + 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 + + 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 + continue + + print " the declaration associated with %s is %s" % (classname, decl) + tofix.remove(f) # 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(f, "w") + file.write(''.join(content)) + file.flush() + + file = open(f, "r") + + print " updated %s" % f + + + print " file %s contains %d class declarations" % (f, classdecl) + +print "\nProcessed %d files." % count +print "There are %d files to fix:\n%s" % (len(tofix), '\n'.join(tofix))