From 6fa68946ec0528d9388c92c24b5e9e31c6c46f31 Mon Sep 17 00:00:00 2001 From: Robin Dunn Date: Wed, 22 Oct 2003 17:25:20 +0000 Subject: [PATCH] Add sample showing how to use the XRC subclass attribute git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@24257 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- wxPython/demo/Main.py | 4 + wxPython/demo/wxXmlResourceSubclass.py | 106 +++++++++++++++++++++++++ 2 files changed, 110 insertions(+) create mode 100644 wxPython/demo/wxXmlResourceSubclass.py diff --git a/wxPython/demo/Main.py b/wxPython/demo/Main.py index 65201470d4..e353972a2d 100644 --- a/wxPython/demo/Main.py +++ b/wxPython/demo/Main.py @@ -19,6 +19,8 @@ import wx.html import images ##wx.Trap() +##raw_input("Press a key...") + # Use Python's bool constants if available, make aliases if not try: @@ -37,6 +39,7 @@ _treeList = [ 'wxListbook', 'wxMaskedNumCtrl', 'FloatCanvas', + 'wxXmlResourceSubclass', ]), # managed windows == things with a (optional) caption you can close @@ -158,6 +161,7 @@ _treeList = [ 'wxScrolledPanel', 'wxXmlResource', 'wxXmlResourceHandler', + 'wxXmlResourceSubclass', ]), # ditto diff --git a/wxPython/demo/wxXmlResourceSubclass.py b/wxPython/demo/wxXmlResourceSubclass.py new file mode 100644 index 0000000000..1729900b44 --- /dev/null +++ b/wxPython/demo/wxXmlResourceSubclass.py @@ -0,0 +1,106 @@ + +from wxPython.wx import * +from wxPython.xrc import * + +#---------------------------------------------------------------------- + +resourceText = r''' + + + + + + 200,100 + + + 10,10 + + + +''' + +#---------------------------------------------------------------------- + +class MyBluePanel(wxPanel): + def __init__(self): + #print "MyBluePanel.__init__" + p = wxPrePanel() + self.this = p.this + self.thisown = p.thisown + self._setOORInfo(self) + + EVT_WINDOW_CREATE(self, self.OnCreate) + + def OnCreate(self, evt): + # This is the little bit of customization that we do for this + # silly example. It could just as easily have been done in + # the resource. We do it in the EVT_WINDOW_CREATE handler + # because the window doesn't really exist yet in the __init__. + self.SetBackgroundColour("BLUE") + self.SetForegroundColour("WHITE") + +#---------------------------------------------------------------------- + + +class TestPanel(wxPanel): + def __init__(self, parent, log): + self.log = log + wxPanel.__init__(self, parent, -1) + + # make the components + label = wxStaticText(self, -1, "The lower panel was built from this XML:") + label.SetFont(wxFont(12, wxSWISS, wxNORMAL, wxBOLD)) + + text = wxTextCtrl(self, -1, resourceText, + style=wxTE_READONLY|wxTE_MULTILINE) + text.SetInsertionPoint(0) + + line = wxStaticLine(self, -1) + + # Load the resource + res = wxEmptyXmlResource() + res.LoadFromString(resourceText) + + # Now create a panel from the resource data + panel = res.LoadPanel(self, "MyPanel") + + # and do the layout + sizer = wxBoxSizer(wxVERTICAL) + sizer.Add(label, 0, wxEXPAND|wxTOP|wxLEFT, 5) + sizer.Add(text, 1, wxEXPAND|wxALL, 5) + sizer.Add(line, 0, wxEXPAND) + sizer.Add(panel, 1, wxEXPAND|wxALL, 5) + + self.SetSizer(sizer) + self.SetAutoLayout(True) + + +#---------------------------------------------------------------------- + +def runTest(frame, nb, log): + win = TestPanel(nb, log) + return win + +#---------------------------------------------------------------------- + + + +overview = """ +

wxXmlResourceSubclass

+ +Sometimes it is necessary to use custom classes, but you still want +them to be created from XRC. The subclass XRC attribute allows you to +do that. + + +""" + + + +if __name__ == '__main__': + import sys,os + import run + run.main(['', os.path.basename(sys.argv[0])]) + -- 2.47.2