X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/e78e8fdbfdcf104a96f04d5e7ebf0ed2c3d95c93..ce1245e1fa3d59428e5f3c9bb78d77bcfe9e586c:/wxPython/docs/bin/pythonize_docs.py
diff --git a/wxPython/docs/bin/pythonize_docs.py b/wxPython/docs/bin/pythonize_docs.py
new file mode 100644
index 0000000000..52259bcd06
--- /dev/null
+++ b/wxPython/docs/bin/pythonize_docs.py
@@ -0,0 +1,119 @@
+import sys, os, string, glob
+import re
+from docparser.wxclasses import *
+from docparser.wxhtmlparse import *
+import wx
+
+# HTML macros
+html_heading = "
%s
"
+
+def classToHTML(name, thisclass):
+ global outdir, classes
+ page = open(os.path.join(outdir, "wx_" + name.lower() + ".html"), "w")
+ classname = namespacify_wxClasses(name)
+ page.write(thisclass.asHtml())
+ page.write("
" + html_heading % "Methods")
+
+ methods = thisclass.methods
+ if len(thisclass.derivedFrom) > 0:
+ for parentclass in thisclass.derivedFrom:
+ classname = parentclass.replace("wx.", "wx")
+ if classname in classes.keys():
+ derivedmethods = classes[classname].methods
+ if parentclass in derivedmethods:
+ derivedmethods.pop(parentclass)
+ methods.update(derivedmethods)
+
+ methodnames = sortMethods(classname, methods.keys())
+
+ for method in methodnames:
+ page.write("%s" % (methods[method].getAnchorName(), method))
+
+ page.write("
")
+
+ for method in methodnames:
+ page.write(methods[method].asHtml())
+ page.write("
")
+ page.close()
+
+def sortMethods(classname, methodnames):
+ names = methodnames
+ names.sort()
+ # bump the constructor to the top of the list.
+ if classname in names:
+ names.remove(classname)
+ names.insert(0, classname)
+
+ return names
+
+def makeDocString(name, docstring, longdocs=""):
+ myname = name.replace("wx.", "wx")
+ return "DocStr(%s, \"%s\", \"%s\");\n\n" % (myname, docstring, longdocs)
+
+def classToReST(name, thisclass):
+ global restdir
+ page = open(os.path.join(restdir, "_" + name + "_docstrings.i"), "w")
+ page.write(makeDocString(thisclass.name, thisclass.description))
+
+ classname = namespacify_wxClasses(name)
+ methodnames = sortMethods(classname, thisclass.methods.keys())
+
+ for method in methodnames:
+ docstr = makeDocString(name + "::" + method.replace("wx.", "wx"), thisclass.methods[method].asReST())
+ page.write(docstr)
+
+ page.close()
+
+
+docspath = sys.argv[1]
+if not os.path.isdir(docspath):
+ # get default directory
+ print "Please specify the directory where docs are located."
+
+outdir = os.path.join(docspath, outputdir)
+if not os.path.exists(outdir):
+ os.makedirs(outdir)
+
+restdir = os.path.join(docspath, "docstrings")
+if not os.path.exists(restdir):
+ os.makedirs(restdir)
+
+classes_page = os.path.join(docspath, "wx_classref.html")
+print "docspath: %s" % (classes_page)
+if os.path.exists(classes_page):
+
+ # first, add namespace conventions to classes page.
+ output = open(os.path.join(outdir, os.path.basename(classes_page)), "w")
+ output.write("")
+
+ propsfile = open(os.path.join(outdir, "props.py"), "w")
+ propsfile.write("import wx\n\n")
+
+ # now, change the classes.
+ print "parsing wx HTML docs..."
+ classes = getClasses(classes_page)
+ names = classes.keys()
+ names.sort()
+ propConflicts = []
+ for name in names:
+ basename = name.replace("wx", "")
+ urlname = "wx_%s.html" % name.lower()
+ output.write("%s
" % (urlname, basename))
+ print "creating HTML docs for " + name
+ classToHTML(name, classes[name])
+ print "creating rest docs for " + name
+ classToReST(name, classes[name])
+ propsfile.write(classes[name].createProps())
+
+ propsfile.close()
+ output.write("")
+ output.close()
+
+ print "prop conflicts: " + `propConflicts`
+
+#for doc in glob.glob(os.path.join(docspath, "wx_*.html")):
+# print "doc is: %s" % (doc)
+# pythonize_doc(doc)
+
+
+
\ No newline at end of file