More lib and demo patches to drop the wx prefix (Jeff has been busy!)

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@24965 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Robin Dunn
2003-12-22 19:09:54 +00:00
parent 88568e48e4
commit d4b73b1b8e
62 changed files with 865 additions and 580 deletions

View File

@@ -11,6 +11,15 @@
#
# o A few changes to correct my own mistakes earlier :-).
#
# 12/20/2003 - Jeff Grimmett (grimmtooth@softhome.net)
#
# o wxMaskedTextCtrl -> MaskedTextCtrl
# o wxMaskedComboBox -> MaskedComboBox
# o wxIpAddrCtrl -> IpAddrCtrl
# o wxMaskedNumCtrl -> MaskedNumCtrl
# o wxTimeCtrl -> TimeCtrl
# o wxScrolledPanel -> ScrolledPanel
#
import string
import sys
@@ -31,7 +40,7 @@ class demoMixin:
mask = wx.StaticText( self, -1, "Mask Value" )
formatcode = wx.StaticText( self, -1, "Format" )
regex = wx.StaticText( self, -1, "Regexp Validator(opt.)" )
ctrl = wx.StaticText( self, -1, "wxMaskedTextCtrl" )
ctrl = wx.StaticText( self, -1, "MaskedTextCtrl" )
description.SetFont( wx.Font(9, wx.SWISS, wx.NORMAL, wx.BOLD))
mask.SetFont( wx.Font(9, wx.SWISS, wx.NORMAL, wx.BOLD))
@@ -54,7 +63,7 @@ class demoMixin:
sizer.Add( wx.StaticText( self, -1, control[4]) )
if control in controls:
newControl = med.wxMaskedTextCtrl( self, -1, "",
newControl = med.MaskedTextCtrl( self, -1, "",
mask = control[1],
excludeChars = control[2],
formatcodes = control[3],
@@ -85,9 +94,9 @@ class demoMixin:
#----------------------------------------------------------------------------
class demoPage1(scroll.wxScrolledPanel, demoMixin):
class demoPage1(scroll.ScrolledPanel, demoMixin):
def __init__(self, parent, log):
scroll.wxScrolledPanel.__init__(self, parent, -1)
scroll.ScrolledPanel.__init__(self, parent, -1)
self.sizer = wx.BoxSizer( wx.VERTICAL )
self.editList = []
@@ -157,10 +166,10 @@ Smith, Jones, Williams). Signs on numbers can be toggled with the minus key.
self.changeControlParams( event, "fillChar", '?', ' ' )
class demoPage2(scroll.wxScrolledPanel, demoMixin):
class demoPage2(scroll.ScrolledPanel, demoMixin):
def __init__( self, parent, log ):
self.log = log
scroll.wxScrolledPanel.__init__( self, parent, -1 )
scroll.ScrolledPanel.__init__( self, parent, -1 )
self.sizer = wx.BoxSizer( wx.VERTICAL )
label = wx.StaticText( self, -1, """\
@@ -202,15 +211,15 @@ Many of these already do complicated validation; To see some examples, try
self.SetupScrolling()
class demoPage3(scroll.wxScrolledPanel, demoMixin):
class demoPage3(scroll.ScrolledPanel, demoMixin):
def __init__(self, parent, log):
self.log = log
scroll.wxScrolledPanel.__init__(self, parent, -1)
scroll.ScrolledPanel.__init__(self, parent, -1)
self.sizer = wx.BoxSizer( wx.VERTICAL )
self.editList = []
label = wx.StaticText( self, -1, """\
Here wxMaskedTextCtrls that have default values. The states
Here MaskedTextCtrls that have default values. The states
control has a list of valid values, and the unsigned integer
has a legal range specified.
""")
@@ -248,10 +257,10 @@ has a legal range specified.
self.changeControlParams( event, "validRequired", True, False )
class demoPage4(scroll.wxScrolledPanel, demoMixin):
class demoPage4(scroll.ScrolledPanel, demoMixin):
def __init__( self, parent, log ):
self.log = log
scroll.wxScrolledPanel.__init__( self, parent, -1 )
scroll.ScrolledPanel.__init__( self, parent, -1 )
self.sizer = wx.BoxSizer( wx.VERTICAL )
label = wx.StaticText( self, -1, """\
@@ -269,7 +278,7 @@ Page Up and Shift-Up arrow will similarly cycle backwards through the list.
description = wx.StaticText( self, -1, "Description" )
autofmt = wx.StaticText( self, -1, "AutoFormat Code" )
fields = wx.StaticText( self, -1, "Field Objects" )
ctrl = wx.StaticText( self, -1, "wxMaskedTextCtrl" )
ctrl = wx.StaticText( self, -1, "MaskedTextCtrl" )
description.SetFont( wx.Font( 9, wx.SWISS, wx.NORMAL, wx.BOLD ) )
autofmt.SetFont( wx.Font( 9, wx.SWISS, wx.NORMAL, wx.BOLD ) )
@@ -292,7 +301,7 @@ Page Up and Shift-Up arrow will similarly cycle backwards through the list.
grid.Add( wx.StaticText( self, -1, "Restricted Area Code"), 0, wx.ALIGN_LEFT )
grid.Add( wx.StaticText( self, -1, autoformat), 0, wx.ALIGN_LEFT )
grid.Add( wx.StaticText( self, -1, fieldsLabel), 0, wx.ALIGN_LEFT )
grid.Add( med.wxMaskedTextCtrl( self, -1, "",
grid.Add( med.MaskedTextCtrl( self, -1, "",
autoformat = autoformat,
fields = fieldsDict,
demo = True,
@@ -305,7 +314,7 @@ Page Up and Shift-Up arrow will similarly cycle backwards through the list.
{1: Field(choices=[
"03", "04", "05"],
choiceRequired=True)}"""
exp = med.wxMaskedTextCtrl( self, -1, "",
exp = med.MaskedTextCtrl( self, -1, "",
autoformat = autoformat,
fields = fieldsDict,
demo = True,
@@ -324,7 +333,7 @@ Page Up and Shift-Up arrow will similarly cycle backwards through the list.
1: Field(choices=["1234", "5678"],
choiceRequired=False)}"""
autoformat = "USZIPPLUS4"
zip = med.wxMaskedTextCtrl( self, -1, "",
zip = med.MaskedTextCtrl( self, -1, "",
autoformat = autoformat,
fields = fieldsDict,
demo = True,
@@ -341,15 +350,15 @@ Page Up and Shift-Up arrow will similarly cycle backwards through the list.
self.SetupScrolling()
class demoPage5(scroll.wxScrolledPanel, demoMixin):
class demoPage5(scroll.ScrolledPanel, demoMixin):
def __init__( self, parent, log ):
self.log = log
scroll.wxScrolledPanel.__init__( self, parent, -1 )
scroll.ScrolledPanel.__init__( self, parent, -1 )
self.sizer = wx.BoxSizer( wx.VERTICAL )
labelMaskedCombos = wx.StaticText( self, -1, """\
These are some examples of wxMaskedComboBox:""")
These are some examples of MaskedComboBox:""")
labelMaskedCombos.SetForegroundColour( "Blue" )
@@ -357,7 +366,7 @@ These are some examples of wxMaskedComboBox:""")
A state selector; only
"legal" values can be
entered:""")
statecode = med.wxMaskedComboBox( self, -1, med.states[0],
statecode = med.MaskedComboBox( self, -1, med.states[0],
choices = med.states,
autoformat="USSTATE")
@@ -405,7 +414,7 @@ A masked ComboBox to validate
text from a list of numeric codes:""")
choices = ["91", "136", "305", "4579"]
code = med.wxMaskedComboBox( self, -1, choices[0],
code = med.MaskedComboBox( self, -1, choices[0],
choices = choices,
choiceRequired = True,
formatcodes = "F_r",
@@ -428,16 +437,16 @@ choice sets:""")
labelIpAddrs = wx.StaticText( self, -1, """\
Here are some examples of wxIpAddrCtrl, a control derived from wxMaskedTextCtrl:""")
Here are some examples of IpAddrCtrl, a control derived from MaskedTextCtrl:""")
labelIpAddrs.SetForegroundColour( "Blue" )
label_ipaddr1 = wx.StaticText( self, -1, "An empty control:")
ipaddr1 = med.wxIpAddrCtrl( self, -1, style = wx.TE_PROCESS_TAB )
ipaddr1 = med.IpAddrCtrl( self, -1, style = wx.TE_PROCESS_TAB )
label_ipaddr2 = wx.StaticText( self, -1, "A restricted mask:")
ipaddr2 = med.wxIpAddrCtrl( self, -1, mask=" 10. 1.109.###" )
ipaddr2 = med.IpAddrCtrl( self, -1, mask=" 10. 1.109.###" )
label_ipaddr3 = wx.StaticText( self, -1, """\
@@ -454,22 +463,22 @@ A control with restricted legal values:
labelNumerics = wx.StaticText( self, -1, """\
Here are some useful configurations of a wxMaskedTextCtrl for integer and floating point input that still treat
the control as a text control. (For a true numeric control, check out the wxMaskedNumCtrl class!)""")
Here are some useful configurations of a MaskedTextCtrl for integer and floating point input that still treat
the control as a text control. (For a true numeric control, check out the MaskedNumCtrl class!)""")
labelNumerics.SetForegroundColour( "Blue" )
label_intctrl1 = wx.StaticText( self, -1, """\
An integer entry control with
shifting insert enabled:""")
self.intctrl1 = med.wxMaskedTextCtrl(self, -1, name='intctrl', mask="#{9}", formatcodes = '_-,F>')
self.intctrl1 = med.MaskedTextCtrl(self, -1, name='intctrl', mask="#{9}", formatcodes = '_-,F>')
label_intctrl2 = wx.StaticText( self, -1, """\
Right-insert integer entry:""")
self.intctrl2 = med.wxMaskedTextCtrl(self, -1, name='intctrl', mask="#{9}", formatcodes = '_-,Fr')
self.intctrl2 = med.MaskedTextCtrl(self, -1, name='intctrl', mask="#{9}", formatcodes = '_-,Fr')
label_floatctrl = wx.StaticText( self, -1, """\
A floating point entry control
with right-insert for ordinal:""")
self.floatctrl = med.wxMaskedTextCtrl(self, -1, name='floatctrl', mask="#{9}.#{2}", formatcodes="F,_-R", useParensForNegatives=False)
self.floatctrl = med.MaskedTextCtrl(self, -1, name='floatctrl', mask="#{9}.#{2}", formatcodes="F,_-R", useParensForNegatives=False)
self.floatctrl.SetFieldParameters(0, formatcodes='r<', validRequired=True) # right-insert, require explicit cursor movement to change fields
self.floatctrl.SetFieldParameters(1, defaultValue='00') # don't allow blank fraction

View File

@@ -12,7 +12,7 @@
import sys
import wx
import wx.lib.infoframe as infoframe
import wx.lib.infoframe
#----------------------------------------------------------------------
@@ -82,14 +82,14 @@ class MyFrame(wx.Frame):
#----------------------------------------------------------------------
overview = infoframe.__doc__
overview = wx.lib.infoframe.__doc__
def runTest(frame, nb, log):
"""
This method is used by the wxPython Demo Framework for integrating
this demo with the rest.
"""
win = MyFrame(infoframe.wxPyInformationalMessagesFrame())
win = MyFrame(wx.lib.infoframe.PyInformationalMessagesFrame())
frame.otherWin = win
win.Show(1)
@@ -113,7 +113,7 @@ if __name__ == "__main__":
## output.SetOtherMenuBar(menubar,menuname="Output")
## def OnClose(self,event):
## if isinstance(sys.stdout,wxPyInformationalMessagesFrame):
## if isinstance(sys.stdout,wx.lib.infoframe.PyInformationalMessagesFrame):
## sys.stdout.close()
## self.Destroy()
@@ -121,7 +121,7 @@ if __name__ == "__main__":
# Override the default output window and point it to the
# custom class.
outputWindowClass = infoframe.wxPyInformationalMessagesFrame
outputWindowClass = wx.lib.infoframe.PyInformationalMessagesFrame
def OnInit(self):
@@ -142,7 +142,7 @@ if __name__ == "__main__":
self.SetTopWindow(frame)
# Associate the frame with stdout.
if isinstance(sys.stdout, infoframe.wxPyInformationalMessagesFrame):
if isinstance(sys.stdout, wx.lib.infoframe.PyInformationalMessagesFrame):
sys.stdout.SetParent(frame)
print "Starting.\n",

View File

@@ -6,6 +6,10 @@
#
# o editor lib hasn't been hit by the renamer yet.
#
# 12/21/2003 - Jeff Grimmett (grimmtooth@softhome.net)
#
# o wxEditor -> Editor
#
import wx
import wx.lib.editor as editor
@@ -14,7 +18,7 @@ import wx.lib.editor as editor
def runTest(frame, nb, log):
win = wx.Panel(nb, -1)
ed = editor.wxEditor(win, -1, style=wx.SUNKEN_BORDER)
ed = editor.Editor(win, -1, style=wx.SUNKEN_BORDER)
box = wx.BoxSizer(wx.VERTICAL)
box.Add(ed, 1, wx.ALL|wx.GROW, 1)
win.SetSizer(box)
@@ -22,7 +26,7 @@ def runTest(frame, nb, log):
ed.SetText(["",
"This is a simple text editor, the class name is",
"wxEditor. Type a few lines and try it out.",
"Editor. Type a few lines and try it out.",
"",
"It uses Windows-style key commands that can be overridden by subclassing.",
"Mouse select works. Here are the key commands:",
@@ -44,19 +48,19 @@ def runTest(frame, nb, log):
overview = """
The wxEditor class implements a simple text editor using wxPython. You
can create a custom editor by subclassing wxEditor. Even though much of
The Editor class implements a simple text editor using wxPython. You
can create a custom editor by subclassing Editor. Even though much of
the editor is implemented in Python, it runs surprisingly smoothly on
normal hardware with small files.
How to use it
-------------
The demo code (demo/wxEditor.py) shows how to use wxEditor as a simple text
The demo code (demo/Editor.py) shows how to use Editor as a simple text
box. Use the SetText() and GetText() methods to set or get text from
the component; these both use a list of strings.
The samples/FrogEdit directory has an example of a simple text editor
application that uses the wxEditor component.
application that uses the Editor component.
Subclassing
-----------

View File

@@ -11,9 +11,13 @@
#
# o All issues corrected
#
# 12/20/2003 - Jeff Grimmett (grimmtooth@softhome.net)
#
# o wxIntCtrl -> IntCtrl
#
import wx
import wx.lib.intctrl as intctrl
import wx.lib.intctrl
#----------------------------------------------------------------------
@@ -25,11 +29,11 @@ class TestPanel( wx.Panel ):
panel = wx.Panel( self, -1 )
self.set_min = wx.CheckBox( panel, -1, "Set minimum value:" )
self.min = intctrl.wxIntCtrl( panel, size=( 50, -1 ) )
self.min = wx.lib.intctrl.IntCtrl( panel, size=( 50, -1 ) )
self.min.Enable( False )
self.set_max = wx.CheckBox( panel, -1, "Set maximum value:" )
self.max = intctrl.wxIntCtrl( panel, size=( 50, -1 ) )
self.max = wx.lib.intctrl.IntCtrl( panel, size=( 50, -1 ) )
self.max.Enable( False )
self.limit_target = wx.CheckBox( panel, -1, "Limit control" )
@@ -37,7 +41,7 @@ class TestPanel( wx.Panel ):
self.allow_long = wx.CheckBox( panel, -1, "Allow long integers" )
label = wx.StaticText( panel, -1, "Resulting integer control:" )
self.target_ctl = intctrl.wxIntCtrl( panel )
self.target_ctl = wx.lib.intctrl.IntCtrl( panel )
grid = wx.FlexGridSizer( 0, 2, 0, 0 )
grid.Add( self.set_min, 0, wx.ALIGN_LEFT|wx.ALIGN_CENTER_VERTICAL|wx.ALL, 5 )
@@ -74,9 +78,9 @@ class TestPanel( wx.Panel ):
self.Bind(wx.EVT_CHECKBOX, self.OnSetAllowNone, self.allow_none)
self.Bind(wx.EVT_CHECKBOX, self.OnSetAllowLong, self.allow_long)
self.Bind(intctrl.EVT_INT, self.SetTargetMinMax, self.min)
self.Bind(intctrl.EVT_INT, self.SetTargetMinMax, self.max)
self.Bind(intctrl.EVT_INT, self.OnTargetChange, self.target_ctl)
self.Bind(wx.lib.intctrl.EVT_INT, self.SetTargetMinMax, self.min)
self.Bind(wx.lib.intctrl.EVT_INT, self.SetTargetMinMax, self.max)
self.Bind(wx.lib.intctrl.EVT_INT, self.OnTargetChange, self.target_ctl)
def OnSetMin( self, event ):
@@ -146,13 +150,13 @@ def runTest( frame, nb, log ):
overview = """<html><body>
<P>
<B>wxIntCtrl</B> provides a control that takes and returns integers as
<B>IntCtrl</B> provides a control that takes and returns integers as
value, and provides bounds support and optional value limiting.
<P>
<P>
Here's the API for wxIntCtrl:
Here's the API for IntCtrl:
<DL><PRE>
<B>wxIntCtrl</B>(
<B>IntCtrl</B>(
parent, id = -1,
<B>value</B> = 0,
<B>min</B> = None,

View File

@@ -6,6 +6,10 @@
#
# o lib.mixins.listctrl needs wx renamer applied.
#
# 12/21/2003 - Jeff Grimmett (grimmtooth@softhome.net)
#
# o wxListCtrlAutoWidthMixin -> ListCtrlAutoWidthMixin
#
import wx
import wx.lib.mixins.listctrl as listmix
@@ -204,12 +208,12 @@ class KeySink(wx.Window):
#----------------------------------------------------------------------
class KeyLog(wx.ListCtrl, listmix.wxListCtrlAutoWidthMixin):
class KeyLog(wx.ListCtrl, listmix.ListCtrlAutoWidthMixin):
def __init__(self, parent):
wx.ListCtrl.__init__(self, parent, -1,
style = wx.LC_REPORT|wx.LC_VRULES|wx.LC_HRULES)
listmix.wxListCtrlAutoWidthMixin.__init__(self)
listmix.ListCtrlAutoWidthMixin.__init__(self)
self.InsertColumn(0, "Event Type")
self.InsertColumn(1, "Key Name")

View File

@@ -24,6 +24,11 @@
# o ColumnSorterMixin implementation was broke - added event.Skip()
# to column click event to allow event to fall through to mixin.
#
# 12/21/2003 - Jeff Grimmett (grimmtooth@softhome.net)
#
# o wxColumnSorterMixin -> ColumnSorterMixin
# o wxListCtrlAutoWidthMixin -> ListCtrlAutoWidthMixin
#
import wx
import wx.lib.mixins.listctrl as listmix
@@ -91,14 +96,14 @@ musicdata = {
#---------------------------------------------------------------------------
class TestListCtrl(wx.ListCtrl, listmix.wxListCtrlAutoWidthMixin):
class TestListCtrl(wx.ListCtrl, listmix.ListCtrlAutoWidthMixin):
def __init__(self, parent, ID, pos=wx.DefaultPosition,
size=wx.DefaultSize, style=0):
wx.ListCtrl.__init__(self, parent, ID, pos, size, style)
listmix.wxListCtrlAutoWidthMixin.__init__(self)
listmix.ListCtrlAutoWidthMixin.__init__(self)
class TestListCtrlPanel(wx.Panel, listmix.wxColumnSorterMixin):
class TestListCtrlPanel(wx.Panel, listmix.ColumnSorterMixin):
def __init__(self, parent, log):
wx.Panel.__init__(self, parent, -1, style=wx.WANTS_CHARS)
@@ -126,7 +131,7 @@ class TestListCtrlPanel(wx.Panel, listmix.wxColumnSorterMixin):
# Now that the list exists we can init the other base class,
# see wxPython/lib/mixins/listctrl.py
self.itemDataMap = musicdata
listmix.wxColumnSorterMixin.__init__(self, 3)
listmix.ColumnSorterMixin.__init__(self, 3)
#self.SortListItems(0, True)
self.Bind(wx.EVT_SIZE, self.OnSize)
@@ -201,11 +206,11 @@ class TestListCtrlPanel(wx.Panel, listmix.wxColumnSorterMixin):
self.currentItem = 0
# Used by the wxColumnSorterMixin, see wxPython/lib/mixins/listctrl.py
# Used by the ColumnSorterMixin, see wxPython/lib/mixins/listctrl.py
def GetListCtrl(self):
return self.list
# Used by the wxColumnSorterMixin, see wxPython/lib/mixins/listctrl.py
# Used by the ColumnSorterMixin, see wxPython/lib/mixins/listctrl.py
def GetSortImages(self):
return (self.sm_dn, self.sm_up)
@@ -441,7 +446,7 @@ item data values.
<h4>ListCtrlAutoWidthMixin</h4>
<code><b>wxListCtrlAutoWidthMixin()</b></code>
<code><b>ListCtrlAutoWidthMixin()</b></code>
<p>A mix-in class that automatically resizes the last column to take up the
remaining width of the ListCtrl.

View File

@@ -6,6 +6,10 @@
#
# o Library must be updated for this to run.
#
# 12/20/2003 - Jeff Grimmett (grimmtooth@softhome.net)
#
# o wxMVCTree -> MVCTree
#
import os
import sys
@@ -32,12 +36,12 @@ def delitem(evt):
logger.write("Delete\n")
def runTest(frame, nb, log):
#f = wx.Frame(frame, -1, "wxMVCTree", (0,0), (200,500))
#f = wx.Frame(frame, -1, "MVCTree", (0,0), (200,500))
global logger
logger = log
p = tree.wxMVCTree(nb, -1)
#f = wx.Frame(frame, -1, "wxMVCTree")
#p = tree.wxMVCTree(f, -1)
p = tree.MVCTree(nb, -1)
#f = wx.Frame(frame, -1, "MVCTree")
#p = tree.MVCTree(f, -1)
p.SetAssumeChildren(True)
p.SetModel(tree.LateFSTreeModel(os.path.normpath(os.getcwd() + os.sep +'..')))
@@ -61,7 +65,7 @@ def runTest(frame, nb, log):
overview = """\
wxMVCTree is a control which handles hierarchical data. It is
MVCTree is a control which handles hierarchical data. It is
constructed in model-view-controller architecture, so the display of
that data, and the content of the data can be changed greatly without
affecting the other parts.

View File

@@ -10,6 +10,10 @@
#
# o Issues with lib corrected.
#
# 12/20/2003 - Jeff Grimmett (grimmtooth@softhome.net)
#
# o wxMaskedNumCtrl -> MaskedNumCtrl
#
import string
import sys
@@ -27,40 +31,40 @@ class TestPanel( wx.Panel ):
panel = wx.Panel( self, -1 )
header = wx.StaticText(panel, -1, """\
This shows the various options for wxMaskedNumCtrl.
This shows the various options for MaskedNumCtrl.
The controls at the top reconfigure the resulting control at the bottom.
""")
header.SetForegroundColour( "Blue" )
intlabel = wx.StaticText( panel, -1, "Integer width:" )
self.integerwidth = mnum.wxMaskedNumCtrl(
self.integerwidth = mnum.MaskedNumCtrl(
panel, value=10, integerWidth=2, allowNegative=False
)
fraclabel = wx.StaticText( panel, -1, "Fraction width:" )
self.fractionwidth = mnum.wxMaskedNumCtrl(
self.fractionwidth = mnum.MaskedNumCtrl(
panel, value=0, integerWidth=2, allowNegative=False
)
groupcharlabel = wx.StaticText( panel,-1, "Grouping char:" )
self.groupchar = mnum.wxMaskedTextCtrl(
self.groupchar = mnum.MaskedTextCtrl(
panel, -1, value=',', mask='&', excludeChars = '-()',
formatcodes='F', emptyInvalid=True, validRequired=True
)
decimalcharlabel = wx.StaticText( panel,-1, "Decimal char:" )
self.decimalchar = mnum.wxMaskedTextCtrl(
self.decimalchar = mnum.MaskedTextCtrl(
panel, -1, value='.', mask='&', excludeChars = '-()',
formatcodes='F', emptyInvalid=True, validRequired=True
)
self.set_min = wx.CheckBox( panel, -1, "Set minimum value:" )
# Create this MaskedNumCtrl using factory, to show how:
self.min = mnum.wxMaskedNumCtrl( panel, integerWidth=5, fractionWidth=2 )
self.min = mnum.MaskedNumCtrl( panel, integerWidth=5, fractionWidth=2 )
self.min.Enable( False )
self.set_max = wx.CheckBox( panel, -1, "Set maximum value:" )
self.max = mnum.wxMaskedNumCtrl( panel, integerWidth=5, fractionWidth=2 )
self.max = mnum.MaskedNumCtrl( panel, integerWidth=5, fractionWidth=2 )
self.max.Enable( False )
@@ -79,7 +83,7 @@ The controls at the top reconfigure the resulting control at the bottom.
font.SetWeight(wx.BOLD)
label.SetFont(font)
self.target_ctl = mnum.wxMaskedNumCtrl( panel, -1, name="target control" )
self.target_ctl = mnum.MaskedNumCtrl( panel, -1, name="target control" )
label_numselect = wx.StaticText( panel, -1, """\
Programmatically set the above

View File

@@ -12,6 +12,10 @@
#
# o renamer issue shelved.
#
# 12/20/2003 - Jeff Grimmett (grimmtooth@softhome.net)
#
# o wxMultiSash -> MultiSash
#
import wx
import wx.lib.multisash as sash
@@ -76,7 +80,7 @@ class TestWindow(stc.StyledTextCtrl):
def runTest(frame, nb, log):
multi = sash.wxMultiSash(nb, -1, pos = (0,0), size = (640,480))
multi = sash.MultiSash(nb, -1, pos = (0,0), size = (640,480))
# Use this method to set the default class that will be created when
# a new sash is created. The class's constructor needs 1 parameter
@@ -90,9 +94,9 @@ def runTest(frame, nb, log):
overview = """<html><body>
<h2><center>wxMultiSash</center></h2>
<h2><center>MultiSash</center></h2>
wxMultiSash allows the user to split a window any number of times
MultiSash allows the user to split a window any number of times
either horizontally or vertically, and to close the split off windows
when desired.

View File

@@ -6,14 +6,18 @@
#
# o Is it just me or are the graphics for the control not lining up right?
#
# 12/20/2003 - Jeff Grimmett (grimmtooth@softhome.net)
#
# o wxPopupControl -> PopupControl
#
import wx
import wx.lib.popupctl as pop
import wx.calendar as cal
class TestDateControl(pop.wxPopupControl):
class TestDateControl(pop.PopupControl):
def __init__(self,*_args,**_kwargs):
apply(pop.wxPopupControl.__init__,(self,) + _args,_kwargs)
apply(pop.PopupControl.__init__,(self,) + _args,_kwargs)
self.win = wx.Window(self,-1,pos = (0,0),style = 0)
self.cal = cal.CalendarCtrl(self.win,-1,pos = (0,0))
@@ -39,7 +43,7 @@ class TestDateControl(pop.wxPopupControl):
date.GetYear()))
evt.Skip()
# Method overridden from wxPopupControl
# Method overridden from PopupControl
# This method is called just before the popup is displayed
# Use this method to format any controls in the popup
def FormatContent(self):
@@ -82,9 +86,9 @@ def runTest(frame, nb, log):
#----------------------------------------------------------------------
overview = """<html><body>
<h2><center>wxPopupControl</center></h2>
<h2><center>PopupControl</center></h2>
wxPopupControl is a class that can display a value and has a button
PopupControl is a class that can display a value and has a button
that will popup another window similar to how a wxComboBox works. The
popup window can contain whatever is needed to edit the value. This
example uses a wxCalendarCtrl.

View File

@@ -6,6 +6,11 @@
#
# o Updated URL for SF link in overview.
#
# 12/21/2003 - Jeff Grimmett (grimmtooth@softhome.net)
#
# o wxPyColorChooser -> PyColorChooser
# o wxPyColourChooser -> PyColourChooser
#
import wx
import wx.lib.colourchooser as cc
@@ -17,7 +22,7 @@ class TestColourChooser(wx.Panel):
wx.Panel.__init__(self, parent, -1)
self.log = log
chooser = cc.wxPyColourChooser(self, -1)
chooser = cc.PyColourChooser(self, -1)
sizer = wx.BoxSizer(wx.VERTICAL)
sizer.Add(chooser, 0, wx.ALL, 25)
@@ -33,7 +38,7 @@ def runTest(frame, nb, log):
#---------------------------------------------------------------
overview = """
The wxPyColourChooser component creates a colour chooser window
The PyColourChooser component creates a colour chooser window
that is similar to the Microsoft Windows colour chooser dialog.
This dialog component is drawn in a panel, and thus can be
embedded inside any widget (although it cannot be resized).
@@ -43,17 +48,17 @@ chooser on any platform that might have an ugly one :)
How to use it
------------------------------
The demo (demo/wxPyColourChooser.py code shows how to display
The demo (demo/PyColourChooser.py code shows how to display
a colour chooser and retrieve its options.
Contact and Author Info
------------------------------
wxPyColourChooser was written and is maintained by:
PyColourChooser was written and is maintained by:
Michael Gilfix <mgilfix@eecs.tufts.edu>
You can find the latest wxPyColourChooser code at
You can find the latest PyColourChooser code at
http://sourceforge.net/projects/wxcolourchooser/. If you have
any suggestions or want to submit a patch, please send
it my way at: mgilfix@eecs.tufts.edu

View File

@@ -10,7 +10,10 @@
#
# o All issues resolved.
#
# 12/20/2003 - Jeff Grimmett (grimmtooth@softhome.net)
#
# o wxRightTextCtrl -> RightTextCtrl
#
############################################################################\
# Note: this demo has been converted, but the control is deprecated because |
@@ -37,19 +40,19 @@ class TestPanel(wx.Panel):
)
fgs.Add(txt)
fgs.Add(right.wxRightTextCtrl(self, -1, "", size=(75, -1)))
fgs.Add(right.RightTextCtrl(self, -1, "", size=(75, -1)))
fgs.Add((10,10))
fgs.Add(right.wxRightTextCtrl(self, -1, "123.45", size=(75, -1)))
fgs.Add(right.RightTextCtrl(self, -1, "123.45", size=(75, -1)))
fgs.Add((10,10))
fgs.Add(right.wxRightTextCtrl(self, -1, "234.56", size=(75, -1)))
fgs.Add(right.RightTextCtrl(self, -1, "234.56", size=(75, -1)))
fgs.Add((10,10))
fgs.Add(right.wxRightTextCtrl(self, -1, "345.67", size=(75, -1)))
fgs.Add(right.RightTextCtrl(self, -1, "345.67", size=(75, -1)))
fgs.Add((10,10))
fgs.Add(right.wxRightTextCtrl(self, -1, "456.78", size=(75, -1)))
fgs.Add(right.RightTextCtrl(self, -1, "456.78", size=(75, -1)))
sizer = wx.BoxSizer(wx.VERTICAL)
sizer.Add(fgs, 0, wx.ALL, 25)

View File

@@ -10,6 +10,10 @@
#
# o lib updated, all is well.
#
# 12/21/2003 - Jeff Grimmett (grimmtooth@softhome.net)
#
# o wxScrolledPanel -> ScrolledPanel
#
import wx
import wx.lib.scrolledpanel as scrolled
@@ -19,14 +23,14 @@ import wx.lib.scrolledpanel as scrolled
text = "one two buckle my shoe three four shut the door five six pick up sticks seven eight lay them straight nine ten big fat hen"
class TestPanel(scrolled.wxScrolledPanel):
class TestPanel(scrolled.ScrolledPanel):
def __init__(self, parent, log):
self.log = log
scrolled.wxScrolledPanel.__init__(self, parent, -1)
scrolled.ScrolledPanel.__init__(self, parent, -1)
vbox = wx.BoxSizer(wx.VERTICAL)
desc = wx.StaticText(self, -1,
"wxScrolledPanel extends wxScrolledWindow, adding all "
"ScrolledPanel extends wxScrolledWindow, adding all "
"the necessary bits to set up scroll handling for you.\n\n"
"Here are three fixed size examples of its use. The "
"demo panel for this sample is also using it -- the \nwxStaticLine"
@@ -40,7 +44,7 @@ class TestPanel(scrolled.wxScrolledPanel):
words = text.split()
panel1 = scrolled.wxScrolledPanel(self, -1, size=(120,300),
panel1 = scrolled.ScrolledPanel(self, -1, size=(120,300),
style = wx.TAB_TRAVERSAL|wx.SUNKEN_BORDER )
fgs1 = wx.FlexGridSizer(cols=2, vgap=4, hgap=4)
@@ -54,9 +58,9 @@ class TestPanel(scrolled.wxScrolledPanel):
panel1.SetAutoLayout(1)
panel1.SetupScrolling( scroll_x=False )
panel2 = scrolled.wxScrolledPanel(self, -1, size=(350, 40),
panel2 = scrolled.ScrolledPanel(self, -1, size=(350, 40),
style = wx.TAB_TRAVERSAL|wx.SUNKEN_BORDER)
panel3 = scrolled.wxScrolledPanel(self, -1, size=(200,100),
panel3 = scrolled.ScrolledPanel(self, -1, size=(200,100),
style = wx.TAB_TRAVERSAL|wx.SUNKEN_BORDER)
fgs2 = wx.FlexGridSizer(cols=25, vgap=4, hgap=4)
@@ -114,7 +118,7 @@ def runTest(frame, nb, log):
overview = """<html><body>
wxScrolledPanel fills a "hole" in the implementation of wxScrolledWindow,
ScrolledPanel fills a "hole" in the implementation of wxScrolledWindow,
providing automatic scrollbar and scrolling behavior and the tab traversal
mangement that wxScrolledWindow lacks.
</body></html>

View File

@@ -11,6 +11,11 @@
#
# o New binders applied. Issues still exist.
#
# 12/20/2003 - Jeff Grimmett (grimmtooth@softhome.net)
#
# o wxTimeCtrl -> TimeCtrl
# o wxScrolledPanel -> ScrolledPanel
#
import wx
import wx.lib.timectrl as timectl
@@ -18,27 +23,27 @@ import wx.lib.scrolledpanel as scrolled
#----------------------------------------------------------------------
class TestPanel( scrolled.wxScrolledPanel ):
class TestPanel( scrolled.ScrolledPanel ):
def __init__( self, parent, log ):
scrolled.wxScrolledPanel.__init__( self, parent, -1 )
scrolled.ScrolledPanel.__init__( self, parent, -1 )
self.log = log
text1 = wx.StaticText( self, -1, "12-hour format:")
self.time12 = timectl.wxTimeCtrl( self, -1, name="12 hour control" )
self.time12 = timectl.TimeCtrl( self, -1, name="12 hour control" )
spin1 = wx.SpinButton( self, -1, wx.DefaultPosition, (-1,20), 0 )
self.time12.BindSpinButton( spin1 )
text2 = wx.StaticText( self, -1, "24-hour format:")
spin2 = wx.SpinButton( self, -1, wx.DefaultPosition, (-1,20), 0 )
self.time24 = timectl.wxTimeCtrl(
self.time24 = timectl.TimeCtrl(
self, -1, name="24 hour control", fmt24hr=True,
spinButton = spin2
)
text3 = wx.StaticText( self, -1, "No seconds\nor spin button:")
self.spinless_ctrl = timectl.wxTimeCtrl(
self.spinless_ctrl = timectl.TimeCtrl(
self, -1, name="spinless control",
display_seconds = False
)
@@ -94,17 +99,17 @@ class TestPanel( scrolled.wxScrolledPanel ):
self.set_bounds = wx.CheckBox( self, -1, "Set time bounds:" )
minlabel = wx.StaticText( self, -1, "minimum time:" )
self.min = timectl.wxTimeCtrl( self, -1, name="min", display_seconds = False )
self.min = timectl.TimeCtrl( self, -1, name="min", display_seconds = False )
self.min.Enable( False )
maxlabel = wx.StaticText( self, -1, "maximum time:" )
self.max = timectl.wxTimeCtrl( self, -1, name="max", display_seconds = False )
self.max = timectl.TimeCtrl( self, -1, name="max", display_seconds = False )
self.max.Enable( False )
self.limit_check = wx.CheckBox( self, -1, "Limit control" )
label = wx.StaticText( self, -1, "Resulting time control:" )
self.target_ctrl = timectl.wxTimeCtrl( self, -1, name="new" )
self.target_ctrl = timectl.TimeCtrl( self, -1, name="new" )
grid2 = wx.FlexGridSizer( 0, 2, 0, 0 )
grid2.Add( (20, 0), 0, wx.ALIGN_LEFT|wx.ALL, 5 )

View File

@@ -1,10 +1,10 @@
"""
wxPyColourChooser
PyColourChooser
Copyright (C) 2002 Michael Gilfix <mgilfix@eecs.tufts.edu>
This file is part of wxPyColourChooser.
This file is part of PyColourChooser.
This version of wxPyColourChooser is open source; you can redistribute it
This version of PyColourChooser is open source; you can redistribute it
and/or modify it under the licensed terms.
This program is distributed in the hope that it will be useful,
@@ -16,11 +16,16 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
#
# o 2.5 compatability update.
#
# 12/21/2003 - Jeff Grimmett (grimmtooth@softhome.net)
#
# o wxPyColorChooser -> PyColorChooser
# o wxPyColourChooser -> PyColourChooser
#
from pycolourchooser import *
# For the American in you
wxPyColorChooser = wxPyColourChooser
PyColorChooser = PyColourChooser
__all__ = [
'canvas',

View File

@@ -1,10 +1,10 @@
"""
wxPyColourChooser
PyColourChooser
Copyright (C) 2002 Michael Gilfix <mgilfix@eecs.tufts.edu>
This file is part of wxPyColourChooser.
This file is part of PyColourChooser.
This version of wxPyColourChooser is open source; you can redistribute it
This version of PyColourChooser is open source; you can redistribute it
and/or modify it under the licensed terms.
This program is distributed in the hope that it will be useful,
@@ -16,6 +16,11 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
#
# o 2.5 compatability update.
#
# 12/21/2003 - Jeff Grimmett (grimmtooth@softhome.net)
#
# o wxPyColorChooser -> PyColorChooser
# o wxPyColourChooser -> PyColourChooser
#
import wx

View File

@@ -1,10 +1,10 @@
"""
wxPyColourChooser
PyColourChooser
Copyright (C) 2002 Michael Gilfix <mgilfix@eecs.tufts.edu>
This file is part of wxPyColourChooser.
This file is part of PyColourChooser.
This version of wxPyColourChooser is open source; you can redistribute it
This version of PyColourChooser is open source; you can redistribute it
and/or modify it under the licensed terms.
This program is distributed in the hope that it will be useful,
@@ -15,8 +15,8 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
try:
import gettext
gettext.bindtextdomain('wxpycolourchooser')
gettext.textdomain('wxpycolourchooser')
gettext.bindtextdomain('pycolourchooser')
gettext.textdomain('pycolourchooser')
_ = gettext.gettext
except Exception, strerror:
print "Warning: Couldn't import translation function: %(str)s" %{ 'str' : strerror }

View File

@@ -1,10 +1,10 @@
"""
wxPyColourChooser
PyColourChooser
Copyright (C) 2002 Michael Gilfix <mgilfix@eecs.tufts.edu>
This file is part of wxPyColourChooser.
This file is part of PyColourChooser.
This version of wxPyColourChooser is open source; you can redistribute it
This version of PyColourChooser is open source; you can redistribute it
and/or modify it under the licensed terms.
This program is distributed in the hope that it will be useful,
@@ -15,6 +15,11 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
#
# o 2.5 compatability update.
#
# 12/21/2003 - Jeff Grimmett (grimmtooth@softhome.net)
#
# o wxPyColorChooser -> PyColorChooser
# o wxPyColourChooser -> PyColourChooser
#
import wx

View File

@@ -1,10 +1,10 @@
"""
wxPyColourChooser
PyColourChooser
Copyright (C) 2002 Michael Gilfix <mgilfix@eecs.tufts.edu>
This file is part of wxPyColourChooser.
This file is part of PyColourChooser.
This version of wxPyColourChooser is open source; you can redistribute it
This version of PyColourChooser is open source; you can redistribute it
and/or modify it under the licensed terms.
This program is distributed in the hope that it will be useful,
@@ -16,6 +16,13 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
#
# o 2.5 compatability update.
#
# 12/21/2003 - Jeff Grimmett (grimmtooth@softhome.net)
#
# o wxPyColorChooser -> PyColorChooser
# o wxPyColourChooser -> PyColourChooser
# o Added wx.InitAllImageHandlers() to test code since
# that's where it belongs.
#
import wx
@@ -27,7 +34,7 @@ import intl
from intl import _ # _
class wxPyColourChooser(wx.Panel):
class PyColourChooser(wx.Panel):
"""A Pure-Python implementation of the colour chooser dialog.
The PyColourChooser is a pure python implementation of the colour
@@ -383,7 +390,13 @@ def main():
def OnInit(self):
frame = wx.Frame(None, -1, 'PyColourChooser Test')
chooser = wxPyColourChooser(frame, -1)
# Added here because that's where it's supposed to be,
# not embedded in the library. If it's embedded in the
# library, debug messages will be generated for duplicate
# handlers.
wx.InitAllImageHandlers()
chooser = PyColourChooser(frame, -1)
sizer = wx.BoxSizer(wx.VERTICAL)
sizer.Add(chooser, 0, 0)
frame.SetAutoLayout(True)

View File

@@ -1,14 +1,14 @@
"""
wxPyColourChooser
PyColourChooser
Copyright (C) 2002 Michael Gilfix
This file is part of wxPyColourChooser.
This file is part of PyColourChooser.
You should have received a file COPYING containing license terms
along with this program; if not, write to Michael Gilfix
(mgilfix@eecs.tufts.edu) for a copy.
This version of wxPyColourChooser is open source; you can redistribute it and/or
This version of PyColourChooser is open source; you can redistribute it and/or
modify it under the terms listed in the file COPYING.
This program is distributed in the hope that it will be useful,
@@ -20,6 +20,11 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
#
# o 2.5 compatability update.
#
# 12/21/2003 - Jeff Grimmett (grimmtooth@softhome.net)
#
# o wxPyColorChooser -> PyColorChooser
# o wxPyColourChooser -> PyColourChooser
#
import wx

View File

@@ -1,14 +1,14 @@
"""
wxPyColourChooser
PyColourChooser
Copyright (C) 2002 Michael Gilfix
This file is part of wxPyColourChooser.
This file is part of PyColourChooser.
You should have received a file COPYING containing license terms
along with this program; if not, write to Michael Gilfix
(mgilfix@eecs.tufts.edu) for a copy.
This version of wxPyColourChooser is open source; you can redistribute it and/or
This version of PyColourChooser is open source; you can redistribute it and/or
modify it under the terms listed in the file COPYING.
This program is distributed in the hope that it will be useful,
@@ -19,6 +19,13 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
#
# o 2.5 compatability update.
#
# 12/21/2003 - Jeff Grimmett (grimmtooth@softhome.net)
#
# o wxPyColorChooser -> PyColorChooser
# o wxPyColourChooser -> PyColourChooser
# o Commented out wx.InitAllImageHandlers() (see comments at that
# point for explanation
#
import cStringIO
import zlib
@@ -164,7 +171,12 @@ class PyPalette(canvas.Canvas):
def __init__(self, parent, id):
"""Creates a palette object."""
# Load the pre-generated palette XPM
wx.InitAllImageHandlers()
# Leaving this in causes warning messages in some cases.
# It is the responsibility of the app to init the image
# handlers, IAW RD
#wx.InitAllImageHandlers()
self.palette = getBitmap ()
canvas.Canvas.__init__ (self, parent, id, size=(200, 192))

View File

@@ -13,9 +13,13 @@
#
# o 2.5 compatability update.
#
# 12/21/2003 - Jeff Grimmett (grimmtooth@softhome.net)
#
# o wxEditor -> Editor
#
# This file makes this directory into a Python package
# import the main classes into the package namespace.
from editor import wxEditor
from editor import Editor

View File

@@ -1,5 +1,5 @@
#----------------------------------------------------------------------
# Name: wxPython.lib.editor.wxEditor
# Name: wxPython.lib.editor.Editor
# Purpose: An intelligent text editor with colorization capabilities.
#
# Original
@@ -24,6 +24,10 @@
#
# o 2.5 compatability update.
#
# 12/21/2003 - Jeff Grimmett (grimmtooth@softhome.net)
#
# o wxEditor -> Editor
#
import os
import time
@@ -75,7 +79,7 @@ class Scroller:
#----------------------------------------------------------------------
class wxEditor(wx.ScrolledWindow):
class Editor(wx.ScrolledWindow):
def __init__(self, parent, id,
pos=wx.DefaultPosition, size=wx.DefaultSize, style=0):

View File

@@ -14,15 +14,26 @@
#
# o 2.5 Compatability changes
#
# 12/20/2003 - Jeff Grimmett (grimmtooth@softhome.net)
#
# o In keeping with the common idiom, the sizers in this module
# have been given the 'Py' prefix to avoid confusion with the
# native sizers of the same name. However, the reverse renamer
# still has the old wx*Sizer since the whole point of the
# reverse renamer is backward compatability.
# o wxGridSizer -> PyGridSizer
# o wxFlexGridSizer -> PyFlexGridSizer
# o Deprecation warning added.
#
"""
In this module you will find wxGridSizer and wxFlexGridSizer. Please
note that these sizers have since been ported to C++ and those
versions are now exposed in the regular wxPython wrappers. However I
am also leaving them here in the library so they can serve as an
example of how to implement sizers in Python.
In this module you will find PyGridSizer and PyFlexGridSizer. Please
note that these sizers have since been ported to C++ (as wx.GridSizer
and wx.FlexGridSizer) and those versions are now exposed in the regular
wxPython wrappers. However I am also leaving them here in the library
so they can serve as an example of how to implement sizers in Python.
wxGridSizer: Sizes and positions items such that all rows are the same
PyGridSizer: Sizes and positions items such that all rows are the same
height and all columns are the same width. You can specify a gap in
pixels to be used between the rows and/or the columns. When you
create the sizer you specify the number of rows or the number of
@@ -33,7 +44,7 @@ center of the space. When the sizer is resized, all the items are
resized the same amount so all rows and all columns remain the same
size.
wxFlexGridSizer: Derives from wxGridSizer and adds the ability for
PyFlexGridSizer: Derives from PyGridSizer and adds the ability for
particular rows and/or columns to be marked as growable. This means
that when the sizer changes size, the growable rows and colums are the
ones that stretch. The others remain at their initial size.
@@ -41,11 +52,28 @@ ones that stretch. The others remain at their initial size.
import operator
import warnings
import wx
warningmsg = r"""\
################################################\
# THIS MODULE IS DEPRECATED |
# |
# You should use the native wx.GridSizer and |
# wx.FlexGridSizer unless there is a compelling |
# need to use this module. |
################################################/
"""
warnings.warn(warningmsg, DeprecationWarning, stacklevel=2)
#----------------------------------------------------------------------
class wxGridSizer(wx.PySizer):
class PyGridSizer(wx.PySizer):
def __init__(self, rows=0, cols=0, hgap=0, vgap=0):
wx.PySizer.__init__(self)
if rows == 0 and cols == 0:
@@ -171,7 +199,7 @@ class wxGridSizer(wx.PySizer):
class wxFlexGridSizer(wxGridSizer):
class PyFlexGridSizer(wxGridSizer):
def __init__(self, rows=0, cols=0, hgap=0, vgap=0):
wxGridSizer.__init__(self, rows, cols, hgap, vgap)
self.rowHeights = []

View File

@@ -124,7 +124,7 @@ class ImageDialog(wx.Dialog):
self.y_pos = 20
self.delta = 20
size = wxSize(80, 25)
size = wx.Size(80, 25)
self.set_dir = os.getcwd()
self.set_file = None

View File

@@ -1,3 +1,9 @@
# 12/20/2003 - Jeff Grimmett (grimmtooth@softhome.net)
#
# o wxPyInformationalMessagesFrame -> PyInformationalMessagesFrame
# o dummy_wxPyInformationalMessagesFrame -> dummy_PyInformationalMessagesFrame
#
"""
infoframe.py
Released under wxWindows license etc.
@@ -30,7 +36,7 @@ Typical usage:
from wxPython.lib.infoframe import *
... # ... modify your wxApp as follows:
class myApp(wxApp):
outputWindowClass = wxPyInformationalMessagesFrame
outputWindowClass = PyInformationalMessagesFrame
...
If you're running on Linux, you'll also have to supply an argument 1 to your
constructor of myApp to redirect stdout/stderr to this window (it's done
@@ -39,7 +45,7 @@ automatically for you on Windows).
If you don't want to redirect stdout/stderr, but use the class directly: do
it this way:
InformationalMessagesFrame = wxPyInformationalMessagesFrame\
InformationalMessagesFrame = PyInformationalMessagesFrame\
([options from progname (default ""),
txt (default "informational
messages"])
@@ -192,7 +198,7 @@ class _MyStatusBar(wx.StatusBar):
class wxPyInformationalMessagesFrame:
class PyInformationalMessagesFrame:
def __init__(self,
progname="",
text="informational messages",
@@ -456,7 +462,7 @@ class wxPyInformationalMessagesFrame:
class Dummy_wxPyInformationalMessagesFrame:
class Dummy_PyInformationalMessagesFrame:
def __init__(self,progname=""):
self.softspace = 1
def __call__(self,*args):

View File

@@ -9,7 +9,7 @@
# NOTE:
# This was written to provide a standard integer edit control for wxPython.
#
# wxIntCtrl permits integer (long) values to be retrieved or set via
# IntCtrl permits integer (long) values to be retrieved or set via
# .GetValue() and .SetValue(), and provides an EVT_INT() event function
# for trapping changes to the control.
#
@@ -21,7 +21,7 @@
# contents of the control with '-' will result in a selected (absolute)
# value of -1.
#
# wxIntCtrl also supports range limits, with the option of either
# IntCtrl also supports range limits, with the option of either
# enforcing them or simply coloring the text of the control if the limits
# are exceeded.
#----------------------------------------------------------------------------
@@ -29,6 +29,12 @@
#
# o 2.5 Compatability changes
#
# 12/20/2003 - Jeff Grimmett (grimmtooth@softhome.net)
#
# o wxIntUpdateEvent -> IntUpdateEvent
# o wxIntValidator -> IntValidator
# o wxIntCtrl -> IntCtrl
#
import string
import types
@@ -59,7 +65,7 @@ EVT_INT = wx.PyEventBinder(wxEVT_COMMAND_INT_UPDATED, 1)
WXK_CTRL_X = (ord('X')+1) - ord('A')
WXK_CTRL_V = (ord('V')+1) - ord('A')
class wxIntUpdatedEvent(wx.PyCommandEvent):
class IntUpdatedEvent(wx.PyCommandEvent):
def __init__(self, id, value = 0, object=None):
wx.PyCommandEvent.__init__(self, wxEVT_COMMAND_INT_UPDATED, id)
@@ -74,9 +80,9 @@ class wxIntUpdatedEvent(wx.PyCommandEvent):
#----------------------------------------------------------------------------
class wxIntValidator( wx.PyValidator ):
class IntValidator( wx.PyValidator ):
"""
Validator class used with wxIntCtrl; handles all validation of input
Validator class used with IntCtrl; handles all validation of input
prior to changing the value of the underlying wx.TextCtrl.
"""
def __init__(self):
@@ -341,12 +347,12 @@ class wxIntValidator( wx.PyValidator ):
#----------------------------------------------------------------------------
class wxIntCtrl(wx.TextCtrl):
class IntCtrl(wx.TextCtrl):
"""
This class provides a control that takes and returns integers as
value, and provides bounds support and optional value limiting.
wxIntCtrl(
IntCtrl(
parent, id = -1,
value = 0,
pos = wxDefaultPosition,
@@ -404,10 +410,10 @@ class wxIntCtrl(wx.TextCtrl):
when the bounds are set but the control is not limited.
validator
Normally None, wxIntCtrl uses its own validator to do value
Normally None, IntCtrl uses its own validator to do value
validation and input control. However, a validator derived
from wxIntValidator can be supplied to override the data
transfer methods for the wxIntValidator class.
from IntValidator can be supplied to override the data
transfer methods for the IntValidator class.
"""
def __init__ (
@@ -431,7 +437,7 @@ class wxIntCtrl(wx.TextCtrl):
self.__oldvalue = None
if validator == wx.DefaultValidator:
validator = wxIntValidator()
validator = IntValidator()
wx.TextCtrl.__init__(
self, parent, id, self._toGUI(0),
@@ -464,7 +470,7 @@ class wxIntCtrl(wx.TextCtrl):
if value != self.__oldvalue:
try:
self.GetEventHandler().ProcessEvent(
wxIntUpdatedEvent( self.GetId(), self.GetValue(), self ) )
IntUpdatedEvent( self.GetId(), self.GetValue(), self ) )
except ValueError:
return
# let normal processing of the text continue
@@ -632,7 +638,7 @@ class wxIntCtrl(wx.TextCtrl):
if( not (value is None and self.IsNoneAllowed())
and type(value) not in (types.IntType, types.LongType) ):
raise ValueError (
'wxIntCtrl requires integer values, passed %s'% repr(value) )
'IntCtrl requires integer values, passed %s'% repr(value) )
min = self.GetMin()
max = self.GetMax()
@@ -729,10 +735,10 @@ class wxIntCtrl(wx.TextCtrl):
return ''
elif type(value) == types.LongType and not self.IsLongAllowed():
raise ValueError (
'wxIntCtrl requires integer value, passed long' )
'IntCtrl requires integer value, passed long' )
elif type(value) not in (types.IntType, types.LongType):
raise ValueError (
'wxIntCtrl requires integer value, passed %s'% repr(value) )
'IntCtrl requires integer value, passed %s'% repr(value) )
elif self.IsLimited():
min = self.GetMin()
@@ -850,7 +856,7 @@ if __name__ == '__main__':
style = wx.DEFAULT_DIALOG_STYLE ):
wx.Dialog.__init__(self, parent, id, title, pos, size, style)
self.int_ctrl = wxIntCtrl(self, wx.NewId(), size=(55,20))
self.int_ctrl = IntCtrl(self, wx.NewId(), size=(55,20))
self.OK = wx.Button( self, wx.ID_OK, "OK")
self.Cancel = wx.Button( self, wx.ID_CANCEL, "Cancel")
@@ -883,7 +889,7 @@ if __name__ == '__main__':
return True
def OnClick(self, event):
dlg = myDialog(self.panel, -1, "test wxIntCtrl")
dlg = myDialog(self.panel, -1, "test IntCtrl")
dlg.int_ctrl.SetValue(501)
dlg.int_ctrl.SetInsertionPoint(1)
dlg.int_ctrl.SetSelection(1,2)

View File

@@ -10,21 +10,25 @@
#
# o Updated for wx namespace (minor)
#
# 12/20/2003 - Jeff Grimmett (grimmtooth@softhome.net)
#
# o Removed wx prefix
#
"""<html><body>
<P>
<B>wxMaskedCtrl</B> is actually a factory function for several types of
<B>MaskedCtrl</B> is actually a factory function for several types of
masked edit controls:
<P>
<UL>
<LI><b>wxMaskedTextCtrl</b> - standard masked edit text box</LI>
<LI><b>wxMaskedComboBox</b> - adds combobox capabilities</LI>
<LI><b>wxIpAddrCtrl</b> - adds logical input semantics for IP address entry</LI>
<LI><b>wxTimeCtrl</b> - special subclass handling lots of time formats as values</LI>
<LI><b>wxMaskedNumCtrl</b> - special subclass handling numeric values</LI>
<LI><b>MaskedTextCtrl</b> - standard masked edit text box</LI>
<LI><b>MaskedComboBox</b> - adds combobox capabilities</LI>
<LI><b>IpAddrCtrl</b> - adds logical input semantics for IP address entry</LI>
<LI><b>TimeCtrl</b> - special subclass handling lots of time formats as values</LI>
<LI><b>MaskedNumCtrl</b> - special subclass handling numeric values</LI>
</UL>
<P>
<B>wxMaskedCtrl</B> works by looking for a special <b><i>controlType</i></b>
<B>MaskedCtrl</B> works by looking for a special <b><i>controlType</i></b>
parameter in the variable arguments of the control, to determine
what kind of instance to return.
controlType can be one of:
@@ -38,22 +42,22 @@ controlType can be one of:
These constants are also available individually, ie, you can
use either of the following:
<PRE><FONT SIZE=-1>
from wxPython.wx.lib.maskedctrl import wxMaskedCtrl, MASKEDCOMBO, MASKEDTEXT, NUMBER
from wxPython.wx.lib.maskedctrl import wxMaskedCtrl, controlTypes
from wxPython.wx.lib.maskedctrl import MaskedCtrl, MASKEDCOMBO, MASKEDTEXT, NUMBER
from wxPython.wx.lib.maskedctrl import MaskedCtrl, controlTypes
</FONT></PRE>
If not specified as a keyword argument, the default controlType is
controlTypes.MASKEDTEXT.
<P>
Each of the above classes has its own unique arguments, but wxMaskedCtrl
provides a single "unified" interface for masked controls. wxMaskedTextCtrl,
wxMaskedComboBox and wxIpAddrCtrl are all documented below; the others have
Each of the above classes has its own unique arguments, but MaskedCtrl
provides a single "unified" interface for masked controls. MaskedTextCtrl,
MaskedComboBox and IpAddrCtrl are all documented below; the others have
their own demo pages and interface descriptions.
</body></html>
"""
from wx.lib.maskededit import wxMaskedTextCtrl, wxMaskedComboBox, wxIpAddrCtrl
from wx.lib.maskednumctrl import wxMaskedNumCtrl
from wx.lib.timectrl import wxTimeCtrl
from wx.lib.maskededit import MaskedTextCtrl, MaskedComboBox, IpAddrCtrl
from wx.lib.maskednumctrl import MaskedNumCtrl
from wx.lib.timectrl import TimeCtrl
# "type" enumeration for class instance factory function
@@ -72,7 +76,7 @@ class controlTypes:
NUMBER = NUMBER
def wxMaskedCtrl( *args, **kwargs):
def MaskedCtrl( *args, **kwargs):
"""
Actually a factory function providing a unifying
interface for generating masked controls.
@@ -84,19 +88,19 @@ def wxMaskedCtrl( *args, **kwargs):
del kwargs['controlType']
if controlType == MASKEDTEXT:
return wxMaskedTextCtrl(*args, **kwargs)
return MaskedTextCtrl(*args, **kwargs)
elif controlType == MASKEDCOMBO:
return wxMaskedComboBox(*args, **kwargs)
return MaskedComboBox(*args, **kwargs)
elif controlType == IPADDR:
return wxIpAddrCtrl(*args, **kwargs)
return IpAddrCtrl(*args, **kwargs)
elif controlType == TIME:
return wxTimeCtrl(*args, **kwargs)
return TimeCtrl(*args, **kwargs)
elif controlType == NUMBER:
return wxMaskedNumCtrl(*args, **kwargs)
return MaskedNumCtrl(*args, **kwargs)
else:
raise AttributeError(

File diff suppressed because it is too large Load Diff

View File

@@ -9,10 +9,10 @@
# NOTE:
# This was written to provide a numeric edit control for wxPython that
# does things like right-insert (like a calculator), and does grouping, etc.
# (ie. the features of wxMaskedTextCtrl), but allows Get/Set of numeric
# (ie. the features of MaskedTextCtrl), but allows Get/Set of numeric
# values, rather than text.
#
# wxMaskedNumCtrl permits integer, and floating point values to be set
# MaskedNumCtrl permits integer, and floating point values to be set
# retrieved or set via .GetValue() and .SetValue() (type chosen based on
# fraction width, and provides an EVT_MASKEDNUM() event function for trapping
# changes to the control.
@@ -24,38 +24,45 @@
# Similarly, replacing the contents of the control with '-' will result in
# a selected (absolute) value of -1.
#
# wxMaskedNumCtrl also supports range limits, with the option of either
# MaskedNumCtrl also supports range limits, with the option of either
# enforcing them or simply coloring the text of the control if the limits
# are exceeded.
#
# wxMaskedNumCtrl is intended to support fixed-point numeric entry, and
# is derived from wxMaskedTextCtrl. As such, it supports a limited range
# MaskedNumCtrl is intended to support fixed-point numeric entry, and
# is derived from MaskedTextCtrl. As such, it supports a limited range
# of values to comply with a fixed-width entry mask.
#----------------------------------------------------------------------------
# 12/09/2003 - Jeff Grimmett (grimmtooth@softhome.net)
#
# o Updated for wx namespace
#
# 12/20/2003 - Jeff Grimmett (grimmtooth@softhome.net)
#
# o wxMaskedEditMixin -> MaskedEditMixin
# o wxMaskedTextCtrl -> MaskedTextCtrl
# o wxMaskedNumNumberUpdatedEvent -> MaskedNumNumberUpdatedEvent
# o wxMaskedNumCtrl -> MaskedNumCtrl
#
"""<html><body>
<P>
<B>wxMaskedNumCtrl:</B>
<B>MaskedNumCtrl:</B>
<UL>
<LI>allows you to get and set integer or floating point numbers as value,</LI>
<LI>provides bounds support and optional value limiting,</LI>
<LI>has the right-insert input style that wxMaskedTextCtrl supports,</LI>
<LI>has the right-insert input style that MaskedTextCtrl supports,</LI>
<LI>provides optional automatic grouping, sign control and format, grouping and decimal
character selection, etc. etc.</LI>
</UL>
<P>
Being derived from wxMaskedTextCtrl, the control only allows
Being derived from MaskedTextCtrl, the control only allows
fixed-point notation. That is, it has a fixed (though reconfigurable)
maximum width for the integer portion and optional fixed width
fractional portion.
<P>
Here's the API:
<DL><PRE>
<B>wxMaskedNumCtrl</B>(
<B>MaskedNumCtrl</B>(
parent, id = -1,
<B>value</B> = 0,
pos = wxDefaultPosition,
@@ -361,7 +368,7 @@ MAXINT = maxint # (constants should be in upper case)
MININT = -maxint-1
from wx.tools.dbg import Logger
from wx.lib.maskededit import wxMaskedEditMixin, wxMaskedTextCtrl, Field
from wx.lib.maskededit import MaskedEditMixin, MaskedTextCtrl, Field
dbg = Logger()
dbg(enable=0)
@@ -373,7 +380,7 @@ EVT_MASKEDNUM = wx.PyEventBinder(wxEVT_COMMAND_MASKED_NUMBER_UPDATED, 1)
#----------------------------------------------------------------------------
class wxMaskedNumNumberUpdatedEvent(wx.PyCommandEvent):
class MaskedNumNumberUpdatedEvent(wx.PyCommandEvent):
def __init__(self, id, value = 0, object=None):
wx.PyCommandEvent.__init__(self, wxEVT_COMMAND_MASKED_NUMBER_UPDATED, id)
@@ -388,7 +395,7 @@ class wxMaskedNumNumberUpdatedEvent(wx.PyCommandEvent):
#----------------------------------------------------------------------------
class wxMaskedNumCtrl(wxMaskedTextCtrl):
class MaskedNumCtrl(MaskedTextCtrl):
valid_ctrl_params = {
'integerWidth': 10, # by default allow all 32-bit integers
@@ -419,21 +426,21 @@ class wxMaskedNumCtrl(wxMaskedTextCtrl):
name = "maskednum",
**kwargs ):
dbg('wxMaskedNumCtrl::__init__', indent=1)
dbg('MaskedNumCtrl::__init__', indent=1)
# Set defaults for control:
dbg('setting defaults:')
for key, param_value in wxMaskedNumCtrl.valid_ctrl_params.items():
for key, param_value in MaskedNumCtrl.valid_ctrl_params.items():
# This is done this way to make setattr behave consistently with
# "private attribute" name mangling
setattr(self, '_' + key, copy.copy(param_value))
# Assign defaults for all attributes:
init_args = copy.deepcopy(wxMaskedNumCtrl.valid_ctrl_params)
init_args = copy.deepcopy(MaskedNumCtrl.valid_ctrl_params)
dbg('kwargs:', kwargs)
for key, param_value in kwargs.items():
key = key.replace('Color', 'Colour')
if key not in wxMaskedNumCtrl.valid_ctrl_params.keys():
if key not in MaskedNumCtrl.valid_ctrl_params.keys():
raise AttributeError('invalid keyword argument "%s"' % key)
else:
init_args[key] = param_value
@@ -490,7 +497,7 @@ class wxMaskedNumCtrl(wxMaskedTextCtrl):
self._typedSign = False
# Construct the base control:
wxMaskedTextCtrl.__init__(
MaskedTextCtrl.__init__(
self, parent, id, '',
pos, size, style, validator, name,
mask = mask,
@@ -517,14 +524,14 @@ class wxMaskedNumCtrl(wxMaskedTextCtrl):
# Ensure proper coloring:
self.Refresh()
dbg('finished wxMaskedNumCtrl::__init__', indent=0)
dbg('finished MaskedNumCtrl::__init__', indent=0)
def SetParameters(self, **kwargs):
"""
This routine is used to initialize and reconfigure the control:
"""
dbg('wxMaskedNumCtrl::SetParameters', indent=1)
dbg('MaskedNumCtrl::SetParameters', indent=1)
maskededit_kwargs = {}
reset_fraction_width = False
@@ -596,9 +603,9 @@ class wxMaskedNumCtrl(wxMaskedTextCtrl):
# for all other parameters, assign keyword args as appropriate:
for key, param_value in kwargs.items():
key = key.replace('Color', 'Colour')
if key not in wxMaskedNumCtrl.valid_ctrl_params.keys():
if key not in MaskedNumCtrl.valid_ctrl_params.keys():
raise AttributeError('invalid keyword argument "%s"' % key)
elif key not in wxMaskedEditMixin.valid_ctrl_params.keys():
elif key not in MaskedEditMixin.valid_ctrl_params.keys():
setattr(self, '_' + key, param_value)
elif key in ('mask', 'autoformat'): # disallow explicit setting of mask
raise AttributeError('invalid keyword argument "%s"' % key)
@@ -726,7 +733,7 @@ class wxMaskedNumCtrl(wxMaskedTextCtrl):
dbg('abs(value):', value)
self._isNeg = False
elif not self._allowNone and wxMaskedTextCtrl.GetValue(self) == '':
elif not self._allowNone and MaskedTextCtrl.GetValue(self) == '':
if self._min > 0:
value = self._min
else:
@@ -746,7 +753,7 @@ class wxMaskedNumCtrl(wxMaskedTextCtrl):
sel_start, sel_to = self.GetSelection()
self._SetValue(self._toGUI(value))
self.Refresh() # recolor as appropriate
dbg('finished wxMaskedNumCtrl::SetParameters', indent=0)
dbg('finished MaskedNumCtrl::SetParameters', indent=0)
@@ -768,7 +775,7 @@ class wxMaskedNumCtrl(wxMaskedTextCtrl):
else:
fracstart, fracend = self._fields[1]._extent
if candidate is None:
value = self._toGUI(wxMaskedTextCtrl.GetValue(self))
value = self._toGUI(MaskedTextCtrl.GetValue(self))
else:
value = self._toGUI(candidate)
fracstring = value[fracstart:fracend].strip()
@@ -778,14 +785,14 @@ class wxMaskedNumCtrl(wxMaskedTextCtrl):
return string.atof(fracstring)
def _OnChangeSign(self, event):
dbg('wxMaskedNumCtrl::_OnChangeSign', indent=1)
dbg('MaskedNumCtrl::_OnChangeSign', indent=1)
self._typedSign = True
wxMaskedEditMixin._OnChangeSign(self, event)
MaskedEditMixin._OnChangeSign(self, event)
dbg(indent=0)
def _disallowValue(self):
dbg('wxMaskedNumCtrl::_disallowValue')
dbg('MaskedNumCtrl::_disallowValue')
# limited and -1 is out of bounds
if self._typedSign:
self._isNeg = False
@@ -805,7 +812,7 @@ class wxMaskedNumCtrl(wxMaskedTextCtrl):
by the user.
"""
dbg('wxMaskedNumCtrl::_SetValue("%s")' % value, indent=1)
dbg('MaskedNumCtrl::_SetValue("%s")' % value, indent=1)
if( (self._fractionWidth and value.find(self._decimalChar) == -1) or
(self._fractionWidth == 0 and value.find(self._decimalChar) != -1) ) :
@@ -817,8 +824,8 @@ class wxMaskedNumCtrl(wxMaskedTextCtrl):
if numvalue == "":
if self._allowNone:
dbg('calling base wxMaskedTextCtrl._SetValue(self, "%s")' % value)
wxMaskedTextCtrl._SetValue(self, value)
dbg('calling base MaskedTextCtrl._SetValue(self, "%s")' % value)
MaskedTextCtrl._SetValue(self, value)
self.Refresh()
return
elif self._min > 0 and self.IsLimited():
@@ -918,7 +925,7 @@ class wxMaskedNumCtrl(wxMaskedTextCtrl):
# reasonable instead:
dbg('setting replacement value:', replacement)
self._SetValue(self._toGUI(replacement))
sel_start = wxMaskedTextCtrl.GetValue(self).find(str(abs(replacement))) # find where it put the 1, so we can select it
sel_start = MaskedTextCtrl.GetValue(self).find(str(abs(replacement))) # find where it put the 1, so we can select it
sel_to = sel_start + len(str(abs(replacement)))
dbg('queuing selection of (%d, %d)' %(sel_start, sel_to))
wx.CallAfter(self.SetInsertionPoint, sel_start)
@@ -944,18 +951,18 @@ class wxMaskedNumCtrl(wxMaskedTextCtrl):
sel_start, sel_to = self._GetSelection() # record current insertion point
dbg('calling base wxMaskedTextCtrl._SetValue(self, "%s")' % adjvalue)
wxMaskedTextCtrl._SetValue(self, adjvalue)
dbg('calling base MaskedTextCtrl._SetValue(self, "%s")' % adjvalue)
MaskedTextCtrl._SetValue(self, adjvalue)
# After all actions so far scheduled, check that resulting cursor
# position is appropriate, and move if not:
wx.CallAfter(self._CheckInsertionPoint)
dbg('finished wxMaskedNumCtrl::_SetValue', indent=0)
dbg('finished MaskedNumCtrl::_SetValue', indent=0)
def _CheckInsertionPoint(self):
# If current insertion point is before the end of the integer and
# its before the 1st digit, place it just after the sign position:
dbg('wxMaskedNumCtrl::CheckInsertionPoint', indent=1)
dbg('MaskedNumCtrl::CheckInsertionPoint', indent=1)
sel_start, sel_to = self._GetSelection()
text = self._GetValue()
if sel_to < self._fields[0]._extent[1] and text[sel_to] in (' ', '-', '('):
@@ -972,13 +979,13 @@ class wxMaskedNumCtrl(wxMaskedTextCtrl):
grouping characters auto selects the digit before or after the
grouping character, so that the erasure does the right thing.
"""
dbg('wxMaskedNumCtrl::_OnErase', indent=1)
dbg('MaskedNumCtrl::_OnErase', indent=1)
#if grouping digits, make sure deletes next to group char always
# delete next digit to appropriate side:
if self._groupDigits:
key = event.GetKeyCode()
value = wxMaskedTextCtrl.GetValue(self)
value = MaskedTextCtrl.GetValue(self)
sel_start, sel_to = self._GetSelection()
if key == wx.WXK_BACK:
@@ -1004,7 +1011,7 @@ class wxMaskedNumCtrl(wxMaskedTextCtrl):
self.SetInsertionPoint(sel_start)
self.SetSelection(sel_start, sel_to+1)
wxMaskedTextCtrl._OnErase(self, event)
MaskedTextCtrl._OnErase(self, event)
dbg(indent=0)
@@ -1017,8 +1024,8 @@ class wxMaskedNumCtrl(wxMaskedTextCtrl):
text events. So we check for actual changes to the text
before passing the events on.
"""
dbg('wxMaskedNumCtrl::OnTextChange', indent=1)
if not wxMaskedTextCtrl._OnTextChange(self, event):
dbg('MaskedNumCtrl::OnTextChange', indent=1)
if not MaskedTextCtrl._OnTextChange(self, event):
dbg(indent=0)
return
@@ -1028,7 +1035,7 @@ class wxMaskedNumCtrl(wxMaskedTextCtrl):
if value != self._oldvalue:
try:
self.GetEventHandler().ProcessEvent(
wxMaskedNumNumberUpdatedEvent( self.GetId(), self.GetValue(), self ) )
MaskedNumNumberUpdatedEvent( self.GetId(), self.GetValue(), self ) )
except ValueError:
dbg(indent=0)
return
@@ -1039,7 +1046,7 @@ class wxMaskedNumCtrl(wxMaskedTextCtrl):
def _GetValue(self):
"""
Override of wxMaskedTextCtrl to allow amixin to get the raw text value of the
Override of MaskedTextCtrl to allow amixin to get the raw text value of the
control with this function.
"""
return wx.TextCtrl.GetValue(self)
@@ -1049,7 +1056,7 @@ class wxMaskedNumCtrl(wxMaskedTextCtrl):
"""
Returns the current numeric value of the control.
"""
return self._fromGUI( wxMaskedTextCtrl.GetValue(self) )
return self._fromGUI( MaskedTextCtrl.GetValue(self) )
def SetValue(self, value):
"""
@@ -1060,7 +1067,7 @@ class wxMaskedNumCtrl(wxMaskedTextCtrl):
A ValueError exception will be raised if an invalid value
is specified.
"""
wxMaskedTextCtrl.SetValue( self, self._toGUI(value) )
MaskedTextCtrl.SetValue( self, self._toGUI(value) )
def SetIntegerWidth(self, value):
@@ -1091,7 +1098,7 @@ class wxMaskedNumCtrl(wxMaskedTextCtrl):
If min > the max value allowed by the width of the control,
the function will return False, and the min will not be set.
"""
dbg('wxMaskedNumCtrl::SetMin(%s)' % repr(min), indent=1)
dbg('MaskedNumCtrl::SetMin(%s)' % repr(min), indent=1)
if( self._max is None
or min is None
or (self._max is not None and self._max >= min) ):
@@ -1296,7 +1303,7 @@ class wxMaskedNumCtrl(wxMaskedTextCtrl):
type and bounds checking and raises ValueError if argument is
not a valid value.
"""
dbg('wxMaskedNumCtrl::_toGUI(%s)' % repr(value), indent=1)
dbg('MaskedNumCtrl::_toGUI(%s)' % repr(value), indent=1)
if value is None and self.IsNoneAllowed():
dbg(indent=0)
return self._template
@@ -1311,12 +1318,12 @@ class wxMaskedNumCtrl(wxMaskedTextCtrl):
value = long(value)
except Exception, e:
dbg('exception raised:', e, indent=0)
raise ValueError ('wxMaskedNumCtrl requires numeric value, passed %s'% repr(value) )
raise ValueError ('MaskedNumCtrl requires numeric value, passed %s'% repr(value) )
elif type(value) not in (types.IntType, types.LongType, types.FloatType):
dbg(indent=0)
raise ValueError (
'wxMaskedNumCtrl requires numeric value, passed %s'% repr(value) )
'MaskedNumCtrl requires numeric value, passed %s'% repr(value) )
if not self._allowNegative and value < 0:
raise ValueError (
@@ -1366,7 +1373,7 @@ class wxMaskedNumCtrl(wxMaskedTextCtrl):
Conversion function used in getting the value of the control.
"""
dbg(suspend=0)
dbg('wxMaskedNumCtrl::_fromGUI(%s)' % value, indent=1)
dbg('MaskedNumCtrl::_fromGUI(%s)' % value, indent=1)
# One or more of the underlying text control implementations
# issue an intermediate EVT_TEXT when replacing the control's
# value, where the intermediate value is an empty string.
@@ -1419,7 +1426,7 @@ class wxMaskedNumCtrl(wxMaskedTextCtrl):
Preprocessor for base control paste; if value needs to be right-justified
to fit in control, do so prior to paste:
"""
dbg('wxMaskedNumCtrl::_Paste (value = "%s")' % value)
dbg('MaskedNumCtrl::_Paste (value = "%s")' % value)
if value is None:
paste_text = self._getClipboardContents()
else:
@@ -1431,7 +1438,7 @@ class wxMaskedNumCtrl(wxMaskedTextCtrl):
paste_text = self._toGUI(paste_text)
self._SetSelection(0, len(self._mask))
return wxMaskedEditMixin._Paste(self,
return MaskedEditMixin._Paste(self,
paste_text,
raise_on_invalid=raise_on_invalid,
just_return_value=just_return_value)
@@ -1450,7 +1457,7 @@ if __name__ == '__main__':
style = wx.DEFAULT_DIALOG_STYLE ):
wx.Dialog.__init__(self, parent, id, title, pos, size, style)
self.int_ctrl = wxMaskedNumCtrl(self, wx.NewId(), size=(55,20))
self.int_ctrl = MaskedNumCtrl(self, wx.NewId(), size=(55,20))
self.OK = wx.Button( self, wx.ID_OK, "OK")
self.Cancel = wx.Button( self, wx.ID_CANCEL, "Cancel")
@@ -1483,7 +1490,7 @@ if __name__ == '__main__':
return True
def OnClick(self, event):
dlg = myDialog(self.panel, -1, "test wxMaskedNumCtrl")
dlg = myDialog(self.panel, -1, "test MaskedNumCtrl")
dlg.int_ctrl.SetValue(501)
dlg.int_ctrl.SetInsertionPoint(1)
dlg.int_ctrl.SetSelection(1,2)

View File

@@ -1,6 +1,6 @@
#----------------------------------------------------------------------------
# Name: wxPython.lib.mixins.grid
# Purpose: Helpful mix-in classes for wxGrid
# Purpose: Helpful mix-in classes for wx.Grid
#
# Author: Robin Dunn
#
@@ -14,6 +14,10 @@
# o 2.5 compatability update.
# o Untested
#
# 12/21/2003 - Jeff Grimmett (grimmtooth@softhome.net)
#
# o wxGridAutoEditMixin -> GridAutoEditMixin
#
import wx
import wx.grid
@@ -21,7 +25,7 @@ import wx.grid
#----------------------------------------------------------------------------
class wxGridAutoEditMixin:
class GridAutoEditMixin:
"""A mix-in class that automatically enables the grid edit control when
a cell is selected.

View File

@@ -14,13 +14,18 @@
# o 2.5 compatability update.
# o ListCtrlSelectionManagerMix untested.
#
# 12/21/2003 - Jeff Grimmett (grimmtooth@softhome.net)
#
# o wxColumnSorterMixin -> ColumnSorterMixin
# o wxListCtrlAutoWidthMixin -> ListCtrlAutoWidthMixin
#
import locale
import wx
#----------------------------------------------------------------------------
class wxColumnSorterMixin:
class ColumnSorterMixin:
"""
A mixin class that handles sorting of a wx.ListCtrl in REPORT mode when
the column header is clicked on.
@@ -144,7 +149,7 @@ class wxColumnSorterMixin:
#----------------------------------------------------------------------------
#----------------------------------------------------------------------------
class wxListCtrlAutoWidthMixin:
class ListCtrlAutoWidthMixin:
""" A mix-in class that automatically resizes the last column to take up
the remaining width of the wx.ListCtrl.

View File

@@ -7,12 +7,18 @@
# Created: 2002/11/20
# Version: 0.1
# RCS-ID: $Id$
# License: wxWindows licensie
# License: wxWindows license
#----------------------------------------------------------------------
# 12/09/2003 - Jeff Grimmett (grimmtooth@softhome.net)
#
# o 2.5 compatability update.
#
# 12/20/2003 - Jeff Grimmett (grimmtooth@softhome.net)
#
# o wxMultiSash -> MultiSash
# o wxMultiSplit -> MultiSplit wxMultiViewLeaf
# o wxMultiViewLeaf -> MultiViewLeaf
#
import wx
@@ -24,11 +30,11 @@ CR_SIZE = SH_SIZE * 3
#----------------------------------------------------------------------
class wxMultiSash(wx.Window):
class MultiSash(wx.Window):
def __init__(self, *_args,**_kwargs):
apply(wx.Window.__init__,(self,) + _args,_kwargs)
self._defChild = EmptyChild
self.child = wxMultiSplit(self,self,(0,0),self.GetSize())
self.child = MultiSplit(self,self,(0,0),self.GetSize())
self.Bind(wx.EVT_SIZE,self.OnMultiSize)
def SetDefaultChildClass(self,childCls):
@@ -43,7 +49,7 @@ class wxMultiSash(wx.Window):
def Clear(self):
old = self.child
self.child = wxMultiSplit(self,self,(0,0),self.GetSize())
self.child = MultiSplit(self,self,(0,0),self.GetSize())
old.Destroy()
self.child.OnSize(None)
@@ -59,7 +65,7 @@ class wxMultiSash(wx.Window):
exec 'import %s' % mod
self._defChild = eval(dChild)
old = self.child
self.child = wxMultiSplit(self,self,wxPoint(0,0),self.GetSize())
self.child = MultiSplit(self,self,wxPoint(0,0),self.GetSize())
self.child.SetSaveData(data['child'])
old.Destroy()
self.OnMultiSize(None)
@@ -69,7 +75,7 @@ class wxMultiSash(wx.Window):
#----------------------------------------------------------------------
class wxMultiSplit(wx.Window):
class MultiSplit(wx.Window):
def __init__(self,multiView,parent,pos,size,view1 = None):
wx.Window.__init__(self,id = -1,parent = parent,pos = pos,size = size,
style = wx.CLIP_CHILDREN)
@@ -80,7 +86,7 @@ class wxMultiSplit(wx.Window):
self.view1.Reparent(self)
self.view1.MoveXY(0,0)
else:
self.view1 = wxMultiViewLeaf(self.multiView,self,
self.view1 = MultiViewLeaf(self.multiView,self,
(0,0),self.GetSize())
self.direction = None
@@ -90,11 +96,11 @@ class wxMultiSplit(wx.Window):
saveData = {}
if self.view1:
saveData['view1'] = self.view1.GetSaveData()
if isinstance(self.view1,wxMultiSplit):
if isinstance(self.view1,MultiSplit):
saveData['view1IsSplit'] = 1
if self.view2:
saveData['view2'] = self.view2.GetSaveData()
if isinstance(self.view2,wxMultiSplit):
if isinstance(self.view2,MultiSplit):
saveData['view2IsSplit'] = 1
saveData['direction'] = self.direction
v1,v2 = self.GetPosition()
@@ -113,10 +119,10 @@ class wxMultiSplit(wx.Window):
isSplit = data.get('view1IsSplit',None)
old = self.view1
if isSplit:
self.view1 = wxMultiSplit(self.multiView,self,
self.view1 = MultiSplit(self.multiView,self,
(0,0),self.GetSize())
else:
self.view1 = wxMultiViewLeaf(self.multiView,self,
self.view1 = MultiViewLeaf(self.multiView,self,
(0,0),self.GetSize())
self.view1.SetSaveData(v1Data)
if old:
@@ -126,10 +132,10 @@ class wxMultiSplit(wx.Window):
isSplit = data.get('view2IsSplit',None)
old = self.view2
if isSplit:
self.view2 = wxMultiSplit(self.multiView,self,
self.view2 = MultiSplit(self.multiView,self,
(0,0),self.GetSize())
else:
self.view2 = wxMultiViewLeaf(self.multiView,self,
self.view2 = MultiViewLeaf(self.multiView,self,
(0,0),self.GetSize())
self.view2.SetSaveData(v2Data)
if old:
@@ -152,13 +158,13 @@ class wxMultiSplit(wx.Window):
def AddLeaf(self,direction,caller,pos):
if self.view2:
if caller == self.view1:
self.view1 = wxMultiSplit(self.multiView,self,
self.view1 = MultiSplit(self.multiView,self,
caller.GetPosition(),
caller.GetSize(),
caller)
self.view1.AddLeaf(direction,caller,pos)
else:
self.view2 = wxMultiSplit(self.multiView,self,
self.view2 = MultiSplit(self.multiView,self,
caller.GetPosition(),
caller.GetSize(),
caller)
@@ -174,7 +180,7 @@ class wxMultiSplit(wx.Window):
x,y = (0,pos)
w1,h1 = (w,h-pos)
w2,h2 = (w,pos)
self.view2 = wxMultiViewLeaf(self.multiView, self, (x,y), (w1,h1))
self.view2 = MultiViewLeaf(self.multiView, self, (x,y), (w1,h1))
self.view1.SetSize((w2,h2))
self.view2.OnSize(None)
@@ -281,7 +287,7 @@ class wxMultiSplit(wx.Window):
#----------------------------------------------------------------------
class wxMultiViewLeaf(wx.Window):
class MultiViewLeaf(wx.Window):
def __init__(self,multiView,parent,pos,size):
wx.Window.__init__(self,id = -1,parent = parent,pos = pos,size = size,
style = wx.CLIP_CHILDREN)

View File

@@ -3,15 +3,22 @@
# o 2.5 compatability update.
# o I'm a little nervous about some of it though.
#
# 12/20/2003 - Jeff Grimmett (grimmtooth@softhome.net)
#
# o wxTreeModel -> TreeModel
# o wxMVCTree -> MVCTree
# o wxMVCTreeEvent -> MVCTreeEvent
# o wxMVCTreeNotifyEvent -> MVCTreeNotifyEvent
#
"""
wxMVCTree is a control which handles hierarchical data. It is constructed
MVCTree is a control which handles hierarchical data. It is constructed
in model-view-controller architecture, so the display of that data, and
the content of the data can be changed greatly without affecting the other parts.
wxMVCTree actually is even more configurable than MVC normally implies, because
MVCTree actually is even more configurable than MVC normally implies, because
almost every aspect of it is pluggable:
wxMVCTree - Overall controller, and the window that actually gets placed
MVCTree - Overall controller, and the window that actually gets placed
in the GUI.
Painter - Paints the control. The 'view' part of MVC.
NodePainter - Paints just the nodes
@@ -57,7 +64,7 @@ warnings.warn(warningmsg, DeprecationWarning, stacklevel=2)
class MVCTreeNode:
"""
Used internally by wxMVCTree to manage its data. Contains information about
Used internally by MVCTree to manage its data. Contains information about
screen placement, the actual data associated with it, and more. These are
the nodes passed to all the other helper parts to do their work with.
"""
@@ -151,7 +158,7 @@ class Transform:
class Painter:
"""
This is the interface that wxMVCTree expects from painters. All painters should
This is the interface that MVCTree expects from painters. All painters should
be Painter subclasses.
"""
def __init__(self, tree):
@@ -236,7 +243,7 @@ class Painter:
evt.Skip()
class wxTreeModel:
class TreeModel:
"""
Interface for tree models
"""
@@ -305,7 +312,7 @@ class TextConverter:
raise NotImplementedError
class BasicTreeModel(wxTreeModel):
class BasicTreeModel(TreeModel):
"""
A very simple treemodel implementation, but flexible enough for many needs.
"""
@@ -333,21 +340,21 @@ class BasicTreeModel(wxTreeModel):
if not self.children.has_key(parent):
self.children[parent]=[]
self.children[parent].append(child)
wxTreeModel.AddChild(self, parent, child)
TreeModel.AddChild(self, parent, child)
return child
def RemoveNode(self, node):
parent = self.parents[node]
del self.parents[node]
self.children[parent].remove(node)
wxTreeModel.RemoveNode(self, node)
TreeModel.RemoveNode(self, node)
def InsertChild(self, parent, child, index):
self.parents[child]=parent
if not self.children.has_key(parent):
self.children[parent]=[]
self.children[parent].insert(child, index)
wxTreeModel.InsertChild(self, parent, child, index)
TreeModel.InsertChild(self, parent, child, index)
return child
def IsLeaf(self, node):
@@ -728,7 +735,7 @@ EVT_MVCTREE_ADD_ITEM = wx.PyEventBinder(wxEVT_MVCTREE_ADD_ITEM, 1)
EVT_MVCTREE_DELETE_ITEM = wx.PyEventBinder(wxEVT_MVCTREE_DELETE_ITEM, 1)
EVT_MVCTREE_KEY_DOWN = wx.PyEventBinder(wxEVT_MVCTREE_KEY_DOWN, 1)
class wxMVCTreeEvent(wx.PyCommandEvent):
class MVCTreeEvent(wx.PyCommandEvent):
def __init__(self, type, id, node = None, nodes = None, keyEvent = None, **kwargs):
apply(wx.PyCommandEvent.__init__, (self, type, id), kwargs)
self.node = node
@@ -741,14 +748,14 @@ class wxMVCTreeEvent(wx.PyCommandEvent):
def getKeyEvent(self):
return self.keyEvent
class wxMVCTreeNotifyEvent(wxMVCTreeEvent):
class MVCTreeNotifyEvent(MVCTreeEvent):
def __init__(self, type, id, node = None, nodes = None, **kwargs):
apply(wxMVCTreeEvent.__init__, (self, type, id, node, nodes), kwargs)
apply(MVCTreeEvent.__init__, (self, type, id, node, nodes), kwargs)
self.notify = wx.NotifyEvent(type, id)
def getNotifyEvent(self):
return self.notify
class wxMVCTree(wx.ScrolledWindow):
class MVCTree(wx.ScrolledWindow):
"""
The main mvc tree class.
"""
@@ -801,28 +808,28 @@ class wxMVCTree(wx.ScrolledWindow):
return self.transform
def __repr__(self):
return "<wxMVCTree instance at %s>" % str(hex(id(self)))
return "<MVCTree instance at %s>" % str(hex(id(self)))
def __str__(self):
return self.__repr__()
def NodeAdded(self, parent, child):
e = wxMVCTreeEvent(wxEVT_MVCTREE_ADD_ITEM, self.GetId(), node = child, nodes = [parent, child])
e = MVCTreeEvent(wxEVT_MVCTREE_ADD_ITEM, self.GetId(), node = child, nodes = [parent, child])
self.GetEventHandler().ProcessEvent(e)
self.painter.ClearBuffer()
def NodeInserted(self, parent, child, index):
e = wxMVCTreeEvent(wxEVT_MVCTREE_ADD_ITEM, self.GetId(), node = child, nodes = [parent, child])
e = MVCTreeEvent(wxEVT_MVCTREE_ADD_ITEM, self.GetId(), node = child, nodes = [parent, child])
self.GetEventHandler().ProcessEvent(e)
self.painter.ClearBuffer()
def NodeRemoved(self, node):
e = wxMVCTreeEvent(wxEVT_MVCTREE_DELETE_ITEM, self.GetId(), node = child, nodes = [parent, child])
e = MVCTreeEvent(wxEVT_MVCTREE_DELETE_ITEM, self.GetId(), node = child, nodes = [parent, child])
self.GetEventHandler().ProcessEvent(e)
self.painter.ClearBuffer()
def OnKeyDown(self, evt):
e = wxMVCTreeEvent(wxEVT_MVCTREE_KEY_DOWN, self.GetId(), keyEvent = evt)
e = MVCTreeEvent(wxEVT_MVCTREE_KEY_DOWN, self.GetId(), keyEvent = evt)
self.GetEventHandler().ProcessEvent(e)
def SetFont(self, font):
@@ -862,7 +869,7 @@ class wxMVCTree(wx.ScrolledWindow):
def SetDoubleBuffered(self, bool):
"""
By default wxMVCTree is double-buffered.
By default MVCTree is double-buffered.
"""
self.doubleBuffered = bool
@@ -923,7 +930,7 @@ class wxMVCTree(wx.ScrolledWindow):
def SetSelection(self, nodeTuple):
if type(nodeTuple) != type(()):
nodeTuple = (nodeTuple,)
e = wxMVCTreeNotifyEvent(wxEVT_MVCTREE_SEL_CHANGING, self.GetId(), nodeTuple[0], nodes = nodeTuple)
e = MVCTreeNotifyEvent(wxEVT_MVCTREE_SEL_CHANGING, self.GetId(), nodeTuple[0], nodes = nodeTuple)
self.GetEventHandler().ProcessEvent(e)
if not e.notify.IsAllowed():
return
@@ -934,7 +941,7 @@ class wxMVCTree(wx.ScrolledWindow):
treenode = self.nodemap[node]
node.selected = False
self._selections = list(nodeTuple)
e = wxMVCTreeEvent(wxEVT_MVCTREE_SEL_CHANGED, self.GetId(), nodeTuple[0], nodes = nodeTuple)
e = MVCTreeEvent(wxEVT_MVCTREE_SEL_CHANGED, self.GetId(), nodeTuple[0], nodes = nodeTuple)
self.GetEventHandler().ProcessEvent(e)
def IsMultiSelect(self):
@@ -951,7 +958,7 @@ class wxMVCTree(wx.ScrolledWindow):
return
for ed in self._editors:
if ed.CanEdit(node):
e = wxMVCTreeNotifyEvent(wxEVT_MVCTREE_BEGIN_EDIT, self.GetId(), node)
e = MVCTreeNotifyEvent(wxEVT_MVCTREE_BEGIN_EDIT, self.GetId(), node)
self.GetEventHandler().ProcessEvent(e)
if not e.notify.IsAllowed():
return
@@ -965,7 +972,7 @@ class wxMVCTree(wx.ScrolledWindow):
self._currentEditor = None
def _EditEnding(self, node):
e = wxMVCTreeNotifyEvent(wxEVT_MVCTREE_END_EDIT, self.GetId(), node)
e = MVCTreeNotifyEvent(wxEVT_MVCTREE_END_EDIT, self.GetId(), node)
self.GetEventHandler().ProcessEvent(e)
if not e.notify.IsAllowed():
return False
@@ -976,23 +983,23 @@ class wxMVCTree(wx.ScrolledWindow):
def SetExpanded(self, node, bool):
treenode = self.nodemap[node]
if bool:
e = wxMVCTreeNotifyEvent(wxEVT_MVCTREE_ITEM_EXPANDING, self.GetId(), node)
e = MVCTreeNotifyEvent(wxEVT_MVCTREE_ITEM_EXPANDING, self.GetId(), node)
self.GetEventHandler().ProcessEvent(e)
if not e.notify.IsAllowed():
return
if not treenode.built:
self.LoadChildren(treenode)
else:
e = wxMVCTreeNotifyEvent(wxEVT_MVCTREE_ITEM_COLLAPSING, self.GetId(), node)
e = MVCTreeNotifyEvent(wxEVT_MVCTREE_ITEM_COLLAPSING, self.GetId(), node)
self.GetEventHandler().ProcessEvent(e)
if not e.notify.IsAllowed():
return
treenode.expanded = bool
e = None
if treenode.expanded:
e = wxMVCTreeEvent(wxEVT_MVCTREE_ITEM_EXPANDED, self.GetId(), node)
e = MVCTreeEvent(wxEVT_MVCTREE_ITEM_EXPANDED, self.GetId(), node)
else:
e = wxMVCTreeEvent(wxEVT_MVCTREE_ITEM_COLLAPSED, self.GetId(), node)
e = MVCTreeEvent(wxEVT_MVCTREE_ITEM_COLLAPSED, self.GetId(), node)
self.GetEventHandler().ProcessEvent(e)
self.layout.Layout(self.currentRoot)
self.transform.Transform(self.currentRoot, self.offset, self.rotation)
@@ -1005,7 +1012,7 @@ class wxMVCTree(wx.ScrolledWindow):
nodeTuple = nodeOrTuple
if type(nodeOrTuple)!= type(()):
nodeTuple = (nodeOrTuple,)
e = wxMVCTreeNotifyEvent(wxEVT_MVCTREE_SEL_CHANGING, self.GetId(), nodeTuple[0], nodes = nodeTuple)
e = MVCTreeNotifyEvent(wxEVT_MVCTREE_SEL_CHANGING, self.GetId(), nodeTuple[0], nodes = nodeTuple)
self.GetEventHandler().ProcessEvent(e)
if not e.notify.IsAllowed():
return
@@ -1046,7 +1053,7 @@ class wxMVCTree(wx.ScrolledWindow):
treenode = self.nodemap[node]
treenode.selected = True
changeparents.append(treenode)
e = wxMVCTreeEvent(wxEVT_MVCTREE_SEL_CHANGED, self.GetId(), nodeTuple[0], nodes = nodeTuple)
e = MVCTreeEvent(wxEVT_MVCTREE_SEL_CHANGED, self.GetId(), nodeTuple[0], nodes = nodeTuple)
self.GetEventHandler().ProcessEvent(e)
dc = wx.ClientDC(self)
self.PrepareDC(dc)
@@ -1064,7 +1071,7 @@ class wxMVCTree(wx.ScrolledWindow):
treenode = self.nodemap[node]
changeparents.append(treenode)
treenode.selected = False
e = wxMVCTreeEvent(wxEVT_MVCTREE_SEL_CHANGED, self.GetId(), node, nodes = nodeTuple)
e = MVCTreeEvent(wxEVT_MVCTREE_SEL_CHANGED, self.GetId(), node, nodes = nodeTuple)
self.GetEventHandler().ProcessEvent(e)
dc = wx.ClientDC(self)
self.PrepareDC(dc)

View File

@@ -13,6 +13,11 @@
#
# o 2.5 compatability update.
#
# 12/20/2003 - Jeff Grimmett (grimmtooth@softhome.net)
#
# o wxPopupDialog -> PopupDialog
# o wxPopupControl -> PopupControl
#
import wx
from wx.lib.buttons import GenButtonEvent
@@ -142,7 +147,7 @@ class PopButton(wx.PyControl):
# Tried to use wxPopupWindow but the control misbehaves on MSW
class wxPopupDialog(wx.Dialog):
class PopupDialog(wx.Dialog):
def __init__(self,parent,content = None):
wx.Dialog.__init__(self,parent,-1,'', style = wx.BORDER_SIMPLE|wx.STAY_ON_TOP)
@@ -187,7 +192,7 @@ class wxPopupDialog(wx.Dialog):
#---------------------------------------------------------------------------
class wxPopupControl(wx.PyControl):
class PopupControl(wx.PyControl):
def __init__(self,*_args,**_kwargs):
if _kwargs.has_key('value'):
del _kwargs['value']
@@ -216,7 +221,7 @@ class wxPopupControl(wx.PyControl):
def OnButton(self,evt):
if not self.pop:
if self.content:
self.pop = wxPopupDialog(self,self.content)
self.pop = PopupDialog(self,self.content)
del self.content
else:
print 'No Content to pop'
@@ -250,4 +255,4 @@ class wxPopupControl(wx.PyControl):
# an alias
wxPopupCtrl = wxPopupControl
PopupCtrl = PopupControl

View File

@@ -16,6 +16,10 @@
# o 2.5 compatability update.
# o Added deprecation warning.
#
# 12/20/2003 - Jeff Grimmett (grimmtooth@softhome.net)
#
# o wxRightTextCtrl -> RightTextCtrl
#
"""
Some time ago, I asked about how to right-align
@@ -60,7 +64,7 @@ warnings.warn(warningmsg, DeprecationWarning, stacklevel=2)
#----------------------------------------------------------------------
class wxRightTextCtrl(wx.TextCtrl):
class RightTextCtrl(wx.TextCtrl):
def __init__(self, parent, id, *args, **kwargs):
wx.TextCtrl.__init__(self, parent, id, *args, **kwargs)
self.Bind(wx.EVT_KILL_FOCUS, self.OnKillFocus)

View File

@@ -1,5 +1,5 @@
#----------------------------------------------------------------------------
# Name: wxScrolledPanel.py
# Name: scrolledpanel.py
# Author: Will Sadkin
# Created: 03/21/2003
# Copyright: (c) 2003 by Will Sadkin
@@ -10,13 +10,17 @@
#
# o 2.5 compatability update.
#
# 12/21/2003 - Jeff Grimmett (grimmtooth@softhome.net)
#
# o wxScrolledPanel -> ScrolledPanel
#
import wx
class wxScrolledPanel( wx.ScrolledWindow ):
class ScrolledPanel( wx.ScrolledWindow ):
"""\
wxScrolledPanel fills a "hole" in the implementation of wxScrolledWindow,
ScrolledPanel fills a "hole" in the implementation of wx.ScrolledWindow,
providing automatic scrollbar and scrolling behavior and the tab traversal
management that wxScrolledWindow lacks. This code was based on the original
demo code showing how to do this, but is now available for general use
@@ -37,7 +41,7 @@ as a proper class (and the demo is now converted to just use it.)
"""
This function sets up the event handling necessary to handle
scrolling properly. It should be called within the __init__
function of any class that is derived from wxScrolledPanel,
function of any class that is derived from ScrolledPanel,
once the controls on the panel have been constructed and
thus the size of the scrolling area can be determined.

View File

@@ -1,5 +1,5 @@
#----------------------------------------------------------------------------
# Name: wxTimeCtrl.py
# Name: timectrl.py
# Author: Will Sadkin
# Created: 09/19/2002
# Copyright: (c) 2002 by Will Sadkin, 2002
@@ -13,12 +13,12 @@
# component of that control is inaccessible through the interface exposed in
# wxPython.
#
# wxTimeCtrl does not use validators, because it does careful manipulation
# TimeCtrl does not use validators, because it does careful manipulation
# of the cursor in the text window on each keystroke, and validation is
# cursor-position specific, so the control intercepts the key codes before the
# validator would fire.
#
# wxTimeCtrl now also supports .SetValue() with either strings or wxDateTime
# TimeCtrl now also supports .SetValue() with either strings or wxDateTime
# values, as well as range limits, with the option of either enforcing them
# or simply coloring the text of the control if the limits are exceeded.
#
@@ -37,22 +37,27 @@
# lock up. Noted in other places using it too, it's not this module
# that's at fault.
#
# 12/20/2003 - Jeff Grimmett (grimmtooth@softhome.net)
#
# o wxMaskedTextCtrl -> MaskedTextCtrl
# o wxTimeCtrl -> TimeCtrl
#
"""<html><body>
<P>
<B>wxTimeCtrl</B> provides a multi-cell control that allows manipulation of a time
<B>TimeCtrl</B> provides a multi-cell control that allows manipulation of a time
value. It supports 12 or 24 hour format, and you can use wxDateTime or mxDateTime
to get/set values from the control.
<P>
Left/right/tab keys to switch cells within a wxTimeCtrl, and the up/down arrows act
like a spin control. wxTimeCtrl also allows for an actual spin button to be attached
Left/right/tab keys to switch cells within a TimeCtrl, and the up/down arrows act
like a spin control. TimeCtrl also allows for an actual spin button to be attached
to the control, so that it acts like the up/down arrow keys.
<P>
The <B>!</B> or <B>c</B> key sets the value of the control to the current time.
<P>
Here's the API for wxTimeCtrl:
Here's the API for TimeCtrl:
<DL><PRE>
<B>wxTimeCtrl</B>(
<B>TimeCtrl</B>(
parent, id = -1,
<B>value</B> = '12:00:00 AM',
pos = wxDefaultPosition,
@@ -77,10 +82,10 @@ Here's the API for wxTimeCtrl:
<DD>The size of the control will be automatically adjusted for 12/24 hour format
if wxDefaultSize is specified.
<DT><B>style</B>
<DD>By default, wxTimeCtrl will process TAB events, by allowing tab to the
<DD>By default, TimeCtrl will process TAB events, by allowing tab to the
different cells within the control.
<DT><B>validator</B>
<DD>By default, wxTimeCtrl just uses the default (empty) validator, as all
<DD>By default, TimeCtrl just uses the default (empty) validator, as all
of its validation for entry control is handled internally. However, a validator
can be supplied to provide data transfer capability to the control.
<BR>
@@ -91,11 +96,11 @@ Here's the API for wxTimeCtrl:
<BR>
<DT><B>spinButton</B>
<DD>If specified, this button's events will be bound to the behavior of the
wxTimeCtrl, working like up/down cursor key events. (See BindSpinButton.)
TimeCtrl, working like up/down cursor key events. (See BindSpinButton.)
<BR>
<DT><B>min</B>
<DD>Defines the lower bound for "valid" selections in the control.
By default, wxTimeCtrl doesn't have bounds. You must set both upper and lower
By default, TimeCtrl doesn't have bounds. You must set both upper and lower
bounds to make the control pay attention to them, (as only one bound makes no sense
with times.) "Valid" times will fall between the min and max "pie wedge" of the
clock.
@@ -253,7 +258,7 @@ import types
import wx
from wx.tools.dbg import Logger
from wx.lib.maskededit import wxMaskedTextCtrl, Field
from wx.lib.maskededit import MaskedTextCtrl, Field
dbg = Logger()
dbg(enable=0)
@@ -277,7 +282,7 @@ class TimeUpdatedEvent(wx.PyCommandEvent):
return self.value
class wxTimeCtrl(wxMaskedTextCtrl):
class TimeCtrl(MaskedTextCtrl):
valid_ctrl_params = {
'display_seconds' : True, # by default, shows seconds
@@ -285,7 +290,7 @@ class wxTimeCtrl(wxMaskedTextCtrl):
'max': None,
'limited': False, # by default, no limiting even if bounds set
'useFixedWidthFont': True, # by default, use a fixed-width font
'oob_color': "Yellow" # by default, the default wxMaskedTextCtrl "invalid" color
'oob_color': "Yellow" # by default, the default MaskedTextCtrl "invalid" color
}
def __init__ (
@@ -300,10 +305,10 @@ class wxTimeCtrl(wxMaskedTextCtrl):
# set defaults for control:
dbg('setting defaults:')
for key, param_value in wxTimeCtrl.valid_ctrl_params.items():
for key, param_value in TimeCtrl.valid_ctrl_params.items():
# This is done this way to make setattr behave consistently with
# "private attribute" name mangling
setattr(self, "_wxTimeCtrl__" + key, copy.copy(param_value))
setattr(self, "_TimeCtrl__" + key, copy.copy(param_value))
# create locals from current defaults, so we can override if
# specified in kwargs, and handle uniformly:
@@ -320,7 +325,7 @@ class wxTimeCtrl(wxMaskedTextCtrl):
# assign keyword args as appropriate:
for key, param_value in kwargs.items():
if key not in wxTimeCtrl.valid_ctrl_params.keys():
if key not in TimeCtrl.valid_ctrl_params.keys():
raise AttributeError('invalid keyword argument "%s"' % key)
if key == "display_seconds":
@@ -383,7 +388,7 @@ class wxTimeCtrl(wxMaskedTextCtrl):
maskededit_kwargs['formatcodes'] = 'T!'
# Now we can initialize the base control:
wxMaskedTextCtrl.__init__(
MaskedTextCtrl.__init__(
self, parent, id=id,
pos=pos, size=size,
style = style,
@@ -420,7 +425,7 @@ class wxTimeCtrl(wxMaskedTextCtrl):
self.Bind(wx.EVT_LEFT_DCLICK, self._OnDoubleClick ) ## select field under cursor on dclick
self.Bind(wx.EVT_KEY_DOWN, self._OnKeyDown ) ## capture control events not normally seen, eg ctrl-tab.
self.Bind(wx.EVT_CHAR, self.__OnChar ) ## remove "shift" attribute from colon key event,
## then call wxMaskedTextCtrl._OnChar with
## then call MaskedTextCtrl._OnChar with
## the possibly modified event.
self.Bind(wx.EVT_TEXT, self.__OnTextChange, self ) ## color control appropriately and EVT_TIMEUPDATE events
@@ -443,7 +448,7 @@ class wxTimeCtrl(wxMaskedTextCtrl):
This function binds an externally created spin button to the control, so that
up/down events from the button automatically change the control.
"""
dbg('wxTimeCtrl::BindSpinButton')
dbg('TimeCtrl::BindSpinButton')
self.__spinButton = sb
if self.__spinButton:
# bind event handlers to spin ctrl
@@ -452,7 +457,7 @@ class wxTimeCtrl(wxMaskedTextCtrl):
def __repr__(self):
return "<wxTimeCtrl: %s>" % self.GetValue()
return "<TimeCtrl: %s>" % self.GetValue()
def SetValue(self, value):
@@ -462,7 +467,7 @@ class wxTimeCtrl(wxMaskedTextCtrl):
and convert wxDateTime, mxDateTime, or 12/24 format time string
into the appropriate format string for the control.
"""
dbg('wxTimeCtrl::SetValue(%s)' % repr(value), indent=1)
dbg('TimeCtrl::SetValue(%s)' % repr(value), indent=1)
try:
strtime = self._toGUI(self.__validateValue(value))
except:
@@ -491,7 +496,7 @@ class wxTimeCtrl(wxMaskedTextCtrl):
elif as_mxDateTimeDelta:
value = DateTime.DateTimeDelta(0, value.GetHour(), value.GetMinute(), value.GetSecond())
else:
value = wxMaskedTextCtrl.GetValue(self)
value = MaskedTextCtrl.GetValue(self)
return value
@@ -504,7 +509,7 @@ class wxTimeCtrl(wxMaskedTextCtrl):
def GetWxDateTime(self, value=None):
"""
This function is the conversion engine for wxTimeCtrl; it takes
This function is the conversion engine for TimeCtrl; it takes
one of the following types:
time string
wxDateTime
@@ -520,7 +525,7 @@ class wxTimeCtrl(wxMaskedTextCtrl):
"""
global accept_mx
dbg(suspend=1)
dbg('wxTimeCtrl::GetWxDateTime(%s)' % repr(value), indent=1)
dbg('TimeCtrl::GetWxDateTime(%s)' % repr(value), indent=1)
if value is None:
dbg('getting control value')
value = self.GetValue()
@@ -608,7 +613,7 @@ class wxTimeCtrl(wxMaskedTextCtrl):
adjusted to the new minimum value; if not limited, the value in the
control will be colored as invalid.
"""
dbg('wxTimeCtrl::SetMin(%s)'% repr(min), indent=1)
dbg('TimeCtrl::SetMin(%s)'% repr(min), indent=1)
if min is not None:
try:
min = self.GetWxDateTime(min)
@@ -636,7 +641,7 @@ class wxTimeCtrl(wxMaskedTextCtrl):
by default, or as a string if as_string argument is True.
"""
dbg(suspend=1)
dbg('wxTimeCtrl::GetMin, as_string?', as_string, indent=1)
dbg('TimeCtrl::GetMin, as_string?', as_string, indent=1)
if self.__min is None:
dbg('(min == None)')
ret = self.__min
@@ -667,7 +672,7 @@ class wxTimeCtrl(wxMaskedTextCtrl):
adjusted to this maximum value; if not limited, the value in the
control will be colored as invalid.
"""
dbg('wxTimeCtrl::SetMax(%s)' % repr(max), indent=1)
dbg('TimeCtrl::SetMax(%s)' % repr(max), indent=1)
if max is not None:
try:
max = self.GetWxDateTime(max)
@@ -695,7 +700,7 @@ class wxTimeCtrl(wxMaskedTextCtrl):
by default, or as a string if as_string argument is True.
"""
dbg(suspend=1)
dbg('wxTimeCtrl::GetMin, as_string?', as_string, indent=1)
dbg('TimeCtrl::GetMin, as_string?', as_string, indent=1)
if self.__max is None:
dbg('(max == None)')
ret = self.__max
@@ -746,7 +751,7 @@ class wxTimeCtrl(wxMaskedTextCtrl):
limiting, but coloring of out-of-bounds values will still take
place if bounds have been set for the control.
"""
dbg('wxTimeCtrl::SetLimited(%d)' % limited, indent=1)
dbg('TimeCtrl::SetLimited(%d)' % limited, indent=1)
self.__limited = limited
if not limited:
@@ -842,7 +847,7 @@ class wxTimeCtrl(wxMaskedTextCtrl):
dbg('ValueError getting wxDateTime for %s' % repr(value), indent=0)
raise
dbg('wxTimeCtrl::IsInBounds(%s)' % repr(value), indent=1)
dbg('TimeCtrl::IsInBounds(%s)' % repr(value), indent=1)
if self.__min is None or self.__max is None:
dbg(indent=0)
return True
@@ -889,7 +894,7 @@ class wxTimeCtrl(wxMaskedTextCtrl):
def __OnTextChange(self, event=None):
dbg('wxTimeCtrl::OnTextChange', indent=1)
dbg('TimeCtrl::OnTextChange', indent=1)
# Allow wxMaskedtext base control to color as appropriate,
# and Skip the EVT_TEXT event (if appropriate.)
@@ -900,7 +905,7 @@ class wxTimeCtrl(wxMaskedTextCtrl):
## event iff the value has actually changed. The masked edit
## OnTextChange routine does this, and returns True on a valid event,
## False otherwise.
if not wxMaskedTextCtrl._OnTextChange(self, event):
if not MaskedTextCtrl._OnTextChange(self, event):
return
dbg('firing TimeUpdatedEvent...')
@@ -916,14 +921,14 @@ class wxTimeCtrl(wxMaskedTextCtrl):
This is necessary to handle the optional spin button, because the insertion
point is lost when the focus shifts to the spin button.
"""
dbg('wxTimeCtrl::SetInsertionPoint', pos, indent=1)
wxMaskedTextCtrl.SetInsertionPoint(self, pos) # (causes EVT_TEXT event to fire)
dbg('TimeCtrl::SetInsertionPoint', pos, indent=1)
MaskedTextCtrl.SetInsertionPoint(self, pos) # (causes EVT_TEXT event to fire)
self.__posCurrent = self.GetInsertionPoint()
dbg(indent=0)
def SetSelection(self, sel_start, sel_to):
dbg('wxTimeCtrl::SetSelection', sel_start, sel_to, indent=1)
dbg('TimeCtrl::SetSelection', sel_start, sel_to, indent=1)
# Adjust selection range to legal extent if not already
if sel_start < 0:
@@ -936,7 +941,7 @@ class wxTimeCtrl(wxMaskedTextCtrl):
sel_to = cell_end
self.__bSelection = sel_start != sel_to
wxMaskedTextCtrl.SetSelection(self, sel_start, sel_to)
MaskedTextCtrl.SetSelection(self, sel_start, sel_to)
dbg(indent=0)
@@ -961,7 +966,7 @@ class wxTimeCtrl(wxMaskedTextCtrl):
Event handler for any bound spin button on EVT_SPIN_UP;
causes control to behave as if up arrow was pressed.
"""
dbg('wxTimeCtrl::OnSpinUp', indent=1)
dbg('TimeCtrl::OnSpinUp', indent=1)
self.__OnSpin(WXK_UP)
keep_processing = False
dbg(indent=0)
@@ -973,7 +978,7 @@ class wxTimeCtrl(wxMaskedTextCtrl):
Event handler for any bound spin button on EVT_SPIN_DOWN;
causes control to behave as if down arrow was pressed.
"""
dbg('wxTimeCtrl::OnSpinDown', indent=1)
dbg('TimeCtrl::OnSpinDown', indent=1)
self.__OnSpin(WXK_DOWN)
keep_processing = False
dbg(indent=0)
@@ -987,13 +992,13 @@ class wxTimeCtrl(wxMaskedTextCtrl):
It then calls the base control's _OnChar routine with the modified
event instance.
"""
dbg('wxTimeCtrl::OnChar', indent=1)
dbg('TimeCtrl::OnChar', indent=1)
keycode = event.GetKeyCode()
dbg('keycode:', keycode)
if keycode == ord(':'):
dbg('colon seen! removing shift attribute')
event.m_shiftDown = False
wxMaskedTextCtrl._OnChar(self, event ) ## handle each keypress
MaskedTextCtrl._OnChar(self, event ) ## handle each keypress
dbg(indent=0)
@@ -1012,7 +1017,7 @@ class wxTimeCtrl(wxMaskedTextCtrl):
Event handler for motion events; this handler
changes limits the selection to the new cell boundaries.
"""
dbg('wxTimeCtrl::LimitSelection', indent=1)
dbg('TimeCtrl::LimitSelection', indent=1)
pos = self.GetInsertionPoint()
self.__posCurrent = pos
sel_start, sel_to = self.GetSelection()
@@ -1031,7 +1036,7 @@ class wxTimeCtrl(wxMaskedTextCtrl):
def __IncrementValue(self, key, pos):
dbg('wxTimeCtrl::IncrementValue', key, pos, indent=1)
dbg('TimeCtrl::IncrementValue', key, pos, indent=1)
text = self.GetValue()
field = self._FindField(pos)
dbg('field: ', field._index)
@@ -1095,7 +1100,7 @@ class wxTimeCtrl(wxMaskedTextCtrl):
not a valid value for the control as currently specified.
It is used by both the SetValue() and the IsValid() methods.
"""
dbg('wxTimeCtrl::__validateValue(%s)' % repr(value), indent=1)
dbg('TimeCtrl::__validateValue(%s)' % repr(value), indent=1)
if not value:
dbg(indent=0)
raise ValueError('%s not a valid time value' % repr(value))
@@ -1115,7 +1120,7 @@ class wxTimeCtrl(wxMaskedTextCtrl):
return value
#----------------------------------------------------------------------------
# Test jig for wxTimeCtrl:
# Test jig for TimeCtrl:
if __name__ == '__main__':
import traceback
@@ -1130,7 +1135,7 @@ if __name__ == '__main__':
self.test_mx = test_mx
self.tc = wxTimeCtrl(self, 10, fmt24hr = fmt24hr)
self.tc = TimeCtrl(self, 10, fmt24hr = fmt24hr)
sb = wx.SpinButton( self, 20, wx.DefaultPosition, (-1,20), 0 )
self.tc.BindSpinButton(sb)
@@ -1160,7 +1165,7 @@ if __name__ == '__main__':
fmt24hr = '24' in sys.argv
test_mx = 'mx' in sys.argv
try:
frame = wx.Frame(None, -1, "wxTimeCtrl Test", (20,20), (100,100) )
frame = wx.Frame(None, -1, "TimeCtrl Test", (20,20), (100,100) )
panel = TestPanel(frame, -1, (-1,-1), fmt24hr=fmt24hr, test_mx = test_mx)
frame.Show(True)
except:

View File

@@ -7,6 +7,10 @@
# Copyright: (c) 2002 by Will Sadkin, 2002
# License: wxWindows license
#----------------------------------------------------------------------------
# 12/21/2003 - Jeff Grimmett (grimmtooth@softhome.net)
#
# o V2.5 compatability update
#
"""
This module provides a useful debugging framework that supports
@@ -217,20 +221,22 @@ class Logger:
#------------------------------------------------------------
if __name__ == "__main__":
from wxPython.wx import *
wxLog_SetActiveTarget( wxLogStderr() )
import sys
import wx
wx.Log_SetActiveTarget( wx.LogStderr() )
logger = Logger('module')
dbg = logger.dbg
dbg(enable=1)
logger('test __call__ interface')
dbg('testing wxLog output to stderr:', wxlog=1, indent=1)
dbg('1,2,3...')
dbg('testing wxLogNull:')
devnull = wxLogNull()
dbg('testing wx.LogNull:')
devnull = wx.LogNull()
dbg('4,5,6...') # shouldn't print, according to doc...
del devnull
dbg('(resuming to wxLogStdErr)', '7,8,9...', indent=0)
dbg('disabling wxLog output, switching to stderr:')
dbg('(resuming to wx.LogStdErr)', '7,8,9...', indent=0)
dbg('disabling wx.Log output, switching to stderr:')
dbg(wxlog=0, stream=sys.stderr)
dbg(logger._outstream, 'switching back to stdout:')
dbg(stream=None)

View File

@@ -8,25 +8,31 @@
# Copyright: (c) 2002 by Total Control Software
# Licence: wxWindows license
#----------------------------------------------------------------------
# 12/21/2003 - Jeff Grimmett (grimmtooth@softhome.net)
#
# o V2.5 compatability update
#
import getopt
import glob
import os
import sys
import sys, os, glob, getopt
from wxPython.wx import *
import wx
def convert(file, maskClr, outputDir, outputName, outType, outExt):
if os.path.splitext(file)[1].lower() == ".ico":
icon = wxIcon(file, wxBITMAP_TYPE_ICO)
img = wxBitmapFromIcon(icon)
icon = wx.Icon(file, wx.BITMAP_TYPE_ICO)
img = wx.BitmapFromIcon(icon)
else:
img = wxBitmap(file, wxBITMAP_TYPE_ANY)
img = wx.Bitmap(file, wx.BITMAP_TYPE_ANY)
if not img.Ok():
return 0, file + " failed to load!"
else:
if maskClr:
om = img.GetMask()
mask = wxMaskColour(img, maskClr)
mask = wx.MaskColour(img, maskClr)
img.SetMask(mask)
if om is not None:
om.Destroy()
@@ -38,7 +44,7 @@ def convert(file, maskClr, outputDir, outputName, outType, outExt):
if img.SaveFile(newname, outType):
return 1, file + " converted to " + newname
else:
img = wxImageFromBitmap(img)
img = wx.ImageFromBitmap(img)
if img.SaveFile(newname, outType):
return 1, "ok"
else:

View File

@@ -8,6 +8,10 @@
# Copyright: (c) 2002 by Total Control Software
# Licence: wxWindows license
#----------------------------------------------------------------------
# 12/21/2003 - Jeff Grimmett (grimmtooth@softhome.net)
#
# o V2.5 compatability update
#
"""
img2png.py -- convert several image formats to PNG format
@@ -33,14 +37,15 @@ Options:
import sys
import wx
import img2img
from wxPython import wx
def main():
# some bitmap related things need to have a wxApp initialized...
if wx.wxGetApp() is None:
app = wx.wxPySimpleApp()
img2img.main(sys.argv[1:], wx.wxBITMAP_TYPE_PNG, ".png", __doc__)
if wx.GetApp() is None:
app = wx.PySimpleApp()
img2img.main(sys.argv[1:], wx.BITMAP_TYPE_PNG, ".png", __doc__)
if __name__ == '__main__':
main()

View File

@@ -8,6 +8,10 @@
# Copyright: (c) 2002 by Total Control Software
# Licence: wxWindows license
#----------------------------------------------------------------------
# 12/21/2003 - Jeff Grimmett (grimmtooth@softhome.net)
#
# o V2.5 compatability update
#
"""
@@ -54,12 +58,23 @@ Options:
# - Cliff Wells <LogiplexSoftware@earthlink.net>
# 20021206: Added catalog (-c) option.
#
# 12/21/2003 - Jeff Grimmett (grimmtooth@softhome.net)
#
# o V2.5 compatability update
#
import cPickle
import cStringIO
import getopt
import glob
import os
import sys
import tempfile
import zlib
import wx
import sys, os, glob, getopt, tempfile
import cPickle, cStringIO, zlib
import img2img
from wxPython import wx
def crunch_data(data, compressed):
@@ -116,8 +131,8 @@ def main(args):
return
# some bitmap related things need to have a wxApp initialized...
if wx.wxGetApp() is None:
app = wx.wxPySimpleApp()
if wx.GetApp() is None:
app = wx.PySimpleApp()
append = 0
compressed = 1
@@ -154,7 +169,7 @@ def main(args):
# convert the image file to a temporary file
tfname = tempfile.mktemp()
ok, msg = img2img.convert(image_file, maskClr, None, tfname, wx.wxBITMAP_TYPE_PNG, ".png")
ok, msg = img2img.convert(image_file, maskClr, None, tfname, wx.BITMAP_TYPE_PNG, ".png")
if not ok:
print msg
return
@@ -198,9 +213,9 @@ def main(args):
out.write("#" + "-" * 70 + "\n")
if not append:
out.write("# This file was generated by %s\n#\n" % sys.argv[0])
out.write("from wxPython.wx import wxImageFromStream, wxBitmapFromImage\n")
out.write("from wx import ImageFromStream, BitmapFromImage\n")
if icon:
out.write("from wxPython.wx import wxEmptyIcon\n")
out.write("from wx import EmptyIcon\n")
if compressed:
out.write("import cStringIO, zlib\n\n\n")
else:
@@ -222,14 +237,14 @@ def main(args):
out.write("def get%sBitmap():\n"
" return wxBitmapFromImage(get%sImage())\n\n"
" return BitmapFromImage(get%sImage())\n\n"
"def get%sImage():\n"
" stream = cStringIO.StringIO(get%sData())\n"
" return wxImageFromStream(stream)\n\n"
" return ImageFromStream(stream)\n\n"
% tuple([imgName] * 4))
if icon:
out.write("def get%sIcon():\n"
" icon = wxEmptyIcon()\n"
" icon = EmptyIcon()\n"
" icon.CopyFromBitmap(get%sBitmap())\n"
" return icon\n\n"
% tuple([imgName] * 2))

View File

@@ -8,6 +8,10 @@
# Copyright: (c) 2002 by Total Control Software
# Licence: wxWindows license
#----------------------------------------------------------------------
# 12/21/2003 - Jeff Grimmett (grimmtooth@softhome.net)
#
# o V2.5 compatability update
#
"""
img2xpm.py -- convert several image formats to XPM
@@ -31,16 +35,17 @@ Options:
the -o option.
"""
import sys
import wx
import img2img
from wxPython import wx
def main():
# some bitmap related things need to have a wxApp initialized...
if wx.wxGetApp() is None:
app = wx.wxPySimpleApp()
img2img.main(sys.argv[1:], wx.wxBITMAP_TYPE_XPM, ".xpm", __doc__)
if wx.GetApp() is None:
app = wx.PySimpleApp()
img2img.main(sys.argv[1:], wx.BITMAP_TYPE_XPM, ".xpm", __doc__)
if __name__ == '__main__':

View File

@@ -7,4 +7,4 @@ import wx.lib.colourchooser.pycolourchooser
__doc__ = wx.lib.colourchooser.pycolourchooser.__doc__
main = wx.lib.colourchooser.pycolourchooser.main
wxPyColourChooser = wx.lib.colourchooser.pycolourchooser.wxPyColourChooser
wxPyColourChooser = wx.lib.colourchooser.pycolourchooser.PyColourChooser

View File

@@ -1,2 +1,2 @@
from editor import wxEditor
from editor import Editor

View File

@@ -10,4 +10,4 @@ ForceBetween = wx.lib.editor.editor.ForceBetween
LineSplitter = wx.lib.editor.editor.LineSplitter
LineTrimmer = wx.lib.editor.editor.LineTrimmer
Scroller = wx.lib.editor.editor.Scroller
wxEditor = wx.lib.editor.editor.wxEditor
wxEditor = wx.lib.editor.editor.Editor

View File

@@ -6,5 +6,5 @@ import wx.lib.grids
__doc__ = wx.lib.grids.__doc__
wxFlexGridSizer = wx.lib.grids.wxFlexGridSizer
wxGridSizer = wx.lib.grids.wxGridSizer
wxFlexGridSizer = wx.lib.grids.PyFlexGridSizer
wxGridSizer = wx.lib.grids.PyGridSizer

View File

@@ -6,6 +6,6 @@ import wx.lib.infoframe
__doc__ = wx.lib.infoframe.__doc__
Dummy_wxPyInformationalMessagesFrame = wx.lib.infoframe.Dummy_wxPyInformationalMessagesFrame
Dummy_wxPyInformationalMessagesFrame = wx.lib.infoframe.Dummy_PyInformationalMessagesFrame
_MyStatusBar = wx.lib.infoframe._MyStatusBar
wxPyInformationalMessagesFrame = wx.lib.infoframe.wxPyInformationalMessagesFrame
wxPyInformationalMessagesFrame = wx.lib.infoframe.PyInformationalMessagesFrame

View File

@@ -7,6 +7,6 @@ import wx.lib.intctrl
__doc__ = wx.lib.intctrl.__doc__
EVT_INT = wx.lib.intctrl.EVT_INT
wxIntCtrl = wx.lib.intctrl.wxIntCtrl
wxIntUpdatedEvent = wx.lib.intctrl.wxIntUpdatedEvent
wxIntValidator = wx.lib.intctrl.wxIntValidator
wxIntCtrl = wx.lib.intctrl.IntCtrl
wxIntUpdatedEvent = wx.lib.intctrl.IntUpdatedEvent
wxIntValidator = wx.lib.intctrl.IntValidator

View File

@@ -7,4 +7,4 @@ import wx.lib.maskedctrl
__doc__ = wx.lib.maskedctrl.__doc__
controlTypes = wx.lib.maskedctrl.controlTypes
wxMaskedCtrl = wx.lib.maskedctrl.wxMaskedCtrl
wxMaskedCtrl = wx.lib.maskedctrl.MaskedCtrl

View File

@@ -9,8 +9,8 @@ __doc__ = wx.lib.maskededit.__doc__
Field = wx.lib.maskededit.Field
test = wx.lib.maskededit.test
test2 = wx.lib.maskededit.test2
wxIpAddrCtrl = wx.lib.maskededit.wxIpAddrCtrl
wxMaskedComboBox = wx.lib.maskededit.wxMaskedComboBox
wxMaskedComboBoxSelectEvent = wx.lib.maskededit.wxMaskedComboBoxSelectEvent
wxMaskedEditMixin = wx.lib.maskededit.wxMaskedEditMixin
wxMaskedTextCtrl = wx.lib.maskededit.wxMaskedTextCtrl
wxIpAddrCtrl = wx.lib.maskededit.IpAddrCtrl
wxMaskedComboBox = wx.lib.maskededit.MaskedComboBox
wxMaskedComboBoxSelectEvent = wx.lib.maskededit.MaskedComboBoxSelectEvent
wxMaskedEditMixin = wx.lib.maskededit.MaskedEditMixin
wxMaskedTextCtrl = wx.lib.maskededit.MaskedTextCtrl

View File

@@ -7,5 +7,5 @@ import wx.lib.maskednumctrl
__doc__ = wx.lib.maskednumctrl.__doc__
EVT_MASKEDNUM = wx.lib.maskednumctrl.EVT_MASKEDNUM
wxMaskedNumCtrl = wx.lib.maskednumctrl.wxMaskedNumCtrl
wxMaskedNumNumberUpdatedEvent = wx.lib.maskednumctrl.wxMaskedNumNumberUpdatedEvent
wxMaskedNumCtrl = wx.lib.maskednumctrl.MaskedNumCtrl
wxMaskedNumNumberUpdatedEvent = wx.lib.maskednumctrl.MaskedNumNumberUpdatedEvent

View File

@@ -6,4 +6,4 @@ import wx.lib.mixins.grid
__doc__ = wx.lib.mixins.grid.__doc__
wxGridAutoEditMixin = wx.lib.mixins.grid.wxGridAutoEditMixin
wxGridAutoEditMixin = wx.lib.mixins.grid.GridAutoEditMixin

View File

@@ -9,6 +9,6 @@ __doc__ = wx.lib.mixins.listctrl.__doc__
ListCtrlSelectionManagerMix = wx.lib.mixins.listctrl.ListCtrlSelectionManagerMix
getListCtrlSelection = wx.lib.mixins.listctrl.getListCtrlSelection
selectBeforePopup = wx.lib.mixins.listctrl.selectBeforePopup
wxColumnSorterMixin = wx.lib.mixins.listctrl.wxColumnSorterMixin
wxListCtrlAutoWidthMixin = wx.lib.mixins.listctrl.wxListCtrlAutoWidthMixin
wxColumnSorterMixin = wx.lib.mixins.listctrl.ColumnSorterMixin
wxListCtrlAutoWidthMixin = wx.lib.mixins.listctrl.ListCtrlAutoWidthMixin

View File

@@ -11,6 +11,6 @@ MultiClient = wx.lib.multisash.MultiClient
MultiCloser = wx.lib.multisash.MultiCloser
MultiCreator = wx.lib.multisash.MultiCreator
MultiSizer = wx.lib.multisash.MultiSizer
wxMultiSash = wx.lib.multisash.wxMultiSash
wxMultiSplit = wx.lib.multisash.wxMultiSplit
wxMultiViewLeaf = wx.lib.multisash.wxMultiViewLeaf
wxMultiSash = wx.lib.multisash.MultiSash
wxMultiSplit = wx.lib.multisash.MultiSplit
wxMultiViewLeaf = wx.lib.multisash.MultiViewLeaf

View File

@@ -35,7 +35,7 @@ TreeLayout = wx.lib.mvctree.TreeLayout
TreeLinePainter = wx.lib.mvctree.TreeLinePainter
TreeNodePainter = wx.lib.mvctree.TreeNodePainter
TreePainter = wx.lib.mvctree.TreePainter
wxMVCTree = wx.lib.mvctree.wxMVCTree
wxMVCTreeEvent = wx.lib.mvctree.wxMVCTreeEvent
wxMVCTreeNotifyEvent = wx.lib.mvctree.wxMVCTreeNotifyEvent
wxTreeModel = wx.lib.mvctree.wxTreeModel
wxMVCTree = wx.lib.mvctree.MVCTree
wxMVCTreeEvent = wx.lib.mvctree.MVCTreeEvent
wxMVCTreeNotifyEvent = wx.lib.mvctree.MVCTreeNotifyEvent
wxTreeModel = wx.lib.mvctree.TreeModel

View File

@@ -0,0 +1,22 @@
## This file imports items from the wx package into the wxPython package for
## backwards compatibility. Some names will also have a 'wx' added on if
## that is how they used to be named in the old wxPython package.
import wx.lib.plot
__doc__ = wx.lib.plot.__doc__
PolyPoints = wx.lib.plot.PolyPoints
PolyLine = wx.lib.plot.PolyLine
PolyMarker = wx.lib.plot.PolyMarker
PlotGraphics = wx.lib.plot.PlotGraphics
PlotCanvas = wx.lib.plot.PlotCanvas
PlotPrintout = wx.lib.plot.PlotPrintout
FloatDCWrapper = wx.lib.plot.FloatDCWrapper
_draw1Objects = wx.lib.plot._draw1Objects
_draw2Objects = wx.lib.plot._draw2Objects
_draw3Objects = wx.lib.plot._draw3Objects
_draw4Objects = wx.lib.plot._draw4Objects
_draw5Objects = wx.lib.plot._draw5Objects
__test = wx.lib.plot.__test

View File

@@ -8,5 +8,6 @@ __doc__ = wx.lib.popupctl.__doc__
PopButton = wx.lib.popupctl.PopButton
wxPopupControl = wx.lib.popupctl.wxPopupControl
wxPopupCtrl = wx.lib.popupctl.wxPopupCtrl
wxPopupDialog = wx.lib.popupctl.wxPopupDialog
wxPopupCtrl = wx.lib.popupctl.PopupCtrl
wxPopupControl = wx.lib.popupctl.PopupControl
wxPopupDialog = wx.lib.popupctl.PopupDialog

View File

@@ -6,4 +6,4 @@ import wx.lib.rightalign
__doc__ = wx.lib.rightalign.__doc__
wxRightTextCtrl = wx.lib.rightalign.wxRightTextCtrl
wxRightTextCtrl = wx.lib.rightalign.RightTextCtrl

View File

@@ -6,4 +6,4 @@ import wx.lib.scrolledpanel
__doc__ = wx.lib.scrolledpanel.__doc__
wxScrolledPanel = wx.lib.scrolledpanel.wxScrolledPanel
wxScrolledPanel = wx.lib.scrolledpanel.ScrolledPanel

View File

@@ -8,4 +8,4 @@ __doc__ = wx.lib.timectrl.__doc__
EVT_TIMEUPDATE = wx.lib.timectrl.EVT_TIMEUPDATE
TimeUpdatedEvent = wx.lib.timectrl.TimeUpdatedEvent
wxTimeCtrl = wx.lib.timectrl.wxTimeCtrl
wxTimeCtrl = wx.lib.timectrl.TimeCtrl

View File

@@ -0,0 +1,13 @@
## This file imports items from the wx package into the wxPython package for
## backwards compatibility. Some names will also have a 'wx' added on if
## that is how they used to be named in the old wxPython package.
import wx.lib.wxPlotCanvas
__doc__ = wx.lib.wxPlotCanvas.__doc__
PolyPoints = wx.lib.wxPlotCanvas.PolyPoints
PolyLine = wx.lib.wxPlotCanvas.PolyLine
PolyMarker = wx.lib.wxPlotCanvas.PolyMarker
PlotGraphics = wx.lib.wxPlotCanvas.PlotGraphics
PlotCanvas = wx.lib.wxPlotCanvas.PlotCanvas