]> git.saurik.com Git - wxWidgets.git/blobdiff - wxPython/demo/XmlResourceSubclass.py
use wxDIB object instead of static ConvertFromBitmap() in CF_DIB case
[wxWidgets.git] / wxPython / demo / XmlResourceSubclass.py
index 4fc5a275c403738eaf19c1109a3bd57904890bf2..285e834ef598544a66135bcd6809608d06f62803 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,10 +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
+        <label>This blue panel is a class derived from wx.Panel
 and is loaded by a using a subclass attribute of the object tag.</label>
         <pos>10,10</pos>
     </object>
 and is loaded by a using a subclass attribute of the object tag.</label>
         <pos>10,10</pos>
     </object>
@@ -28,21 +24,39 @@ 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)
+            
+
+    def OnSize(self, evt):
+        if hasattr(self, 't'):
+            sz = self.GetSize()
+            w, h = self.t.GetTextExtent(self.t.GetLabel())
+            print w, h
+            self.t.SetPosition(((sz.width-w)/2, (sz.height-h)/2))
+    
 #----------------------------------------------------------------------
 
 
 #----------------------------------------------------------------------
 
 
@@ -66,7 +80,9 @@ class TestPanel(wx.Panel):
         res.LoadFromString(resourceText)
 
         # Now create a panel from the resource data
         res.LoadFromString(resourceText)
 
         # Now create a panel from the resource data
-        panel = res.LoadPanel(self, "MyPanel")
+        #panel = res.LoadPanel(self, "MyPanel")
+        panel = MyCustomPanel()
+        panel.Create(self, -1)
 
         # and do the layout
         sizer = wx.BoxSizer(wx.VERTICAL)
 
         # and do the layout
         sizer = wx.BoxSizer(wx.VERTICAL)
@@ -90,7 +106,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 +120,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:])