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:
Robin Dunn
2004-01-15 17:38:10 +00:00
parent 60a9e9925f
commit 1d4d7a48fb
12 changed files with 212 additions and 49 deletions

View File

@@ -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,

View File

@@ -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):

View File

@@ -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',

View File

@@ -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",

View File

@@ -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 \

View File

@@ -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)
#----------------------------------------------------------------------
#----------------------------------------------------------------------

View File

@@ -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()

View File

@@ -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)

View File

@@ -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()

View File

@@ -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())

View File

@@ -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)

View 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])])