]> git.saurik.com Git - wxWidgets.git/blobdiff - wxPython/demo/XmlResourceSubclass.py
wxCheckListBox doesn't require wxUSE_OWNER_DRAWN when using WXUNIVERSAL
[wxWidgets.git] / wxPython / demo / XmlResourceSubclass.py
index 4fc5a275c403738eaf19c1109a3bd57904890bf2..4cda2a451a84813fbe91ff5abe124f7c7817bf28 100644 (file)
@@ -1,7 +1,3 @@
-# 11/22/2003 - Jeff Grimmett (grimmtooth@softhome.net)
-#
-# o Updated for wx namespace
-#
 
 import  wx
 import  wx.xrc  as  xrc
 
 import  wx
 import  wx.xrc  as  xrc
@@ -15,11 +11,10 @@ resourceText = r'''<?xml version="1.0"?>
      subclass is specified as "moduleName.ClassName"  Try changing
      the classname to one that does not exist and see what happens -->
 
      subclass is specified as "moduleName.ClassName"  Try changing
      the classname to one that does not exist and see what happens -->
 
-<object class="wxPanel" subclass="XmlResourceSubclass.MyBluePanel" name="MyPanel">
+<object class="wxPanel" subclass="XmlResourceSubclass.MyCustomPanel" name="MyPanel">
     <size>200,100</size>
     <object class="wxStaticText" name="label1">
     <size>200,100</size>
     <object class="wxStaticText" name="label1">
-        <label>This blue panel is a class derived from wxPanel
-and is loaded by a using a subclass attribute of the object tag.</label>
+        <label>This panel is a custom class derived from wx.Panel,\nand is loaded by a custom XmlResourceHandler.</label>
         <pos>10,10</pos>
     </object>
 </object>
         <pos>10,10</pos>
     </object>
 </object>
@@ -28,21 +23,38 @@ and is loaded by a using a subclass attribute of the object tag.</label>
 
 #----------------------------------------------------------------------
 
 
 #----------------------------------------------------------------------
 
-class MyBluePanel(wx.Panel):
+class MyCustomPanel(wx.Panel):
     def __init__(self):
         p = wx.PrePanel()
         # the Create step is done by XRC.
         self.PostCreate(p)
         self.Bind(wx.EVT_WINDOW_CREATE, self.OnCreate)
     def __init__(self):
         p = wx.PrePanel()
         # the Create step is done by XRC.
         self.PostCreate(p)
         self.Bind(wx.EVT_WINDOW_CREATE, self.OnCreate)
+        self.Bind(wx.EVT_SIZE, self.OnSize)
+        
         
     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__.
         
     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")
-
+        if self is evt.GetEventObject():
+            t = wx.StaticText(self, -1, "MyCustomPanel")
+            f = t.GetFont()
+            f.SetWeight(wx.BOLD)
+            f.SetPointSize(f.GetPointSize()+2)
+            t.SetFont(f)
+            self.t = t
+            # On OSX the EVT_SIZE happens before EVT_WINDOW_CREATE !?!
+            # so give it another kick
+            wx.CallAfter(self.OnSize, None)
+        evt.Skip()
+
+    def OnSize(self, evt):
+        if hasattr(self, 't'):
+            sz = self.GetSize()
+            w, h = self.t.GetTextExtent(self.t.GetLabel())
+            self.t.SetPosition(((sz.width-w)/2, (sz.height-h)/2))
+    
 #----------------------------------------------------------------------
 
 
 #----------------------------------------------------------------------
 
 
@@ -90,7 +102,7 @@ def runTest(frame, nb, log):
 
 
 overview = """<html><body>
 
 
 overview = """<html><body>
-<h2><center>wxXmlResourceSubclass</center></h2>
+<h2><center>wx.XmlResourceSubclass</center></h2>
 
 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
 
 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
@@ -104,5 +116,5 @@ do that.
 if __name__ == '__main__':
     import sys,os
     import run
 if __name__ == '__main__':
     import sys,os
     import run
-    run.main(['', os.path.basename(sys.argv[0])])
+    run.main(['', os.path.basename(sys.argv[0])] + sys.argv[1:])