diff --git a/etg/htmlwinpars.py b/etg/htmlwinpars.py index 7ef69e72..b31da414 100644 --- a/etg/htmlwinpars.py +++ b/etg/htmlwinpars.py @@ -36,8 +36,7 @@ def run(): c = module.find('wxHtmlWinTagHandler') assert isinstance(c, etgtools.ClassDef) - #c.addCppMethod('wxHtmlWinParser*', 'GetParser', '()', - # body="""return self->m_WParser;""") + c.addPrivateCopyCtor() c = module.find('wxHtmlWinParser') diff --git a/samples/wxptag/widgetTest.html b/samples/wxptag/widgetTest.html new file mode 100644 index 00000000..07ecf479 --- /dev/null +++ b/samples/wxptag/widgetTest.html @@ -0,0 +1,33 @@ + + + +wxHTML does wxPython! + + +

Mixing wxPython and wxHTML

+ +The widgets on this page were created dynamically on the fly by a +custom wxTagHandler found in wx.lib.wxpTag. You can look at the +sources and doc-string in the wxPython library at wx/lib/wxpTag.py. + +

+The button below is added to the page like this: + +

+<center><wxp module="wx" class="Button" width="50%">
+    <param name="label" value="It works!">
+    <param name="id"    value="ID_OK">
+</wxp></center>
+
+ +
+ +
+ + + + +
+ + + diff --git a/samples/wxptag/wxpTest.py b/samples/wxptag/wxpTest.py new file mode 100644 index 00000000..cc0eb49b --- /dev/null +++ b/samples/wxptag/wxpTest.py @@ -0,0 +1,30 @@ +import sys, os +import wx +import wx.html +import wx.lib.wxpTag + +class HtmlWindow(wx.html.HtmlWindow): + def __init__(self, parent, id, size=(600,400)): + wx.html.HtmlWindow.__init__(self,parent, id, size=size) + +class Frame(wx.Frame): + def __init__(self, title): + wx.Frame.__init__(self, None, title=title, pos=(150,150), size=(600,400)) + self.Bind(wx.EVT_CLOSE, self.OnClose) + + hwin = HtmlWindow(self, -1, size=(600,400)) + name = os.path.join(os.path.dirname(sys.argv[0]), 'widgetTest.html') + hwin.LoadPage(name) + + def OnClose(self, event): + self.Destroy() + +app = wx.App() +top = Frame("wxpTest") +top.Show() + +import wx.lib.inspection +wx.lib.inspection.InspectionTool().Show() + +app.MainLoop() + diff --git a/wx/lib/wxpTag.py b/wx/lib/wxpTag.py index d052cf7d..bb1a83a3 100644 --- a/wx/lib/wxpTag.py +++ b/wx/lib/wxpTag.py @@ -1,12 +1,11 @@ #---------------------------------------------------------------------- -# Name: wxPython.lib.wxpTag +# Name: wx.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 #---------------------------------------------------------------------- @@ -16,7 +15,7 @@ # ''' -wxPython.lib.wxpTag +wx.lib.wxpTag This module contains a wxHtmlTagHandler that knows how to build and place wxPython widgets onto wxHtmlWindow web pages. @@ -140,8 +139,8 @@ class wxpTagHandler(wx.html.HtmlWinTagHandler): className = tag.GetParam('CLASS') self.ctx.classObj = getattr(self.ctx.classMod, className) - if type(self.ctx.classObj) not in [ types.ClassType, types.TypeType]: - raise TypeError, "WXP tag attribute CLASS must name a class" + #if type(self.ctx.classObj) not in [ types.ClassType, types.TypeType]: + # raise TypeError, "WXP tag attribute CLASS must name a class" # now look for width and height width = -1 @@ -162,13 +161,14 @@ class wxpTagHandler(wx.html.HtmlWinTagHandler): # create the object parent = self.GetParser().GetWindowInterface().GetHTMLWindow() + if parent: obj = self.ctx.classObj(parent, **self.ctx.kwargs) obj.Show(True) # add it to the HtmlWindow - self.GetParser().GetContainer().InsertCell( - wx.html.HtmlWidgetCell(obj, self.ctx.floatWidth)) + cell = wx.html.HtmlWidgetCell(obj, self.ctx.floatWidth) + self.GetParser().GetContainer().InsertCell(cell) self.ctx = None return True