A bunch of little demo tweaks that have accumulated over time...
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@25184 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -109,7 +109,7 @@ else:
|
|||||||
# Add the Canvas
|
# Add the Canvas
|
||||||
self.Canvas = floatcanvas.FloatCanvas(self,-1,(500,500),
|
self.Canvas = floatcanvas.FloatCanvas(self,-1,(500,500),
|
||||||
ProjectionFun = 'FlatEarth',
|
ProjectionFun = 'FlatEarth',
|
||||||
Debug = 1,
|
Debug = 0,
|
||||||
EnclosingFrame = self,
|
EnclosingFrame = self,
|
||||||
BackgroundColor = "DARK SLATE BLUE",
|
BackgroundColor = "DARK SLATE BLUE",
|
||||||
UseBackground = 0,
|
UseBackground = 0,
|
||||||
|
@@ -16,7 +16,17 @@ class HugeTable(wxPyGridTableBase):
|
|||||||
wxPyGridTableBase.__init__(self)
|
wxPyGridTableBase.__init__(self)
|
||||||
self.log = log
|
self.log = log
|
||||||
|
|
||||||
def GetNumberRows(self):
|
self.odd=wxGridCellAttr()
|
||||||
|
self.odd.SetBackgroundColour("sky blue")
|
||||||
|
self.even=wxGridCellAttr()
|
||||||
|
self.even.SetBackgroundColour("sea green")
|
||||||
|
|
||||||
|
def GetAttr(self, row, col, kind):
|
||||||
|
attr = [self.even,self.odd][row%2]
|
||||||
|
attr.IncRef()
|
||||||
|
return attr
|
||||||
|
|
||||||
|
def GetNumberRows(self):
|
||||||
return 10000
|
return 10000
|
||||||
|
|
||||||
def GetNumberCols(self):
|
def GetNumberCols(self):
|
||||||
|
@@ -19,6 +19,13 @@ import wx.html
|
|||||||
import images
|
import images
|
||||||
|
|
||||||
|
|
||||||
|
# Use Python's bool constants if available, make aliases if not
|
||||||
|
try:
|
||||||
|
True
|
||||||
|
except NameError:
|
||||||
|
True = 1==1
|
||||||
|
False = 1==0
|
||||||
|
|
||||||
#---------------------------------------------------------------------------
|
#---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
@@ -27,6 +34,7 @@ _treeList = [
|
|||||||
('Recent Additions', [
|
('Recent Additions', [
|
||||||
'wxMaskedNumCtrl',
|
'wxMaskedNumCtrl',
|
||||||
'FloatCanvas',
|
'FloatCanvas',
|
||||||
|
'wxXmlResourceSubclass',
|
||||||
]),
|
]),
|
||||||
|
|
||||||
# managed windows == things with a (optional) caption you can close
|
# managed windows == things with a (optional) caption you can close
|
||||||
@@ -146,6 +154,7 @@ _treeList = [
|
|||||||
'wxScrolledPanel',
|
'wxScrolledPanel',
|
||||||
'wxXmlResource',
|
'wxXmlResource',
|
||||||
'wxXmlResourceHandler',
|
'wxXmlResourceHandler',
|
||||||
|
'wxXmlResourceSubclass',
|
||||||
]),
|
]),
|
||||||
|
|
||||||
# ditto
|
# ditto
|
||||||
@@ -183,7 +192,9 @@ _treeList = [
|
|||||||
'DialogUnits',
|
'DialogUnits',
|
||||||
'DrawXXXList',
|
'DrawXXXList',
|
||||||
'FontEnumerator',
|
'FontEnumerator',
|
||||||
|
'NewNamespace',
|
||||||
'PrintFramework',
|
'PrintFramework',
|
||||||
|
'ShapedWindow',
|
||||||
'Throbber',
|
'Throbber',
|
||||||
'Unicode',
|
'Unicode',
|
||||||
'wxFileHistory',
|
'wxFileHistory',
|
||||||
|
@@ -38,6 +38,7 @@ command_lines = [
|
|||||||
"-a -u -n New -m #C0C0C0 bmp_source/new.bmp images.py",
|
"-a -u -n New -m #C0C0C0 bmp_source/new.bmp images.py",
|
||||||
"-a -u -n Open -m #C0C0C0 bmp_source/open.bmp images.py",
|
"-a -u -n Open -m #C0C0C0 bmp_source/open.bmp images.py",
|
||||||
"-a -u -n Copy -m #C0C0C0 bmp_source/copy.bmp images.py",
|
"-a -u -n Copy -m #C0C0C0 bmp_source/copy.bmp images.py",
|
||||||
|
"-a -u -n Copy2 -m #C0C0C0 bmp_source/copy2.bmp images.py",
|
||||||
"-a -u -n Paste -m #C0C0C0 bmp_source/paste.bmp images.py",
|
"-a -u -n Paste -m #C0C0C0 bmp_source/paste.bmp images.py",
|
||||||
"-a -u -n Tog1 -m #C0C0C0 bmp_source/tog1.bmp images.py",
|
"-a -u -n Tog1 -m #C0C0C0 bmp_source/tog1.bmp images.py",
|
||||||
"-a -u -n Tog2 -m #C0C0C0 bmp_source/tog2.bmp images.py",
|
"-a -u -n Tog2 -m #C0C0C0 bmp_source/tog2.bmp images.py",
|
||||||
|
@@ -3439,6 +3439,26 @@ def getCopyImage():
|
|||||||
stream = cStringIO.StringIO(getCopyData())
|
stream = cStringIO.StringIO(getCopyData())
|
||||||
return wxImageFromStream(stream)
|
return wxImageFromStream(stream)
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------
|
||||||
|
def getCopy2Data():
|
||||||
|
return \
|
||||||
|
'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x10\x00\x00\x00\x10\x08\x06\
|
||||||
|
\x00\x00\x00\x1f\xf3\xffa\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\
|
||||||
|
\x00\x00\x9fIDATx\x9c\xa5\x93\xdb\x0e\x830\x0cC\xed\x84\xdfF\xeb\xb4\xef\xa6\
|
||||||
|
\xde\x030z\t\x94\tK\x91z\xcb\x01\xbb*i\x8e\'\x9a\x00@yQ\xb4Is\x8e\x00\xb6\
|
||||||
|
\x0f$Uu\x05\x0e\x01\x91$\r!\xa49\x94\x17I\x02\xc9_\xe3:Nq\x93}XL|\xeb\xe9\
|
||||||
|
\x05\xa4p\rH\xa29h^[ Y\xd5\xb9\xb5\x17\x94gu\x19DA\x96\xe0c\xfe^\xcf\xe7Y\
|
||||||
|
\x95\x05\x00M\xf5\x16Z;\x7f\xfdAd\xcf\xee\x1cj\xc1%|\xdan"LL\x19\xda\xe1}\
|
||||||
|
\x90:\x00#\x95_l5\x04\xec\x89\x9f\xef?|\x8d\x97o\xe1\x8e\xbeJ\xfc\xb1\xde\
|
||||||
|
\xf4x\xe1\x1d\x00\x00\x00\x00IEND\xaeB`\x82'
|
||||||
|
|
||||||
|
def getCopy2Bitmap():
|
||||||
|
return wxBitmapFromImage(getCopy2Image())
|
||||||
|
|
||||||
|
def getCopy2Image():
|
||||||
|
stream = cStringIO.StringIO(getCopy2Data())
|
||||||
|
return wxImageFromStream(stream)
|
||||||
|
|
||||||
#----------------------------------------------------------------------
|
#----------------------------------------------------------------------
|
||||||
def getPasteData():
|
def getPasteData():
|
||||||
return \
|
return \
|
||||||
|
@@ -1,25 +0,0 @@
|
|||||||
"""Basic regular expression demonstration facility (Perl style syntax)."""
|
|
||||||
|
|
||||||
from wxPython.wx import *
|
|
||||||
import re
|
|
||||||
|
|
||||||
#----------------------------------------------------------------------
|
|
||||||
|
|
||||||
class ReDemoPanel(wxPanel):
|
|
||||||
def __init__(self, parent):
|
|
||||||
wxPanel.__init__(self, parent, -1)
|
|
||||||
|
|
||||||
rePrompt = wxStaticText(self, -1, "Enter a Perl-style regular expression")
|
|
||||||
reText = wxTextCtrl(self, 101, "")
|
|
||||||
|
|
||||||
options = self.AddOptions()
|
|
||||||
|
|
||||||
sPrompt = wxStaticText(self, -1, "Enter a string to search")
|
|
||||||
sText = wxTextCtrl(self, 102, "", style=wxTE_MULTILINE)
|
|
||||||
|
|
||||||
dispPrompt = wxStaticText(self, -1, "Groups:")
|
|
||||||
dispText = wxTextCtrl(self, 103, "", style=wxTE_MULTILINE|wxTE_READONLY)
|
|
||||||
|
|
||||||
|
|
||||||
#----------------------------------------------------------------------
|
|
||||||
#----------------------------------------------------------------------
|
|
@@ -61,6 +61,11 @@ class TestPanel(wxPanel):
|
|||||||
self.nfi.SetFont(font)
|
self.nfi.SetFont(font)
|
||||||
fgs.Add(self.nfi, 0, wxADJUST_MINSIZE)
|
fgs.Add(self.nfi, 0, wxADJUST_MINSIZE)
|
||||||
|
|
||||||
|
fgs.Add(wxStaticText(self, -1, "IsFixedWidth:"))
|
||||||
|
self.ifw = wxStaticText(self, -1, "")
|
||||||
|
self.ifw.SetFont(font)
|
||||||
|
fgs.Add(self.ifw, 0, wxADJUST_MINSIZE)
|
||||||
|
|
||||||
# give it some border space
|
# give it some border space
|
||||||
sizer = wxBoxSizer(wxVERTICAL)
|
sizer = wxBoxSizer(wxVERTICAL)
|
||||||
sizer.Add(fgs, 0, wxGROW|wxADJUST_MINSIZE|wxALL, 25)
|
sizer.Add(fgs, 0, wxGROW|wxADJUST_MINSIZE|wxALL, 25)
|
||||||
@@ -77,6 +82,7 @@ class TestPanel(wxPanel):
|
|||||||
self.weight.SetLabel(self.curFont.GetWeightString())
|
self.weight.SetLabel(self.curFont.GetWeightString())
|
||||||
self.face.SetLabel(self.curFont.GetFaceName())
|
self.face.SetLabel(self.curFont.GetFaceName())
|
||||||
self.nfi.SetLabel(self.curFont.GetNativeFontInfo().ToString())
|
self.nfi.SetLabel(self.curFont.GetNativeFontInfo().ToString())
|
||||||
|
self.ifw.SetLabel(str(self.curFont.IsFixedWidth()))
|
||||||
self.Layout()
|
self.Layout()
|
||||||
|
|
||||||
|
|
||||||
|
@@ -107,6 +107,11 @@ class MyEvtHandler(wxShapeEvtHandler):
|
|||||||
def OnLeftClick(self, x, y, keys = 0, attachment = 0):
|
def OnLeftClick(self, x, y, keys = 0, attachment = 0):
|
||||||
shape = self.GetShape()
|
shape = self.GetShape()
|
||||||
print shape.__class__, shape.GetClassName()
|
print shape.__class__, shape.GetClassName()
|
||||||
|
regions = shape.GetRegions()
|
||||||
|
if regions:
|
||||||
|
#print regions,
|
||||||
|
print regions[0].GetFormattedText()
|
||||||
|
|
||||||
canvas = shape.GetCanvas()
|
canvas = shape.GetCanvas()
|
||||||
dc = wxClientDC(canvas)
|
dc = wxClientDC(canvas)
|
||||||
canvas.PrepareDC(dc)
|
canvas.PrepareDC(dc)
|
||||||
|
@@ -71,7 +71,8 @@ class TestTransientPopup(wxPopupTransientWindow):
|
|||||||
"wxPopupWindow which disappears\n"
|
"wxPopupWindow which disappears\n"
|
||||||
"automatically when the user\n"
|
"automatically when the user\n"
|
||||||
"clicks the mouse outside it or if it\n"
|
"clicks the mouse outside it or if it\n"
|
||||||
"loses focus in any other way."
|
"(or its first child) loses focus in \n"
|
||||||
|
"any other way."
|
||||||
,
|
,
|
||||||
pos=(10,10))
|
pos=(10,10))
|
||||||
sz = st.GetBestSize()
|
sz = st.GetBestSize()
|
||||||
|
@@ -37,6 +37,9 @@ else:
|
|||||||
#----------------------------------------------------------------------
|
#----------------------------------------------------------------------
|
||||||
|
|
||||||
class PythonSTC(wxStyledTextCtrl):
|
class PythonSTC(wxStyledTextCtrl):
|
||||||
|
|
||||||
|
fold_symbols = 2
|
||||||
|
|
||||||
def __init__(self, parent, ID):
|
def __init__(self, parent, ID):
|
||||||
wxStyledTextCtrl.__init__(self, parent, ID,
|
wxStyledTextCtrl.__init__(self, parent, ID,
|
||||||
style = wxNO_FULL_REPAINT_ON_RESIZE)
|
style = wxNO_FULL_REPAINT_ON_RESIZE)
|
||||||
@@ -51,10 +54,9 @@ class PythonSTC(wxStyledTextCtrl):
|
|||||||
self.SetProperty("tab.timmy.whinge.level", "1")
|
self.SetProperty("tab.timmy.whinge.level", "1")
|
||||||
self.SetMargins(0,0)
|
self.SetMargins(0,0)
|
||||||
|
|
||||||
#self.SetViewWhiteSpace(True)
|
self.SetViewWhiteSpace(False)
|
||||||
#self.SetBufferedDraw(False)
|
#self.SetBufferedDraw(False)
|
||||||
#self.SetViewEOL(True)
|
#self.SetViewEOL(True)
|
||||||
#self.SetTwoPhaseDraw(False)
|
|
||||||
|
|
||||||
self.SetEdgeMode(wxSTC_EDGE_BACKGROUND)
|
self.SetEdgeMode(wxSTC_EDGE_BACKGROUND)
|
||||||
self.SetEdgeColumn(78)
|
self.SetEdgeColumn(78)
|
||||||
@@ -66,23 +68,46 @@ class PythonSTC(wxStyledTextCtrl):
|
|||||||
self.SetMarginSensitive(2, True)
|
self.SetMarginSensitive(2, True)
|
||||||
self.SetMarginWidth(2, 12)
|
self.SetMarginWidth(2, 12)
|
||||||
|
|
||||||
if 0: # simple folder marks, like the old version
|
|
||||||
self.MarkerDefine(wxSTC_MARKNUM_FOLDER, wxSTC_MARK_ARROW, "navy", "navy")
|
|
||||||
self.MarkerDefine(wxSTC_MARKNUM_FOLDEROPEN, wxSTC_MARK_ARROWDOWN, "navy", "navy")
|
|
||||||
# Set these to an invisible mark
|
|
||||||
self.MarkerDefine(wxSTC_MARKNUM_FOLDEROPENMID, wxSTC_MARK_BACKGROUND, "white", "black")
|
|
||||||
self.MarkerDefine(wxSTC_MARKNUM_FOLDERMIDTAIL, wxSTC_MARK_BACKGROUND, "white", "black")
|
|
||||||
self.MarkerDefine(wxSTC_MARKNUM_FOLDERSUB, wxSTC_MARK_BACKGROUND, "white", "black")
|
|
||||||
self.MarkerDefine(wxSTC_MARKNUM_FOLDERTAIL, wxSTC_MARK_BACKGROUND, "white", "black")
|
|
||||||
|
|
||||||
else: # more involved "outlining" folder marks
|
if self.fold_symbols == 0:
|
||||||
self.MarkerDefine(wxSTC_MARKNUM_FOLDEREND, wxSTC_MARK_BOXPLUSCONNECTED, "white", "black")
|
# Arrow pointing right for contracted folders, arrow pointing down for expanded
|
||||||
self.MarkerDefine(wxSTC_MARKNUM_FOLDEROPENMID, wxSTC_MARK_BOXMINUSCONNECTED, "white", "black")
|
self.MarkerDefine(wxSTC_MARKNUM_FOLDEROPEN, wxSTC_MARK_ARROWDOWN, "black", "black");
|
||||||
self.MarkerDefine(wxSTC_MARKNUM_FOLDERMIDTAIL, wxSTC_MARK_TCORNER, "white", "black")
|
self.MarkerDefine(wxSTC_MARKNUM_FOLDER, wxSTC_MARK_ARROW, "black", "black");
|
||||||
self.MarkerDefine(wxSTC_MARKNUM_FOLDERTAIL, wxSTC_MARK_LCORNER, "white", "black")
|
self.MarkerDefine(wxSTC_MARKNUM_FOLDERSUB, wxSTC_MARK_EMPTY, "black", "black");
|
||||||
self.MarkerDefine(wxSTC_MARKNUM_FOLDERSUB, wxSTC_MARK_VLINE, "white", "black")
|
self.MarkerDefine(wxSTC_MARKNUM_FOLDERTAIL, wxSTC_MARK_EMPTY, "black", "black");
|
||||||
self.MarkerDefine(wxSTC_MARKNUM_FOLDER, wxSTC_MARK_BOXPLUS, "white", "black")
|
self.MarkerDefine(wxSTC_MARKNUM_FOLDEREND, wxSTC_MARK_EMPTY, "white", "black");
|
||||||
self.MarkerDefine(wxSTC_MARKNUM_FOLDEROPEN, wxSTC_MARK_BOXMINUS, "white", "black")
|
self.MarkerDefine(wxSTC_MARKNUM_FOLDEROPENMID, wxSTC_MARK_EMPTY, "white", "black");
|
||||||
|
self.MarkerDefine(wxSTC_MARKNUM_FOLDERMIDTAIL, wxSTC_MARK_EMPTY, "white", "black");
|
||||||
|
|
||||||
|
elif self.fold_symbols == 1:
|
||||||
|
# Plus for contracted folders, minus for expanded
|
||||||
|
self.MarkerDefine(wxSTC_MARKNUM_FOLDEROPEN, wxSTC_MARK_MINUS, "white", "black");
|
||||||
|
self.MarkerDefine(wxSTC_MARKNUM_FOLDER, wxSTC_MARK_PLUS, "white", "black");
|
||||||
|
self.MarkerDefine(wxSTC_MARKNUM_FOLDERSUB, wxSTC_MARK_EMPTY, "white", "black");
|
||||||
|
self.MarkerDefine(wxSTC_MARKNUM_FOLDERTAIL, wxSTC_MARK_EMPTY, "white", "black");
|
||||||
|
self.MarkerDefine(wxSTC_MARKNUM_FOLDEREND, wxSTC_MARK_EMPTY, "white", "black");
|
||||||
|
self.MarkerDefine(wxSTC_MARKNUM_FOLDEROPENMID, wxSTC_MARK_EMPTY, "white", "black");
|
||||||
|
self.MarkerDefine(wxSTC_MARKNUM_FOLDERMIDTAIL, wxSTC_MARK_EMPTY, "white", "black");
|
||||||
|
|
||||||
|
elif self.fold_symbols == 2:
|
||||||
|
# Like a flattened tree control using circular headers and curved joins
|
||||||
|
self.MarkerDefine(wxSTC_MARKNUM_FOLDEROPEN, wxSTC_MARK_CIRCLEMINUS, "white", "#404040");
|
||||||
|
self.MarkerDefine(wxSTC_MARKNUM_FOLDER, wxSTC_MARK_CIRCLEPLUS, "white", "#404040");
|
||||||
|
self.MarkerDefine(wxSTC_MARKNUM_FOLDERSUB, wxSTC_MARK_VLINE, "white", "#404040");
|
||||||
|
self.MarkerDefine(wxSTC_MARKNUM_FOLDERTAIL, wxSTC_MARK_LCORNERCURVE, "white", "#404040");
|
||||||
|
self.MarkerDefine(wxSTC_MARKNUM_FOLDEREND, wxSTC_MARK_CIRCLEPLUSCONNECTED, "white", "#404040");
|
||||||
|
self.MarkerDefine(wxSTC_MARKNUM_FOLDEROPENMID, wxSTC_MARK_CIRCLEMINUSCONNECTED, "white", "#404040");
|
||||||
|
self.MarkerDefine(wxSTC_MARKNUM_FOLDERMIDTAIL, wxSTC_MARK_TCORNERCURVE, "white", "#404040");
|
||||||
|
|
||||||
|
elif self.fold_symbols == 3:
|
||||||
|
# Like a flattened tree control using square headers
|
||||||
|
self.MarkerDefine(wxSTC_MARKNUM_FOLDEROPEN, wxSTC_MARK_BOXMINUS, "white", "#808080")
|
||||||
|
self.MarkerDefine(wxSTC_MARKNUM_FOLDER, wxSTC_MARK_BOXPLUS, "white", "#808080")
|
||||||
|
self.MarkerDefine(wxSTC_MARKNUM_FOLDERSUB, wxSTC_MARK_VLINE, "white", "#808080")
|
||||||
|
self.MarkerDefine(wxSTC_MARKNUM_FOLDERTAIL, wxSTC_MARK_LCORNER, "white", "#808080")
|
||||||
|
self.MarkerDefine(wxSTC_MARKNUM_FOLDEREND, wxSTC_MARK_BOXPLUSCONNECTED, "white", "#808080")
|
||||||
|
self.MarkerDefine(wxSTC_MARKNUM_FOLDEROPENMID, wxSTC_MARK_BOXMINUSCONNECTED, "white", "#808080")
|
||||||
|
self.MarkerDefine(wxSTC_MARKNUM_FOLDERMIDTAIL, wxSTC_MARK_TCORNER, "white", "#808080")
|
||||||
|
|
||||||
|
|
||||||
EVT_STC_UPDATEUI(self, ID, self.OnUpdateUI)
|
EVT_STC_UPDATEUI(self, ID, self.OnUpdateUI)
|
||||||
@@ -94,10 +119,10 @@ class PythonSTC(wxStyledTextCtrl):
|
|||||||
# just have to define what each style looks like. This set is adapted from
|
# just have to define what each style looks like. This set is adapted from
|
||||||
# Scintilla sample property files.
|
# Scintilla sample property files.
|
||||||
|
|
||||||
self.StyleClearAll()
|
|
||||||
|
|
||||||
# Global default styles for all languages
|
# Global default styles for all languages
|
||||||
self.StyleSetSpec(wxSTC_STYLE_DEFAULT, "face:%(helv)s,size:%(size)d" % faces)
|
self.StyleSetSpec(wxSTC_STYLE_DEFAULT, "face:%(helv)s,size:%(size)d" % faces)
|
||||||
|
self.StyleClearAll() # Reset all to be like the default
|
||||||
|
|
||||||
self.StyleSetSpec(wxSTC_STYLE_LINENUMBER, "back:#C0C0C0,face:%(helv)s,size:%(size2)d" % faces)
|
self.StyleSetSpec(wxSTC_STYLE_LINENUMBER, "back:#C0C0C0,face:%(helv)s,size:%(size2)d" % faces)
|
||||||
self.StyleSetSpec(wxSTC_STYLE_CONTROLCHAR, "face:%(other)s" % faces)
|
self.StyleSetSpec(wxSTC_STYLE_CONTROLCHAR, "face:%(other)s" % faces)
|
||||||
self.StyleSetSpec(wxSTC_STYLE_BRACELIGHT, "fore:#FFFFFF,back:#0000FF,bold")
|
self.StyleSetSpec(wxSTC_STYLE_BRACELIGHT, "fore:#FFFFFF,back:#0000FF,bold")
|
||||||
@@ -139,7 +164,7 @@ class PythonSTC(wxStyledTextCtrl):
|
|||||||
# register some images for use in the AutoComplete box.
|
# register some images for use in the AutoComplete box.
|
||||||
self.RegisterImage(1, images.getSmilesBitmap())
|
self.RegisterImage(1, images.getSmilesBitmap())
|
||||||
self.RegisterImage(2, images.getFile1Bitmap())
|
self.RegisterImage(2, images.getFile1Bitmap())
|
||||||
self.RegisterImage(3, images.getCopyBitmap())
|
self.RegisterImage(3, images.getCopy2Bitmap())
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@@ -40,6 +40,9 @@ class PreMyBluePanel(wxPanel):
|
|||||||
def __init__(self):
|
def __init__(self):
|
||||||
p = wxPrePanel()
|
p = wxPrePanel()
|
||||||
self.this = p.this
|
self.this = p.this
|
||||||
|
self.thisown = p.thisown
|
||||||
|
self._setOORInfo(self)
|
||||||
|
|
||||||
|
|
||||||
def Create(self, parent, id, pos, size, style, name):
|
def Create(self, parent, id, pos, size, style, name):
|
||||||
wxPanel.Create(self, parent, id, pos, size, style, name)
|
wxPanel.Create(self, parent, id, pos, size, style, name)
|
||||||
|
106
wxPython/demo/wxXmlResourceSubclass.py
Normal file
106
wxPython/demo/wxXmlResourceSubclass.py
Normal file
@@ -0,0 +1,106 @@
|
|||||||
|
|
||||||
|
from wxPython.wx import *
|
||||||
|
from wxPython.xrc import *
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------
|
||||||
|
|
||||||
|
resourceText = r'''<?xml version="1.0"?>
|
||||||
|
<resource>
|
||||||
|
|
||||||
|
<!-- Notice that the class IS a standard wx class, and a custom
|
||||||
|
subclass is specified as "moduleName.ClassName" -->
|
||||||
|
|
||||||
|
<object class="wxPanel" subclass="wxXmlResourceSubclass.MyBluePanel" name="MyPanel">
|
||||||
|
<size>200,100</size>
|
||||||
|
<object class="wxStaticText" name="label1" subclass="wxPython.wx.wxPreStaticText">
|
||||||
|
<label>This blue panel is a class derived from wxPanel
|
||||||
|
and is loaded by a using a subclass attribute of the object tag.</label>
|
||||||
|
<pos>10,10</pos>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
</resource>
|
||||||
|
'''
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------
|
||||||
|
|
||||||
|
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 = """<html><body>
|
||||||
|
<h2><center>wxXmlResourceSubclass</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
|
||||||
|
do that.
|
||||||
|
|
||||||
|
</body></html>
|
||||||
|
"""
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
import sys,os
|
||||||
|
import run
|
||||||
|
run.main(['', os.path.basename(sys.argv[0])])
|
||||||
|
|
Reference in New Issue
Block a user