-tofix = set()\r
-count = 0\r
-for f in glob.glob('*.tex'):\r
- file = open(f, "r")\r
- if not file:\r
- print "could not open %s" % f\r
- continue\r
- print "opened file %s" % f\r
- count = count + 1\r
- \r
- # search \class\r
- content = file.readlines()\r
- classdecl = 0\r
- for i in range(len(content)):\r
- line = content[i]\r
- if "\class{" in line:\r
- classdecl = classdecl + 1\r
- \r
- classname = line\r
- classname = classname[classname.find("\class{"):]\r
- classname = classname[classname.find("{")+1:classname.find("}")]\r
- print " the class declared is named '%s'" % classname\r
- \r
- tofix.add(f) # consider this .tex broken\r
- \r
- # now search the include file for this class\r
- include = ""\r
- for j in range(i,len(content)):\r
- line = content[j]\r
- if "wx/" in line and ".h" in line:\r
- include = line[line.find("wx/"):line.find(".h")+2]\r
+INCLUDE_PATH="../../include"\r
+\r
+def myCallback(classname, texFileName, content, i):\r
+ tofix.add(texFileName) # consider this .tex broken\r
+\r
+ # now search the include file for this class\r
+ include = ""\r
+ for j in range(i,len(content)):\r
+ line = content[j]\r
+ if "wx/" in line and ".h" in line:\r
+ include = line[line.find("wx/"):line.find(".h")+2]\r
+ break\r
+ if include == "":\r
+ print " no include file declared for class %s" % classname\r
+ return True # go on with next \class\r
+\r
+ include = include.replace("\\_", "_")\r
+ print " the include file for %s is %s" % (classname, include)\r
+\r
+ # does this .tex already contains the \wxheading{Library} section nearby the include file?\r
+ for k in range(j,min(len(content), j+3)):\r
+ line = content[k]\r
+ if "\wxheading{Library}" in line:\r
+ print " this \class section already has its \wxheading{Library} section... skipping"\r
+ tofix.remove(texFileName) # was a valid .tex (at least for current class)\r
+ return True # go on with next \class\r
+\r
+ # now try to understand which lib contains this class\r
+ include = INCLUDE_PATH + "/" + include\r
+ header = open(include, "r")\r
+ if not header:\r
+ print " could not open %s" % include\r
+ return True # go on with next \class\r
+\r
+ decl = ""\r
+ content2 = header.readlines()\r
+\r
+ # if they exist append port-specific headers contents\r
+ for c in ["wx/gtk/", "wx/msw/", "wx/mac/", "wx/generic/"]:\r
+ try:\r
+ temp = include.replace("wx/", c)\r
+ print " trying to open %s..." % temp\r
+ header = open(temp, "r")\r
+ headercontents = header.readlines()\r
+ content2 = content2 + headercontents\r
+ print " added %d lines from %s" % (len(headercontents), temp)\r
+ except:\r
+ pass\r
+\r
+ # now search for the export-declaration associated with this class\r
+ for line in content2:\r
+ if "class " in line and classname in line:\r
+ if line.find("class") < line.find(classname): # could be a comment\r
+ if "_" in line:\r
+ decl = line[line.find("_")+1:]\r
+ decl = decl[:decl.find(" ")]\r
+ decl = decl.replace("FWD_", "")\r
+ decl = decl[0:1].upper() + decl[1:].lower()\r
+ break\r
+ elif " WXDLLEXPORT " in line:\r
+ decl = "Core"\r