demo tweaks
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@26428 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -58,6 +58,7 @@ class TestMaskWindow(wx.ScrolledWindow):
|
|||||||
|
|
||||||
|
|
||||||
def OnPaint (self, e):
|
def OnPaint (self, e):
|
||||||
|
self.SetBackgroundColour(wx.Colour(0,128,0))
|
||||||
dc = wx.PaintDC(self)
|
dc = wx.PaintDC(self)
|
||||||
self.PrepareDC(dc)
|
self.PrepareDC(dc)
|
||||||
dc.SetTextForeground(wx.WHITE)
|
dc.SetTextForeground(wx.WHITE)
|
||||||
|
@@ -229,7 +229,7 @@ class NotifyTimer(wx.Timer):
|
|||||||
self.log = log
|
self.log = log
|
||||||
|
|
||||||
def Notify(self):
|
def Notify(self):
|
||||||
log.write("got NotifyTimer event\n")
|
self.log.write("got NotifyTimer event\n")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@@ -9,7 +9,7 @@ resourceText = r'''<?xml version="1.0"?>
|
|||||||
|
|
||||||
<!-- Notice that the class is NOT a standard wx class -->
|
<!-- Notice that the class is NOT a standard wx class -->
|
||||||
|
|
||||||
<object class="MyBluePanel" name="MyPanel">
|
<object class="MyCustomPanel" name="MyPanel">
|
||||||
<size>200,100</size>
|
<size>200,100</size>
|
||||||
<object class="wxStaticText" name="label1">
|
<object class="wxStaticText" name="label1">
|
||||||
<label>This blue panel is a class derived from wx.Panel,\nand is loaded by a custom XmlResourceHandler.</label>
|
<label>This blue panel is a class derived from wx.Panel,\nand is loaded by a custom XmlResourceHandler.</label>
|
||||||
@@ -21,35 +21,53 @@ resourceText = r'''<?xml version="1.0"?>
|
|||||||
|
|
||||||
#----------------------------------------------------------------------
|
#----------------------------------------------------------------------
|
||||||
|
|
||||||
class MyBluePanel(wx.Panel):
|
class MyCustomPanel(wx.Panel):
|
||||||
def __init__(self, parent, id, pos, size, style, name):
|
def __init__(self, parent, id, pos, size, style, name):
|
||||||
wx.Panel.__init__(self, parent, id, pos, size, style, name)
|
wx.Panel.__init__(self, parent, id, pos, size, style, name)
|
||||||
|
|
||||||
# This is the little bit of customization that we do for this
|
# This is the little bit of customization that we do for this
|
||||||
# silly example. It could just as easily have been done in
|
# silly example.
|
||||||
# the resource.
|
self.Bind(wx.EVT_SIZE, self.OnSize)
|
||||||
self.SetBackgroundColour("BLUE")
|
t = wx.StaticText(self, -1, "MyCustomPanel")
|
||||||
self.SetForegroundColour("WHITE")
|
f = t.GetFont()
|
||||||
|
f.SetWeight(wx.BOLD)
|
||||||
|
f.SetPointSize(f.GetPointSize()+2)
|
||||||
|
t.SetFont(f)
|
||||||
|
self.t = t
|
||||||
|
|
||||||
|
def OnSize(self, evt):
|
||||||
|
sz = self.GetSize()
|
||||||
|
w, h = self.t.GetTextExtent(self.t.GetLabel())
|
||||||
|
self.t.SetPosition(((sz.width-w)/2, (sz.height-h)/2))
|
||||||
|
|
||||||
|
|
||||||
# To do it the more complex way, (see below) we need to write the
|
# To do it the more complex way, (see below) we need to write the
|
||||||
# class a little differently... This could obviously be done with a
|
# class a little differently... This could obviously be done with a
|
||||||
# single class, but I wanted to make separate ones to make clear what
|
# single class, but I wanted to make separate ones to make clear what
|
||||||
# the different requirements are.
|
# the different requirements are.
|
||||||
class PreMyBluePanel(wx.Panel):
|
class PreMyCustomPanel(wx.Panel):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
p = wx.PrePanel()
|
p = wx.PrePanel()
|
||||||
self.PostCreate(p)
|
self.PostCreate(p)
|
||||||
|
|
||||||
def Create(self, parent, id, pos, size, style, name):
|
def Create(self, parent, id, pos, size, style, name):
|
||||||
wx.Panel.Create(self, parent, id, pos, size, style, name)
|
wx.Panel.Create(self, parent, id, pos, size, style, name)
|
||||||
self.SetBackgroundColour("BLUE")
|
self.Bind(wx.EVT_SIZE, self.OnSize)
|
||||||
self.SetForegroundColour("WHITE")
|
t = wx.StaticText(self, -1, "MyCustomPanel")
|
||||||
|
f = t.GetFont()
|
||||||
|
f.SetWeight(wx.BOLD)
|
||||||
|
f.SetPointSize(f.GetPointSize()+2)
|
||||||
|
t.SetFont(f)
|
||||||
|
self.t = t
|
||||||
|
|
||||||
|
def OnSize(self, evt):
|
||||||
|
sz = self.GetSize()
|
||||||
|
w, h = self.t.GetTextExtent(self.t.GetLabel())
|
||||||
|
self.t.SetPosition(((sz.width-w)/2, (sz.height-h)/2))
|
||||||
|
|
||||||
#----------------------------------------------------------------------
|
#----------------------------------------------------------------------
|
||||||
|
|
||||||
class MyBluePanelXmlHandler(xrc.XmlResourceHandler):
|
class MyCustomPanelXmlHandler(xrc.XmlResourceHandler):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
xrc.XmlResourceHandler.__init__(self)
|
xrc.XmlResourceHandler.__init__(self)
|
||||||
# Specify the styles recognized by objects of this type
|
# Specify the styles recognized by objects of this type
|
||||||
@@ -61,7 +79,7 @@ class MyBluePanelXmlHandler(xrc.XmlResourceHandler):
|
|||||||
|
|
||||||
# This method and the next one are required for XmlResourceHandlers
|
# This method and the next one are required for XmlResourceHandlers
|
||||||
def CanHandle(self, node):
|
def CanHandle(self, node):
|
||||||
return self.IsOfClass(node, "MyBluePanel")
|
return self.IsOfClass(node, "MyCustomPanel")
|
||||||
|
|
||||||
def DoCreateResource(self):
|
def DoCreateResource(self):
|
||||||
# NOTE: wxWindows can be created in either a single-phase or
|
# NOTE: wxWindows can be created in either a single-phase or
|
||||||
@@ -86,20 +104,20 @@ class MyBluePanelXmlHandler(xrc.XmlResourceHandler):
|
|||||||
assert self.GetInstance() is None
|
assert self.GetInstance() is None
|
||||||
|
|
||||||
# Now create the object
|
# Now create the object
|
||||||
panel = MyBluePanel(self.GetParentAsWindow(),
|
panel = MyCustomPanel(self.GetParentAsWindow(),
|
||||||
self.GetID(),
|
self.GetID(),
|
||||||
self.GetPosition(),
|
self.GetPosition(),
|
||||||
self.GetSize(),
|
self.GetSize(),
|
||||||
self.GetStyle("style", wx.TAB_TRAVERSAL),
|
self.GetStyle("style", wx.TAB_TRAVERSAL),
|
||||||
self.GetName()
|
self.GetName()
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
# When using the more complex (but more flexible) method
|
# When using the more complex (but more flexible) method
|
||||||
# the instance may already have been created, check for it
|
# the instance may already have been created, check for it
|
||||||
panel = self.GetInstance()
|
panel = self.GetInstance()
|
||||||
if panel is None:
|
if panel is None:
|
||||||
# if not, then create the instance (but not the window)
|
# if not, then create the instance (but not the window)
|
||||||
panel = PreMyBluePanel()
|
panel = PreMyCustomPanel()
|
||||||
|
|
||||||
# Now call the panel's Create method to actually create the window
|
# Now call the panel's Create method to actually create the window
|
||||||
panel.Create(self.GetParentAsWindow(),
|
panel.Create(self.GetParentAsWindow(),
|
||||||
@@ -139,11 +157,11 @@ class TestPanel(wx.Panel):
|
|||||||
|
|
||||||
# Load the resource
|
# Load the resource
|
||||||
res = xrc.EmptyXmlResource()
|
res = xrc.EmptyXmlResource()
|
||||||
res.InsertHandler(MyBluePanelXmlHandler())
|
res.InsertHandler(MyCustomPanelXmlHandler())
|
||||||
res.LoadFromString(resourceText)
|
res.LoadFromString(resourceText)
|
||||||
|
|
||||||
# Now create a panel from the resource data
|
# Now create a panel from the resource data
|
||||||
panel = res.LoadObject(self, "MyPanel", "MyBluePanel")
|
panel = res.LoadObject(self, "MyPanel", "MyCustomPanel")
|
||||||
|
|
||||||
# and do the layout
|
# and do the layout
|
||||||
sizer = wx.BoxSizer(wx.VERTICAL)
|
sizer = wx.BoxSizer(wx.VERTICAL)
|
||||||
|
@@ -11,7 +11,7 @@ resourceText = r'''<?xml version="1.0"?>
|
|||||||
subclass is specified as "moduleName.ClassName" Try changing
|
subclass is specified as "moduleName.ClassName" Try changing
|
||||||
the classname to one that does not exist and see what happens -->
|
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>
|
<size>200,100</size>
|
||||||
<object class="wxStaticText" name="label1">
|
<object class="wxStaticText" name="label1">
|
||||||
<label>This blue panel is a class derived from wx.Panel
|
<label>This blue panel is a class derived from wx.Panel
|
||||||
@@ -24,21 +24,32 @@ 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):
|
def __init__(self):
|
||||||
p = wx.PrePanel()
|
p = wx.PrePanel()
|
||||||
# the Create step is done by XRC.
|
# the Create step is done by XRC.
|
||||||
self.PostCreate(p)
|
self.PostCreate(p)
|
||||||
self.Bind(wx.EVT_WINDOW_CREATE, self.OnCreate)
|
self.Bind(wx.EVT_WINDOW_CREATE, self.OnCreate)
|
||||||
|
self.Bind(wx.EVT_SIZE, self.OnSize)
|
||||||
|
|
||||||
|
|
||||||
def OnCreate(self, evt):
|
def OnCreate(self, evt):
|
||||||
# This is the little bit of customization that we do for this
|
# This is the little bit of customization that we do for this
|
||||||
# silly example. It could just as easily have been done in
|
# silly example. It could just as easily have been done in
|
||||||
# the resource. We do it in the EVT_WINDOW_CREATE handler
|
# the resource. We do it in the EVT_WINDOW_CREATE handler
|
||||||
# because the window doesn't really exist yet in the __init__.
|
# because the window doesn't really exist yet in the __init__.
|
||||||
self.SetBackgroundColour("BLUE")
|
t = wx.StaticText(self, -1, "MyCustomPanel")
|
||||||
self.SetForegroundColour("WHITE")
|
f = t.GetFont()
|
||||||
|
f.SetWeight(wx.BOLD)
|
||||||
|
f.SetPointSize(f.GetPointSize()+2)
|
||||||
|
t.SetFont(f)
|
||||||
|
self.t = t
|
||||||
|
|
||||||
|
def OnSize(self, evt):
|
||||||
|
sz = self.GetSize()
|
||||||
|
w, h = self.t.GetTextExtent(self.t.GetLabel())
|
||||||
|
self.t.SetPosition(((sz.width-w)/2, (sz.height-h)/2))
|
||||||
|
|
||||||
#----------------------------------------------------------------------
|
#----------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user