diff --git a/TODO.rst b/TODO.rst
index 7ba8ddbd..299fe3d6 100644
--- a/TODO.rst
+++ b/TODO.rst
@@ -203,5 +203,11 @@ Other Dev Stuff
self-contained instead of some relying on files generated by others. This
won't work if we want to run tests in parallel.
+ * Port these modules from gizmos in wxCode to a pure-python wx.lib implementation?
+ * DynamicSashWindow
+ * LEDNumberCtrl
+ * SplitTree ??
+ * TreeListCtrl ?? (We have a treelist ctrl in dataview now)
+ * The Masked controls modules and demos need some help with Py3 compatibility.
diff --git a/demo/Calendar.py b/demo/Calendar.py
index d374cdbd..e4a54ccf 100644
--- a/demo/Calendar.py
+++ b/demo/Calendar.py
@@ -416,7 +416,7 @@ class PrintCalend:
printout2 = SetPrintout(self)
self.preview = wx.PrintPreview(printout, printout2, self.printData)
- if not self.preview.Ok():
+ if not self.preview.IsOk():
wx.MessageBox("There was a problem printing!", "Printing", wx.OK)
return
diff --git a/demo/CalendarCtrl.py b/demo/CalendarCtrl.py
index 9e6f5e70..d9776cb9 100644
--- a/demo/CalendarCtrl.py
+++ b/demo/CalendarCtrl.py
@@ -2,7 +2,7 @@
import wx
import wx.adv
-from wx.adv import CalendarCtrl
+from wx.adv import CalendarCtrl, GenericCalendarCtrl, CalendarDateAttr
#----------------------------------------------------------------------
@@ -28,13 +28,13 @@ class TestPanel(wx.Panel):
txt = wx.StaticText(self, -1, description)
txt.Wrap(300)
- # cal = self.cal = GenericCalendarCtrl(self, -1, wx.DateTime().Today(),
- # style = wx.adv.CAL_SHOW_HOLIDAYS
- # | wx.adv.CAL_SUNDAY_FIRST
- # | wx.adv.CAL_SEQUENTIAL_MONTH_SELECTION
- # )
+ cal = GenericCalendarCtrl(self, -1, wx.DateTime().Today(),
+ style = wx.adv.CAL_SHOW_HOLIDAYS
+ | wx.adv.CAL_SUNDAY_FIRST
+ | wx.adv.CAL_SEQUENTIAL_MONTH_SELECTION
+ )
- # cal2 = wxcal.GenericCalendarCtrl(self, -1, wx.DateTime().Today())
+ cal2 = GenericCalendarCtrl(self, -1, wx.DateTime().Today())
# Track a few holidays
@@ -43,9 +43,9 @@ class TestPanel(wx.Panel):
# bind some event handlers to each calendar
- for c in [native]:#, cal, cal2
+ for c in [native, cal, cal2]:
c.Bind(wx.adv.EVT_CALENDAR, self.OnCalSelected)
- ## c.Bind(wx.adv.EVT_CALENDAR_MONTH, self.OnChangeMonth)
+ c.Bind(wx.adv.EVT_CALENDAR_MONTH, self.OnChangeMonth)
c.Bind(wx.adv.EVT_CALENDAR_SEL_CHANGED, self.OnCalSelChanged)
c.Bind(wx.adv.EVT_CALENDAR_WEEKDAY_CLICKED, self.OnCalWeekdayClicked)
@@ -53,15 +53,17 @@ class TestPanel(wx.Panel):
fgs = wx.FlexGridSizer(cols=2, hgap=50, vgap=50)
fgs.Add(native)
fgs.Add(txt)
- # fgs.Add(cal)
- # fgs.Add(cal2)
+ fgs.Add(cal)
+ fgs.Add(cal2)
box = wx.BoxSizer()
box.Add(fgs, 1, wx.EXPAND|wx.ALL, 25)
self.SetSizer(box)
def OnCalSelected(self, evt):
- self.log.write('OnCalSelected: %s\n' % evt.GetDate())
+ self.log.write('OnCalSelected: %s\n' % evt.Date)
+ if evt.Date.month == wx.DateTime.Aug and evt.Date.day == 14:
+ self.log.write("HAPPY BIRTHDAY!")
def OnCalWeekdayClicked(self, evt):
self.log.write('OnCalWeekdayClicked: %s\n' % evt.GetWeekDay())
@@ -86,7 +88,7 @@ class TestPanel(wx.Panel):
# August 14th is a special day, mark it with a blue square...
if cur_month == 8:
- attr = wxcal.CalendarDateAttr(border=wx.adv.CAL_BORDER_SQUARE,
+ attr = CalendarDateAttr(border=wx.adv.CAL_BORDER_SQUARE,
colBorder="blue")
cal.SetAttr(14, attr)
else:
diff --git a/demo/ColourSelect.py b/demo/ColourSelect.py
index 401a4144..c1519518 100644
--- a/demo/ColourSelect.py
+++ b/demo/ColourSelect.py
@@ -36,7 +36,7 @@ class TestColourSelect(wx.Panel):
"and wxColourDialog Classes. Click Button to get Colour Values")
mainSizer.Add(t, 0, wx.ALL, 3)
- b = wx.Button(self, -1, "Show All Colours")
+ b = wx.Button(self, -1, "Log All Current Colours")
self.Bind(wx.EVT_BUTTON, self.OnShowAll, id=b.GetId())
mainSizer.Add(b, 0, wx.ALL, 3)
@@ -55,7 +55,7 @@ class TestColourSelect(wx.Panel):
# build several examples of buttons with different colours and sizes
buttonData = [
("Default Size", (255, 255, 0), wx.DefaultSize, ""),
- ("Another Size", (255, 0, 255), (60, 20), ""),
+ ("Another Size", (255, 0, 255), (60, 22), ""),
("Another Colour", (0, 255, 0), wx.DefaultSize, ""),
("Larger Size", (0, 0, 255), (60, 60), ""),
("With a Label", (127, 0, 255), wx.DefaultSize, "Colour..."),
diff --git a/demo/ComboCtrl.py b/demo/ComboCtrl.py
index 3d6f3e35..23074c98 100644
--- a/demo/ComboCtrl.py
+++ b/demo/ComboCtrl.py
@@ -112,7 +112,7 @@ class TestPanel(wx.Panel):
self.log = log
wx.Panel.__init__(self, parent, -1)
- comboCtrl = wx.ComboCtrl(self, wx.ID_ANY, "")
+ comboCtrl = wx.ComboCtrl(self, wx.ID_ANY, "", (20,20))
popupCtrl = ListCtrlComboPopup()
diff --git a/demo/CommandLinkButton.py b/demo/CommandLinkButton.py
index 9c49971b..fdbc4a4d 100644
--- a/demo/CommandLinkButton.py
+++ b/demo/CommandLinkButton.py
@@ -2,6 +2,7 @@
import wx
import wx.adv
+from textwrap import dedent
#----------------------------------------------------------------------
@@ -10,14 +11,14 @@ class TestPanel(wx.Panel):
self.log = log
wx.Panel.__init__(self, parent, -1)
- cmd = wx.adv.CommandLinkButton(self, -1,
- "wx.CommandLinkButton",
- """\
-This type of button includes both a main label and a 'note' that is meant to
-contain a description of what the button does or what it is used for. On
-Windows 7 it is a new native widget type, on the other platforms it is
-implemented generically.""",
- pos=(25,25))
+ cmd = wx.adv.CommandLinkButton(self, -1, "wx.CommandLinkButton",
+ dedent("""\
+ This type of button includes both a main label and a 'note' that
+ is meant to contain a description of what the button does or
+ what is used for. On Windows 7 it is a new native widget type,
+ on the other platforms it is implemented generically.
+ """),
+ pos=(25,25), size=(500,-1))
#----------------------------------------------------------------------
diff --git a/demo/ContextHelp.py b/demo/ContextHelp.py
index aa4d7d95..f13f218c 100644
--- a/demo/ContextHelp.py
+++ b/demo/ContextHelp.py
@@ -63,7 +63,6 @@ class TestPanel(wx.Panel):
sizer.Add(text)
text.Bind(wx.EVT_HELP, self.OnCtxHelp2, text)
-
border = wx.BoxSizer(wx.VERTICAL)
border.Add(sizer, 0, wx.ALL, 25)
@@ -74,7 +73,8 @@ class TestPanel(wx.Panel):
# On the second text control above, we intercept the help event. This is where
# we process it. Anything could happen here. In this case we're just printing
- # some stuff about it, then passing it on, at which point we see the help tip.
+ # some stuff about it, then passing it on with Skip(), at which point we
+ # see the help tip.
def OnCtxHelp(self, evt):
self.log.write("OnCtxHelp: %s" % evt)
evt.Skip()
diff --git a/demo/Cursor.py b/demo/Cursor.py
index 812bb8e4..0ad2818c 100644
--- a/demo/Cursor.py
+++ b/demo/Cursor.py
@@ -94,7 +94,7 @@ class TestPanel(wx.Panel):
image.SetOption(wx.IMAGE_OPTION_CUR_HOTSPOT_Y, 1)
# make the image into a cursor
- cursor = wx.CursorFromImage(image)
+ cursor = wx.Cursor(image)
else:
# create one of the stock (built-in) cursors
diff --git a/demo/DelayedResult.py b/demo/DelayedResult.py
index c6db2e28..def625bb 100644
--- a/demo/DelayedResult.py
+++ b/demo/DelayedResult.py
@@ -25,20 +25,19 @@ class FrameSimpleDelayedBase(wx.Frame):
def __init__(self, *args, **kwds):
wx.Frame.__init__(self, *args, **kwds)
pnl = wx.Panel(self)
- self.checkboxUseDelayed = wx.CheckBox(pnl, -1, "Using delayedresult")
+ self.textUseDelayed = wx.StaticText(pnl, -1, "NOT using delayedresult")
self.buttonGet = wx.Button(pnl, -1, "Get")
self.buttonAbort = wx.Button(pnl, -1, "Abort")
self.slider = wx.Slider(pnl, -1, 0, 0, 10, size=(100,-1),
style=wx.SL_HORIZONTAL|wx.SL_AUTOTICKS)
self.textCtrlResult = wx.TextCtrl(pnl, -1, "", style=wx.TE_READONLY)
- self.checkboxUseDelayed.SetValue(1)
- self.checkboxUseDelayed.Enable(False)
self.buttonAbort.Enable(False)
+ vsizer = wx.BoxSizer(wx.VERTICAL)
vsizer = wx.BoxSizer(wx.VERTICAL)
hsizer = wx.BoxSizer(wx.HORIZONTAL)
- vsizer.Add(self.checkboxUseDelayed, 0, wx.ALL, 10)
+ vsizer.Add(self.textUseDelayed, 0, wx.ALL, 10)
hsizer.Add(self.buttonGet, 0, wx.ALL, 5)
hsizer.Add(self.buttonAbort, 0, wx.ALL, 5)
hsizer.Add(self.slider, 0, wx.ALL, 5)
@@ -52,7 +51,6 @@ class FrameSimpleDelayedBase(wx.Frame):
-
class FrameSimpleDelayed(FrameSimpleDelayedBase):
"""This demos simplistic use of delayedresult module."""
@@ -61,14 +59,19 @@ class FrameSimpleDelayed(FrameSimpleDelayedBase):
self.jobID = 0
self.abortEvent = delayedresult.AbortEvent()
self.Bind(wx.EVT_CLOSE, self.handleClose)
+ self.textUseDelayed.SetLabel("USING delayedresult")
+
def setLog(self, log):
self.log = log
+
def handleClose(self, event):
- """Only needed because in demo, closing the window does not kill the
+ """
+ Only needed because in demo, closing the window does not kill the
app, so worker thread continues and sends result to dead frame; normally
- your app would exit so this would not happen."""
+ your app would exit so this would not happen.
+ """
if self.buttonAbort.IsEnabled():
self.log( "Exiting: Aborting job %s" % self.jobID )
self.abortEvent.set()
@@ -88,9 +91,11 @@ class FrameSimpleDelayed(FrameSimpleDelayedBase):
def _resultProducer(self, jobID, abortEvent):
- """Pretend to be a complex worker function or something that takes
+ """
+ Pretend to be a complex worker function or something that takes
long time to run due to network access etc. GUI will freeze if this
- method is not called in separate thread."""
+ method is not called in separate thread.
+ """
import time
count = 0
while not abortEvent() and count < 50:
@@ -112,7 +117,7 @@ class FrameSimpleDelayed(FrameSimpleDelayedBase):
assert jobID == self.jobID
try:
result = delayedResult.get()
- except Exception, exc:
+ except Exception as exc:
self.log( "Result for job %s raised exception: %s" % (jobID, exc) )
return
@@ -125,6 +130,7 @@ class FrameSimpleDelayed(FrameSimpleDelayedBase):
self.buttonAbort.Enable(False)
+
class FrameSimpleDirect(FrameSimpleDelayedBase):
"""This does not use delayedresult so the GUI will freeze while
the GET is taking place."""
@@ -132,15 +138,17 @@ class FrameSimpleDirect(FrameSimpleDelayedBase):
def __init__(self, *args, **kwargs):
self.jobID = 1
FrameSimpleDelayedBase.__init__(self, *args, **kwargs)
- self.checkboxUseDelayed.SetValue(False)
-
+
+
def setLog(self, log):
self.log = log
-
+
+
def handleGet(self, event):
- """Use delayedresult, this will compute result in separate
- thread, and will affect GUI response because a thread is not
- used."""
+ """
+ Not using delayedresult, this will compute result in the same thread,
+ and will affect GUI response because a thread is not used.
+ """
self.buttonGet.Enable(False)
self.buttonAbort.Enable(True)
@@ -148,18 +156,23 @@ class FrameSimpleDirect(FrameSimpleDelayedBase):
result = self._resultProducer(self.jobID)
self._resultConsumer( result )
+
def _resultProducer(self, jobID):
- """Pretend to be a complex worker function or something that takes
+ """
+ Pretend to be a complex worker function or something that takes
long time to run due to network access etc. GUI will freeze if this
- method is not called in separate thread."""
+ method is not called in separate thread.
+ """
import time
time.sleep(5)
return jobID
+
def handleAbort(self, event):
"""can never be called"""
pass
-
+
+
def _resultConsumer(self, result):
# output result
self.log( "Got result for job %s: %s" % (self.jobID, result) )
diff --git a/demo/DragAndDrop.py b/demo/DragAndDrop.py
index 2fdb41bd..b2d0be57 100644
--- a/demo/DragAndDrop.py
+++ b/demo/DragAndDrop.py
@@ -15,8 +15,6 @@ class ClipTextPanel(wx.Panel):
wx.Panel.__init__(self, parent, -1)
self.log = log
- #self.SetFont(wx.Font(10, wx.FONTFAMILY_SWISS, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_BOLD, False))
-
sizer = wx.BoxSizer(wx.VERTICAL)
sizer.Add(
wx.StaticText(
@@ -42,7 +40,6 @@ class ClipTextPanel(wx.Panel):
self.Bind(wx.EVT_BUTTON, self.OnPaste, id=ID_PasteBtn)
self.Bind(wx.EVT_BUTTON, self.OnCopyBitmap, id=ID_BitmapBtn)
- self.SetAutoLayout(True)
self.SetSizer(sizer)
@@ -71,6 +68,7 @@ class ClipTextPanel(wx.Panel):
"Error"
)
+
def OnCopyBitmap(self, evt):
dlg = wx.FileDialog(self, "Choose a bitmap to copy", wildcard="*.bmp")
@@ -120,7 +118,7 @@ class OtherDropTarget(wx.DropTarget):
def OnData(self, x, y, d):
self.log.WriteText("OnData: %d, %d, %d\n" % (x, y, d))
self.GetData()
- self.log.WriteText("%s\n" % self.do.GetFilenames())
+ self.log.SetLabel("%s\n" % self.do.GetFilenames())
return d
@@ -131,12 +129,10 @@ class MyFileDropTarget(wx.FileDropTarget):
self.log = log
def OnDropFiles(self, x, y, filenames):
- self.window.SetInsertionPointEnd()
- self.window.WriteText("\n%d file(s) dropped at %d,%d:\n" %
- (len(filenames), x, y))
-
- for file in filenames:
- self.window.WriteText(file + '\n')
+ txt = "\n%d file(s) dropped at %d,%d:\n" % (len(filenames), x, y)
+ txt += '\n'.join(filenames)
+ self.window.SetLabel(txt)
+ return True
class MyTextDropTarget(wx.TextDropTarget):
@@ -146,7 +142,8 @@ class MyTextDropTarget(wx.TextDropTarget):
self.log = log
def OnDropText(self, x, y, text):
- self.window.WriteText("(%d, %d)\n%s\n" % (x, y, text))
+ self.window.SetLabel("(%d, %d)\n%s\n" % (x, y, text))
+ return True
def OnDragOver(self, x, y, d):
return wx.DragCopy
@@ -164,38 +161,32 @@ class FileDropPanel(wx.Panel):
0, wx.EXPAND|wx.ALL, 2
)
- self.text = wx.TextCtrl(
- self, -1, "",
- style = wx.TE_MULTILINE|wx.HSCROLL|wx.TE_READONLY
- )
+ self.text = wx.StaticText(self, -1, "", style=wx.ST_NO_AUTORESIZE|wx.BORDER_SIMPLE)
+ self.text.SetWindowVariant(wx.WINDOW_VARIANT_SMALL)
dt = MyFileDropTarget(self, log)
self.text.SetDropTarget(dt)
- sizer.Add(self.text, 1, wx.EXPAND)
+ sizer.Add(self.text, 1, wx.EXPAND|wx.ALL, 5)
sizer.Add(
wx.StaticText(self, -1, " \nDrag some text here:"),
0, wx.EXPAND|wx.ALL, 2
)
- self.text2 = wx.TextCtrl(
- self, -1, "",
- style = wx.TE_MULTILINE|wx.HSCROLL|wx.TE_READONLY
- )
+ self.text2 = wx.StaticText(self, -1, "", style=wx.ST_NO_AUTORESIZE|wx.BORDER_SIMPLE)
+ self.text2.SetWindowVariant(wx.WINDOW_VARIANT_SMALL)
dt = MyTextDropTarget(self.text2, log)
self.text2.SetDropTarget(dt)
- sizer.Add(self.text2, 1, wx.EXPAND)
+ sizer.Add(self.text2, 1, wx.EXPAND|wx.ALL, 5)
self.SetAutoLayout(True)
self.SetSizer(sizer)
- def WriteText(self, text):
- self.text.WriteText(text)
+ def SetLabel(self, text):
+ self.text.SetLabel(text)
- def SetInsertionPointEnd(self):
- self.text.SetInsertionPointEnd()
#----------------------------------------------------------------------
diff --git a/demo/EditableListBox.py b/demo/EditableListBox.py
index df96d407..0db17e8e 100644
--- a/demo/EditableListBox.py
+++ b/demo/EditableListBox.py
@@ -13,7 +13,7 @@ class TestPanel(wx.Panel):
self.elb = wx.adv.EditableListBox(
self, -1, "List of Stuff", (50,50), (250, 250),
style=wx.adv.EL_DEFAULT_STYLE |
- wx.adv.EL_NO_REORDER |
+ #wx.adv.EL_NO_REORDER |
wx.adv.EL_ALLOW_NEW |
wx.adv.EL_ALLOW_EDIT |
wx.adv.EL_ALLOW_DELETE)
diff --git a/demo/EventManager.py b/demo/EventManager.py
index 16c0f5d4..6f0b3c3f 100644
--- a/demo/EventManager.py
+++ b/demo/EventManager.py
@@ -2,12 +2,13 @@
#---------------------------------------------------------------------------
# Name: EventManager.py
-# Purpose: A module to demonstrate wxPython.lib.evtmgr.EventManager.
+# Purpose: A module to demonstrate wx.lib.evtmgr.EventManager.
#
# Author: Robb Shecter (robb@acm.org)
#
# Created: 16-December-2002
-# Copyright: (c) 2002 by Robb Shecter (robb@acm.org)
+# Copyright: (c) 2002-2016 by Robb Shecter (robb@acm.org),
+# Total Control Software
# Licence: wxWindows license
#---------------------------------------------------------------------------
@@ -136,7 +137,7 @@ class InnerTile(wx.Window):
FINAL_COLOR = wx.Colour( 20, 80,240)
OFF_COLOR = wx.Colour(185,190,185)
# Some pre-computation.
- DELTAS = map(lambda a,b: b-a, START_COLOR.Get(), FINAL_COLOR.Get())
+ DELTAS = list(map(lambda a,b: b-a, START_COLOR.Get(), FINAL_COLOR.Get()))
START_COLOR_TUPLE = START_COLOR.Get()
"""
@@ -185,7 +186,8 @@ class InnerTile(wx.Window):
self.makeColorFromTuple(mouseEvent.GetPosition())
- def makeColorFromTuple(self, (x, y)):
+ def makeColorFromTuple(self, xy):
+ x, y = xy
MAX = 180.0
scaled = min((x + y) * self.factor, MAX) # In range [0..MAX]
percent = scaled / MAX
diff --git a/demo/FileCtrl.py b/demo/FileCtrl.py
index 85e0e0cc..1682361e 100644
--- a/demo/FileCtrl.py
+++ b/demo/FileCtrl.py
@@ -18,9 +18,7 @@ class FileCtrl(wx.FileCtrl):
pos=wx.DefaultPosition, size=wx.DefaultSize, name="filectrl", log=None):
wx.FileCtrl.__init__(self, parent, id, defaultDirectory, defaultFilename,
wildCard, style, pos, size, name)
-
- self.BackgroundColour = 'pink'
-
+
self.log = log
self.Bind(wx.EVT_FILECTRL_FILEACTIVATED, self.OnFileActivated)
self.Bind(wx.EVT_FILECTRL_SELECTIONCHANGED, self.OnSelectionChanged)
@@ -49,8 +47,12 @@ class TestPanel(wx.Panel):
self.log = log
wx.Panel.__init__(self, parent)
- fc = FileCtrl(self, pos=(15,15), log=log)
-
+ wx.StaticText(self, -1,
+ "This is a generic control with features like a file dialog",
+ pos=(10,10))
+ fc = FileCtrl(self, pos=(10,35), log=log)
+ fc.SetSize((500,350))
+ fc.BackgroundColour = 'sky blue'
#---------------------------------------------------------------------------
diff --git a/demo/FileHistory.py b/demo/FileHistory.py
index 014d4234..eb9428a5 100644
--- a/demo/FileHistory.py
+++ b/demo/FileHistory.py
@@ -6,12 +6,11 @@ import wx
#----------------------------------------------------------------------
text = """\
-Right-click on the panel above the line to get a menu. This menu will
-be managed by a FileHistory object and so the files you select will
-automatically be added to the end of the menu and will be selectable
-the next time the menu is viewed. The filename selected, either via the
-Open menu item, or from the history, will be displayed in the log
-window below.
+Right-click on this panel to get a menu. This menu will be managed by a
+FileHistory object and so the files you select will automatically be added to
+the end of the menu and will be selectable the next time the menu is viewed.
+The filename selected, either via the Open menu item, or from the history,
+will be displayed in the log window below.
"""
#----------------------------------------------------------------------
diff --git a/demo/GIFAnimationCtrl.py b/demo/GIFAnimationCtrl.py
deleted file mode 100644
index b80fa87d..00000000
--- a/demo/GIFAnimationCtrl.py
+++ /dev/null
@@ -1,61 +0,0 @@
-#!/usr/bin/env python
-
-import wx
-from wx.animate import GIFAnimationCtrl
-
-from Main import opj
-
-GIFNames = [
- 'bitmaps/AG00178_.gif',
- 'bitmaps/BD13656_.gif',
- 'bitmaps/AG00185_.gif',
- 'bitmaps/AG00039_.gif',
- 'bitmaps/AG00183_.gif',
- 'bitmaps/AG00028_.gif',
- ]
-
-#----------------------------------------------------------------------
-
-class TestPanel(wx.Panel):
- def __init__(self, parent, log):
- self.log = log
- wx.Panel.__init__(self, parent, -1)
-
- sizer = wx.FlexGridSizer(cols=3, hgap=5, vgap=5)
- for name in GIFNames:
- ani = GIFAnimationCtrl(self, -1, opj(name))
- ani.GetPlayer().UseBackgroundColour(True)
- ani.Play()
- sizer.Add(ani, 0, wx.ALL, 10)
-
- border = wx.BoxSizer()
- border.Add(sizer, 1, wx.EXPAND|wx.ALL, 20)
- self.SetSizer(border)
-
-
-#----------------------------------------------------------------------
-
-def runTest(frame, nb, log):
- win = TestPanel(nb, log)
- return win
-
-#----------------------------------------------------------------------
-
-
-
-overview = """
-wx.animate.GIFAnimationCtrl
-
-wx.animate.GIFAnimationCtrl is like a wx.StaticBitmap but is able to
-display an animation by extracing frames from a multi-images GIF file.
-
-
-"""
-
-
-
-if __name__ == '__main__':
- import sys,os
- import run
- run.main(['', os.path.basename(sys.argv[0])] + sys.argv[1:])
-
diff --git a/demo/Gauge.py b/demo/Gauge.py
index e749b8d3..34df7677 100644
--- a/demo/Gauge.py
+++ b/demo/Gauge.py
@@ -12,11 +12,11 @@ class TestPanel(wx.Panel):
wx.StaticText(self, -1, "This example shows the wx.Gauge control.", (45, 15))
- self.g1 = wx.Gauge(self, -1, 50, (110, 50), (250, 25))
- self.g2 = wx.Gauge(self, -1, 75, (110, 95), (250, 25))
- self.g3 = wx.Gauge(self, -1, 100, (110, 135), (25, 100), wx.GA_VERTICAL)
- # self.g3.SetBezelFace(12)
- # self.g3.SetShadowWidth(8)
+ self.g1 = wx.Gauge(self, -1, 50, (110, 50), (250, -1))
+ self.g2 = wx.Gauge(self, -1, 75, (110, 95), (250, -1))
+
+ if 'wxMac' not in wx.PlaformInfo:
+ self.g3 = wx.Gauge(self, -1, 100, (110, 135), (-1, 100), wx.GA_VERTICAL)
self.Bind(wx.EVT_TIMER, self.TimerHandler)
self.timer = wx.Timer(self)
@@ -33,7 +33,8 @@ class TestPanel(wx.Panel):
self.g1.SetValue(self.count)
self.g2.Pulse()
- self.g3.Pulse()
+ if 'wxMac' not in wx.PlaformInfo:
+ self.g3.Pulse()
#----------------------------------------------------------------------
diff --git a/demo/GridDragAndDrop.py b/demo/GridDragAndDrop.py
index d1b9ba68..4ff3582c 100644
--- a/demo/GridDragAndDrop.py
+++ b/demo/GridDragAndDrop.py
@@ -32,6 +32,8 @@ class GridFileDropTarget(wx.FileDropTarget):
self.grid.AutoSizeColumn(col)
self.grid.Refresh()
+ return True
+
class FooTable(gridlib.GridTableBase):
diff --git a/demo/GridDragable.py b/demo/GridDragable.py
index 1a80d6dc..4fa2b3c6 100644
--- a/demo/GridDragable.py
+++ b/demo/GridDragable.py
@@ -63,7 +63,7 @@ class CustomDataTable(gridlib.GridTableBase):
def GetValue(self, row, col):
id = self.identifiers[col]
- return self.data[row][id]
+ return str(self.data[row][id])
def SetValue(self, row, col, value):
id = self.identifiers[col]
diff --git a/demo/ItemsPicker.py b/demo/ItemsPicker.py
index d800417f..2fd4bbd8 100644
--- a/demo/ItemsPicker.py
+++ b/demo/ItemsPicker.py
@@ -53,21 +53,30 @@ class ItemsPickerDialog(wx.Dialog):
'Stuff:', 'Selected stuff:',ipStyle = style)
self.ip.Bind(EVT_IP_SELECTION_CHANGED, self.OnSelectionChange)
self.ip._source.SetMinSize((-1,150))
- self.ip.bAdd.SetBitmap(_bp_btn2.GetBitmap(), dir=wx.RIGHT)
- self.ip.bAdd.SetLabel('Add')
- self.ip.bRemove.SetBitmap(_bp_btn1.GetBitmap(), dir=wx.LEFT)
- self.ip.bRemove.SetLabel('Remove')
+
+ # Customize the buttons for this example.
+ if 'wxMac' not in wx.PlatformInfo:
+ # NOTE: wx.Button on OSX does not modify the button size when adding a
+ # bitmap after the fact like this, and these bitmaps are a little too
+ # large and look funny in OSX, so we won't do this customization there.
+ self.ip.bAdd.SetBitmap(_bp_btn2.GetBitmap(), dir=wx.RIGHT)
+ self.ip.bAdd.SetLabel('Add')
+ self.ip.bRemove.SetBitmap(_bp_btn1.GetBitmap(), dir=wx.LEFT)
+ self.ip.bRemove.SetLabel('Remove')
+
sizer.Add(self.ip, 0, wx.ALL, 10)
self.SetSizer(sizer)
self.itemCount = 3
self.Fit()
+
def OnAdd(self,e):
items = self.ip.GetItems()
self.itemCount += 1
newItem = "item%d" % self.itemCount
self.ip.SetItems(items + [newItem])
+
def OnSelectionChange(self, e):
self.log.write("EVT_IP_SELECTION_CHANGED %s\n" % \
",".join(e.GetItems()))
diff --git a/demo/Joystick.py b/demo/Joystick.py
index e902a164..e5ff4b5a 100644
--- a/demo/Joystick.py
+++ b/demo/Joystick.py
@@ -888,7 +888,7 @@ class JoystickDemoPanel(wx.Panel):
# Calibrate our controls
wx.CallAfter(self.Calibrate)
wx.CallAfter(self.OnJoystick)
- except NotImplementedError, v:
+ except NotImplementedError as v:
wx.MessageBox(str(v), "Exception Message")
self.stick = None
diff --git a/demo/ListCtrl_edit.py b/demo/ListCtrl_edit.py
index 2a4c5ff8..ba752de6 100644
--- a/demo/ListCtrl_edit.py
+++ b/demo/ListCtrl_edit.py
@@ -40,6 +40,7 @@ class TestListCtrl(wx.ListCtrl,
self.Populate()
listmix.TextEditMixin.__init__(self)
+
def Populate(self):
# for normal, simple columns, you can add them like this:
self.InsertColumn(0, "Column 1")
@@ -62,6 +63,7 @@ class TestListCtrl(wx.ListCtrl,
self.currentItem = 0
+
def SetStringItem(self, index, col, data):
if col in range(3):
wx.ListCtrl.SetItem(self, index, col, data)
@@ -100,6 +102,7 @@ class TestListCtrlPanel(wx.Panel):
style=wx.LC_REPORT
| wx.BORDER_NONE
| wx.LC_SORT_ASCENDING
+ | wx.LC_HRULES | wx.LC_VRULES
)
sizer.Add(self.list, 1, wx.EXPAND)
diff --git a/demo/MDIDemo.py b/demo/MDIDemo.py
index 0179053a..4d148753 100644
--- a/demo/MDIDemo.py
+++ b/demo/MDIDemo.py
@@ -76,7 +76,6 @@ class MyParentFrame(wx.MDIParentFrame):
if __name__ == '__main__':
class MyApp(wx.App):
def OnInit(self):
- wx.InitAllImageHandlers()
frame = MyParentFrame()
frame.Show(True)
self.SetTopWindow(frame)
diff --git a/demo/MDISashDemo.py b/demo/MDISashDemo.py
index b9a78e5b..e5d03d49 100644
--- a/demo/MDISashDemo.py
+++ b/demo/MDISashDemo.py
@@ -140,7 +140,6 @@ class MyParentFrame(wx.MDIParentFrame):
if __name__ == '__main__':
class MyApp(wx.App):
def OnInit(self):
- wx.InitAllImageHandlers()
frame = MyParentFrame()
frame.Show(True)
self.SetTopWindow(frame)
diff --git a/demo/MDIWindows.py b/demo/MDIWindows.py
index 1764a3f6..0cd57096 100644
--- a/demo/MDIWindows.py
+++ b/demo/MDIWindows.py
@@ -36,21 +36,8 @@ class TestPanel(wx.Panel):
exe, spawn = self.GetPyExecutable()
spawn(os.P_NOWAIT, exe, exe, "MDISashDemo.py")
- # TODO: This hack can be removed once we fix the way the Python
- # app bundles are generated so that they are not bundling and
- # pointing to an otherwise unused and non-GUI-friendly version of
- # Python on OS X.
def GetPyExecutable(self):
- if 'wxMac' in wx.PlatformInfo:
- # sys.executable will be wrong if running the demo from
- # an app bundle. But the bundle is always using a system
- # framework so just hardcode the path to it.
- if sys.version[:3] == "2.4":
- return '/usr/local/bin/pythonw', os.spawnl
- else:
- return '/usr/bin/pythonw', os.spawnl
- else:
- return sys.executable, os.spawnl
+ return sys.executable, os.spawnl
#----------------------------------------------------------------------
diff --git a/demo/MVCTree.py b/demo/MVCTree.py
deleted file mode 100644
index 0642a257..00000000
--- a/demo/MVCTree.py
+++ /dev/null
@@ -1,79 +0,0 @@
-#!/usr/bin/env python
-
-import os
-import sys
-
-import wx
-import wx.lib.mvctree as tree
-
-logger = None
-def selchanging(evt):
- logger.write("SelChanging!\n")
-
-def selchanged(evt):
- logger.write("SelChange!\n")
- logger.write(str(evt.node))
-def expanded(evt):
- logger.write("Expanded\n")
-def closed(evt):
- logger.write("Closed!\n")
-def key(evt):
- logger.write("Key\n")
-def add(evt):
- logger.write("Add\n")
-def delitem(evt):
- logger.write("Delete\n")
-
-def runTest(frame, nb, log):
- #f = wx.Frame(frame, -1, "MVCTree", (0,0), (200,500))
- global logger
- logger = log
- 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 +'..')))
-
- #Uncomment this to enable live filename editing!
-# p.AddEditor(FileEditor(p))
-
- p.SetMultiSelect(True)
- p.Bind(tree.EVT_MVCTREE_SEL_CHANGING, selchanging)
- p.Bind(tree.EVT_MVCTREE_SEL_CHANGED, selchanged)
- p.Bind(tree.EVT_MVCTREE_ITEM_EXPANDED, expanded)
- p.Bind(tree.EVT_MVCTREE_ITEM_COLLAPSED, closed)
- p.Bind(tree.EVT_MVCTREE_ADD_ITEM, add)
- p.Bind(tree.EVT_MVCTREE_DELETE_ITEM, delitem)
- p.Bind(tree.EVT_MVCTREE_KEY_DOWN, key)
-
- return p
- #frame.otherWin = f
- #f.Show(True)
- #return None
-
-
-overview = """\
-
-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.
-
-Multiple selections are possible by holding down the Ctrl key.
-
-This demo shows the wxPython directory structure. The interesting part
-is that the tree model is late-bound to the filesystem, so the
-filenames are not retrieved until the directory is expanded. In
-mvctree.py are models for generic data, and both the early and
-late-bound filesystem models.
-
-There is also support for editing, though it's not enabled in this
-demo, to avoid accidentally renaming files!
-
-"""
-
-
-if __name__ == '__main__':
- import sys,os
- import run
- run.main(['', os.path.basename(sys.argv[0])] + sys.argv[1:])
diff --git a/demo/Mask.py b/demo/Mask.py
index 806543fe..5f0c2cdd 100644
--- a/demo/Mask.py
+++ b/demo/Mask.py
@@ -23,11 +23,10 @@ logicList = [
('wx.XOR', wx.XOR),
]
-if 'mac-cg' in wx.PlatformInfo:
+if 'wxMac' in wx.PlatformInfo:
# that's all, folks!
logicList = [
('wx.COPY', wx.COPY),
- ('wx.INVERT', wx.INVERT),
('wx.XOR', wx.XOR),
]
diff --git a/demo/MimeTypesManager.py b/demo/MimeTypesManager.py
index ffb48477..e0054cea 100644
--- a/demo/MimeTypesManager.py
+++ b/demo/MimeTypesManager.py
@@ -1,5 +1,3 @@
-#!/usr/bin/env python
-
#----------------------------------------------------------------------
# Name: wxMimeTypesManager
# Purpose: Demonstrate use of wx.MimeTypesManager, wx.FileType
@@ -299,21 +297,21 @@ class MimeTypesDemoPanel(wx.Panel):
mime = ft.GetMimeType() or ""
#------- OPEN command
- cmd = ft.GetOpenCommand(filename, mime)
+ params = wx.FileType.MessageParameters(filename, mime)
+ cmd = ft.GetOpenCommand(params)
self.opencommand.SetValue(convert(cmd))
#------- PRINT command
- cmd = ft.GetPrintCommand(filename, mime)
+ cmd = ft.GetPrintCommand(params)
self.printcommand.SetValue(convert(cmd))
#------- All commands
- all = ft.GetAllCommands(filename, mime)
+ verbs, commands = ft.GetAllCommands(params)
- if all is None:
+ if not verbs and not commands:
self.allcommands.SetValue("")
else:
- verbs, commands = all
- text = pprint.pformat(map(None, verbs, commands))
+ text = pprint.pformat(list(zip(verbs, commands)))
self.allcommands.SetValue(text)
diff --git a/demo/MultiSash.py b/demo/MultiSash.py
index 818c38fd..1903150f 100644
--- a/demo/MultiSash.py
+++ b/demo/MultiSash.py
@@ -47,11 +47,11 @@ class TestWindow(stc.StyledTextCtrl):
wx.Font(fSize, wx.FONTFAMILY_MODERN, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL)
)
- ## if self.doc:
- ## self.SetDocPointer(self.doc)
- ## else:
- self.SetText(sampleText)
- TestWindow.doc = self.GetDocPointer()
+ if self.doc:
+ self.SetDocPointer(self.doc)
+ else:
+ self.SetText(sampleText)
+ TestWindow.doc = self.GetDocPointer()
def ShutDownDemo(self):
diff --git a/demo/NotificationMessage.py b/demo/NotificationMessage.py
index a78d1ccb..c7dfe990 100644
--- a/demo/NotificationMessage.py
+++ b/demo/NotificationMessage.py
@@ -1 +1 @@
-#!/usr/bin/env python
import wx
import wx.adv
class TestPanel(wx.Panel):
def __init__(self, parent, log):
self.log = log
wx.Panel.__init__(self, parent, -1)
self.btn = wx.Button(self, -1, "Notify me of something...!", pos=(50,50))
self.btn.Bind(wx.EVT_BUTTON, self.OnButton)
def OnButton(self, event):
notify = wx.adv.NotificationMessage(title="Notify!",
message="...you of something...\numm...Updates are Available.",
parent=None, flags=wx.ICON_INFORMATION)
notify.SetFlags(
# wx.ICON_INFORMATION
wx.ICON_WARNING
# wx.ICON_ERROR
)
# notify.SetTitle("Wooot")
# notify.SetMessage("It's a message!")
# notify.SetParent(self)
notify.Show(timeout=1)#1 for short timeout, 100 for long timeout
# notify.Close()# Hides the notification.
def runTest(frame, nb, log):
win = TestPanel(nb, log)
return win
#---------------------------------------------------------------------------
overview = """\
This class allows to show the user a message non intrusively.
Currently it is implemented natively for Windows and GTK and
uses (non-modal) dialogs for the display of the notifications
under the other platforms.
"""
if __name__ == '__main__':
import sys,os
import run
run.main(['', os.path.basename(sys.argv[0])] + sys.argv[1:])
\ No newline at end of file
+#!/usr/bin/env python
import wx
import wx.adv
class TestPanel(wx.Panel):
def __init__(self, parent, log):
self.log = log
wx.Panel.__init__(self, parent, -1)
self.btn = wx.Button(self, -1, "Notify me of something...!", pos=(50,50))
self.btn.Bind(wx.EVT_BUTTON, self.OnButton)
def OnButton(self, event):
notify = wx.adv.NotificationMessage(
title="This is a Notification!",
message="wxPython is awesome. Phoenix is awesomer! Python is awesomest!!\n\n"
"The quick brown fox jumped over the lazy dog.",
parent=None, flags=wx.ICON_INFORMATION)
# Various options can be set after the message is created if desired.
# notify.SetFlags(# wx.ICON_INFORMATION
# wx.ICON_WARNING
# # wx.ICON_ERROR
# )
# notify.SetTitle("Wooot")
# notify.SetMessage("It's a message!")
# notify.SetParent(self)
notify.Show(timeout=5) # 1 for short timeout, 100 for long timeout
# notify.Close() # Hides the notification.
def runTest(frame, nb, log):
win = TestPanel(nb, log)
return win
#---------------------------------------------------------------------------
overview = """\
This class allows to show the user a message non intrusively.
Currently it is implemented natively for Windows and GTK and
uses (non-modal) dialogs for the display of the notifications
under the other platforms.
"""
if __name__ == '__main__':
import sys,os
import run
run.main(['', os.path.basename(sys.argv[0])] + sys.argv[1:])
\ No newline at end of file
diff --git a/demo/Overlay.py b/demo/Overlay.py
index 53e6df7e..65164cd8 100644
--- a/demo/Overlay.py
+++ b/demo/Overlay.py
@@ -26,7 +26,8 @@ class TestPanel(wx.Panel):
self.endPos = None
self.overlay = wx.Overlay()
- self.cropbitmap = wx.Bitmap('bitmaps/cropshot24x20.png', wx.BITMAP_TYPE_PNG)
+ self.cropbitmap = wx.Bitmap('bitmaps/cropshot24x20.png')
+ self.honeyBitmap = wx.Bitmap('bitmaps/honeycomb300.png')
self.wxPenStylesDict = OrderedDict([
('Solid' , wx.PENSTYLE_SOLID),
@@ -36,39 +37,47 @@ class TestPanel(wx.Panel):
('Dot Dash' , wx.PENSTYLE_DOT_DASH),
('User Dash' , wx.PENSTYLE_USER_DASH),
('Transparent' , wx.PENSTYLE_TRANSPARENT),
- ('Stipple' , wx.PENSTYLE_STIPPLE),
+ #('Stipple' , wx.PENSTYLE_STIPPLE),
('BDiagonal Hatch' , wx.PENSTYLE_BDIAGONAL_HATCH),
('CrossDiag Hatch' , wx.PENSTYLE_CROSSDIAG_HATCH),
('FDiagonal Hatch' , wx.PENSTYLE_FDIAGONAL_HATCH),
('Cross Hatch' , wx.PENSTYLE_CROSS_HATCH),
('Horizontal Hatch' , wx.PENSTYLE_HORIZONTAL_HATCH),
('Vertical Hatch' , wx.PENSTYLE_VERTICAL_HATCH),
- ('First Hatch' , wx.PENSTYLE_FIRST_HATCH),
- ('Last Hatch' , wx.PENSTYLE_LAST_HATCH),
])
list = []
for key, value in self.wxPenStylesDict.items():
list.append(key)
self.penstylesCombo = wx.ComboBox(self, -1, choices=list,
- pos=(10, 5), size=(100, -1),
+ size=(150, -1),
style=wx.CB_READONLY)
self.penstylesCombo.SetSelection(0)
self.penstylesCombo.SetToolTip('Pen Style')
self.overlayPenWidth = wx.SpinCtrl(self, -1, value='',
- pos=(120, 5),
- size=(100, -1),
+ size=(75, -1),
style=wx.SP_ARROW_KEYS,
min=1, max=24, initial=1)
self.overlayPenWidth.SetToolTip('Pen Width')
- self.overlayPenColor = wx.ColourPickerCtrl(self, -1, colour=wx.BLUE,
- pos=(230, 5), size=(100, -1))
+ from wx.lib.colourselect import ColourSelect
+ self.overlayPenColor = ColourSelect(self, -1, colour=wx.BLUE)
self.overlayPenColor.SetToolTip('Pen Color')
+ sizer = wx.BoxSizer(wx.HORIZONTAL)
+ sizer.Add(self.penstylesCombo, 0, wx.ALL, 5)
+ sizer.Add(self.overlayPenWidth, 0, wx.ALL, 5)
+ sizer.Add(self.overlayPenColor, 0, wx.ALL, 5)
+ box = wx.BoxSizer(wx.VERTICAL)
+ box.Add(sizer, 0)
+ box.Add((1,1), 1)
+
+ self.SetSizer(box)
+
self.OnSize()
+
def OnLeftDown(self, event):
# Capture the mouse and save the starting posiiton for the rubber-band
self.CaptureMouse()
@@ -77,6 +86,7 @@ class TestPanel(wx.Panel):
self.SetFocus()
## print('OnLeftDown')
+
def OnMouseMove(self, event):
if event.Dragging() and event.LeftIsDown():
evtPos = event.GetPosition()
@@ -128,6 +138,7 @@ class TestPanel(wx.Panel):
del odc # Make sure the odc is destroyed before the dc is.
## print('OnMouseMove')
+
def OnLeftUp(self, event):
if self.HasCapture():
self.ReleaseMouse()
@@ -146,7 +157,11 @@ class TestPanel(wx.Panel):
self.overlay.Reset()
## print('OnLeftUp')
+
def OnSize(self, event=None):
+ if event:
+ event.Skip()
+
x, y = self.GetSize()
if x <= 0 or y <= 0:
return
@@ -158,8 +173,9 @@ class TestPanel(wx.Panel):
dc.SetBackground(self.background)
dc.Clear()
- dc.DrawBitmap(wx.Bitmap('bitmaps/snakey_render.png'), 10, 35)
- dc.DrawBitmap(wx.Bitmap('bitmaps/honeycomb300.png'), 100, 210)
+ dc.DrawBitmap(self.honeyBitmap, 40, 40)
+ dc.SetFont(wx.Font(wx.FontInfo(18)))
+ dc.DrawText('Drag the mouse on this window.', 325, 100)
del dc
self.Refresh()
diff --git a/demo/PopupWindow.py b/demo/PopupWindow.py
index 0c964d1f..2428fbe8 100644
--- a/demo/PopupWindow.py
+++ b/demo/PopupWindow.py
@@ -69,7 +69,7 @@ class TestPopup(wx.PopupWindow):
def OnRightUp(self, evt):
self.Show(False)
- self.Destroy()
+ wx.CallAfter(self.Destroy)
diff --git a/demo/PrintFramework.py b/demo/PrintFramework.py
index 8fae51c9..e7a29a07 100644
--- a/demo/PrintFramework.py
+++ b/demo/PrintFramework.py
@@ -34,7 +34,7 @@ class MyPrintout(wx.Printout):
def HasPage(self, page):
self.log.WriteText("MyPrintout.HasPage: %d\n" % page)
- if page <= 2:
+ if page <= 2: # we only have 2 pages in this document
return True
else:
return False
@@ -80,7 +80,6 @@ class MyPrintout(wx.Printout):
dc.SetDeviceOrigin(int(posX), int(posY))
#-------------------------------------------
-
self.canvas.DoDrawing(dc, True)
dc.DrawText("Page: %d" % page, marginX/2, maxY-marginY)
diff --git a/demo/Process.py b/demo/Process.py
index 16f49eb9..c4f0fa5e 100644
--- a/demo/Process.py
+++ b/demo/Process.py
@@ -87,7 +87,8 @@ class TestPanel(wx.Panel):
text = self.inp.GetValue()
self.inp.SetValue('')
self.log.write('OnSendText: "%s"\n' % text)
- self.process.GetOutputStream().write(text + '\n')
+ text += '\n'
+ self.process.GetOutputStream().write(text.encode('utf-8'))
self.inp.SetFocus()
diff --git a/demo/RightTextCtrl.py b/demo/RightTextCtrl.py
deleted file mode 100644
index c21c27c4..00000000
--- a/demo/RightTextCtrl.py
+++ /dev/null
@@ -1,64 +0,0 @@
-#!/usr/bin/env python
-
-#####################################################################\
-# Note: This control is deprecated because wx.TextCtrl now supports |
-# the wx.TE_RIGHT style flag, which makes this control completely |
-# superfluous. |
-#####################################################################/
-
-import wx
-import wx.lib.rightalign as right
-
-#----------------------------------------------------------------------
-
-class TestPanel(wx.Panel):
- def __init__(self, parent):
- wx.Panel.__init__(self, parent, -1)
-
- fgs = wx.FlexGridSizer(cols=2, vgap=5, hgap=5)
-
- txt = wx.StaticText(
- self, -1,
- "These text controls will align their contents to\n"
- "the right (on wxMSW) when they don't have focus.",
- style=wx.ALIGN_RIGHT
- )
-
- fgs.Add(txt)
- fgs.Add(right.RightTextCtrl(self, -1, "", size=(75, -1)))
-
- fgs.Add((10,10))
- fgs.Add(right.RightTextCtrl(self, -1, "123.45", size=(75, -1)))
-
- fgs.Add((10,10))
- fgs.Add(right.RightTextCtrl(self, -1, "234.56", size=(75, -1)))
-
- fgs.Add((10,10))
- fgs.Add(right.RightTextCtrl(self, -1, "345.67", size=(75, -1)))
-
- fgs.Add((10,10))
- fgs.Add(right.RightTextCtrl(self, -1, "456.78", size=(75, -1)))
-
- sizer = wx.BoxSizer(wx.VERTICAL)
- sizer.Add(fgs, 0, wx.ALL, 25)
-
- self.SetSizer(sizer)
- self.SetAutoLayout(True)
-
-
-
-#----------------------------------------------------------------------
-
-def runTest(frame, nb, log):
- win = TestPanel(nb)
- return win
-
-#----------------------------------------------------------------------
-
-overview = right.__doc__
-
-
-if __name__ == '__main__':
- import sys,os
- import run
- run.main(['', os.path.basename(sys.argv[0])] + sys.argv[1:])
diff --git a/demo/RowColSizer.py b/demo/RowColSizer.py
deleted file mode 100644
index 1770b74f..00000000
--- a/demo/RowColSizer.py
+++ /dev/null
@@ -1,93 +0,0 @@
-#!/usr/bin/env python
-
-import wx
-import wx.lib.rcsizer as rcs
-
-#----------------------------------------------------------------------
-
-class TestPanel(wx.Panel):
- def __init__(self, parent):
- wx.Panel.__init__(self, parent, -1)
-
- sizer = rcs.RowColSizer()
-
- text = "This sizer lays out it's items by row and column "\
- "that are specified explicitly when the item is \n"\
- "added to the sizer. Grid cells with nothing in "\
- "them are supported and column- or row-spanning is \n"\
- "handled as well. Growable rows and columns are "\
- "specified just like the wxFlexGridSizer."
-
- sizer.Add(wx.StaticText(self, -1, text), row=1, col=1, colspan=5)
-
- sizer.Add(wx.TextCtrl(self, -1, "(3,1)"), flag=wx.EXPAND, row=3, col=1)
- sizer.Add(wx.TextCtrl(self, -1, "(3,2)"), row=3, col=2)
- sizer.Add(wx.TextCtrl(self, -1, "(3,3)"), row=3, col=3)
- sizer.Add(wx.TextCtrl(self, -1, "(3,4)"), row=3, col=4)
- sizer.Add(
- wx.TextCtrl(self, -1, "(4,2) span:(2,2)"),
- flag=wx.EXPAND, row=4, col=2, rowspan=2, colspan=2
- )
-
- sizer.Add(wx.TextCtrl(self, -1, "(6,4)"), row=6, col=4)
- sizer.Add(wx.TextCtrl(self, -1, "(7,2)"), row=7, col=2)
- sizer.Add(wx.TextCtrl(self, -1, "(8,3)"), row=8, col=3)
- sizer.Add(
- wx.TextCtrl(self, -1, "(10,1) colspan: 4"),
- flag=wx.EXPAND, pos=(10,1), colspan=4
- )
-
- sizer.Add(
- wx.TextCtrl(self, -1, "(3,5) rowspan: 8, growable col", style=wx.TE_MULTILINE),
- flag=wx.EXPAND, pos=(3,5), size=(8,1)
- )
-
- box = wx.BoxSizer(wx.VERTICAL)
- box.Add(wx.Button(self, -1, "A vertical box"), flag=wx.EXPAND)
- box.Add(wx.Button(self, -1, "sizer put in the"), flag=wx.EXPAND)
- box.Add(wx.Button(self, -1, "RowColSizer at (12,1)"), flag=wx.EXPAND)
- sizer.Add(box, pos=(12,1))
-
- sizer.Add(
- wx.TextCtrl(self, -1, "(12,2) align bottom"),
- flag=wx.ALIGN_BOTTOM, pos=(12,2)
- )
-
- sizer.Add(
- wx.TextCtrl(self, -1, "(12,3) align center"),
- flag=wx.ALIGN_CENTER_VERTICAL, pos=(12,3)
- )
-
- sizer.Add(wx.TextCtrl(self, -1, "(12,4)"),pos=(12,4))
- sizer.Add(
- wx.TextCtrl(self, -1, "(12,5) full border"),
- flag=wx.EXPAND|wx.ALL, border=15, pos=(12,5)
- )
-
- sizer.AddGrowableCol(5)
- sizer.AddGrowableRow(9)
-
- sizer.AddSpacer(10,10, pos=(1,6))
- sizer.AddSpacer(10,10, pos=(13,1))
-
- self.SetSizer(sizer)
- self.SetAutoLayout(True)
-
-
-#----------------------------------------------------------------------
-
-def runTest(frame, nb, log):
- win = TestPanel(nb)
- return win
-
-
-#----------------------------------------------------------------------
-
-
-overview = rcs.__doc__
-
-if __name__ == '__main__':
- import sys,os
- import run
- run.main(['', os.path.basename(sys.argv[0])] + sys.argv[1:])
-
diff --git a/demo/ScrolledWindow.py b/demo/ScrolledWindow.py
index c57d9d5b..4f3f8a68 100644
--- a/demo/ScrolledWindow.py
+++ b/demo/ScrolledWindow.py
@@ -149,7 +149,7 @@ class MyCanvas(wx.ScrolledWindow):
dc.SetPen(wx.Pen('MEDIUM FOREST GREEN', 4))
for line in self.lines:
for coords in line:
- apply(dc.DrawLine, coords)
+ dc.DrawLine(*coords)
def SetXY(self, event):
diff --git a/demo/Sizers.py b/demo/Sizers.py
index c13f4d06..6d06b3ca 100644
--- a/demo/Sizers.py
+++ b/demo/Sizers.py
@@ -551,37 +551,35 @@ class TestSelectionPanel(wx.Panel):
def __init__(self, parent):
wx.Panel.__init__(self, parent)
- self.list = wx.ListBox(self, -1,
- (-1, -1), (-1, -1),
- [])
- self.list.Fit()
+ self.list = wx.ListBox(self, size=(300,150))
self.Bind(wx.EVT_LISTBOX, self.OnSelect, self.list)
self.Bind(wx.EVT_LISTBOX_DCLICK, self.OnDClick, self.list)
btn = wx.Button(self, -1, "Try it!", (120, 10))
btn.Bind(wx.EVT_BUTTON, self.OnDClick)
- self.text = wx.TextCtrl(self, -1, "",
- (10, 115),
- (200, 50),
- wx.TE_MULTILINE | wx.TE_READONLY)
+ self.text = wx.TextCtrl(self, style = wx.TE_MULTILINE | wx.TE_READONLY)
for item in theTests:
self.list.Append(item[0])
+ self.list.SetSelection(0)
+ wx.CallAfter(self.list.EnsureVisible, 0)
+
hsizer = wx.BoxSizer(wx.HORIZONTAL)
hsizer.Add(self.list, 1, wx.ALL, 8)
hsizer.Add(btn, 0, wx.ALL, 8)
vsizer = wx.BoxSizer(wx.VERTICAL)
vsizer.Add(hsizer)
vsizer.Add(self.text, 1, wx.EXPAND | wx.ALL, 8)
- self.SetSizerAndFit(vsizer)
+ self.SetSizer(vsizer)
def OnSelect(self, event):
pos = self.list.GetSelection()
self.text.SetValue(theTests[pos][2])
+
def OnDClick(self, event):
pos = self.list.GetSelection()
title = theTests[pos][0]
diff --git a/demo/Slider.py b/demo/Slider.py
index df4c6db6..503d19e5 100644
--- a/demo/Slider.py
+++ b/demo/Slider.py
@@ -10,15 +10,22 @@ class TestPanel(wx.Panel):
self.log = log
self.count = 0
- wx.StaticText(self, -1, "This is a wx.Slider.", (45, 15))
+ label = wx.StaticText(self, -1, "This is a wx.Slider.")
slider = wx.Slider(
- self, 100, 25, 1, 100, (30, 60), (250, -1),
- wx.SL_HORIZONTAL | wx.SL_AUTOTICKS | wx.SL_LABELS
+ self, 100, 25, 1, 100, size=(250, -1),
+ style=wx.SL_HORIZONTAL | wx.SL_AUTOTICKS | wx.SL_LABELS
)
slider.SetTickFreq(5)
+ sizer = wx.BoxSizer(wx.VERTICAL)
+ sizer.Add((1,20))
+ sizer.Add(label, 0, wx.LEFT, 20)
+ sizer.Add((1,10))
+ sizer.Add(slider, 0, wx.LEFT, 20)
+ self.SetSizer(sizer)
+
#----------------------------------------------------------------------
@@ -35,10 +42,6 @@ def runTest(frame, nb, log):
overview = """\
A slider is a control with a handle which can be pulled back and forth to
change the value.
-
-In Windows versions below Windows 95, a scrollbar is used to simulate the slider.
-In Windows 95, the track bar control is used.
-
"""
diff --git a/demo/Sound.py b/demo/Sound.py
index c50543f9..96afa984 100644
--- a/demo/Sound.py
+++ b/demo/Sound.py
@@ -27,7 +27,7 @@ class TestPanel(wx.Panel):
self.log.write("before Play...\n")
sound.Play(wx.adv.SOUND_SYNC)
self.log.write("...after Play\n")
- except NotImplementedError, v:
+ except NotImplementedError as v:
wx.MessageBox(str(v), "Exception Message")
@@ -45,7 +45,7 @@ class TestPanel(wx.Panel):
self.sound = sound # save a reference (This shoudln't be needed, but there seems to be a bug...)
# wx.YieldIfNeeded()
self.log.write("...after Play\n")
- except NotImplementedError, v:
+ except NotImplementedError as v:
wx.MessageBox(str(v), "Exception Message")
@@ -62,7 +62,7 @@ class TestPanel(wx.Panel):
# another way to do it.
wx.adv.Sound.PlaySound(dlg.GetPath(), wx.adv.SOUND_SYNC)
- except NotImplementedError, v:
+ except NotImplementedError as v:
wx.MessageBox(str(v), "Exception Message")
dlg.Destroy()
diff --git a/demo/StaticBitmap.py b/demo/StaticBitmap.py
index 75dad2b4..329b12d2 100644
--- a/demo/StaticBitmap.py
+++ b/demo/StaticBitmap.py
@@ -32,7 +32,6 @@ class TestPanel(wx.Panel):
bmp = images.Robin.GetBitmap()
StaticBitmap(self, -1, bmp, (80, 150))
- StaticText(self, -1, "Hey, if Ousterhout can do it, so can I.", (200, 175))
#----------------------------------------------------------------------
diff --git a/demo/StyledTextCtrl_1.py b/demo/StyledTextCtrl_1.py
index 37f0ecdf..759ad02f 100644
--- a/demo/StyledTextCtrl_1.py
+++ b/demo/StyledTextCtrl_1.py
@@ -1,15 +1,7 @@
-#!/usr/bin/env python
-
-# 11/21/2003 - Jeff Grimmett (grimmtooth@softhome.net)
-#
-# o wx.TheClipboard.Flush() generates a warning on program exit.
-
import wx
import wx.stc as stc
-import images
-
#----------------------------------------------------------------------
debug = 1
@@ -171,43 +163,20 @@ def runTest(frame, nb, log):
p.SetAutoLayout(True)
- #ed.SetBufferedDraw(False)
- #ed.StyleClearAll()
- #ed.SetScrollWidth(800)
- #ed.SetWrapMode(True)
- #ed.SetUseAntiAliasing(False)
- #ed.SetViewEOL(True)
-
- #ed.CmdKeyClear(stc.STC_KEY_BACK,
- # stc.STC_SCMOD_CTRL)
- #ed.CmdKeyAssign(stc.STC_KEY_BACK,
- # stc.STC_SCMOD_CTRL,
- # stc.STC_CMD_DELWORDLEFT)
-
ed.SetText(demoText)
- # if wx.USE_UNICODE:
import codecs
decode = codecs.lookup("utf-8")[1]
ed.GotoPos(ed.GetLength())
ed.AddText("\n\nwx.StyledTextCtrl can also do Unicode:\n")
uniline = ed.GetCurrentLine()
- unitext, l = decode('\xd0\x9f\xd0\xb8\xd1\x82\xd0\xbe\xd0\xbd - '
- '\xd0\xbb\xd1\x83\xd1\x87\xd1\x88\xd0\xb8\xd0\xb9 '
- '\xd1\x8f\xd0\xb7\xd1\x8b\xd0\xba \xd0\xbf\xd1\x80\xd0\xbe\xd0\xb3\xd1\x80\xd0\xb0\xd0\xbc\xd0\xbc\xd0\xb8\xd1\x80\xd0\xbe\xd0\xb2\xd0\xb0\xd0\xbd\xd0\xb8\xd1\x8f!\n\n')
+ unitext, l = decode(b'\xd0\x9f\xd0\xb8\xd1\x82\xd0\xbe\xd0\xbd - ' +
+ b'\xd0\xbb\xd1\x83\xd1\x87\xd1\x88\xd0\xb8\xd0\xb9 ' +
+ b'\xd1\x8f\xd0\xb7\xd1\x8b\xd0\xba \xd0\xbf\xd1\x80\xd0\xbe\xd0\xb3\xd1\x80\xd0\xb0\xd0\xbc\xd0\xbc\xd0\xb8\xd1\x80\xd0\xbe\xd0\xb2\xd0\xb0\xd0\xbd\xd0\xb8\xd1\x8f!\n\n')
ed.AddText('\tRussian: ')
ed.AddText(unitext)
ed.GotoPos(0)
- #else:
- # #ed.StyleSetFontEncoding(stc.STC_STYLE_DEFAULT, wx.FONTENCODING_KOI8)
- # #text = u'\u041f\u0438\u0442\u043e\u043d - \u043b\u0443\u0447\u0448\u0438\u0439 \u044f\u0437\u044b\u043a \n\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f!'
- # #text = text.encode('koi8-r')
- # #ed.StyleSetFontEncoding(stc.STC_STYLE_DEFAULT, wx.FONTENCODING_BIG5)
- # #text = u'Python \u662f\u6700\u597d\u7684\u7de8\u7a0b\u8a9e\u8a00\uff01'
- # #text = text.encode('big5')
- # ed.GotoPos(ed.GetLength())
- # ed.AddText('\n\n' + text)
ed.EmptyUndoBuffer()
diff --git a/demo/TablePrint.py b/demo/TablePrint.py
index 2be3db08..f058962b 100644
--- a/demo/TablePrint.py
+++ b/demo/TablePrint.py
@@ -24,7 +24,7 @@ class TablePanel(wx.Panel):
box = wx.BoxSizer(wx.VERTICAL)
box.Add((20, 30))
- keys = buttonDefs.keys()
+ keys = list(buttonDefs.keys())
keys.sort()
for k in keys:
@@ -38,8 +38,8 @@ class TablePanel(wx.Panel):
def OnButton(self, evt):
funct = buttonDefs[evt.GetId()][0]
- code = 'self.' + funct + '()'
- eval(code)
+ funct = getattr(self, funct)
+ funct()
def ReadData(self):
test_file = "./data/testtable.txt"
diff --git a/demo/Threads.py b/demo/Threads.py
index 1cfe59b1..79fb6cb9 100644
--- a/demo/Threads.py
+++ b/demo/Threads.py
@@ -1,11 +1,9 @@
-#!/usr/bin/env python
+import random
+import time
+from six.moves import _thread
-import random
-import time
-import thread
-
-import wx
-import wx.lib.newevent
+import wx
+import wx.lib.newevent
#----------------------------------------------------------------------
@@ -23,7 +21,7 @@ class CalcBarThread:
def Start(self):
self.keepGoing = self.running = True
- thread.start_new_thread(self.Run, ())
+ _thread.start_new_thread(self.Run, ())
def Stop(self):
self.keepGoing = False
diff --git a/demo/TreeMixin.py b/demo/TreeMixin.py
index b838ac1a..782d0ec0 100644
--- a/demo/TreeMixin.py
+++ b/demo/TreeMixin.py
@@ -126,31 +126,31 @@ class VirtualTreeCtrl(DemoTreeMixin, wx.TreeCtrl):
pass
-class VirtualTreeListCtrl(DemoTreeMixin, wx.adv.TreeListCtrl):
- def __init__(self, *args, **kwargs):
- kwargs['style'] = wx.TR_DEFAULT_STYLE | wx.TR_FULL_ROW_HIGHLIGHT
- super(VirtualTreeListCtrl, self).__init__(*args, **kwargs)
- self.AppendColumn('Column 0')
- self.AppendColumn('Column 1')
- for art in wx.ART_TIP, wx.ART_WARNING:
- self.imageList.Add(wx.ArtProvider.GetBitmap(art, wx.ART_OTHER,
- (16, 16)))
-
- def OnGetItemText(self, indices, column=0):
- # Return a different label depending on column.
- return '%s, column %d'%\
- (super(VirtualTreeListCtrl, self).OnGetItemText(indices), column)
-
- def OnGetItemImage(self, indices, which, column=0):
- # Also change the image of the other columns when the item has
- # children.
- if column == 0:
- return super(VirtualTreeListCtrl, self).OnGetItemImage(indices,
- which)
- elif self.OnGetChildrenCount(indices):
- return 4
- else:
- return 3
+# class VirtualTreeListCtrl(DemoTreeMixin, wx.adv.TreeListCtrl):
+# def __init__(self, *args, **kwargs):
+# kwargs['style'] = wx.TR_DEFAULT_STYLE | wx.TR_FULL_ROW_HIGHLIGHT
+# super(VirtualTreeListCtrl, self).__init__(*args, **kwargs)
+# self.AppendColumn('Column 0')
+# self.AppendColumn('Column 1')
+# for art in wx.ART_TIP, wx.ART_WARNING:
+# self.imageList.Add(wx.ArtProvider.GetBitmap(art, wx.ART_OTHER,
+# (16, 16)))
+#
+# def OnGetItemText(self, indices, column=0):
+# # Return a different label depending on column.
+# return '%s, column %d'%\
+# (super(VirtualTreeListCtrl, self).OnGetItemText(indices), column)
+#
+# def OnGetItemImage(self, indices, which, column=0):
+# # Also change the image of the other columns when the item has
+# # children.
+# if column == 0:
+# return super(VirtualTreeListCtrl, self).OnGetItemImage(indices,
+# which)
+# elif self.OnGetChildrenCount(indices):
+# return 4
+# else:
+# return 3
class VirtualCustomTreeCtrl(DemoTreeMixin,
@@ -192,7 +192,7 @@ class TreeNotebook(wx.Notebook):
super(TreeNotebook, self).__init__(*args, **kwargs)
self.trees = []
for class_, title in [(VirtualTreeCtrl, 'TreeCtrl'),
- (VirtualTreeListCtrl, 'TreeListCtrl'),
+ #(VirtualTreeListCtrl, 'TreeListCtrl'),
(VirtualCustomTreeCtrl, 'CustomTreeCtrl')]:
tree = class_(self, treemodel=treemodel, log=log)
self.trees.append(tree)
diff --git a/demo/XMLtreeview.py b/demo/XMLtreeview.py
deleted file mode 100644
index 9afe79ac..00000000
--- a/demo/XMLtreeview.py
+++ /dev/null
@@ -1,109 +0,0 @@
-#!/usr/bin/env python
-
-import sys
-import wx
-
-from xml.parsers import expat
-
-#----------------------------------------------------------------------
-
-class XMLTree(wx.TreeCtrl):
- def __init__(self, parent, ID):
- wx.TreeCtrl.__init__(self, parent, ID)
- self._root = self.AddRoot("Root")
- self.nodeStack = [self._root]
-
- # Trees need an image list to do DnD...
- self.il = wx.ImageList(16,16)
- self.SetImageList(self.il)
-
- # event handlers for DnD
- self.Bind(wx.EVT_TREE_BEGIN_DRAG, self.OnBeginDrag)
- self.Bind(wx.EVT_TREE_END_DRAG, self.OnEndDrag)
-
-
- def OnBeginDrag(self, event):
- item = event.GetItem()
-
- if item != self.GetRootItem():
- self.draggingItem = item
- event.Allow() # if DnD of this item is okay Allow it.
-
- def IsDescendant(self, firstItem, secondItem):
- "Recursive check if firstItem is a descendant of a secondItem."
- if firstItem == self._root:
- return False
- parentItem = self.GetItemParent(firstItem)
- if parentItem == secondItem:
- return True
- else:
- return self.IsDescendant(parentItem, secondItem)
-
- def OnEndDrag(self, evt):
- itemSrc = self.draggingItem
- itemDst = evt.GetItem()
- self.draggingItem = None
-
- if not itemDst.IsOk():
- print("Can't drag to here...")
- return
-
- if self.IsDescendant(itemDst, itemSrc):
- print("Can't move item to its descendant")
- return
-
- # For this simple example just take the text of the source item
- # and append it to the destination item. In real life you would
- # possibly want to copy subtrees...
- text = self.GetItemText(itemSrc)
- self.AppendItem(itemDst, text)
- self.Delete(itemSrc)
-
-
- # Define a handler for start element events
- def StartElement(self, name, attrs ):
- name = name.encode()
-
- id = self.AppendItem(self.nodeStack[-1], name)
- self.nodeStack.append(id)
-
- def EndElement(self, name ):
- self.nodeStack = self.nodeStack[:-1]
-
- def CharacterData(self, data ):
- if data.strip():
- data = data.encode()
-
- self.AppendItem(self.nodeStack[-1], data)
-
-
- def LoadTree(self, filename):
- # Create a parser
- Parser = expat.ParserCreate()
-
- # Tell the parser what the start element handler is
- Parser.StartElementHandler = self.StartElement
- Parser.EndElementHandler = self.EndElement
- Parser.CharacterDataHandler = self.CharacterData
-
- # Parse the XML File
- ParserStatus = Parser.Parse(open(filename,'r').read(), 1)
-
-
-def runTest(frame, nb, log):
- win = XMLTree(nb, -1)
- win.LoadTree("paper.xml")
- return win
-
-#----------------------------------------------------------------------
-
-
-
-overview = """\
-"""
-
-
-if __name__ == '__main__':
- import sys,os
- import run
- run.main(['', os.path.basename(sys.argv[0])] + sys.argv[1:])
diff --git a/demo/XmlResource.py b/demo/XmlResource.py
index 8b7060e6..268b2a89 100644
--- a/demo/XmlResource.py
+++ b/demo/XmlResource.py
@@ -18,8 +18,10 @@ class TestPanel(wx.Panel):
label = wx.StaticText(self, -1, "The lower panel was built from this XML:")
label.SetFont(wx.Font(12, wx.FONTFAMILY_SWISS, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_BOLD))
- resourceText = open(RESFILE).read()
- text = wx.TextCtrl(self, -1, resourceText,
+ with open(RESFILE, 'rb') as f:
+ resourceBytes = f.read()
+
+ text = wx.TextCtrl(self, -1, resourceBytes,
style=wx.TE_READONLY|wx.TE_MULTILINE)
text.SetInsertionPoint(0)
@@ -33,13 +35,14 @@ class TestPanel(wx.Panel):
elif 1:
# or from a Virtual FileSystem:
wx.FileSystem.AddHandler(wx.MemoryFSHandler())
- wx.MemoryFSHandler().AddFile("XRC_Resources/data_file", resourceText)
- res = xrc.XmlResource("memory:XRC_Resources/data_file")
+ wx.MemoryFSHandler.AddFile("my_XRC_data", resourceBytes)
+ # notice the matching filename
+ res = xrc.XmlResource("memory:my_XRC_data")
else:
- # or from a string, like this:
- res = xrc.EmptyXmlResource()
- res.LoadFromString(resourceText)
+ # or from a buffer compatible object, like this:
+ res = xrc.XmlResource()
+ res.LoadFromBuffer(resourceBytes)
# Now create a panel from the resource data
diff --git a/demo/XmlResourceHandler.py b/demo/XmlResourceHandler.py
index cf10c439..33339195 100644
--- a/demo/XmlResourceHandler.py
+++ b/demo/XmlResourceHandler.py
@@ -5,7 +5,7 @@ import wx.xrc as xrc
#----------------------------------------------------------------------
-resourceText = r'''
+resourceText = br'''
@@ -48,8 +48,7 @@ class MyCustomPanel(wx.Panel):
# the different requirements are.
class PreMyCustomPanel(wx.Panel):
def __init__(self):
- p = wx.PrePanel()
- self.PostCreate(p)
+ wx.Panel.__init__(self)
def Create(self, parent, id, pos, size, style, name):
wx.Panel.Create(self, parent, id, pos, size, style, name)
@@ -84,12 +83,10 @@ class MyCustomPanelXmlHandler(xrc.XmlResourceHandler):
def DoCreateResource(self):
# NOTE: wxWindows can be created in either a single-phase or
# in a two-phase way. Single phase is what you normally do,
- # and two-phase creates the instnace first, and then later
+ # and two-phase creates the instance first, and then later
# creates the actual window when the Create method is called.
- # (In wxPython the first phase is done using the wxPre*
- # function, for example, wxPreFrame, wxPrePanel, etc.)
#
- # wxXmlResource supports either method, a premade instance can
+ # wxXmlResource supports either method, a pre-made instance can
# be created and populated by xrc using the appropriate
# LoadOn* method (such as LoadOnPanel) or xrc can create the
# instance too, using the Load* method. However this makes
@@ -98,7 +95,7 @@ class MyCustomPanelXmlHandler(xrc.XmlResourceHandler):
# instance, then you can make the handle much simpler. I'll
# show both methods below.
- if 1:
+ if 0:
# The simple method assumes that there is no existing
# instance. Be sure of that with an assert.
assert self.GetInstance() is None
@@ -156,9 +153,9 @@ class TestPanel(wx.Panel):
line = wx.StaticLine(self, -1)
# Load the resource
- res = xrc.EmptyXmlResource()
+ res = xrc.XmlResource()
res.InsertHandler(MyCustomPanelXmlHandler())
- res.LoadFromString(resourceText)
+ res.LoadFromBuffer(resourceText)
# Now create a panel from the resource data
panel = res.LoadObject(self, "MyPanel", "MyCustomPanel")
@@ -171,7 +168,6 @@ class TestPanel(wx.Panel):
sizer.Add(panel, 1, wx.EXPAND|wx.ALL, 5)
self.SetSizer(sizer)
- self.SetAutoLayout(True)
#----------------------------------------------------------------------
diff --git a/demo/XmlResourceSubclass.py b/demo/XmlResourceSubclass.py
index 07b44b8a..3ffb043f 100644
--- a/demo/XmlResourceSubclass.py
+++ b/demo/XmlResourceSubclass.py
@@ -5,7 +5,7 @@ import wx.xrc as xrc
#----------------------------------------------------------------------
-resourceText = r'''
+resourceText = br'''