]> git.saurik.com Git - wxWidgets.git/commitdiff
New wxHtml stuff, including a TagHandler for placing wxPython widgets
authorRobin Dunn <robin@alldunn.com>
Fri, 17 Sep 1999 05:55:00 +0000 (05:55 +0000)
committerRobin Dunn <robin@alldunn.com>
Fri, 17 Sep 1999 05:55:00 +0000 (05:55 +0000)
on the html page.

Some other tweaks and fixes

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@3691 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

19 files changed:
utils/wxPython/demo/About.py [new file with mode: 0644]
utils/wxPython/demo/Main.py
utils/wxPython/demo/data/test.htm
utils/wxPython/demo/data/widgetTest.htm [new file with mode: 0644]
utils/wxPython/demo/widgetTest.py [new file with mode: 0644]
utils/wxPython/demo/wxGLCanvas.py
utils/wxPython/demo/wxHtmlWindow.py
utils/wxPython/demo/wxListCtrl.py
utils/wxPython/demo/wxScrolledWindow.py
utils/wxPython/lib/wxpTag.py [new file with mode: 0644]
utils/wxPython/modules/html/_extras.py [new file with mode: 0644]
utils/wxPython/modules/html/build.cfg
utils/wxPython/modules/html/html.cpp
utils/wxPython/modules/html/html.i
utils/wxPython/modules/html/html.py
utils/wxPython/modules/ogl/_extras.py
utils/wxPython/src/controls2.i
utils/wxPython/src/helpers.cpp
utils/wxPython/src/msw/controls2.cpp

diff --git a/utils/wxPython/demo/About.py b/utils/wxPython/demo/About.py
new file mode 100644 (file)
index 0000000..cde5f33
--- /dev/null
@@ -0,0 +1,46 @@
+
+from   wxPython.wx       import *
+from   wxPython.html     import *
+import wxPython.lib.wxpTag
+
+#---------------------------------------------------------------------------
+
+class MyAboutBox(wxDialog):
+    text = '''
+<html>
+<body bgcolor="#AC76DE">
+<center><table bgcolor="#458154" width="100%%" cellspacing="0" cellpadding="0" border="1">
+<tr>
+    <td align="center"><h1>wxPython %s</h1></td>
+</tr>
+</table>
+
+<p><b>wxPython</b> is a Python extension module that
+encapsulates the wxWindows GUI classes.</p>
+
+<p>This demo shows off some of the capabilities
+of <b>wxPython</b>.  Select items from the menu or tree control,
+sit back and enjoy.  Be sure to take a peek at the source code for each
+demo item so you can learn how to use the classes yourself.</p>
+
+<p><b>wxPython</b> is brought to you by <b>Robin Dunn</b> and<br>
+<b>Total Control Software</b>, Copyright (c) 1998-1999.</p>
+
+<p><font size="-1">Please see <i>license.txt</i> for licensing information.</font></p>
+
+<p><wxp class="wxButton">
+    <param name="label" value="Okay">
+    <param name="id"    value="wxID_OK">
+</wxp></p>
+</center>
+</body>
+</html>
+'''
+    def __init__(self, parent):
+        wxDialog.__init__(self, parent, -1, 'About wxPython')
+        self.html = wxHtmlWindow(self, -1, wxPoint(5,5), wxSize(400, 350))
+        self.html.SetPage(self.text % wx.__version__)
+        self.Fit()
+
+
+#---------------------------------------------------------------------------
index 175b0c4e151d38a04f28b14b320dc6d3adee11b0..2ff415103e94b8921f4a8174cd941f5272bb54be 100644 (file)
@@ -133,7 +133,7 @@ class wxPythonDemo(wxFrame):
         self.log = wxTextCtrl(splitter2, -1,
                               style = wxTE_MULTILINE|wxTE_READONLY|wxHSCROLL)
         (w, self.charHeight) = self.log.GetTextExtent('X')
-        #self.WriteText('wxPython Demo Log:\n')
+        self.WriteText('wxPython Demo Log:\n')
 
 
         # add the windows to the splitter and split it.
@@ -168,8 +168,9 @@ class wxPythonDemo(wxFrame):
         w, h = self.log.GetClientSizeTuple()
         numLines = h/self.charHeight
         x, y = self.log.PositionToXY(self.log.GetLastPosition())
-        self.log.ShowPosition(self.log.XYToPosition(x, y-numLines))
-        ##self.log.ShowPosition(self.log.GetLastPosition())
+        if y > numLines:
+            self.log.ShowPosition(self.log.XYToPosition(x, y-numLines))
+            ##self.log.ShowPosition(self.log.GetLastPosition())
         self.log.SetInsertionPointEnd()
 
     def write(self, txt):
@@ -265,6 +266,7 @@ class wxPythonDemo(wxFrame):
         #                        "of wxPython.\n\n"
         #                        "          Developed by Robin Dunn",
         #                       "About wxPython", wxOK)
+        from About import MyAboutBox
         about = MyAboutBox(self)
         about.ShowModal()
         about.Destroy()
@@ -296,44 +298,6 @@ class wxPythonDemo(wxFrame):
 
 
 
-#---------------------------------------------------------------------------
-#---------------------------------------------------------------------------
-
-class MyAboutBox(wxDialog):
-    text = '''
-<html>
-<body bgcolor="#AC76DE">
-<center><table bgcolor="#458154" width="100%%" cellspacing="0" cellpadding="0" border="1">
-<tr>
-    <td align="center"><h1>wxPython %s</h1></td>
-</tr>
-</table>
-
-<p><b>wxPython</b> is a Python extension module that
-encapsulates the wxWindows GUI classes.</p>
-
-<p>This demo shows off some of the capabilities
-of <b>wxPython</b>.  Select items from the menu or tree control,
-sit back and enjoy.  Be sure to take a peek at the source code for each
-demo item so you can learn how to use the classes yourself.</p>
-
-<p><b>wxPython</b> is brought to you by <b>Robin Dunn</b> and<br>
-<b>Total Control Software</b>, copyright 1999.</p>
-
-<p><font size="-1">Please see <i>license.txt</i> for licensing information.</font></p>
-</center>
-</body>
-</html>
-'''
-    def __init__(self, parent):
-        from wxPython.html import *
-        wxDialog.__init__(self, parent, -1, 'About wxPython')
-        self.html = wxHtmlWindow(self, -1, wxPoint(5,5), wxSize(400, 350))
-        self.html.SetPage(self.text % wx.__version__)
-        wxButton(self, wxID_OK, 'OK', wxPoint(5, 365)).SetDefault()
-        self.Fit()
-
-
 #---------------------------------------------------------------------------
 #---------------------------------------------------------------------------
 
index e860212a79d7de37d007805cfebbfb842fa19f19..8b65e2aaa648002bded37c22141816606f925080 100644 (file)
@@ -4,9 +4,9 @@
    <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
    <META NAME="GENERATOR" CONTENT="Mozilla/4.06 [en] (X11; I; Linux
    2.0.35 i686) [Netscape]">
-<TITLE>wxHTML Test</TITLE>
+<TITLE>wxPython does wxHTML!</TITLE>
 </HEAD>
-<BODY TEXT="#000000" BGCOLOR="#006600" LINK="#0000FF" VLINK="#FF0000" ALINK="#000088">
+<BODY TEXT="#000000" BGCOLOR="#008800" LINK="#0000FF" VLINK="#FF0000" ALINK="#000088">
 
 <b><a href="tables.htm">click here to go to tables test page!</a></b>
 <p>
diff --git a/utils/wxPython/demo/data/widgetTest.htm b/utils/wxPython/demo/data/widgetTest.htm
new file mode 100644 (file)
index 0000000..22d6398
--- /dev/null
@@ -0,0 +1,58 @@
+<html>
+<head>
+<title>wxHTML does wxPython!</title>
+</head>
+<body bgcolor="#00CCFF">
+<h2>Mixing wxPython and wxHTML</h2>
+The widgets on this page were created dynamically on the fly by a custom
+wxTagHandler found in wxPython.lib.wxpTag.  You can look at the sources
+and doc-string <a href="../../lib/wxpTag.py">here</a>.
+<p>
+The button below is added to the page like this:
+<pre>
+&lt;center>&lt;wxp class="wxButton" width="50%">
+    &lt;param name="label" value="It works!">
+    &lt;param name="id"    value="wxID_OK">
+&lt;/wxp>&lt;/center>
+</pre>
+<hr>
+<center>
+<wxp class="wxButton" width="50%">
+    <param name="label" value="It works!">
+    <param name="id"    value="wxID_OK">
+</wxp>
+</center>
+<p>
+Notice that the <b>button click</b> event is actually caught by the panel
+that contains this window, which then logs it in the window below.
+<p>
+<hr>
+<p>
+This is the same widget reused three times, each with a different
+parameter value.  Source code is <a href="../widgetTest.py">here</a>.
+<p>
+
+<wxp module="widgetTest" class="TestPanel" width=180 height=100>
+</wxp>
+
+<wxp module="widgetTest" class="TestPanel" width=180 height=100>
+    <param name="bgcolor" value="#00CCFF">
+</wxp>
+
+<wxp module="widgetTest" class="TestPanel" width=180 height=100>
+    <param name="bgcolor" value="#0000FF">
+</wxp>
+
+<p><hr><p>
+
+Recognize this one?<br>
+<wxp module="wxScrolledWindow" class="MyCanvas" height=300 width=100%>
+</wxp>
+
+<p><hr><p>
+You can also embed other wxHtmlWindows!<br>
+<center>
+<wxp module="widgetTest" class="TestHtmlPanel">
+</wxp>
+</center>
+</body></html>
diff --git a/utils/wxPython/demo/widgetTest.py b/utils/wxPython/demo/widgetTest.py
new file mode 100644 (file)
index 0000000..9a060d0
--- /dev/null
@@ -0,0 +1,49 @@
+
+
+from wxPython.wx   import *
+from wxPython.html import *
+
+#----------------------------------------------------------------------
+
+
+class TestPanel(wxPanel):
+    def __init__(self, parent, id=-1, size=wxDefaultSize, bgcolor=None):
+        wxPanel.__init__(self, parent, id, size=size)
+
+        if bgcolor:
+            self.SetBackgroundColour(bgcolor)
+
+        wxStaticText(self, -1, 'Name:', wxPoint(10, 10))
+        wxStaticText(self, -1, 'Email:', wxPoint(10, 40))
+
+        self.name  = wxTextCtrl(self, -1, '', wxPoint(50, 10), wxSize(100, -1))
+        self.email = wxTextCtrl(self, -1, '', wxPoint(50, 40), wxSize(100, -1))
+
+        wxButton(self, 12121, 'Okay', wxPoint(50, 70))
+        EVT_BUTTON(self, 12121, self.OnButton)
+
+
+    def OnButton(self, event):
+        name = self.name.GetValue()
+        email = self.email.GetValue()
+        dlg = wxMessageDialog(self,
+                              'You entered:\n    %s\n    %s' % (name, email),
+                              'Results', style = wxOK | wxICON_INFORMATION)
+        dlg.ShowModal()
+        dlg.Destroy()
+
+
+
+#----------------------------------------------------------------------
+
+class TestHtmlPanel(wxPanel):
+    def __init__(self, parent, id=-1, size=wxDefaultSize):
+        import About
+        wxPanel.__init__(self, parent, id, size=size)
+        self.html = wxHtmlWindow(self, -1, wxPoint(5,5), wxSize(400, 350))
+        self.html.SetPage(About.MyAboutBox.text % wx.__version__)
+        self.Fit()
+
+#----------------------------------------------------------------------
+
+
index 98ccbd9dbaf3948a2db3e6b47a192dc8f975a3de..2ff0482a7f833bb0968bb1e52b63320199b17bfc 100644 (file)
@@ -20,6 +20,7 @@ else:
 
     def runTest(frame, nb, log):
         #win = TestGLCanvas(nb)
+        #win.SetFocus()
         #return win
         win = wxFrame(frame, -1, "GL Cube", wxDefaultPosition, wxSize(400,300))
         canvas = TestGLCanvas(win)
@@ -34,6 +35,10 @@ else:
             wxGLCanvas.__init__(self, parent, -1)
             EVT_ERASE_BACKGROUND(self, self.OnEraseBackground)
             self.init = false
+            EVT_CHAR(self, self.MyOnChar)
+
+        def MyOnChar(self, event):
+            print "MyOnChar"
 
         def OnEraseBackground(self, event):
             pass # Do nothing, to avoid flashing.
@@ -50,7 +55,7 @@ else:
             dc = wxPaintDC(self)
 
             ctx = self.GetContext()
-            if ctx == "NULL": return
+            if not ctx: return
 
             self.SetCurrent()
 
@@ -125,6 +130,7 @@ else:
 
 
 
+#----------------------------------------------------------------------
 
 
 
index 07ec21a554bf6400e9924e29cee245f01d7f4c7a..afcba359bcf1bbaffb64433779a2c026f475b95f 100644 (file)
@@ -1,7 +1,10 @@
 
-from wxPython.wx         import *
-from wxPython.html       import *
-from wxPython.lib.sizers import *
+import sys, os
+
+from   wxPython.wx         import *
+from   wxPython.html       import *
+from   wxPython.lib.sizers import *
+import wxPython.lib.wxpTag
 
 #----------------------------------------------------------------------
 
@@ -55,35 +58,64 @@ class TestHtmlPanel(wxPanel):
         EVT_BUTTON(self, 1205, self.OnForward)
         subbox.Add(btn, 1)
 
+        btn = wxButton(self, 1206, "View Source")
+        EVT_BUTTON(self, 1206, self.OnViewSource)
+        subbox.Add(btn, 1)
+
         self.box.Add(subbox)
+
+        # A button with this ID is created on the widget test page.
+        EVT_BUTTON(self, wxID_OK, self.OnOk)
+
         self.OnShowDefault(None)
 
 
+
     def OnSize(self, event):
         size = self.GetClientSize()
         self.box.Layout(size)
 
 
     def OnShowDefault(self, event):
-        self.html.LoadPage("data/test.htm")
+        name = os.path.join(os.path.split(sys.argv[0])[0], 'data/test.htm')
+        self.html.LoadPage(name)
 
 
     def OnLoadFile(self, event):
-        pass
+        dlg = wxFileDialog(self, wildcard = '*.htm*', style=wxOPEN)
+        if dlg.ShowModal():
+            path = dlg.GetPath()
+            self.html.LoadPage(path)
+        dlg.Destroy()
 
 
     def OnWithWidgets(self, event):
-        pass
+        os.chdir(os.path.split(sys.argv[0])[0])
+        name = os.path.join(os.path.split(sys.argv[0])[0], 'data/widgetTest.htm')
+        self.html.LoadPage(name)
+        #self.html.SetPage(_widgetTest)
+
+    def OnOk(self, event):
+        self.log.WriteText("It works!\n")
 
     def OnBack(self, event):
         if not self.html.HistoryBack():
             wxMessageBox("No more items in history!")
 
+
     def OnForward(self, event):
         if not self.html.HistoryForward():
             wxMessageBox("No more items in history!")
 
 
+    def OnViewSource(self, event):
+        from wxPython.lib.dialogs import wxScrolledMessageDialog
+        source = self.html.GetParser().GetSource()
+        dlg = wxScrolledMessageDialog(self, source, 'HTML Source')
+        dlg.ShowModal()
+        dlg.Destroy()
+
+
 #----------------------------------------------------------------------
 
 def runTest(frame, nb, log):
@@ -104,3 +136,28 @@ It is not intended to be a high-end HTML browser.  If you're looking for somethi
 
 """
 
+
+
+
+
+_widgetTest = '''\
+<html><body>
+The widgets on this page were created dynamically on the fly by a custom
+wxTagHandler found in wxPython.lib.wxpTag.
+
+<hr>
+<center>
+<wxp class="wxButton" width="50%">
+    <param name="label" value="It works!">
+    <param name="id"    value="wxID_OK">
+</wxp>
+</center>
+<hr>
+after
+</body></html>
+'''
+
+
+
+
+
index 790a88ce2334198d2fd4a15090c0c8482cd9817a..7fe5c5387aaf97ea3f6077f66c2f96bb093dadf9 100644 (file)
@@ -39,6 +39,7 @@ class TestListCtrlPanel(wxPanel):
             self.list.InsertImageStringItem(x, "This is item %d" % x, idx1)
             self.list.SetStringItem(x, 1, "Col 1, item %d" % x)
             self.list.SetStringItem(x, 2, "item %d in column 2" % x)
+            self.list.SetItemData(x, x*2)
 
         self.list.SetColumnWidth(0, wxLIST_AUTOSIZE)
         self.list.SetColumnWidth(1, wxLIST_AUTOSIZE)
@@ -79,20 +80,24 @@ class TestListCtrlPanel(wxPanel):
 
     def OnRightClick(self, event):
         self.log.WriteText("OnRightClick %s\n" % self.list.GetItemText(self.currentItem))
-        self.menu = wxMenu()
+        menu = wxMenu()
         tPopupID1 = 0
         tPopupID2 = 1
         tPopupID3 = 2
         tPopupID4 = 3
-        self.menu.Append(tPopupID1, "One")
-        self.menu.Append(tPopupID2, "Two")
-        self.menu.Append(tPopupID3, "Three")
-        self.menu.Append(tPopupID4, "DeleteAllItems")
+        tPopupID5 = 5
+        menu.Append(tPopupID1, "One")
+        menu.Append(tPopupID2, "Two")
+        menu.Append(tPopupID3, "Three")
+        menu.Append(tPopupID4, "DeleteAllItems")
+        menu.Append(tPopupID5, "GetItem")
         EVT_MENU(self, tPopupID1, self.OnPopupOne)
         EVT_MENU(self, tPopupID2, self.OnPopupTwo)
         EVT_MENU(self, tPopupID3, self.OnPopupThree)
         EVT_MENU(self, tPopupID4, self.OnPopupFour)
-        self.PopupMenu(self.menu, wxPoint(self.x, self.y))
+        EVT_MENU(self, tPopupID5, self.OnPopupFive)
+        self.PopupMenu(menu, wxPoint(self.x, self.y))
+        menu.Destroy()
 
     def OnPopupOne(self, event):
         self.log.WriteText("Popup one\n")
@@ -106,6 +111,10 @@ class TestListCtrlPanel(wxPanel):
     def OnPopupFour(self, event):
         self.list.DeleteAllItems()
 
+    def OnPopupFive(self, event):
+        item = self.list.GetItem(self.currentItem)
+        print item.m_text, item.m_itemId, self.list.GetItemData(self.currentItem)
+
     def OnSize(self, event):
         w,h = self.GetClientSizeTuple()
         self.list.SetDimensions(0, 0, w, h)
index e565d8d394b6b774bfb70b946f8f3cc04a739b96..936e48ef436a361edfdd427549d97128110aa3ba 100644 (file)
@@ -4,8 +4,8 @@ from wxPython.wx import *
 #---------------------------------------------------------------------------
 
 class MyCanvas(wxScrolledWindow):
-    def __init__(self, parent):
-        wxScrolledWindow.__init__(self, parent, -1, wxPoint(0, 0), wxPyDefaultSize, wxSUNKEN_BORDER)
+    def __init__(self, parent, id = -1, size = wxDefaultSize):
+        wxScrolledWindow.__init__(self, parent, id, wxPoint(0, 0), size, wxSUNKEN_BORDER)
 
         self.lines = []
         self.maxWidth  = 1000
diff --git a/utils/wxPython/lib/wxpTag.py b/utils/wxPython/lib/wxpTag.py
new file mode 100644 (file)
index 0000000..a4f372e
--- /dev/null
@@ -0,0 +1,278 @@
+#----------------------------------------------------------------------
+# Name:        wxPython.lib.wxpTag
+# Purpose:     A wxHtmlTagHandler that knows how to build and place
+#              wxPython widgets onto web pages.
+#
+# Author:      Robin Dunn
+#
+# Created:     13-Sept-1999
+# RCS-ID:      $Id$
+# Copyright:   (c) 1999 by Total Control Software
+# Licence:     wxWindows license
+#----------------------------------------------------------------------
+
+'''
+wxPython.lib.wxpTag
+
+This module contains a wxHtmlTagHandler that knows how to build
+and place wxPython widgets onto wxHtmlWindow web pages.
+
+You don\'t need to use anything in this module directly, just
+importing it will create the tag handler and add it to any
+wxHtmlWinParsers created from that time forth.
+
+Tags of the following form are recognised:
+
+    <WXP class="classname" [module="modulename"] [width="num"] [height="num"]>
+        <PARAM name="parameterName" value="parameterValue>
+        ...
+    </WXP>
+
+where modulename is the name of a module (possibly in package
+notation) to import and classname is the name of a class in that
+module to create an instance of.  If the module tag-attribute is not
+given or is an empty string, then wxPython.wx is used.  The width and
+height attributes are expected to be integers and will be passed to
+the __init__ method of the class as a wxSize object named size.
+However, if the width attribute ends with the percent (%) symbol then
+the value will be used as a percentage of the available width and the
+wxHtmlWindow will manage the size.
+
+The name-value pairs in all the nested PARAM tags are packaged up as
+strings into a python dictionary and passed to the __init__ method of
+the class as keyword arguments.  This means that they are all
+accessible from the __init__ method as regular parameters, or you use
+the special Python **kw syntax in your __init__ method to get the
+dictionary directly.
+
+Some parameter values are special and if they are present then they will
+be converted from strings to alternate datatypes.  They are:
+
+    id           If the value of id can be converted to an integer, it will
+                 be.  Otherwise it is assumed to be the name of an integer
+                 variable in the module.
+
+    colours      Any value of the form "#123ABC" will automatically be
+                 converted to a wxColour object.
+
+    Py Types     Any value begining with "(", "[" or "{" are expected to
+                 be a Python tuple, list, or dictionary and eval()
+                 will be used to convert them to that type.  If the
+                 eval() fails then the original string value will be
+                 preserved.
+
+    wx Types     Any value begining with "wx" is expected to be an attempt
+                 to create a wxPython object, such as a wxSize, etc.
+                 The eval() will be used to try and construct the
+                 object and if it fails then the original string value
+                 will be used instead.
+
+An example:
+
+    <wxp module="" class="wxButton">
+        <param name="label" value="Click here">
+        <param name="id" value="wxID_OK">
+    </wxp>
+
+Both the begining and ending WXP tags are required.
+
+In the future support will be added for another tag that can be
+embedded between the two begining and ending WXP tags and will
+facilitate calling methods of the widget to help initialize it.
+Additionally, support may be added to fetch the module from a web
+server as is done with java applets.
+
+'''
+#----------------------------------------------------------------------
+
+from wxPython.wx   import *
+from wxPython.html import *
+import wxPython.wx
+
+import string
+import types
+
+#----------------------------------------------------------------------
+
+WXPTAG   = 'WXP'
+PARAMTAG = 'PARAM'
+
+#----------------------------------------------------------------------
+
+class wxpTagHandler(wxHtmlWinTagHandler):
+    def __init__(self):
+        wxHtmlWinTagHandler.__init__(self)
+        self.ctx = None
+
+    def GetSupportedTags(self):
+        return WXPTAG+','+PARAMTAG
+
+
+    def HandleTag(self, tag):
+        name = tag.GetName()
+        if name == WXPTAG:
+            return self.HandleWxpTag(tag)
+        elif name == PARAMTAG:
+            return self.HandleParamTag(tag)
+        else:
+            raise ValueError, 'unknown tag: ' + name
+
+
+    def HandleWxpTag(self, tag):
+        if tag.IsEnding():
+            return false
+
+        # create a new context object
+        self.ctx = _Context()
+
+        # find and import the module
+        modName = ''
+        if tag.HasParam('MODULE'):
+            modName = tag.GetParam('MODULE')
+        if modName:
+            self.ctx.classMod = _my_import(modName)
+        else:
+            self.ctx.classMod = wxPython.wx
+
+        # find and verify the class
+        if not tag.HasParam('CLASS'):
+            raise AttributeError, "WXP tag requires a CLASS attribute"
+
+        className = tag.GetParam('CLASS')
+        self.ctx.classObj = getattr(self.ctx.classMod, className)
+        if type(self.ctx.classObj) != types.ClassType:
+            raise TypeError, "WXP tag attribute CLASS must name a class"
+
+
+
+        # now look for width and height
+        width = -1
+        height = -1
+        if tag.HasParam('WIDTH'):
+            width = tag.GetParam('WIDTH')
+            if width[-1] == '%':
+                self.ctx.floatWidth = string.atoi(width[:-1], 0)
+                width = self.ctx.floatWidth
+            else:
+                width = string.atoi(width)
+        if tag.HasParam('HEIGHT'):
+            height = string.atoi(tag.GetParam('HEIGHT'))
+        self.ctx.kwargs['size'] = wxSize(width, height)
+
+
+        self.ParseInner(tag)
+
+        # create the object
+        obj = apply(self.ctx.classObj,
+                    (self.GetParser().GetWindow(),),
+                    self.ctx.kwargs)
+        obj.Show(true)
+
+        # add it to the HtmlWindow
+        self.GetParser().GetContainer().InsertCell(wxHtmlWidgetCell(obj, self.ctx.floatWidth))
+        self.ctx = None
+        return true
+
+
+
+
+    def HandleParamTag(self, tag):
+        if tag.IsEnding():
+            return false
+
+        if not tag.HasParam('NAME'):
+            return false
+
+        name = tag.GetParam('NAME')
+        value = ""
+        if tag.HasParam('VALUE'):
+            value = tag.GetParam('VALUE')
+
+        # check for a param named 'id'
+        if name == 'id':
+            theID = -1
+            try:
+                theID = string.atoi(value)
+            except ValueError:
+                theID = getattr(self.ctx.classMod, value)
+            value = theID
+
+
+        # check for something that should be evaluated
+        elif value[0] in '[{(' or value[:2] == 'wx':
+            saveVal = value
+            try:
+                value = eval(value, self.ctx.classMod.__dict__)
+            except:
+                value = saveValue
+
+        # convert to wxColour
+        elif value[0] == '#':
+            #try:
+                red   = string.atoi('0x'+value[1:3], 16)
+                green = string.atoi('0x'+value[3:5], 16)
+                blue  = string.atoi('0x'+value[5:], 16)
+                value = wxColor(red, green, blue)
+            #except:
+            #    pass
+
+        self.ctx.kwargs[name] = value
+        return false
+
+
+#----------------------------------------------------------------------
+# just a place to hold some values
+class _Context:
+    def __init__(self):
+        self.kwargs = {}
+        self.width = -1
+        self.height = -1
+        self.classMod = None
+        self.classObj = None
+        self.floatWidth = 0
+
+
+#----------------------------------------------------------------------
+# Function to assist with importing packages
+def _my_import(name):
+    mod = __import__(name)
+    components = string.split(name, '.')
+    for comp in components[1:]:
+        mod = getattr(mod, comp)
+    return mod
+
+
+#----------------------------------------------------------------------
+# Function to parse a param string (of the form 'item=value item2="value etc"'
+# and creates a dictionary
+def _param2dict(param):
+    i = 0; j = 0; s = len(param); d = {}
+    while 1:
+       while i<s and param[i] == " " : i = i+1
+       if i>=s: break
+       j = i
+       while j<s and param[j] != "=": j=j+1
+       if j+1>=s:
+           break
+       word = param[i:j]
+       i=j+1
+       if (param[i] == '"'):
+           j=i+1
+           while j<s and param[j] != '"' : j=j+1
+           if j == s: break
+           val = param[i+1:j]
+       elif (param[i] != " "):
+           j=i+1
+           while j<s and param[j] != " " : j=j+1
+           val = param[i:j]
+       else:
+           val = ""
+       i=j+1
+       d[word] = val
+    return d
+
+#----------------------------------------------------------------------
+
+
+
+wxHtmlWinParser_AddTagHandler(wxpTagHandler)
diff --git a/utils/wxPython/modules/html/_extras.py b/utils/wxPython/modules/html/_extras.py
new file mode 100644 (file)
index 0000000..6514f17
--- /dev/null
@@ -0,0 +1,13 @@
+
+# Stuff these names into the wx namespace so wxPyConstructObject can find them
+import wx
+wx.wxHtmlTagPtr             = wxHtmlTag
+wx.wxHtmlParserPtr          = wxHtmlParserPtr
+wx.wxHtmlWinParserPtr       = wxHtmlWinParserPtr
+wx.wxHtmlTagHandlerPtr      = wxHtmlTagHandlerPtr
+wx.wxHtmlWinTagHandlerPtr   = wxHtmlWinTagHandlerPtr
+wx.wxHtmlCellPtr            = wxHtmlCellPtr
+wx.wxHtmlContainerCellPtr   = wxHtmlContainerCellPtr
+wx.wxHtmlWidgetCellPtr      = wxHtmlWidgetCellPtr
+wx.HtmlHistoryItemPtr     = HtmlHistoryItemPtr
+wx.wxHtmlWindowPtr          = wxHtmlWindowPtr
index e783d8bcac5106ef6e9d28a7bf2a1574eed67712..9bd08fcd18c5bcfa2de62557012865de6fb021d8 100644 (file)
@@ -12,3 +12,4 @@ OTHERCFLAGS = "-I%s/src/html" % (WXDIR,)
 
 # There are no platform differences so we don't need separate code directories
 GENCODEDIR='.'
+SWIGTOOLKITFLAG=''
index a0bbd1e7a7ee47ea85b8dc08cffe19e51c36e7e8..c74f5865858a4fa9b9c54aee3cb1a57ade74660b 100644 (file)
@@ -128,6 +128,7 @@ wxSize wxPyDefaultSize(wxDefaultSize);
 #endif
 
 
+#if 0
 static PyObject* mod_dict = NULL; // will be set by init
 
 #include <wx/html/mod_templ.h>
@@ -205,7 +206,7 @@ TAGS_MODULE_BEGIN(PythonTag)
 TAGS_MODULE_END(PythonTag)
 
 // Note: see also the init function where we add the module!
-
+#endif
 
 class wxPyHtmlTagHandler : public wxHtmlTagHandler {
 public:
@@ -223,7 +224,6 @@ public:
 IMP_PYCALLBACK_STRING__pure(wxPyHtmlTagHandler, wxHtmlTagHandler, GetSupportedTags);
 IMP_PYCALLBACK_BOOL_TAG_pure(wxPyHtmlTagHandler, wxHtmlTagHandler, HandleTag);
 
-
 class wxPyHtmlWinTagHandler : public wxHtmlWinTagHandler {
 public:
     wxPyHtmlWinTagHandler() : wxHtmlWinTagHandler() {};
@@ -242,7 +242,6 @@ IMP_PYCALLBACK_STRING__pure(wxPyHtmlWinTagHandler, wxHtmlWinTagHandler, GetSuppo
 IMP_PYCALLBACK_BOOL_TAG_pure(wxPyHtmlWinTagHandler, wxHtmlWinTagHandler, HandleTag);
 
 
-
 class wxPyHtmlTagsModule : public wxHtmlTagsModule {
 public:
     wxPyHtmlTagsModule(PyObject* thc) : wxHtmlTagsModule() {
@@ -265,9 +264,11 @@ public:
         // Wave our magic wand...  (if it works it's a miracle!  ;-)
 
         // First, make a new instance of the tag handler
+        bool doSave = wxPyRestoreThread();
         PyObject* arg = Py_BuildValue("()");
         PyObject* obj = PyInstance_New(m_tagHandlerClass, arg, NULL);
         Py_DECREF(arg);
+        wxPySaveThread(doSave);
 
         // now figure out where it's C++ object is...
         wxPyHtmlWinTagHandler* thPtr;
@@ -2207,25 +2208,23 @@ static PyObject *_wrap_wxHtmlWinTagHandler_ParseInner(PyObject *self, PyObject *
     return _resultobj;
 }
 
-#define new_HtmlHistoryItem(_swigarg0,_swigarg1) (new HtmlHistoryItem(_swigarg0,_swigarg1))
-static PyObject *_wrap_new_HtmlHistoryItem(PyObject *self, PyObject *args, PyObject *kwargs) {
+#define new_wxHtmlCell() (new wxHtmlCell())
+static PyObject *_wrap_new_wxHtmlCell(PyObject *self, PyObject *args, PyObject *kwargs) {
     PyObject * _resultobj;
-    HtmlHistoryItem * _result;
-    char * _arg0;
-    char * _arg1;
-    char *_kwnames[] = { "p","a", NULL };
+    wxHtmlCell * _result;
+    char *_kwnames[] = {  NULL };
     char _ptemp[128];
 
     self = self;
-    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"ss:new_HtmlHistoryItem",_kwnames,&_arg0,&_arg1)) 
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,":new_wxHtmlCell",_kwnames)) 
         return NULL;
 {
     wxPy_BEGIN_ALLOW_THREADS;
-        _result = (HtmlHistoryItem *)new_HtmlHistoryItem(_arg0,_arg1);
+        _result = (wxHtmlCell *)new_wxHtmlCell();
 
     wxPy_END_ALLOW_THREADS;
 }    if (_result) {
-        SWIG_MakePtr(_ptemp, (char *) _result,"_HtmlHistoryItem_p");
+        SWIG_MakePtr(_ptemp, (char *) _result,"_wxHtmlCell_p");
         _resultobj = Py_BuildValue("s",_ptemp);
     } else {
         Py_INCREF(Py_None);
@@ -2234,54 +2233,35 @@ static PyObject *_wrap_new_HtmlHistoryItem(PyObject *self, PyObject *args, PyObj
     return _resultobj;
 }
 
-#define HtmlHistoryItem_GetPos(_swigobj)  (_swigobj->GetPos())
-static PyObject *_wrap_HtmlHistoryItem_GetPos(PyObject *self, PyObject *args, PyObject *kwargs) {
+#define wxHtmlCell_SetParent(_swigobj,_swigarg0)  (_swigobj->SetParent(_swigarg0))
+static PyObject *_wrap_wxHtmlCell_SetParent(PyObject *self, PyObject *args, PyObject *kwargs) {
     PyObject * _resultobj;
-    int  _result;
-    HtmlHistoryItem * _arg0;
+    wxHtmlCell * _arg0;
+    wxHtmlContainerCell * _arg1;
     PyObject * _argo0 = 0;
-    char *_kwnames[] = { "self", NULL };
+    PyObject * _argo1 = 0;
+    char *_kwnames[] = { "self","p", NULL };
 
     self = self;
-    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:HtmlHistoryItem_GetPos",_kwnames,&_argo0)) 
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxHtmlCell_SetParent",_kwnames,&_argo0,&_argo1)) 
         return NULL;
     if (_argo0) {
         if (_argo0 == Py_None) { _arg0 = NULL; }
-        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_HtmlHistoryItem_p")) {
-            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of HtmlHistoryItem_GetPos. Expected _HtmlHistoryItem_p.");
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxHtmlCell_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxHtmlCell_SetParent. Expected _wxHtmlCell_p.");
         return NULL;
         }
     }
-{
-    wxPy_BEGIN_ALLOW_THREADS;
-        _result = (int )HtmlHistoryItem_GetPos(_arg0);
-
-    wxPy_END_ALLOW_THREADS;
-}    _resultobj = Py_BuildValue("i",_result);
-    return _resultobj;
-}
-
-#define HtmlHistoryItem_SetPos(_swigobj,_swigarg0)  (_swigobj->SetPos(_swigarg0))
-static PyObject *_wrap_HtmlHistoryItem_SetPos(PyObject *self, PyObject *args, PyObject *kwargs) {
-    PyObject * _resultobj;
-    HtmlHistoryItem * _arg0;
-    int  _arg1;
-    PyObject * _argo0 = 0;
-    char *_kwnames[] = { "self","p", NULL };
-
-    self = self;
-    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi:HtmlHistoryItem_SetPos",_kwnames,&_argo0,&_arg1)) 
-        return NULL;
-    if (_argo0) {
-        if (_argo0 == Py_None) { _arg0 = NULL; }
-        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_HtmlHistoryItem_p")) {
-            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of HtmlHistoryItem_SetPos. Expected _HtmlHistoryItem_p.");
+    if (_argo1) {
+        if (_argo1 == Py_None) { _arg1 = NULL; }
+        else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxHtmlContainerCell_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxHtmlCell_SetParent. Expected _wxHtmlContainerCell_p.");
         return NULL;
         }
     }
 {
     wxPy_BEGIN_ALLOW_THREADS;
-        HtmlHistoryItem_SetPos(_arg0,_arg1);
+        wxHtmlCell_SetParent(_arg0,_arg1);
 
     wxPy_END_ALLOW_THREADS;
 }    Py_INCREF(Py_None);
@@ -2289,262 +2269,198 @@ static PyObject *_wrap_HtmlHistoryItem_SetPos(PyObject *self, PyObject *args, Py
     return _resultobj;
 }
 
-#define HtmlHistoryItem_GetPage(_swigobj)  (_swigobj->GetPage())
-static PyObject *_wrap_HtmlHistoryItem_GetPage(PyObject *self, PyObject *args, PyObject *kwargs) {
+#define wxHtmlCell_GetParent(_swigobj)  (_swigobj->GetParent())
+static PyObject *_wrap_wxHtmlCell_GetParent(PyObject *self, PyObject *args, PyObject *kwargs) {
     PyObject * _resultobj;
-    wxString * _result;
-    HtmlHistoryItem * _arg0;
+    wxHtmlContainerCell * _result;
+    wxHtmlCell * _arg0;
     PyObject * _argo0 = 0;
     char *_kwnames[] = { "self", NULL };
+    char _ptemp[128];
 
     self = self;
-    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:HtmlHistoryItem_GetPage",_kwnames,&_argo0)) 
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxHtmlCell_GetParent",_kwnames,&_argo0)) 
         return NULL;
     if (_argo0) {
         if (_argo0 == Py_None) { _arg0 = NULL; }
-        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_HtmlHistoryItem_p")) {
-            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of HtmlHistoryItem_GetPage. Expected _HtmlHistoryItem_p.");
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxHtmlCell_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxHtmlCell_GetParent. Expected _wxHtmlCell_p.");
         return NULL;
         }
     }
 {
     wxPy_BEGIN_ALLOW_THREADS;
-        const wxString & _result_ref = HtmlHistoryItem_GetPage(_arg0);
-    _result = (wxString *) &_result_ref;
+        _result = (wxHtmlContainerCell *)wxHtmlCell_GetParent(_arg0);
 
     wxPy_END_ALLOW_THREADS;
-}{
-    _resultobj = PyString_FromString(WXSTRINGCAST (*_result));
-}
+}    if (_result) {
+        SWIG_MakePtr(_ptemp, (char *) _result,"_wxHtmlContainerCell_p");
+        _resultobj = Py_BuildValue("s",_ptemp);
+    } else {
+        Py_INCREF(Py_None);
+        _resultobj = Py_None;
+    }
     return _resultobj;
 }
 
-#define HtmlHistoryItem_GetAnchor(_swigobj)  (_swigobj->GetAnchor())
-static PyObject *_wrap_HtmlHistoryItem_GetAnchor(PyObject *self, PyObject *args, PyObject *kwargs) {
+#define wxHtmlCell_GetPosX(_swigobj)  (_swigobj->GetPosX())
+static PyObject *_wrap_wxHtmlCell_GetPosX(PyObject *self, PyObject *args, PyObject *kwargs) {
     PyObject * _resultobj;
-    wxString * _result;
-    HtmlHistoryItem * _arg0;
+    int  _result;
+    wxHtmlCell * _arg0;
     PyObject * _argo0 = 0;
     char *_kwnames[] = { "self", NULL };
 
     self = self;
-    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:HtmlHistoryItem_GetAnchor",_kwnames,&_argo0)) 
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxHtmlCell_GetPosX",_kwnames,&_argo0)) 
         return NULL;
     if (_argo0) {
         if (_argo0 == Py_None) { _arg0 = NULL; }
-        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_HtmlHistoryItem_p")) {
-            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of HtmlHistoryItem_GetAnchor. Expected _HtmlHistoryItem_p.");
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxHtmlCell_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxHtmlCell_GetPosX. Expected _wxHtmlCell_p.");
         return NULL;
         }
     }
 {
     wxPy_BEGIN_ALLOW_THREADS;
-        const wxString & _result_ref = HtmlHistoryItem_GetAnchor(_arg0);
-    _result = (wxString *) &_result_ref;
+        _result = (int )wxHtmlCell_GetPosX(_arg0);
 
     wxPy_END_ALLOW_THREADS;
-}{
-    _resultobj = PyString_FromString(WXSTRINGCAST (*_result));
-}
+}    _resultobj = Py_BuildValue("i",_result);
     return _resultobj;
 }
 
-static void *SwigwxPyHtmlWindowTowxScrolledWindow(void *ptr) {
-    wxPyHtmlWindow *src;
-    wxScrolledWindow *dest;
-    src = (wxPyHtmlWindow *) ptr;
-    dest = (wxScrolledWindow *) src;
-    return (void *) dest;
-}
-
-static void *SwigwxPyHtmlWindowTowxPanel(void *ptr) {
-    wxPyHtmlWindow *src;
-    wxPanel *dest;
-    src = (wxPyHtmlWindow *) ptr;
-    dest = (wxPanel *) src;
-    return (void *) dest;
-}
-
-static void *SwigwxPyHtmlWindowTowxWindow(void *ptr) {
-    wxPyHtmlWindow *src;
-    wxWindow *dest;
-    src = (wxPyHtmlWindow *) ptr;
-    dest = (wxWindow *) src;
-    return (void *) dest;
-}
-
-static void *SwigwxPyHtmlWindowTowxEvtHandler(void *ptr) {
-    wxPyHtmlWindow *src;
-    wxEvtHandler *dest;
-    src = (wxPyHtmlWindow *) ptr;
-    dest = (wxEvtHandler *) src;
-    return (void *) dest;
-}
-
-#define new_wxHtmlWindow(_swigarg0,_swigarg1,_swigarg2,_swigarg3,_swigarg4,_swigarg5) (new wxPyHtmlWindow(_swigarg0,_swigarg1,_swigarg2,_swigarg3,_swigarg4,_swigarg5))
-static PyObject *_wrap_new_wxHtmlWindow(PyObject *self, PyObject *args, PyObject *kwargs) {
+#define wxHtmlCell_GetPosY(_swigobj)  (_swigobj->GetPosY())
+static PyObject *_wrap_wxHtmlCell_GetPosY(PyObject *self, PyObject *args, PyObject *kwargs) {
     PyObject * _resultobj;
-    wxPyHtmlWindow * _result;
-    wxWindow * _arg0;
-    int  _arg1 = (int ) -1;
-    wxPoint * _arg2 = (wxPoint *) &wxPyDefaultPosition;
-    wxSize * _arg3 = (wxSize *) &wxPyDefaultSize;
-    int  _arg4 = (int ) wxHW_SCROLLBAR_AUTO;
-    char * _arg5 = (char *) "htmlWindow";
+    int  _result;
+    wxHtmlCell * _arg0;
     PyObject * _argo0 = 0;
-    PyObject * _argo2 = 0;
-    PyObject * _argo3 = 0;
-    char *_kwnames[] = { "parent","id","pos","size","flags","name", NULL };
-    char _ptemp[128];
+    char *_kwnames[] = { "self", NULL };
 
     self = self;
-    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O|iOOis:new_wxHtmlWindow",_kwnames,&_argo0,&_arg1,&_argo2,&_argo3,&_arg4,&_arg5)) 
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxHtmlCell_GetPosY",_kwnames,&_argo0)) 
         return NULL;
     if (_argo0) {
         if (_argo0 == Py_None) { _arg0 = NULL; }
-        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxWindow_p")) {
-            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of new_wxHtmlWindow. Expected _wxWindow_p.");
-        return NULL;
-        }
-    }
-    if (_argo2) {
-        if (_argo2 == Py_None) { _arg2 = NULL; }
-        else if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxPoint_p")) {
-            PyErr_SetString(PyExc_TypeError,"Type error in argument 3 of new_wxHtmlWindow. Expected _wxPoint_p.");
-        return NULL;
-        }
-    }
-    if (_argo3) {
-        if (_argo3 == Py_None) { _arg3 = NULL; }
-        else if (SWIG_GetPtrObj(_argo3,(void **) &_arg3,"_wxSize_p")) {
-            PyErr_SetString(PyExc_TypeError,"Type error in argument 4 of new_wxHtmlWindow. Expected _wxSize_p.");
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxHtmlCell_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxHtmlCell_GetPosY. Expected _wxHtmlCell_p.");
         return NULL;
         }
     }
 {
     wxPy_BEGIN_ALLOW_THREADS;
-        _result = (wxPyHtmlWindow *)new_wxHtmlWindow(_arg0,_arg1,*_arg2,*_arg3,_arg4,_arg5);
+        _result = (int )wxHtmlCell_GetPosY(_arg0);
 
     wxPy_END_ALLOW_THREADS;
-}    if (_result) {
-        SWIG_MakePtr(_ptemp, (char *) _result,"_wxPyHtmlWindow_p");
-        _resultobj = Py_BuildValue("s",_ptemp);
-    } else {
-        Py_INCREF(Py_None);
-        _resultobj = Py_None;
-    }
+}    _resultobj = Py_BuildValue("i",_result);
     return _resultobj;
 }
 
-#define wxHtmlWindow__setSelf(_swigobj,_swigarg0)  (_swigobj->_setSelf(_swigarg0))
-static PyObject *_wrap_wxHtmlWindow__setSelf(PyObject *self, PyObject *args, PyObject *kwargs) {
+#define wxHtmlCell_GetWidth(_swigobj)  (_swigobj->GetWidth())
+static PyObject *_wrap_wxHtmlCell_GetWidth(PyObject *self, PyObject *args, PyObject *kwargs) {
     PyObject * _resultobj;
-    wxPyHtmlWindow * _arg0;
-    PyObject * _arg1;
+    int  _result;
+    wxHtmlCell * _arg0;
     PyObject * _argo0 = 0;
-    PyObject * _obj1 = 0;
-    char *_kwnames[] = { "self","self", NULL };
+    char *_kwnames[] = { "self", NULL };
 
     self = self;
-    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxHtmlWindow__setSelf",_kwnames,&_argo0,&_obj1)) 
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxHtmlCell_GetWidth",_kwnames,&_argo0)) 
         return NULL;
     if (_argo0) {
         if (_argo0 == Py_None) { _arg0 = NULL; }
-        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPyHtmlWindow_p")) {
-            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxHtmlWindow__setSelf. Expected _wxPyHtmlWindow_p.");
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxHtmlCell_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxHtmlCell_GetWidth. Expected _wxHtmlCell_p.");
         return NULL;
         }
     }
-{
-  _arg1 = _obj1;
-}
 {
     wxPy_BEGIN_ALLOW_THREADS;
-        wxHtmlWindow__setSelf(_arg0,_arg1);
+        _result = (int )wxHtmlCell_GetWidth(_arg0);
 
     wxPy_END_ALLOW_THREADS;
-}    Py_INCREF(Py_None);
-    _resultobj = Py_None;
+}    _resultobj = Py_BuildValue("i",_result);
     return _resultobj;
 }
 
-#define wxHtmlWindow_SetPage(_swigobj,_swigarg0)  (_swigobj->SetPage(_swigarg0))
-static PyObject *_wrap_wxHtmlWindow_SetPage(PyObject *self, PyObject *args, PyObject *kwargs) {
+#define wxHtmlCell_GetHeight(_swigobj)  (_swigobj->GetHeight())
+static PyObject *_wrap_wxHtmlCell_GetHeight(PyObject *self, PyObject *args, PyObject *kwargs) {
     PyObject * _resultobj;
-    bool  _result;
-    wxPyHtmlWindow * _arg0;
-    char * _arg1;
+    int  _result;
+    wxHtmlCell * _arg0;
     PyObject * _argo0 = 0;
-    char *_kwnames[] = { "self","source", NULL };
+    char *_kwnames[] = { "self", NULL };
 
     self = self;
-    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Os:wxHtmlWindow_SetPage",_kwnames,&_argo0,&_arg1)) 
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxHtmlCell_GetHeight",_kwnames,&_argo0)) 
         return NULL;
     if (_argo0) {
         if (_argo0 == Py_None) { _arg0 = NULL; }
-        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPyHtmlWindow_p")) {
-            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxHtmlWindow_SetPage. Expected _wxPyHtmlWindow_p.");
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxHtmlCell_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxHtmlCell_GetHeight. Expected _wxHtmlCell_p.");
         return NULL;
         }
     }
 {
     wxPy_BEGIN_ALLOW_THREADS;
-        _result = (bool )wxHtmlWindow_SetPage(_arg0,_arg1);
+        _result = (int )wxHtmlCell_GetHeight(_arg0);
 
     wxPy_END_ALLOW_THREADS;
 }    _resultobj = Py_BuildValue("i",_result);
     return _resultobj;
 }
 
-#define wxHtmlWindow_LoadPage(_swigobj,_swigarg0)  (_swigobj->LoadPage(_swigarg0))
-static PyObject *_wrap_wxHtmlWindow_LoadPage(PyObject *self, PyObject *args, PyObject *kwargs) {
+#define wxHtmlCell_GetDescent(_swigobj)  (_swigobj->GetDescent())
+static PyObject *_wrap_wxHtmlCell_GetDescent(PyObject *self, PyObject *args, PyObject *kwargs) {
     PyObject * _resultobj;
-    bool  _result;
-    wxPyHtmlWindow * _arg0;
-    char * _arg1;
+    int  _result;
+    wxHtmlCell * _arg0;
     PyObject * _argo0 = 0;
-    char *_kwnames[] = { "self","location", NULL };
+    char *_kwnames[] = { "self", NULL };
 
     self = self;
-    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Os:wxHtmlWindow_LoadPage",_kwnames,&_argo0,&_arg1)) 
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxHtmlCell_GetDescent",_kwnames,&_argo0)) 
         return NULL;
     if (_argo0) {
         if (_argo0 == Py_None) { _arg0 = NULL; }
-        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPyHtmlWindow_p")) {
-            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxHtmlWindow_LoadPage. Expected _wxPyHtmlWindow_p.");
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxHtmlCell_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxHtmlCell_GetDescent. Expected _wxHtmlCell_p.");
         return NULL;
         }
     }
 {
     wxPy_BEGIN_ALLOW_THREADS;
-        _result = (bool )wxHtmlWindow_LoadPage(_arg0,_arg1);
+        _result = (int )wxHtmlCell_GetDescent(_arg0);
 
     wxPy_END_ALLOW_THREADS;
 }    _resultobj = Py_BuildValue("i",_result);
     return _resultobj;
 }
 
-#define wxHtmlWindow_GetOpenedPage(_swigobj)  (_swigobj->GetOpenedPage())
-static PyObject *_wrap_wxHtmlWindow_GetOpenedPage(PyObject *self, PyObject *args, PyObject *kwargs) {
+#define wxHtmlCell_GetLink(_swigobj,_swigarg0,_swigarg1)  (_swigobj->GetLink(_swigarg0,_swigarg1))
+static PyObject *_wrap_wxHtmlCell_GetLink(PyObject *self, PyObject *args, PyObject *kwargs) {
     PyObject * _resultobj;
     wxString * _result;
-    wxPyHtmlWindow * _arg0;
+    wxHtmlCell * _arg0;
+    int  _arg1 = (int ) 0;
+    int  _arg2 = (int ) 0;
     PyObject * _argo0 = 0;
-    char *_kwnames[] = { "self", NULL };
+    char *_kwnames[] = { "self","x","y", NULL };
 
     self = self;
-    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxHtmlWindow_GetOpenedPage",_kwnames,&_argo0)) 
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O|ii:wxHtmlCell_GetLink",_kwnames,&_argo0,&_arg1,&_arg2)) 
         return NULL;
     if (_argo0) {
         if (_argo0 == Py_None) { _arg0 = NULL; }
-        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPyHtmlWindow_p")) {
-            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxHtmlWindow_GetOpenedPage. Expected _wxPyHtmlWindow_p.");
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxHtmlCell_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxHtmlCell_GetLink. Expected _wxHtmlCell_p.");
         return NULL;
         }
     }
 {
     wxPy_BEGIN_ALLOW_THREADS;
-        _result = new wxString (wxHtmlWindow_GetOpenedPage(_arg0));
+        _result = new wxString (wxHtmlCell_GetLink(_arg0,_arg1,_arg2));
 
     wxPy_END_ALLOW_THREADS;
 }{
@@ -2556,72 +2472,1299 @@ static PyObject *_wrap_wxHtmlWindow_GetOpenedPage(PyObject *self, PyObject *args
     return _resultobj;
 }
 
-#define wxHtmlWindow_SetRelatedFrame(_swigobj,_swigarg0,_swigarg1)  (_swigobj->SetRelatedFrame(_swigarg0,_swigarg1))
-static PyObject *_wrap_wxHtmlWindow_SetRelatedFrame(PyObject *self, PyObject *args, PyObject *kwargs) {
+#define wxHtmlCell_GetNext(_swigobj)  (_swigobj->GetNext())
+static PyObject *_wrap_wxHtmlCell_GetNext(PyObject *self, PyObject *args, PyObject *kwargs) {
     PyObject * _resultobj;
-    wxPyHtmlWindow * _arg0;
-    wxFrame * _arg1;
-    char * _arg2;
+    wxHtmlCell * _result;
+    wxHtmlCell * _arg0;
     PyObject * _argo0 = 0;
-    PyObject * _argo1 = 0;
-    char *_kwnames[] = { "self","frame","format", NULL };
+    char *_kwnames[] = { "self", NULL };
+    char _ptemp[128];
 
     self = self;
-    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OOs:wxHtmlWindow_SetRelatedFrame",_kwnames,&_argo0,&_argo1,&_arg2)) 
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxHtmlCell_GetNext",_kwnames,&_argo0)) 
         return NULL;
     if (_argo0) {
         if (_argo0 == Py_None) { _arg0 = NULL; }
-        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPyHtmlWindow_p")) {
-            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxHtmlWindow_SetRelatedFrame. Expected _wxPyHtmlWindow_p.");
-        return NULL;
-        }
-    }
-    if (_argo1) {
-        if (_argo1 == Py_None) { _arg1 = NULL; }
-        else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxFrame_p")) {
-            PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxHtmlWindow_SetRelatedFrame. Expected _wxFrame_p.");
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxHtmlCell_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxHtmlCell_GetNext. Expected _wxHtmlCell_p.");
         return NULL;
         }
     }
 {
     wxPy_BEGIN_ALLOW_THREADS;
-        wxHtmlWindow_SetRelatedFrame(_arg0,_arg1,_arg2);
+        _result = (wxHtmlCell *)wxHtmlCell_GetNext(_arg0);
 
     wxPy_END_ALLOW_THREADS;
-}    Py_INCREF(Py_None);
-    _resultobj = Py_None;
+}    if (_result) {
+        SWIG_MakePtr(_ptemp, (char *) _result,"_wxHtmlCell_p");
+        _resultobj = Py_BuildValue("s",_ptemp);
+    } else {
+        Py_INCREF(Py_None);
+        _resultobj = Py_None;
+    }
     return _resultobj;
 }
 
-#define wxHtmlWindow_GetRelatedFrame(_swigobj)  (_swigobj->GetRelatedFrame())
-static PyObject *_wrap_wxHtmlWindow_GetRelatedFrame(PyObject *self, PyObject *args, PyObject *kwargs) {
+#define wxHtmlCell_SetPos(_swigobj,_swigarg0,_swigarg1)  (_swigobj->SetPos(_swigarg0,_swigarg1))
+static PyObject *_wrap_wxHtmlCell_SetPos(PyObject *self, PyObject *args, PyObject *kwargs) {
     PyObject * _resultobj;
-    wxFrame * _result;
-    wxPyHtmlWindow * _arg0;
+    wxHtmlCell * _arg0;
+    int  _arg1;
+    int  _arg2;
     PyObject * _argo0 = 0;
-    char *_kwnames[] = { "self", NULL };
-    char _ptemp[128];
+    char *_kwnames[] = { "self","x","y", NULL };
 
     self = self;
-    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxHtmlWindow_GetRelatedFrame",_kwnames,&_argo0)) 
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oii:wxHtmlCell_SetPos",_kwnames,&_argo0,&_arg1,&_arg2)) 
         return NULL;
     if (_argo0) {
         if (_argo0 == Py_None) { _arg0 = NULL; }
-        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPyHtmlWindow_p")) {
-            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxHtmlWindow_GetRelatedFrame. Expected _wxPyHtmlWindow_p.");
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxHtmlCell_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxHtmlCell_SetPos. Expected _wxHtmlCell_p.");
         return NULL;
         }
     }
 {
     wxPy_BEGIN_ALLOW_THREADS;
-        _result = (wxFrame *)wxHtmlWindow_GetRelatedFrame(_arg0);
+        wxHtmlCell_SetPos(_arg0,_arg1,_arg2);
 
     wxPy_END_ALLOW_THREADS;
-}    if (_result) {
-        SWIG_MakePtr(_ptemp, (char *) _result,"_wxFrame_p");
-        _resultobj = Py_BuildValue("s",_ptemp);
-    } else {
-        Py_INCREF(Py_None);
+}    Py_INCREF(Py_None);
+    _resultobj = Py_None;
+    return _resultobj;
+}
+
+#define wxHtmlCell_SetLink(_swigobj,_swigarg0)  (_swigobj->SetLink(_swigarg0))
+static PyObject *_wrap_wxHtmlCell_SetLink(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    wxHtmlCell * _arg0;
+    wxString * _arg1;
+    PyObject * _argo0 = 0;
+    PyObject * _obj1 = 0;
+    char *_kwnames[] = { "self","link", NULL };
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxHtmlCell_SetLink",_kwnames,&_argo0,&_obj1)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxHtmlCell_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxHtmlCell_SetLink. Expected _wxHtmlCell_p.");
+        return NULL;
+        }
+    }
+{
+    if (!PyString_Check(_obj1)) {
+        PyErr_SetString(PyExc_TypeError, wxStringErrorMsg);
+        return NULL;
+    }
+    _arg1 = new wxString(PyString_AsString(_obj1), PyString_Size(_obj1));
+}
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        wxHtmlCell_SetLink(_arg0,*_arg1);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
+    _resultobj = Py_None;
+{
+    if (_obj1)
+        delete _arg1;
+}
+    return _resultobj;
+}
+
+#define wxHtmlCell_SetNext(_swigobj,_swigarg0)  (_swigobj->SetNext(_swigarg0))
+static PyObject *_wrap_wxHtmlCell_SetNext(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    wxHtmlCell * _arg0;
+    wxHtmlCell * _arg1;
+    PyObject * _argo0 = 0;
+    PyObject * _argo1 = 0;
+    char *_kwnames[] = { "self","cell", NULL };
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxHtmlCell_SetNext",_kwnames,&_argo0,&_argo1)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxHtmlCell_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxHtmlCell_SetNext. Expected _wxHtmlCell_p.");
+        return NULL;
+        }
+    }
+    if (_argo1) {
+        if (_argo1 == Py_None) { _arg1 = NULL; }
+        else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxHtmlCell_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxHtmlCell_SetNext. Expected _wxHtmlCell_p.");
+        return NULL;
+        }
+    }
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        wxHtmlCell_SetNext(_arg0,_arg1);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
+    _resultobj = Py_None;
+    return _resultobj;
+}
+
+#define wxHtmlCell_Layout(_swigobj,_swigarg0)  (_swigobj->Layout(_swigarg0))
+static PyObject *_wrap_wxHtmlCell_Layout(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    wxHtmlCell * _arg0;
+    int  _arg1;
+    PyObject * _argo0 = 0;
+    char *_kwnames[] = { "self","w", NULL };
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi:wxHtmlCell_Layout",_kwnames,&_argo0,&_arg1)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxHtmlCell_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxHtmlCell_Layout. Expected _wxHtmlCell_p.");
+        return NULL;
+        }
+    }
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        wxHtmlCell_Layout(_arg0,_arg1);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
+    _resultobj = Py_None;
+    return _resultobj;
+}
+
+#define wxHtmlCell_Draw(_swigobj,_swigarg0,_swigarg1,_swigarg2,_swigarg3,_swigarg4)  (_swigobj->Draw(_swigarg0,_swigarg1,_swigarg2,_swigarg3,_swigarg4))
+static PyObject *_wrap_wxHtmlCell_Draw(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    wxHtmlCell * _arg0;
+    wxDC * _arg1;
+    int  _arg2;
+    int  _arg3;
+    int  _arg4;
+    int  _arg5;
+    PyObject * _argo0 = 0;
+    PyObject * _argo1 = 0;
+    char *_kwnames[] = { "self","dc","x","y","view_y1","view_y2", NULL };
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OOiiii:wxHtmlCell_Draw",_kwnames,&_argo0,&_argo1,&_arg2,&_arg3,&_arg4,&_arg5)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxHtmlCell_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxHtmlCell_Draw. Expected _wxHtmlCell_p.");
+        return NULL;
+        }
+    }
+    if (_argo1) {
+        if (_argo1 == Py_None) { _arg1 = NULL; }
+        else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxHtmlCell_Draw. Expected _wxDC_p.");
+        return NULL;
+        }
+    }
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        wxHtmlCell_Draw(_arg0,*_arg1,_arg2,_arg3,_arg4,_arg5);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
+    _resultobj = Py_None;
+    return _resultobj;
+}
+
+#define wxHtmlCell_DrawInvisible(_swigobj,_swigarg0,_swigarg1,_swigarg2)  (_swigobj->DrawInvisible(_swigarg0,_swigarg1,_swigarg2))
+static PyObject *_wrap_wxHtmlCell_DrawInvisible(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    wxHtmlCell * _arg0;
+    wxDC * _arg1;
+    int  _arg2;
+    int  _arg3;
+    PyObject * _argo0 = 0;
+    PyObject * _argo1 = 0;
+    char *_kwnames[] = { "self","dc","x","y", NULL };
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OOii:wxHtmlCell_DrawInvisible",_kwnames,&_argo0,&_argo1,&_arg2,&_arg3)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxHtmlCell_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxHtmlCell_DrawInvisible. Expected _wxHtmlCell_p.");
+        return NULL;
+        }
+    }
+    if (_argo1) {
+        if (_argo1 == Py_None) { _arg1 = NULL; }
+        else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxDC_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxHtmlCell_DrawInvisible. Expected _wxDC_p.");
+        return NULL;
+        }
+    }
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        wxHtmlCell_DrawInvisible(_arg0,*_arg1,_arg2,_arg3);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
+    _resultobj = Py_None;
+    return _resultobj;
+}
+
+#define wxHtmlCell_Find(_swigobj,_swigarg0,_swigarg1)  (_swigobj->Find(_swigarg0,_swigarg1))
+static PyObject *_wrap_wxHtmlCell_Find(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    wxHtmlCell * _result;
+    wxHtmlCell * _arg0;
+    int  _arg1;
+    void * _arg2;
+    PyObject * _argo0 = 0;
+    PyObject * _argo2 = 0;
+    char *_kwnames[] = { "self","condition","param", NULL };
+    char _ptemp[128];
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OiO:wxHtmlCell_Find",_kwnames,&_argo0,&_arg1,&_argo2)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxHtmlCell_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxHtmlCell_Find. Expected _wxHtmlCell_p.");
+        return NULL;
+        }
+    }
+    if (_argo2) {
+        if (_argo2 == Py_None) { _arg2 = NULL; }
+        else if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,(char *) 0 )) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 3 of wxHtmlCell_Find. Expected _void_p.");
+        return NULL;
+        }
+    }
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (wxHtmlCell *)wxHtmlCell_Find(_arg0,_arg1,_arg2);
+
+    wxPy_END_ALLOW_THREADS;
+}    if (_result) {
+        SWIG_MakePtr(_ptemp, (char *) _result,"_wxHtmlCell_p");
+        _resultobj = Py_BuildValue("s",_ptemp);
+    } else {
+        Py_INCREF(Py_None);
+        _resultobj = Py_None;
+    }
+    return _resultobj;
+}
+
+static void *SwigwxHtmlContainerCellTowxHtmlCell(void *ptr) {
+    wxHtmlContainerCell *src;
+    wxHtmlCell *dest;
+    src = (wxHtmlContainerCell *) ptr;
+    dest = (wxHtmlCell *) src;
+    return (void *) dest;
+}
+
+#define new_wxHtmlContainerCell(_swigarg0) (new wxHtmlContainerCell(_swigarg0))
+static PyObject *_wrap_new_wxHtmlContainerCell(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    wxHtmlContainerCell * _result;
+    wxHtmlContainerCell * _arg0;
+    PyObject * _argo0 = 0;
+    char *_kwnames[] = { "parent", NULL };
+    char _ptemp[128];
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:new_wxHtmlContainerCell",_kwnames,&_argo0)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxHtmlContainerCell_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of new_wxHtmlContainerCell. Expected _wxHtmlContainerCell_p.");
+        return NULL;
+        }
+    }
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (wxHtmlContainerCell *)new_wxHtmlContainerCell(_arg0);
+
+    wxPy_END_ALLOW_THREADS;
+}    if (_result) {
+        SWIG_MakePtr(_ptemp, (char *) _result,"_wxHtmlContainerCell_p");
+        _resultobj = Py_BuildValue("s",_ptemp);
+    } else {
+        Py_INCREF(Py_None);
+        _resultobj = Py_None;
+    }
+    return _resultobj;
+}
+
+#define wxHtmlContainerCell_InsertCell(_swigobj,_swigarg0)  (_swigobj->InsertCell(_swigarg0))
+static PyObject *_wrap_wxHtmlContainerCell_InsertCell(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    wxHtmlContainerCell * _arg0;
+    wxHtmlCell * _arg1;
+    PyObject * _argo0 = 0;
+    PyObject * _argo1 = 0;
+    char *_kwnames[] = { "self","cell", NULL };
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxHtmlContainerCell_InsertCell",_kwnames,&_argo0,&_argo1)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxHtmlContainerCell_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxHtmlContainerCell_InsertCell. Expected _wxHtmlContainerCell_p.");
+        return NULL;
+        }
+    }
+    if (_argo1) {
+        if (_argo1 == Py_None) { _arg1 = NULL; }
+        else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxHtmlCell_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxHtmlContainerCell_InsertCell. Expected _wxHtmlCell_p.");
+        return NULL;
+        }
+    }
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        wxHtmlContainerCell_InsertCell(_arg0,_arg1);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
+    _resultobj = Py_None;
+    return _resultobj;
+}
+
+#define wxHtmlContainerCell_SetAlignHor(_swigobj,_swigarg0)  (_swigobj->SetAlignHor(_swigarg0))
+static PyObject *_wrap_wxHtmlContainerCell_SetAlignHor(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    wxHtmlContainerCell * _arg0;
+    int  _arg1;
+    PyObject * _argo0 = 0;
+    char *_kwnames[] = { "self","al", NULL };
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi:wxHtmlContainerCell_SetAlignHor",_kwnames,&_argo0,&_arg1)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxHtmlContainerCell_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxHtmlContainerCell_SetAlignHor. Expected _wxHtmlContainerCell_p.");
+        return NULL;
+        }
+    }
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        wxHtmlContainerCell_SetAlignHor(_arg0,_arg1);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
+    _resultobj = Py_None;
+    return _resultobj;
+}
+
+#define wxHtmlContainerCell_GetAlignHor(_swigobj)  (_swigobj->GetAlignHor())
+static PyObject *_wrap_wxHtmlContainerCell_GetAlignHor(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    int  _result;
+    wxHtmlContainerCell * _arg0;
+    PyObject * _argo0 = 0;
+    char *_kwnames[] = { "self", NULL };
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxHtmlContainerCell_GetAlignHor",_kwnames,&_argo0)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxHtmlContainerCell_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxHtmlContainerCell_GetAlignHor. Expected _wxHtmlContainerCell_p.");
+        return NULL;
+        }
+    }
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (int )wxHtmlContainerCell_GetAlignHor(_arg0);
+
+    wxPy_END_ALLOW_THREADS;
+}    _resultobj = Py_BuildValue("i",_result);
+    return _resultobj;
+}
+
+#define wxHtmlContainerCell_SetAlignVer(_swigobj,_swigarg0)  (_swigobj->SetAlignVer(_swigarg0))
+static PyObject *_wrap_wxHtmlContainerCell_SetAlignVer(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    wxHtmlContainerCell * _arg0;
+    int  _arg1;
+    PyObject * _argo0 = 0;
+    char *_kwnames[] = { "self","al", NULL };
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi:wxHtmlContainerCell_SetAlignVer",_kwnames,&_argo0,&_arg1)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxHtmlContainerCell_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxHtmlContainerCell_SetAlignVer. Expected _wxHtmlContainerCell_p.");
+        return NULL;
+        }
+    }
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        wxHtmlContainerCell_SetAlignVer(_arg0,_arg1);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
+    _resultobj = Py_None;
+    return _resultobj;
+}
+
+#define wxHtmlContainerCell_GetAlignVer(_swigobj)  (_swigobj->GetAlignVer())
+static PyObject *_wrap_wxHtmlContainerCell_GetAlignVer(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    int  _result;
+    wxHtmlContainerCell * _arg0;
+    PyObject * _argo0 = 0;
+    char *_kwnames[] = { "self", NULL };
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxHtmlContainerCell_GetAlignVer",_kwnames,&_argo0)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxHtmlContainerCell_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxHtmlContainerCell_GetAlignVer. Expected _wxHtmlContainerCell_p.");
+        return NULL;
+        }
+    }
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (int )wxHtmlContainerCell_GetAlignVer(_arg0);
+
+    wxPy_END_ALLOW_THREADS;
+}    _resultobj = Py_BuildValue("i",_result);
+    return _resultobj;
+}
+
+#define wxHtmlContainerCell_SetIndent(_swigobj,_swigarg0,_swigarg1,_swigarg2)  (_swigobj->SetIndent(_swigarg0,_swigarg1,_swigarg2))
+static PyObject *_wrap_wxHtmlContainerCell_SetIndent(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    wxHtmlContainerCell * _arg0;
+    int  _arg1;
+    int  _arg2;
+    int  _arg3 = (int ) (HTML_UNITS_PIXELS);
+    PyObject * _argo0 = 0;
+    char *_kwnames[] = { "self","i","what","units", NULL };
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oii|i:wxHtmlContainerCell_SetIndent",_kwnames,&_argo0,&_arg1,&_arg2,&_arg3)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxHtmlContainerCell_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxHtmlContainerCell_SetIndent. Expected _wxHtmlContainerCell_p.");
+        return NULL;
+        }
+    }
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        wxHtmlContainerCell_SetIndent(_arg0,_arg1,_arg2,_arg3);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
+    _resultobj = Py_None;
+    return _resultobj;
+}
+
+#define wxHtmlContainerCell_GetIndent(_swigobj,_swigarg0)  (_swigobj->GetIndent(_swigarg0))
+static PyObject *_wrap_wxHtmlContainerCell_GetIndent(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    int  _result;
+    wxHtmlContainerCell * _arg0;
+    int  _arg1;
+    PyObject * _argo0 = 0;
+    char *_kwnames[] = { "self","ind", NULL };
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi:wxHtmlContainerCell_GetIndent",_kwnames,&_argo0,&_arg1)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxHtmlContainerCell_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxHtmlContainerCell_GetIndent. Expected _wxHtmlContainerCell_p.");
+        return NULL;
+        }
+    }
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (int )wxHtmlContainerCell_GetIndent(_arg0,_arg1);
+
+    wxPy_END_ALLOW_THREADS;
+}    _resultobj = Py_BuildValue("i",_result);
+    return _resultobj;
+}
+
+#define wxHtmlContainerCell_GetIndentUnits(_swigobj,_swigarg0)  (_swigobj->GetIndentUnits(_swigarg0))
+static PyObject *_wrap_wxHtmlContainerCell_GetIndentUnits(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    int  _result;
+    wxHtmlContainerCell * _arg0;
+    int  _arg1;
+    PyObject * _argo0 = 0;
+    char *_kwnames[] = { "self","ind", NULL };
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi:wxHtmlContainerCell_GetIndentUnits",_kwnames,&_argo0,&_arg1)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxHtmlContainerCell_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxHtmlContainerCell_GetIndentUnits. Expected _wxHtmlContainerCell_p.");
+        return NULL;
+        }
+    }
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (int )wxHtmlContainerCell_GetIndentUnits(_arg0,_arg1);
+
+    wxPy_END_ALLOW_THREADS;
+}    _resultobj = Py_BuildValue("i",_result);
+    return _resultobj;
+}
+
+#define wxHtmlContainerCell_SetAlign(_swigobj,_swigarg0)  (_swigobj->SetAlign(_swigarg0))
+static PyObject *_wrap_wxHtmlContainerCell_SetAlign(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    wxHtmlContainerCell * _arg0;
+    wxHtmlTag * _arg1;
+    PyObject * _argo0 = 0;
+    PyObject * _argo1 = 0;
+    char *_kwnames[] = { "self","tag", NULL };
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxHtmlContainerCell_SetAlign",_kwnames,&_argo0,&_argo1)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxHtmlContainerCell_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxHtmlContainerCell_SetAlign. Expected _wxHtmlContainerCell_p.");
+        return NULL;
+        }
+    }
+    if (_argo1) {
+        if (_argo1 == Py_None) { _arg1 = NULL; }
+        else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxHtmlTag_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxHtmlContainerCell_SetAlign. Expected _wxHtmlTag_p.");
+        return NULL;
+        }
+    }
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        wxHtmlContainerCell_SetAlign(_arg0,*_arg1);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
+    _resultobj = Py_None;
+    return _resultobj;
+}
+
+#define wxHtmlContainerCell_SetWidthFloat(_swigobj,_swigarg0,_swigarg1)  (_swigobj->SetWidthFloat(_swigarg0,_swigarg1))
+static PyObject *_wrap_wxHtmlContainerCell_SetWidthFloat(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    wxHtmlContainerCell * _arg0;
+    int  _arg1;
+    int  _arg2;
+    PyObject * _argo0 = 0;
+    char *_kwnames[] = { "self","w","units", NULL };
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oii:wxHtmlContainerCell_SetWidthFloat",_kwnames,&_argo0,&_arg1,&_arg2)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxHtmlContainerCell_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxHtmlContainerCell_SetWidthFloat. Expected _wxHtmlContainerCell_p.");
+        return NULL;
+        }
+    }
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        wxHtmlContainerCell_SetWidthFloat(_arg0,_arg1,_arg2);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
+    _resultobj = Py_None;
+    return _resultobj;
+}
+
+#define wxHtmlContainerCell_SetWidthFloatFromTag(_swigobj,_swigarg0)  (_swigobj->SetWidthFloat(_swigarg0))
+static PyObject *_wrap_wxHtmlContainerCell_SetWidthFloatFromTag(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    wxHtmlContainerCell * _arg0;
+    wxHtmlTag * _arg1;
+    PyObject * _argo0 = 0;
+    PyObject * _argo1 = 0;
+    char *_kwnames[] = { "self","tag", NULL };
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxHtmlContainerCell_SetWidthFloatFromTag",_kwnames,&_argo0,&_argo1)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxHtmlContainerCell_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxHtmlContainerCell_SetWidthFloatFromTag. Expected _wxHtmlContainerCell_p.");
+        return NULL;
+        }
+    }
+    if (_argo1) {
+        if (_argo1 == Py_None) { _arg1 = NULL; }
+        else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxHtmlTag_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxHtmlContainerCell_SetWidthFloatFromTag. Expected _wxHtmlTag_p.");
+        return NULL;
+        }
+    }
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        wxHtmlContainerCell_SetWidthFloatFromTag(_arg0,*_arg1);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
+    _resultobj = Py_None;
+    return _resultobj;
+}
+
+#define wxHtmlContainerCell_SetMinHeight(_swigobj,_swigarg0,_swigarg1)  (_swigobj->SetMinHeight(_swigarg0,_swigarg1))
+static PyObject *_wrap_wxHtmlContainerCell_SetMinHeight(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    wxHtmlContainerCell * _arg0;
+    int  _arg1;
+    int  _arg2 = (int ) (HTML_ALIGN_TOP);
+    PyObject * _argo0 = 0;
+    char *_kwnames[] = { "self","h","align", NULL };
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi|i:wxHtmlContainerCell_SetMinHeight",_kwnames,&_argo0,&_arg1,&_arg2)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxHtmlContainerCell_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxHtmlContainerCell_SetMinHeight. Expected _wxHtmlContainerCell_p.");
+        return NULL;
+        }
+    }
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        wxHtmlContainerCell_SetMinHeight(_arg0,_arg1,_arg2);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
+    _resultobj = Py_None;
+    return _resultobj;
+}
+
+#define wxHtmlContainerCell_GetMaxLineWidth(_swigobj)  (_swigobj->GetMaxLineWidth())
+static PyObject *_wrap_wxHtmlContainerCell_GetMaxLineWidth(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    int  _result;
+    wxHtmlContainerCell * _arg0;
+    PyObject * _argo0 = 0;
+    char *_kwnames[] = { "self", NULL };
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxHtmlContainerCell_GetMaxLineWidth",_kwnames,&_argo0)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxHtmlContainerCell_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxHtmlContainerCell_GetMaxLineWidth. Expected _wxHtmlContainerCell_p.");
+        return NULL;
+        }
+    }
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (int )wxHtmlContainerCell_GetMaxLineWidth(_arg0);
+
+    wxPy_END_ALLOW_THREADS;
+}    _resultobj = Py_BuildValue("i",_result);
+    return _resultobj;
+}
+
+#define wxHtmlContainerCell_SetBackgroundColour(_swigobj,_swigarg0)  (_swigobj->SetBackgroundColour(_swigarg0))
+static PyObject *_wrap_wxHtmlContainerCell_SetBackgroundColour(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    wxHtmlContainerCell * _arg0;
+    wxColour * _arg1;
+    PyObject * _argo0 = 0;
+    PyObject * _argo1 = 0;
+    char *_kwnames[] = { "self","clr", NULL };
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxHtmlContainerCell_SetBackgroundColour",_kwnames,&_argo0,&_argo1)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxHtmlContainerCell_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxHtmlContainerCell_SetBackgroundColour. Expected _wxHtmlContainerCell_p.");
+        return NULL;
+        }
+    }
+    if (_argo1) {
+        if (_argo1 == Py_None) { _arg1 = NULL; }
+        else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxColour_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxHtmlContainerCell_SetBackgroundColour. Expected _wxColour_p.");
+        return NULL;
+        }
+    }
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        wxHtmlContainerCell_SetBackgroundColour(_arg0,*_arg1);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
+    _resultobj = Py_None;
+    return _resultobj;
+}
+
+#define wxHtmlContainerCell_SetBorder(_swigobj,_swigarg0,_swigarg1)  (_swigobj->SetBorder(_swigarg0,_swigarg1))
+static PyObject *_wrap_wxHtmlContainerCell_SetBorder(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    wxHtmlContainerCell * _arg0;
+    wxColour * _arg1;
+    wxColour * _arg2;
+    PyObject * _argo0 = 0;
+    PyObject * _argo1 = 0;
+    PyObject * _argo2 = 0;
+    char *_kwnames[] = { "self","clr1","clr2", NULL };
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OOO:wxHtmlContainerCell_SetBorder",_kwnames,&_argo0,&_argo1,&_argo2)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxHtmlContainerCell_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxHtmlContainerCell_SetBorder. Expected _wxHtmlContainerCell_p.");
+        return NULL;
+        }
+    }
+    if (_argo1) {
+        if (_argo1 == Py_None) { _arg1 = NULL; }
+        else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxColour_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxHtmlContainerCell_SetBorder. Expected _wxColour_p.");
+        return NULL;
+        }
+    }
+    if (_argo2) {
+        if (_argo2 == Py_None) { _arg2 = NULL; }
+        else if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxColour_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 3 of wxHtmlContainerCell_SetBorder. Expected _wxColour_p.");
+        return NULL;
+        }
+    }
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        wxHtmlContainerCell_SetBorder(_arg0,*_arg1,*_arg2);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
+    _resultobj = Py_None;
+    return _resultobj;
+}
+
+#define wxHtmlContainerCell_GetFirstCell(_swigobj)  (_swigobj->GetFirstCell())
+static PyObject *_wrap_wxHtmlContainerCell_GetFirstCell(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    wxHtmlCell * _result;
+    wxHtmlContainerCell * _arg0;
+    PyObject * _argo0 = 0;
+    char *_kwnames[] = { "self", NULL };
+    char _ptemp[128];
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxHtmlContainerCell_GetFirstCell",_kwnames,&_argo0)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxHtmlContainerCell_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxHtmlContainerCell_GetFirstCell. Expected _wxHtmlContainerCell_p.");
+        return NULL;
+        }
+    }
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (wxHtmlCell *)wxHtmlContainerCell_GetFirstCell(_arg0);
+
+    wxPy_END_ALLOW_THREADS;
+}    if (_result) {
+        SWIG_MakePtr(_ptemp, (char *) _result,"_wxHtmlCell_p");
+        _resultobj = Py_BuildValue("s",_ptemp);
+    } else {
+        Py_INCREF(Py_None);
+        _resultobj = Py_None;
+    }
+    return _resultobj;
+}
+
+static void *SwigwxHtmlWidgetCellTowxHtmlCell(void *ptr) {
+    wxHtmlWidgetCell *src;
+    wxHtmlCell *dest;
+    src = (wxHtmlWidgetCell *) ptr;
+    dest = (wxHtmlCell *) src;
+    return (void *) dest;
+}
+
+#define new_wxHtmlWidgetCell(_swigarg0,_swigarg1) (new wxHtmlWidgetCell(_swigarg0,_swigarg1))
+static PyObject *_wrap_new_wxHtmlWidgetCell(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    wxHtmlWidgetCell * _result;
+    wxWindow * _arg0;
+    int  _arg1 = (int ) 0;
+    PyObject * _argo0 = 0;
+    char *_kwnames[] = { "wnd","w", NULL };
+    char _ptemp[128];
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O|i:new_wxHtmlWidgetCell",_kwnames,&_argo0,&_arg1)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxWindow_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of new_wxHtmlWidgetCell. Expected _wxWindow_p.");
+        return NULL;
+        }
+    }
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (wxHtmlWidgetCell *)new_wxHtmlWidgetCell(_arg0,_arg1);
+
+    wxPy_END_ALLOW_THREADS;
+}    if (_result) {
+        SWIG_MakePtr(_ptemp, (char *) _result,"_wxHtmlWidgetCell_p");
+        _resultobj = Py_BuildValue("s",_ptemp);
+    } else {
+        Py_INCREF(Py_None);
+        _resultobj = Py_None;
+    }
+    return _resultobj;
+}
+
+#define new_HtmlHistoryItem(_swigarg0,_swigarg1) (new HtmlHistoryItem(_swigarg0,_swigarg1))
+static PyObject *_wrap_new_HtmlHistoryItem(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    HtmlHistoryItem * _result;
+    char * _arg0;
+    char * _arg1;
+    char *_kwnames[] = { "p","a", NULL };
+    char _ptemp[128];
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"ss:new_HtmlHistoryItem",_kwnames,&_arg0,&_arg1)) 
+        return NULL;
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (HtmlHistoryItem *)new_HtmlHistoryItem(_arg0,_arg1);
+
+    wxPy_END_ALLOW_THREADS;
+}    if (_result) {
+        SWIG_MakePtr(_ptemp, (char *) _result,"_HtmlHistoryItem_p");
+        _resultobj = Py_BuildValue("s",_ptemp);
+    } else {
+        Py_INCREF(Py_None);
+        _resultobj = Py_None;
+    }
+    return _resultobj;
+}
+
+#define HtmlHistoryItem_GetPos(_swigobj)  (_swigobj->GetPos())
+static PyObject *_wrap_HtmlHistoryItem_GetPos(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    int  _result;
+    HtmlHistoryItem * _arg0;
+    PyObject * _argo0 = 0;
+    char *_kwnames[] = { "self", NULL };
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:HtmlHistoryItem_GetPos",_kwnames,&_argo0)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_HtmlHistoryItem_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of HtmlHistoryItem_GetPos. Expected _HtmlHistoryItem_p.");
+        return NULL;
+        }
+    }
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (int )HtmlHistoryItem_GetPos(_arg0);
+
+    wxPy_END_ALLOW_THREADS;
+}    _resultobj = Py_BuildValue("i",_result);
+    return _resultobj;
+}
+
+#define HtmlHistoryItem_SetPos(_swigobj,_swigarg0)  (_swigobj->SetPos(_swigarg0))
+static PyObject *_wrap_HtmlHistoryItem_SetPos(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    HtmlHistoryItem * _arg0;
+    int  _arg1;
+    PyObject * _argo0 = 0;
+    char *_kwnames[] = { "self","p", NULL };
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi:HtmlHistoryItem_SetPos",_kwnames,&_argo0,&_arg1)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_HtmlHistoryItem_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of HtmlHistoryItem_SetPos. Expected _HtmlHistoryItem_p.");
+        return NULL;
+        }
+    }
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        HtmlHistoryItem_SetPos(_arg0,_arg1);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
+    _resultobj = Py_None;
+    return _resultobj;
+}
+
+#define HtmlHistoryItem_GetPage(_swigobj)  (_swigobj->GetPage())
+static PyObject *_wrap_HtmlHistoryItem_GetPage(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    wxString * _result;
+    HtmlHistoryItem * _arg0;
+    PyObject * _argo0 = 0;
+    char *_kwnames[] = { "self", NULL };
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:HtmlHistoryItem_GetPage",_kwnames,&_argo0)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_HtmlHistoryItem_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of HtmlHistoryItem_GetPage. Expected _HtmlHistoryItem_p.");
+        return NULL;
+        }
+    }
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        const wxString & _result_ref = HtmlHistoryItem_GetPage(_arg0);
+    _result = (wxString *) &_result_ref;
+
+    wxPy_END_ALLOW_THREADS;
+}{
+    _resultobj = PyString_FromString(WXSTRINGCAST (*_result));
+}
+    return _resultobj;
+}
+
+#define HtmlHistoryItem_GetAnchor(_swigobj)  (_swigobj->GetAnchor())
+static PyObject *_wrap_HtmlHistoryItem_GetAnchor(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    wxString * _result;
+    HtmlHistoryItem * _arg0;
+    PyObject * _argo0 = 0;
+    char *_kwnames[] = { "self", NULL };
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:HtmlHistoryItem_GetAnchor",_kwnames,&_argo0)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_HtmlHistoryItem_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of HtmlHistoryItem_GetAnchor. Expected _HtmlHistoryItem_p.");
+        return NULL;
+        }
+    }
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        const wxString & _result_ref = HtmlHistoryItem_GetAnchor(_arg0);
+    _result = (wxString *) &_result_ref;
+
+    wxPy_END_ALLOW_THREADS;
+}{
+    _resultobj = PyString_FromString(WXSTRINGCAST (*_result));
+}
+    return _resultobj;
+}
+
+static void *SwigwxPyHtmlWindowTowxScrolledWindow(void *ptr) {
+    wxPyHtmlWindow *src;
+    wxScrolledWindow *dest;
+    src = (wxPyHtmlWindow *) ptr;
+    dest = (wxScrolledWindow *) src;
+    return (void *) dest;
+}
+
+static void *SwigwxPyHtmlWindowTowxPanel(void *ptr) {
+    wxPyHtmlWindow *src;
+    wxPanel *dest;
+    src = (wxPyHtmlWindow *) ptr;
+    dest = (wxPanel *) src;
+    return (void *) dest;
+}
+
+static void *SwigwxPyHtmlWindowTowxWindow(void *ptr) {
+    wxPyHtmlWindow *src;
+    wxWindow *dest;
+    src = (wxPyHtmlWindow *) ptr;
+    dest = (wxWindow *) src;
+    return (void *) dest;
+}
+
+static void *SwigwxPyHtmlWindowTowxEvtHandler(void *ptr) {
+    wxPyHtmlWindow *src;
+    wxEvtHandler *dest;
+    src = (wxPyHtmlWindow *) ptr;
+    dest = (wxEvtHandler *) src;
+    return (void *) dest;
+}
+
+#define new_wxHtmlWindow(_swigarg0,_swigarg1,_swigarg2,_swigarg3,_swigarg4,_swigarg5) (new wxPyHtmlWindow(_swigarg0,_swigarg1,_swigarg2,_swigarg3,_swigarg4,_swigarg5))
+static PyObject *_wrap_new_wxHtmlWindow(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    wxPyHtmlWindow * _result;
+    wxWindow * _arg0;
+    int  _arg1 = (int ) -1;
+    wxPoint * _arg2 = (wxPoint *) &wxPyDefaultPosition;
+    wxSize * _arg3 = (wxSize *) &wxPyDefaultSize;
+    int  _arg4 = (int ) wxHW_SCROLLBAR_AUTO;
+    char * _arg5 = (char *) "htmlWindow";
+    PyObject * _argo0 = 0;
+    PyObject * _argo2 = 0;
+    PyObject * _argo3 = 0;
+    char *_kwnames[] = { "parent","id","pos","size","flags","name", NULL };
+    char _ptemp[128];
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O|iOOis:new_wxHtmlWindow",_kwnames,&_argo0,&_arg1,&_argo2,&_argo3,&_arg4,&_arg5)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxWindow_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of new_wxHtmlWindow. Expected _wxWindow_p.");
+        return NULL;
+        }
+    }
+    if (_argo2) {
+        if (_argo2 == Py_None) { _arg2 = NULL; }
+        else if (SWIG_GetPtrObj(_argo2,(void **) &_arg2,"_wxPoint_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 3 of new_wxHtmlWindow. Expected _wxPoint_p.");
+        return NULL;
+        }
+    }
+    if (_argo3) {
+        if (_argo3 == Py_None) { _arg3 = NULL; }
+        else if (SWIG_GetPtrObj(_argo3,(void **) &_arg3,"_wxSize_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 4 of new_wxHtmlWindow. Expected _wxSize_p.");
+        return NULL;
+        }
+    }
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (wxPyHtmlWindow *)new_wxHtmlWindow(_arg0,_arg1,*_arg2,*_arg3,_arg4,_arg5);
+
+    wxPy_END_ALLOW_THREADS;
+}    if (_result) {
+        SWIG_MakePtr(_ptemp, (char *) _result,"_wxPyHtmlWindow_p");
+        _resultobj = Py_BuildValue("s",_ptemp);
+    } else {
+        Py_INCREF(Py_None);
+        _resultobj = Py_None;
+    }
+    return _resultobj;
+}
+
+#define wxHtmlWindow__setSelf(_swigobj,_swigarg0)  (_swigobj->_setSelf(_swigarg0))
+static PyObject *_wrap_wxHtmlWindow__setSelf(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    wxPyHtmlWindow * _arg0;
+    PyObject * _arg1;
+    PyObject * _argo0 = 0;
+    PyObject * _obj1 = 0;
+    char *_kwnames[] = { "self","self", NULL };
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxHtmlWindow__setSelf",_kwnames,&_argo0,&_obj1)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPyHtmlWindow_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxHtmlWindow__setSelf. Expected _wxPyHtmlWindow_p.");
+        return NULL;
+        }
+    }
+{
+  _arg1 = _obj1;
+}
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        wxHtmlWindow__setSelf(_arg0,_arg1);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
+    _resultobj = Py_None;
+    return _resultobj;
+}
+
+#define wxHtmlWindow_SetPage(_swigobj,_swigarg0)  (_swigobj->SetPage(_swigarg0))
+static PyObject *_wrap_wxHtmlWindow_SetPage(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    bool  _result;
+    wxPyHtmlWindow * _arg0;
+    char * _arg1;
+    PyObject * _argo0 = 0;
+    char *_kwnames[] = { "self","source", NULL };
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Os:wxHtmlWindow_SetPage",_kwnames,&_argo0,&_arg1)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPyHtmlWindow_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxHtmlWindow_SetPage. Expected _wxPyHtmlWindow_p.");
+        return NULL;
+        }
+    }
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (bool )wxHtmlWindow_SetPage(_arg0,_arg1);
+
+    wxPy_END_ALLOW_THREADS;
+}    _resultobj = Py_BuildValue("i",_result);
+    return _resultobj;
+}
+
+#define wxHtmlWindow_LoadPage(_swigobj,_swigarg0)  (_swigobj->LoadPage(_swigarg0))
+static PyObject *_wrap_wxHtmlWindow_LoadPage(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    bool  _result;
+    wxPyHtmlWindow * _arg0;
+    char * _arg1;
+    PyObject * _argo0 = 0;
+    char *_kwnames[] = { "self","location", NULL };
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Os:wxHtmlWindow_LoadPage",_kwnames,&_argo0,&_arg1)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPyHtmlWindow_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxHtmlWindow_LoadPage. Expected _wxPyHtmlWindow_p.");
+        return NULL;
+        }
+    }
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (bool )wxHtmlWindow_LoadPage(_arg0,_arg1);
+
+    wxPy_END_ALLOW_THREADS;
+}    _resultobj = Py_BuildValue("i",_result);
+    return _resultobj;
+}
+
+#define wxHtmlWindow_GetOpenedPage(_swigobj)  (_swigobj->GetOpenedPage())
+static PyObject *_wrap_wxHtmlWindow_GetOpenedPage(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    wxString * _result;
+    wxPyHtmlWindow * _arg0;
+    PyObject * _argo0 = 0;
+    char *_kwnames[] = { "self", NULL };
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxHtmlWindow_GetOpenedPage",_kwnames,&_argo0)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPyHtmlWindow_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxHtmlWindow_GetOpenedPage. Expected _wxPyHtmlWindow_p.");
+        return NULL;
+        }
+    }
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = new wxString (wxHtmlWindow_GetOpenedPage(_arg0));
+
+    wxPy_END_ALLOW_THREADS;
+}{
+    _resultobj = PyString_FromString(WXSTRINGCAST *(_result));
+}
+{
+    delete _result;
+}
+    return _resultobj;
+}
+
+#define wxHtmlWindow_SetRelatedFrame(_swigobj,_swigarg0,_swigarg1)  (_swigobj->SetRelatedFrame(_swigarg0,_swigarg1))
+static PyObject *_wrap_wxHtmlWindow_SetRelatedFrame(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    wxPyHtmlWindow * _arg0;
+    wxFrame * _arg1;
+    char * _arg2;
+    PyObject * _argo0 = 0;
+    PyObject * _argo1 = 0;
+    char *_kwnames[] = { "self","frame","format", NULL };
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OOs:wxHtmlWindow_SetRelatedFrame",_kwnames,&_argo0,&_argo1,&_arg2)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPyHtmlWindow_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxHtmlWindow_SetRelatedFrame. Expected _wxPyHtmlWindow_p.");
+        return NULL;
+        }
+    }
+    if (_argo1) {
+        if (_argo1 == Py_None) { _arg1 = NULL; }
+        else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxFrame_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxHtmlWindow_SetRelatedFrame. Expected _wxFrame_p.");
+        return NULL;
+        }
+    }
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        wxHtmlWindow_SetRelatedFrame(_arg0,_arg1,_arg2);
+
+    wxPy_END_ALLOW_THREADS;
+}    Py_INCREF(Py_None);
+    _resultobj = Py_None;
+    return _resultobj;
+}
+
+#define wxHtmlWindow_GetRelatedFrame(_swigobj)  (_swigobj->GetRelatedFrame())
+static PyObject *_wrap_wxHtmlWindow_GetRelatedFrame(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    wxFrame * _result;
+    wxPyHtmlWindow * _arg0;
+    PyObject * _argo0 = 0;
+    char *_kwnames[] = { "self", NULL };
+    char _ptemp[128];
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxHtmlWindow_GetRelatedFrame",_kwnames,&_argo0)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPyHtmlWindow_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxHtmlWindow_GetRelatedFrame. Expected _wxPyHtmlWindow_p.");
+        return NULL;
+        }
+    }
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (wxFrame *)wxHtmlWindow_GetRelatedFrame(_arg0);
+
+    wxPy_END_ALLOW_THREADS;
+}    if (_result) {
+        SWIG_MakePtr(_ptemp, (char *) _result,"_wxFrame_p");
+        _resultobj = Py_BuildValue("s",_ptemp);
+    } else {
+        Py_INCREF(Py_None);
         _resultobj = Py_None;
     }
     return _resultobj;
@@ -2966,6 +4109,40 @@ static PyObject *_wrap_wxHtmlWindow_GetInternalRepresentation(PyObject *self, Py
     return _resultobj;
 }
 
+#define wxHtmlWindow_GetParser(_swigobj)  (_swigobj->GetParser())
+static PyObject *_wrap_wxHtmlWindow_GetParser(PyObject *self, PyObject *args, PyObject *kwargs) {
+    PyObject * _resultobj;
+    wxHtmlWinParser * _result;
+    wxPyHtmlWindow * _arg0;
+    PyObject * _argo0 = 0;
+    char *_kwnames[] = { "self", NULL };
+    char _ptemp[128];
+
+    self = self;
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxHtmlWindow_GetParser",_kwnames,&_argo0)) 
+        return NULL;
+    if (_argo0) {
+        if (_argo0 == Py_None) { _arg0 = NULL; }
+        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxPyHtmlWindow_p")) {
+            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxHtmlWindow_GetParser. Expected _wxPyHtmlWindow_p.");
+        return NULL;
+        }
+    }
+{
+    wxPy_BEGIN_ALLOW_THREADS;
+        _result = (wxHtmlWinParser *)wxHtmlWindow_GetParser(_arg0);
+
+    wxPy_END_ALLOW_THREADS;
+}    if (_result) {
+        SWIG_MakePtr(_ptemp, (char *) _result,"_wxHtmlWinParser_p");
+        _resultobj = Py_BuildValue("s",_ptemp);
+    } else {
+        Py_INCREF(Py_None);
+        _resultobj = Py_None;
+    }
+    return _resultobj;
+}
+
 #define wxHtmlWindow_base_OnLinkClicked(_swigobj,_swigarg0)  (_swigobj->base_OnLinkClicked(_swigarg0))
 static PyObject *_wrap_wxHtmlWindow_base_OnLinkClicked(PyObject *self, PyObject *args, PyObject *kwargs) {
     PyObject * _resultobj;
@@ -2996,6 +4173,7 @@ static PyObject *_wrap_wxHtmlWindow_base_OnLinkClicked(PyObject *self, PyObject
 
 static PyMethodDef htmlcMethods[] = {
         { "wxHtmlWindow_base_OnLinkClicked", (PyCFunction) _wrap_wxHtmlWindow_base_OnLinkClicked, METH_VARARGS | METH_KEYWORDS },
+        { "wxHtmlWindow_GetParser", (PyCFunction) _wrap_wxHtmlWindow_GetParser, METH_VARARGS | METH_KEYWORDS },
         { "wxHtmlWindow_GetInternalRepresentation", (PyCFunction) _wrap_wxHtmlWindow_GetInternalRepresentation, METH_VARARGS | METH_KEYWORDS },
         { "wxHtmlWindow_HistoryClear", (PyCFunction) _wrap_wxHtmlWindow_HistoryClear, METH_VARARGS | METH_KEYWORDS },
         { "wxHtmlWindow_HistoryForward", (PyCFunction) _wrap_wxHtmlWindow_HistoryForward, METH_VARARGS | METH_KEYWORDS },
@@ -3018,6 +4196,41 @@ static PyMethodDef htmlcMethods[] = {
         { "HtmlHistoryItem_SetPos", (PyCFunction) _wrap_HtmlHistoryItem_SetPos, METH_VARARGS | METH_KEYWORDS },
         { "HtmlHistoryItem_GetPos", (PyCFunction) _wrap_HtmlHistoryItem_GetPos, METH_VARARGS | METH_KEYWORDS },
         { "new_HtmlHistoryItem", (PyCFunction) _wrap_new_HtmlHistoryItem, METH_VARARGS | METH_KEYWORDS },
+        { "new_wxHtmlWidgetCell", (PyCFunction) _wrap_new_wxHtmlWidgetCell, METH_VARARGS | METH_KEYWORDS },
+        { "wxHtmlContainerCell_GetFirstCell", (PyCFunction) _wrap_wxHtmlContainerCell_GetFirstCell, METH_VARARGS | METH_KEYWORDS },
+        { "wxHtmlContainerCell_SetBorder", (PyCFunction) _wrap_wxHtmlContainerCell_SetBorder, METH_VARARGS | METH_KEYWORDS },
+        { "wxHtmlContainerCell_SetBackgroundColour", (PyCFunction) _wrap_wxHtmlContainerCell_SetBackgroundColour, METH_VARARGS | METH_KEYWORDS },
+        { "wxHtmlContainerCell_GetMaxLineWidth", (PyCFunction) _wrap_wxHtmlContainerCell_GetMaxLineWidth, METH_VARARGS | METH_KEYWORDS },
+        { "wxHtmlContainerCell_SetMinHeight", (PyCFunction) _wrap_wxHtmlContainerCell_SetMinHeight, METH_VARARGS | METH_KEYWORDS },
+        { "wxHtmlContainerCell_SetWidthFloatFromTag", (PyCFunction) _wrap_wxHtmlContainerCell_SetWidthFloatFromTag, METH_VARARGS | METH_KEYWORDS },
+        { "wxHtmlContainerCell_SetWidthFloat", (PyCFunction) _wrap_wxHtmlContainerCell_SetWidthFloat, METH_VARARGS | METH_KEYWORDS },
+        { "wxHtmlContainerCell_SetAlign", (PyCFunction) _wrap_wxHtmlContainerCell_SetAlign, METH_VARARGS | METH_KEYWORDS },
+        { "wxHtmlContainerCell_GetIndentUnits", (PyCFunction) _wrap_wxHtmlContainerCell_GetIndentUnits, METH_VARARGS | METH_KEYWORDS },
+        { "wxHtmlContainerCell_GetIndent", (PyCFunction) _wrap_wxHtmlContainerCell_GetIndent, METH_VARARGS | METH_KEYWORDS },
+        { "wxHtmlContainerCell_SetIndent", (PyCFunction) _wrap_wxHtmlContainerCell_SetIndent, METH_VARARGS | METH_KEYWORDS },
+        { "wxHtmlContainerCell_GetAlignVer", (PyCFunction) _wrap_wxHtmlContainerCell_GetAlignVer, METH_VARARGS | METH_KEYWORDS },
+        { "wxHtmlContainerCell_SetAlignVer", (PyCFunction) _wrap_wxHtmlContainerCell_SetAlignVer, METH_VARARGS | METH_KEYWORDS },
+        { "wxHtmlContainerCell_GetAlignHor", (PyCFunction) _wrap_wxHtmlContainerCell_GetAlignHor, METH_VARARGS | METH_KEYWORDS },
+        { "wxHtmlContainerCell_SetAlignHor", (PyCFunction) _wrap_wxHtmlContainerCell_SetAlignHor, METH_VARARGS | METH_KEYWORDS },
+        { "wxHtmlContainerCell_InsertCell", (PyCFunction) _wrap_wxHtmlContainerCell_InsertCell, METH_VARARGS | METH_KEYWORDS },
+        { "new_wxHtmlContainerCell", (PyCFunction) _wrap_new_wxHtmlContainerCell, METH_VARARGS | METH_KEYWORDS },
+        { "wxHtmlCell_Find", (PyCFunction) _wrap_wxHtmlCell_Find, METH_VARARGS | METH_KEYWORDS },
+        { "wxHtmlCell_DrawInvisible", (PyCFunction) _wrap_wxHtmlCell_DrawInvisible, METH_VARARGS | METH_KEYWORDS },
+        { "wxHtmlCell_Draw", (PyCFunction) _wrap_wxHtmlCell_Draw, METH_VARARGS | METH_KEYWORDS },
+        { "wxHtmlCell_Layout", (PyCFunction) _wrap_wxHtmlCell_Layout, METH_VARARGS | METH_KEYWORDS },
+        { "wxHtmlCell_SetNext", (PyCFunction) _wrap_wxHtmlCell_SetNext, METH_VARARGS | METH_KEYWORDS },
+        { "wxHtmlCell_SetLink", (PyCFunction) _wrap_wxHtmlCell_SetLink, METH_VARARGS | METH_KEYWORDS },
+        { "wxHtmlCell_SetPos", (PyCFunction) _wrap_wxHtmlCell_SetPos, METH_VARARGS | METH_KEYWORDS },
+        { "wxHtmlCell_GetNext", (PyCFunction) _wrap_wxHtmlCell_GetNext, METH_VARARGS | METH_KEYWORDS },
+        { "wxHtmlCell_GetLink", (PyCFunction) _wrap_wxHtmlCell_GetLink, METH_VARARGS | METH_KEYWORDS },
+        { "wxHtmlCell_GetDescent", (PyCFunction) _wrap_wxHtmlCell_GetDescent, METH_VARARGS | METH_KEYWORDS },
+        { "wxHtmlCell_GetHeight", (PyCFunction) _wrap_wxHtmlCell_GetHeight, METH_VARARGS | METH_KEYWORDS },
+        { "wxHtmlCell_GetWidth", (PyCFunction) _wrap_wxHtmlCell_GetWidth, METH_VARARGS | METH_KEYWORDS },
+        { "wxHtmlCell_GetPosY", (PyCFunction) _wrap_wxHtmlCell_GetPosY, METH_VARARGS | METH_KEYWORDS },
+        { "wxHtmlCell_GetPosX", (PyCFunction) _wrap_wxHtmlCell_GetPosX, METH_VARARGS | METH_KEYWORDS },
+        { "wxHtmlCell_GetParent", (PyCFunction) _wrap_wxHtmlCell_GetParent, METH_VARARGS | METH_KEYWORDS },
+        { "wxHtmlCell_SetParent", (PyCFunction) _wrap_wxHtmlCell_SetParent, METH_VARARGS | METH_KEYWORDS },
+        { "new_wxHtmlCell", (PyCFunction) _wrap_new_wxHtmlCell, METH_VARARGS | METH_KEYWORDS },
         { "wxHtmlWinTagHandler_ParseInner", (PyCFunction) _wrap_wxHtmlWinTagHandler_ParseInner, METH_VARARGS | METH_KEYWORDS },
         { "wxHtmlWinTagHandler_GetParser", (PyCFunction) _wrap_wxHtmlWinTagHandler_GetParser, METH_VARARGS | METH_KEYWORDS },
         { "wxHtmlWinTagHandler_SetParser", (PyCFunction) _wrap_wxHtmlWinTagHandler_SetParser, METH_VARARGS | METH_KEYWORDS },
@@ -3118,6 +4331,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_wxCursor","_class_wxCursor",0},
     { "_wxNotifyEvent","_class_wxNotifyEvent",0},
     { "_wxImageHandler","_class_wxImageHandler",0},
+    { "_wxHtmlWidgetCell","_class_wxHtmlWidgetCell",0},
     { "_class_wxTreeCtrl","_wxTreeCtrl",0},
     { "_wxMask","_class_wxMask",0},
     { "_wxToolTip","_class_wxToolTip",0},
@@ -3159,12 +4373,12 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_size_t","_wxWindowID",0},
     { "_size_t","_uint",0},
     { "_class_wxRealPoint","_wxRealPoint",0},
-    { "_wxPrinterDC","_class_wxPrinterDC",0},
     { "_class_wxMenuItem","_wxMenuItem",0},
     { "_class_wxPaintEvent","_wxPaintEvent",0},
     { "_wxSysColourChangedEvent","_class_wxSysColourChangedEvent",0},
     { "_class_wxStatusBar","_wxStatusBar",0},
     { "_class_wxGIFHandler","_wxGIFHandler",0},
+    { "_class_wxPostScriptDC","_wxPostScriptDC",0},
     { "_wxPanel","_class_wxPyHtmlWindow",SwigwxPyHtmlWindowTowxPanel},
     { "_wxPanel","_wxPyHtmlWindow",SwigwxPyHtmlWindowTowxPanel},
     { "_wxPanel","_class_wxPanel",0},
@@ -3211,8 +4425,12 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_wxRadioBox","_class_wxRadioBox",0},
     { "_class_wxFontData","_wxFontData",0},
     { "_class___wxPyCleanup","___wxPyCleanup",0},
+    { "_wxHtmlCell","_class_wxHtmlWidgetCell",SwigwxHtmlWidgetCellTowxHtmlCell},
+    { "_wxHtmlCell","_wxHtmlWidgetCell",SwigwxHtmlWidgetCellTowxHtmlCell},
+    { "_wxHtmlCell","_class_wxHtmlContainerCell",SwigwxHtmlContainerCellTowxHtmlCell},
+    { "_wxHtmlCell","_wxHtmlContainerCell",SwigwxHtmlContainerCellTowxHtmlCell},
+    { "_wxHtmlCell","_class_wxHtmlCell",0},
     { "_wxBitmap","_class_wxBitmap",0},
-    { "_wxTaskBarIcon","_class_wxTaskBarIcon",0},
     { "_wxPrintDialog","_class_wxPrintDialog",0},
     { "_wxPyTimer","_class_wxPyTimer",0},
     { "_wxWindowDC","_class_wxWindowDC",0},
@@ -3224,6 +4442,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxIndividualLayoutConstraint","_wxIndividualLayoutConstraint",0},
     { "_class_wxNotifyEvent","_wxNotifyEvent",0},
     { "_wxMessageDialog","_class_wxMessageDialog",0},
+    { "_class_wxHtmlWidgetCell","_wxHtmlWidgetCell",0},
     { "_class_wxPyEvent","_wxPyEvent",0},
     { "_wxTextEntryDialog","_class_wxTextEntryDialog",0},
     { "_wxConfig","_class_wxConfig",0},
@@ -3245,6 +4464,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxRegion","_wxRegion",0},
     { "_class_wxDropFilesEvent","_wxDropFilesEvent",0},
     { "_class_wxPreviewFrame","_wxPreviewFrame",0},
+    { "_wxHtmlContainerCell","_class_wxHtmlContainerCell",0},
     { "_wxStaticText","_class_wxStaticText",0},
     { "_wxFont","_class_wxFont",0},
     { "_wxCloseEvent","_class_wxCloseEvent",0},
@@ -3280,7 +4500,6 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_signed_int","_int",0},
     { "_class_wxTextCtrl","_wxTextCtrl",0},
     { "_wxLayoutConstraints","_class_wxLayoutConstraints",0},
-    { "_wxMetaFileDC","_class_wxMetaFileDC",0},
     { "_wxMenu","_class_wxMenu",0},
     { "_class_wxMoveEvent","_wxMoveEvent",0},
     { "_wxListBox","_class_wxListBox",0},
@@ -3317,10 +4536,14 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxRadioBox","_wxRadioBox",0},
     { "_wxGridCell","_class_wxGridCell",0},
     { "_class_wxHtmlWinParser","_wxHtmlWinParser",0},
+    { "_class_wxHtmlCell","_class_wxHtmlWidgetCell",SwigwxHtmlWidgetCellTowxHtmlCell},
+    { "_class_wxHtmlCell","_wxHtmlWidgetCell",SwigwxHtmlWidgetCellTowxHtmlCell},
+    { "_class_wxHtmlCell","_class_wxHtmlContainerCell",SwigwxHtmlContainerCellTowxHtmlCell},
+    { "_class_wxHtmlCell","_wxHtmlContainerCell",SwigwxHtmlContainerCellTowxHtmlCell},
+    { "_class_wxHtmlCell","_wxHtmlCell",0},
     { "_signed_short","_WXTYPE",0},
     { "_signed_short","_short",0},
     { "_wxMemoryDC","_class_wxMemoryDC",0},
-    { "_class_wxTaskBarIcon","_wxTaskBarIcon",0},
     { "_class_wxPrintDialog","_wxPrintDialog",0},
     { "_wxPaintDC","_class_wxPaintDC",0},
     { "_class_wxWindowDC","_wxWindowDC",0},
@@ -3330,6 +4553,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxToolBarTool","_wxToolBarTool",0},
     { "_class_wxAcceleratorEntry","_wxAcceleratorEntry",0},
     { "_class_wxCursor","_wxCursor",0},
+    { "_wxPostScriptDC","_class_wxPostScriptDC",0},
     { "_class_wxImageHandler","_wxImageHandler",0},
     { "_class_wxHtmlTag","_wxHtmlTag",0},
     { "_wxScrolledWindow","_class_wxPyHtmlWindow",SwigwxPyHtmlWindowTowxScrolledWindow},
@@ -3337,7 +4561,6 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_wxScrolledWindow","_class_wxScrolledWindow",0},
     { "_wxTreeItemId","_class_wxTreeItemId",0},
     { "_unsigned_char","_byte",0},
-    { "_class_wxMetaFileDC","_wxMetaFileDC",0},
     { "_class_wxMenu","_wxMenu",0},
     { "_wxControl","_class_wxControl",0},
     { "_class_wxListBox","_wxListBox",0},
@@ -3364,6 +4587,7 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxCalculateLayoutEvent","_wxCalculateLayoutEvent",0},
     { "_class_wxImageList","_wxImageList",0},
     { "_class_wxBitmapButton","_wxBitmapButton",0},
+    { "_class_wxHtmlContainerCell","_wxHtmlContainerCell",0},
     { "_wxFrame","_class_wxFrame",0},
     { "_class_wxNotebook","_wxNotebook",0},
     { "_wxJPEGHandler","_class_wxJPEGHandler",0},
@@ -3391,7 +4615,6 @@ static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
     { "_class_wxPyApp","_wxPyApp",0},
     { "_wxSize","_class_wxSize",0},
     { "_wxRegionIterator","_class_wxRegionIterator",0},
-    { "_class_wxPrinterDC","_wxPrinterDC",0},
     { "_class_wxMDIParentFrame","_wxMDIParentFrame",0},
     { "_wxPyTreeItemData","_class_wxPyTreeItemData",0},
     { "_class_wxPaintDC","_wxPaintDC",0},
@@ -3478,20 +4701,43 @@ SWIGEXPORT(void) inithtmlc() {
         SWIG_globals = SWIG_newvarlink();
         m = Py_InitModule("htmlc", htmlcMethods);
         d = PyModule_GetDict(m);
-
-
+        PyDict_SetItemString(d,"HTML_ALIGN_LEFT", PyInt_FromLong((long) HTML_ALIGN_LEFT));
+        PyDict_SetItemString(d,"HTML_ALIGN_CENTER", PyInt_FromLong((long) HTML_ALIGN_CENTER));
+        PyDict_SetItemString(d,"HTML_ALIGN_RIGHT", PyInt_FromLong((long) HTML_ALIGN_RIGHT));
+        PyDict_SetItemString(d,"HTML_ALIGN_BOTTOM", PyInt_FromLong((long) HTML_ALIGN_BOTTOM));
+        PyDict_SetItemString(d,"HTML_ALIGN_TOP", PyInt_FromLong((long) HTML_ALIGN_TOP));
+        PyDict_SetItemString(d,"HTML_CLR_FOREGROUND", PyInt_FromLong((long) HTML_CLR_FOREGROUND));
+        PyDict_SetItemString(d,"HTML_CLR_BACKGROUND", PyInt_FromLong((long) HTML_CLR_BACKGROUND));
+        PyDict_SetItemString(d,"HTML_UNITS_PIXELS", PyInt_FromLong((long) HTML_UNITS_PIXELS));
+        PyDict_SetItemString(d,"HTML_UNITS_PERCENT", PyInt_FromLong((long) HTML_UNITS_PERCENT));
+        PyDict_SetItemString(d,"HTML_INDENT_LEFT", PyInt_FromLong((long) HTML_INDENT_LEFT));
+        PyDict_SetItemString(d,"HTML_INDENT_RIGHT", PyInt_FromLong((long) HTML_INDENT_RIGHT));
+        PyDict_SetItemString(d,"HTML_INDENT_TOP", PyInt_FromLong((long) HTML_INDENT_TOP));
+        PyDict_SetItemString(d,"HTML_INDENT_BOTTOM", PyInt_FromLong((long) HTML_INDENT_BOTTOM));
+        PyDict_SetItemString(d,"HTML_INDENT_HORIZONTAL", PyInt_FromLong((long) HTML_INDENT_HORIZONTAL));
+        PyDict_SetItemString(d,"HTML_INDENT_VERTICAL", PyInt_FromLong((long) HTML_INDENT_VERTICAL));
+        PyDict_SetItemString(d,"HTML_INDENT_ALL", PyInt_FromLong((long) HTML_INDENT_ALL));
+        PyDict_SetItemString(d,"HTML_COND_ISANCHOR", PyInt_FromLong((long) HTML_COND_ISANCHOR));
+        PyDict_SetItemString(d,"HTML_COND_ISIMAGEMAP", PyInt_FromLong((long) HTML_COND_ISIMAGEMAP));
+        PyDict_SetItemString(d,"HTML_COND_USER", PyInt_FromLong((long) HTML_COND_USER));
+
+
+#if 0
     /* This is a bit cheesy. SWIG happens to call the dictionary d...
      * I save it here, 'cause I don't know how to get it back later! */
     mod_dict = d;
+#endif
 
     //inithtmlhelpc();
 
     wxClassInfo::CleanUpClasses();
     wxClassInfo::InitializeClasses();
 
+#if 0
     /* specifically add our python tag handler; it doesn't seem to
      * happen by itself... */
     wxHtmlWinParser::AddModule(new HTML_ModulePythonTag());
+#endif
 
     // Until wxFileSystem is wrapped...
     #if wxUSE_FS_ZIP
index 235968385515cd132f685b72ec4da5509321c7fa..d84cf0831b1a134a07d364d86991cacb1ac8ada0 100644 (file)
@@ -52,6 +52,7 @@ wxSize wxPyDefaultSize(wxDefaultSize);
 
 %{
 
+#if 0
 static PyObject* mod_dict = NULL; // will be set by init
 
 #include <wx/html/mod_templ.h>
@@ -129,15 +130,44 @@ TAGS_MODULE_BEGIN(PythonTag)
 TAGS_MODULE_END(PythonTag)
 
 // Note: see also the init function where we add the module!
-
+#endif
 %}
 
 //---------------------------------------------------------------------------
+
+enum {
+    HTML_ALIGN_LEFT,
+    HTML_ALIGN_CENTER,
+    HTML_ALIGN_RIGHT,
+    HTML_ALIGN_BOTTOM,
+    HTML_ALIGN_TOP,
+
+    HTML_CLR_FOREGROUND,
+    HTML_CLR_BACKGROUND,
+
+    HTML_UNITS_PIXELS,
+    HTML_UNITS_PERCENT,
+
+    HTML_INDENT_LEFT,
+    HTML_INDENT_RIGHT,
+    HTML_INDENT_TOP,
+    HTML_INDENT_BOTTOM,
+
+    HTML_INDENT_HORIZONTAL,
+    HTML_INDENT_VERTICAL,
+    HTML_INDENT_ALL,
+
+    HTML_COND_ISANCHOR,
+    HTML_COND_ISIMAGEMAP,
+    HTML_COND_USER,
+};
+
+
 //---------------------------------------------------------------------------
 
 class wxHtmlTag {
 public:
-    // Never need to create a new tag...
+    // Never need to create a new tag from Python...
     //wxHtmlTag(const wxString& source, int pos, int end_pos, wxHtmlTagsCache* cache);
 
     wxString GetName();
@@ -236,7 +266,6 @@ public:
 
 IMP_PYCALLBACK_STRING__pure(wxPyHtmlTagHandler, wxHtmlTagHandler, GetSupportedTags);
 IMP_PYCALLBACK_BOOL_TAG_pure(wxPyHtmlTagHandler, wxHtmlTagHandler, HandleTag);
-
 %}
 
 
@@ -272,7 +301,6 @@ public:
 
 IMP_PYCALLBACK_STRING__pure(wxPyHtmlWinTagHandler, wxHtmlWinTagHandler, GetSupportedTags);
 IMP_PYCALLBACK_BOOL_TAG_pure(wxPyHtmlWinTagHandler, wxHtmlWinTagHandler, HandleTag);
-
 %}
 
 
@@ -315,9 +343,11 @@ public:
         // Wave our magic wand...  (if it works it's a miracle!  ;-)
 
         // First, make a new instance of the tag handler
+        bool doSave = wxPyRestoreThread();
         PyObject* arg = Py_BuildValue("()");
         PyObject* obj = PyInstance_New(m_tagHandlerClass, arg, NULL);
         Py_DECREF(arg);
+        wxPySaveThread(doSave);
 
         // now figure out where it's C++ object is...
         wxPyHtmlWinTagHandler* thPtr;
@@ -348,6 +378,63 @@ private:
     }
 %}
 
+//---------------------------------------------------------------------------
+//---------------------------------------------------------------------------
+
+class wxHtmlCell {
+public:
+    wxHtmlCell();
+
+    void SetParent(wxHtmlContainerCell *p);
+    wxHtmlContainerCell* GetParent();
+    int GetPosX();
+    int GetPosY();
+    int GetWidth();
+    int GetHeight();
+    int GetDescent();
+    wxString GetLink(int x = 0, int y = 0);
+    wxHtmlCell* GetNext();
+    void SetPos(int x, int y);
+    void SetLink(const wxString& link);
+    void SetNext(wxHtmlCell *cell);
+    void Layout(int w);
+    void Draw(wxDC& dc, int x, int y, int view_y1, int view_y2);
+    void DrawInvisible(wxDC& dc, int x, int y);
+    const wxHtmlCell* Find(int condition, const void* param);
+};
+
+
+class wxHtmlContainerCell : public wxHtmlCell {
+public:
+    wxHtmlContainerCell(wxHtmlContainerCell *parent);
+
+    void InsertCell(wxHtmlCell *cell);
+    void SetAlignHor(int al);
+    int GetAlignHor();
+    void SetAlignVer(int al);
+    int GetAlignVer();
+    void SetIndent(int i, int what, int units = HTML_UNITS_PIXELS);
+    int GetIndent(int ind);
+    int GetIndentUnits(int ind);
+    void SetAlign(const wxHtmlTag& tag);
+    void SetWidthFloat(int w, int units);
+    %name(SetWidthFloatFromTag)void SetWidthFloat(const wxHtmlTag& tag);
+    void SetMinHeight(int h, int align = HTML_ALIGN_TOP);
+    int GetMaxLineWidth();
+    void SetBackgroundColour(const wxColour& clr);
+    void SetBorder(const wxColour& clr1, const wxColour& clr2);
+    wxHtmlCell* GetFirstCell();
+};
+
+
+
+
+class wxHtmlWidgetCell : public wxHtmlCell {
+public:
+    wxHtmlWidgetCell(wxWindow* wnd, int w = 0);
+
+};
+
 
 
 //---------------------------------------------------------------------------
@@ -461,6 +548,8 @@ public:
                 // Returns pointer to conteiners/cells structure.
                 // It should be used ONLY when printing
 
+    wxHtmlWinParser* GetParser();
+
 
     void base_OnLinkClicked(const char* link);
                 // called when users clicked on hypertext link. Default behavior is to
@@ -486,18 +575,22 @@ public:
 
 %init %{
 
+#if 0
     /* This is a bit cheesy. SWIG happens to call the dictionary d...
      * I save it here, 'cause I don't know how to get it back later! */
     mod_dict = d;
+#endif
 
     //inithtmlhelpc();
 
     wxClassInfo::CleanUpClasses();
     wxClassInfo::InitializeClasses();
 
+#if 0
     /* specifically add our python tag handler; it doesn't seem to
      * happen by itself... */
     wxHtmlWinParser::AddModule(new HTML_ModulePythonTag());
+#endif
 
     // Until wxFileSystem is wrapped...
     #if wxUSE_FS_ZIP
@@ -505,4 +598,11 @@ public:
     #endif
 %}
 
+//----------------------------------------------------------------------
+// And this gets appended to the shadow class file.
+//----------------------------------------------------------------------
+
+%pragma(python) include="_extras.py";
+
 //---------------------------------------------------------------------------
+
index a623832743089421d0edfd27d237c60b8b050e62..a9a37900cb6124e7d7d266d184227bc5676b444f 100644 (file)
@@ -135,12 +135,15 @@ class wxHtmlWinParserPtr(wxHtmlParserPtr):
         return val
     def GetContainer(self, *_args, **_kwargs):
         val = apply(htmlc.wxHtmlWinParser_GetContainer,(self,) + _args, _kwargs)
+        if val: val = wxHtmlContainerCellPtr(val) 
         return val
     def OpenContainer(self, *_args, **_kwargs):
         val = apply(htmlc.wxHtmlWinParser_OpenContainer,(self,) + _args, _kwargs)
+        if val: val = wxHtmlContainerCellPtr(val) 
         return val
     def CloseContainer(self, *_args, **_kwargs):
         val = apply(htmlc.wxHtmlWinParser_CloseContainer,(self,) + _args, _kwargs)
+        if val: val = wxHtmlContainerCellPtr(val) 
         return val
     def GetFontSize(self, *_args, **_kwargs):
         val = apply(htmlc.wxHtmlWinParser_GetFontSize,(self,) + _args, _kwargs)
@@ -268,6 +271,148 @@ class wxHtmlWinTagHandler(wxHtmlWinTagHandlerPtr):
 
 
 
+class wxHtmlCellPtr :
+    def __init__(self,this):
+        self.this = this
+        self.thisown = 0
+    def SetParent(self, *_args, **_kwargs):
+        val = apply(htmlc.wxHtmlCell_SetParent,(self,) + _args, _kwargs)
+        return val
+    def GetParent(self, *_args, **_kwargs):
+        val = apply(htmlc.wxHtmlCell_GetParent,(self,) + _args, _kwargs)
+        if val: val = wxHtmlContainerCellPtr(val) 
+        return val
+    def GetPosX(self, *_args, **_kwargs):
+        val = apply(htmlc.wxHtmlCell_GetPosX,(self,) + _args, _kwargs)
+        return val
+    def GetPosY(self, *_args, **_kwargs):
+        val = apply(htmlc.wxHtmlCell_GetPosY,(self,) + _args, _kwargs)
+        return val
+    def GetWidth(self, *_args, **_kwargs):
+        val = apply(htmlc.wxHtmlCell_GetWidth,(self,) + _args, _kwargs)
+        return val
+    def GetHeight(self, *_args, **_kwargs):
+        val = apply(htmlc.wxHtmlCell_GetHeight,(self,) + _args, _kwargs)
+        return val
+    def GetDescent(self, *_args, **_kwargs):
+        val = apply(htmlc.wxHtmlCell_GetDescent,(self,) + _args, _kwargs)
+        return val
+    def GetLink(self, *_args, **_kwargs):
+        val = apply(htmlc.wxHtmlCell_GetLink,(self,) + _args, _kwargs)
+        return val
+    def GetNext(self, *_args, **_kwargs):
+        val = apply(htmlc.wxHtmlCell_GetNext,(self,) + _args, _kwargs)
+        if val: val = wxHtmlCellPtr(val) 
+        return val
+    def SetPos(self, *_args, **_kwargs):
+        val = apply(htmlc.wxHtmlCell_SetPos,(self,) + _args, _kwargs)
+        return val
+    def SetLink(self, *_args, **_kwargs):
+        val = apply(htmlc.wxHtmlCell_SetLink,(self,) + _args, _kwargs)
+        return val
+    def SetNext(self, *_args, **_kwargs):
+        val = apply(htmlc.wxHtmlCell_SetNext,(self,) + _args, _kwargs)
+        return val
+    def Layout(self, *_args, **_kwargs):
+        val = apply(htmlc.wxHtmlCell_Layout,(self,) + _args, _kwargs)
+        return val
+    def Draw(self, *_args, **_kwargs):
+        val = apply(htmlc.wxHtmlCell_Draw,(self,) + _args, _kwargs)
+        return val
+    def DrawInvisible(self, *_args, **_kwargs):
+        val = apply(htmlc.wxHtmlCell_DrawInvisible,(self,) + _args, _kwargs)
+        return val
+    def Find(self, *_args, **_kwargs):
+        val = apply(htmlc.wxHtmlCell_Find,(self,) + _args, _kwargs)
+        if val: val = wxHtmlCellPtr(val) 
+        return val
+    def __repr__(self):
+        return "<C wxHtmlCell instance at %s>" % (self.this,)
+class wxHtmlCell(wxHtmlCellPtr):
+    def __init__(self,*_args,**_kwargs):
+        self.this = apply(htmlc.new_wxHtmlCell,_args,_kwargs)
+        self.thisown = 1
+
+
+
+
+class wxHtmlContainerCellPtr(wxHtmlCellPtr):
+    def __init__(self,this):
+        self.this = this
+        self.thisown = 0
+    def InsertCell(self, *_args, **_kwargs):
+        val = apply(htmlc.wxHtmlContainerCell_InsertCell,(self,) + _args, _kwargs)
+        return val
+    def SetAlignHor(self, *_args, **_kwargs):
+        val = apply(htmlc.wxHtmlContainerCell_SetAlignHor,(self,) + _args, _kwargs)
+        return val
+    def GetAlignHor(self, *_args, **_kwargs):
+        val = apply(htmlc.wxHtmlContainerCell_GetAlignHor,(self,) + _args, _kwargs)
+        return val
+    def SetAlignVer(self, *_args, **_kwargs):
+        val = apply(htmlc.wxHtmlContainerCell_SetAlignVer,(self,) + _args, _kwargs)
+        return val
+    def GetAlignVer(self, *_args, **_kwargs):
+        val = apply(htmlc.wxHtmlContainerCell_GetAlignVer,(self,) + _args, _kwargs)
+        return val
+    def SetIndent(self, *_args, **_kwargs):
+        val = apply(htmlc.wxHtmlContainerCell_SetIndent,(self,) + _args, _kwargs)
+        return val
+    def GetIndent(self, *_args, **_kwargs):
+        val = apply(htmlc.wxHtmlContainerCell_GetIndent,(self,) + _args, _kwargs)
+        return val
+    def GetIndentUnits(self, *_args, **_kwargs):
+        val = apply(htmlc.wxHtmlContainerCell_GetIndentUnits,(self,) + _args, _kwargs)
+        return val
+    def SetAlign(self, *_args, **_kwargs):
+        val = apply(htmlc.wxHtmlContainerCell_SetAlign,(self,) + _args, _kwargs)
+        return val
+    def SetWidthFloat(self, *_args, **_kwargs):
+        val = apply(htmlc.wxHtmlContainerCell_SetWidthFloat,(self,) + _args, _kwargs)
+        return val
+    def SetWidthFloatFromTag(self, *_args, **_kwargs):
+        val = apply(htmlc.wxHtmlContainerCell_SetWidthFloatFromTag,(self,) + _args, _kwargs)
+        return val
+    def SetMinHeight(self, *_args, **_kwargs):
+        val = apply(htmlc.wxHtmlContainerCell_SetMinHeight,(self,) + _args, _kwargs)
+        return val
+    def GetMaxLineWidth(self, *_args, **_kwargs):
+        val = apply(htmlc.wxHtmlContainerCell_GetMaxLineWidth,(self,) + _args, _kwargs)
+        return val
+    def SetBackgroundColour(self, *_args, **_kwargs):
+        val = apply(htmlc.wxHtmlContainerCell_SetBackgroundColour,(self,) + _args, _kwargs)
+        return val
+    def SetBorder(self, *_args, **_kwargs):
+        val = apply(htmlc.wxHtmlContainerCell_SetBorder,(self,) + _args, _kwargs)
+        return val
+    def GetFirstCell(self, *_args, **_kwargs):
+        val = apply(htmlc.wxHtmlContainerCell_GetFirstCell,(self,) + _args, _kwargs)
+        if val: val = wxHtmlCellPtr(val) 
+        return val
+    def __repr__(self):
+        return "<C wxHtmlContainerCell instance at %s>" % (self.this,)
+class wxHtmlContainerCell(wxHtmlContainerCellPtr):
+    def __init__(self,*_args,**_kwargs):
+        self.this = apply(htmlc.new_wxHtmlContainerCell,_args,_kwargs)
+        self.thisown = 1
+
+
+
+
+class wxHtmlWidgetCellPtr(wxHtmlCellPtr):
+    def __init__(self,this):
+        self.this = this
+        self.thisown = 0
+    def __repr__(self):
+        return "<C wxHtmlWidgetCell instance at %s>" % (self.this,)
+class wxHtmlWidgetCell(wxHtmlWidgetCellPtr):
+    def __init__(self,*_args,**_kwargs):
+        self.this = apply(htmlc.new_wxHtmlWidgetCell,_args,_kwargs)
+        self.thisown = 1
+
+
+
+
 class HtmlHistoryItemPtr :
     def __init__(self,this):
         self.this = this
@@ -346,6 +491,11 @@ class wxHtmlWindowPtr(wxScrolledWindowPtr):
         return val
     def GetInternalRepresentation(self, *_args, **_kwargs):
         val = apply(htmlc.wxHtmlWindow_GetInternalRepresentation,(self,) + _args, _kwargs)
+        if val: val = wxHtmlContainerCellPtr(val) 
+        return val
+    def GetParser(self, *_args, **_kwargs):
+        val = apply(htmlc.wxHtmlWindow_GetParser,(self,) + _args, _kwargs)
+        if val: val = wxHtmlWinParserPtr(val) 
         return val
     def base_OnLinkClicked(self, *_args, **_kwargs):
         val = apply(htmlc.wxHtmlWindow_base_OnLinkClicked,(self,) + _args, _kwargs)
@@ -375,3 +525,39 @@ wxHtmlWindow_AddFilter = htmlc.wxHtmlWindow_AddFilter
 
 #-------------- VARIABLE WRAPPERS ------------------
 
+HTML_ALIGN_LEFT = htmlc.HTML_ALIGN_LEFT
+HTML_ALIGN_CENTER = htmlc.HTML_ALIGN_CENTER
+HTML_ALIGN_RIGHT = htmlc.HTML_ALIGN_RIGHT
+HTML_ALIGN_BOTTOM = htmlc.HTML_ALIGN_BOTTOM
+HTML_ALIGN_TOP = htmlc.HTML_ALIGN_TOP
+HTML_CLR_FOREGROUND = htmlc.HTML_CLR_FOREGROUND
+HTML_CLR_BACKGROUND = htmlc.HTML_CLR_BACKGROUND
+HTML_UNITS_PIXELS = htmlc.HTML_UNITS_PIXELS
+HTML_UNITS_PERCENT = htmlc.HTML_UNITS_PERCENT
+HTML_INDENT_LEFT = htmlc.HTML_INDENT_LEFT
+HTML_INDENT_RIGHT = htmlc.HTML_INDENT_RIGHT
+HTML_INDENT_TOP = htmlc.HTML_INDENT_TOP
+HTML_INDENT_BOTTOM = htmlc.HTML_INDENT_BOTTOM
+HTML_INDENT_HORIZONTAL = htmlc.HTML_INDENT_HORIZONTAL
+HTML_INDENT_VERTICAL = htmlc.HTML_INDENT_VERTICAL
+HTML_INDENT_ALL = htmlc.HTML_INDENT_ALL
+HTML_COND_ISANCHOR = htmlc.HTML_COND_ISANCHOR
+HTML_COND_ISIMAGEMAP = htmlc.HTML_COND_ISIMAGEMAP
+HTML_COND_USER = htmlc.HTML_COND_USER
+
+
+#-------------- USER INCLUDE -----------------------
+
+
+# Stuff these names into the wx namespace so wxPyConstructObject can find them
+import wx
+wx.wxHtmlTagPtr             = wxHtmlTag
+wx.wxHtmlParserPtr          = wxHtmlParserPtr
+wx.wxHtmlWinParserPtr       = wxHtmlWinParserPtr
+wx.wxHtmlTagHandlerPtr      = wxHtmlTagHandlerPtr
+wx.wxHtmlWinTagHandlerPtr   = wxHtmlWinTagHandlerPtr
+wx.wxHtmlCellPtr            = wxHtmlCellPtr
+wx.wxHtmlContainerCellPtr   = wxHtmlContainerCellPtr
+wx.wxHtmlWidgetCellPtr      = wxHtmlWidgetCellPtr
+wx.HtmlHistoryItemPtr     = HtmlHistoryItemPtr
+wx.wxHtmlWindowPtr          = wxHtmlWindowPtr
index 4e8e26345db579764ca70c511882d554f8a46395..91f90732d93ec3d23e2e166dd44a55f33d8cb1bf 100644 (file)
@@ -33,3 +33,4 @@ wx.wxPyPolygonShapePtr    = wxPyPolygonShapePtr
 wx.wxPyTextShapePtr       = wxPyTextShapePtr
 wx.wxShapeRegionPtr       = wxShapeRegionPtr
 wx.wxOGLConstraintPtr     = wxOGLConstraintPtr
+wx.wxControlPointPtr      = wxControlPointPtr
index 7074cf2335f1cfbab1f7511f5a58f3239d5801b4..9b723e040ec1316936dcd2420c32ccd58e3b127b 100644 (file)
@@ -158,9 +158,10 @@ public:
     long GetItemData(long item);
 
     %addmethods {
-        %new wxListItem* GetItem(long itemId) {
+        %new wxListItem* GetItem(long itemId, int col=0) {
             wxListItem* info = new wxListItem;
             info->m_itemId = itemId;
+            info->m_col = col;
             self->GetItem(*info);
             return info;
         }
index 547dde92b327b2948a3a5e52c4c604cf582ca804..19acec1d3bb23e35d9077794c0e6080e709d8ef3 100644 (file)
@@ -663,10 +663,9 @@ HELPEREXPORT wxBitmap** wxBitmap_LIST_helper(PyObject* source) {
     }
     for (int x=0; x<count; x++) {
         PyObject* o = PyList_GetItem(source, x);
-        if (PyString_Check(o)) {
-            char*       st = PyString_AsString(o);
+        if (PyInstance_Check(o)) {
             wxBitmap*    pt;
-            if (SWIG_GetPtr(st,(void **) &pt,"_wxBitmap_p")) {
+            if (SWIG_GetPtrObj(o, (void **) &pt,"_wxBitmap_p")) {
                 PyErr_SetString(PyExc_TypeError,"Expected _wxBitmap_p.");
                 return NULL;
             }
@@ -718,10 +717,9 @@ HELPEREXPORT wxAcceleratorEntry* wxAcceleratorEntry_LIST_helper(PyObject* source
     }
     for (int x=0; x<count; x++) {
         PyObject* o = PyList_GetItem(source, x);
-        if (PyString_Check(o)) {
-            char*               st = PyString_AsString(o);
+        if (PyInstance_Check(o)) {
             wxAcceleratorEntry* ae;
-            if (SWIG_GetPtr(st,(void **) &ae,"_wxAcceleratorEntry_p")) {
+            if (SWIG_GetPtrObj(o, (void **) &ae,"_wxAcceleratorEntry_p")) {
                 PyErr_SetString(PyExc_TypeError,"Expected _wxAcceleratorEntry_p.");
                 return NULL;
             }
index 793a8dd8235fa35398235e4df08943c29eb7b532..b6919453bc8944fe7fb3af8ce050da68c37d0888 100644 (file)
@@ -1861,9 +1861,10 @@ static PyObject *_wrap_wxListCtrl_GetItemData(PyObject *self, PyObject *args, Py
     return _resultobj;
 }
 
-static wxListItem * wxListCtrl_GetItem(wxListCtrl *self,long  itemId) {
+static wxListItem * wxListCtrl_GetItem(wxListCtrl *self,long  itemId,int  col) {
             wxListItem* info = new wxListItem;
             info->m_itemId = itemId;
+            info->m_col = col;
             self->GetItem(*info);
             return info;
         }
@@ -1872,12 +1873,13 @@ static PyObject *_wrap_wxListCtrl_GetItem(PyObject *self, PyObject *args, PyObje
     wxListItem * _result;
     wxListCtrl * _arg0;
     long  _arg1;
+    int  _arg2 = (int ) 0;
     PyObject * _argo0 = 0;
-    char *_kwnames[] = { "self","itemId", NULL };
+    char *_kwnames[] = { "self","itemId","col", NULL };
     char _ptemp[128];
 
     self = self;
-    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Ol:wxListCtrl_GetItem",_kwnames,&_argo0,&_arg1)) 
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Ol|i:wxListCtrl_GetItem",_kwnames,&_argo0,&_arg1,&_arg2)) 
         return NULL;
     if (_argo0) {
         if (_argo0 == Py_None) { _arg0 = NULL; }
@@ -1888,7 +1890,7 @@ static PyObject *_wrap_wxListCtrl_GetItem(PyObject *self, PyObject *args, PyObje
     }
 {
     wxPy_BEGIN_ALLOW_THREADS;
-        _result = (wxListItem *)wxListCtrl_GetItem(_arg0,_arg1);
+        _result = (wxListItem *)wxListCtrl_GetItem(_arg0,_arg1,_arg2);
 
     wxPy_END_ALLOW_THREADS;
 }    if (_result) {