From f039f7c367f182149c91a42e0869d333ea527d21 Mon Sep 17 00:00:00 2001
From: Robin Dunn
Date: Thu, 13 Jun 2013 06:06:29 +0000
Subject: [PATCH] Initial port of wxPython demo from Classic to Phoenix.
Pulled and squashed from https://github.com/RobinD42/Phoenix/pull/7
Thanks Metallicow!
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxPython/Phoenix/trunk@74199 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
---
demo/AUI_MDI.py | 2 +-
demo/About.py | 2 +-
demo/AboutBox.py | 10 +-
demo/AdjustChannels.py | 53 +-
demo/AlphaDrawing.py | 2 +-
demo/AnimateCtrl.py | 12 +-
demo/ArtProvider.py | 24 +-
demo/BannerWindow.py | 1 +
demo/BitmapButton.py | 12 +-
demo/BitmapComboBox.py | 8 +-
demo/BitmapFromBuffer.py | 17 +-
demo/Button.py | 14 +-
demo/Calendar.py | 10 +-
demo/CalendarCtrl.py | 39 +-
demo/CheckBox.py | 10 +-
demo/CheckListCtrlMixin.py | 18 +-
demo/Choice.py | 10 +-
demo/ColorPanel.py | 2 +-
demo/ColourDB.py | 22 +-
demo/ColourDialog.py | 27 +-
demo/ColourSelect.py | 4 +-
demo/ComboBox.py | 14 +-
demo/ComboCtrl.py | 396 ++-----------
demo/CommandLinkButton.py | 3 +-
demo/Cursor.py | 6 +-
demo/CustomDragAndDrop.py | 36 +-
demo/DVC_CustomRenderer.py | 2 +-
demo/DVC_DataViewModel.py | 92 +--
demo/DVC_IndexListModel.py | 32 +-
demo/DVC_ListCtrl.py | 8 +-
demo/DVC_TreeCtrl.py | 10 +-
demo/DatePickerCtrl.py | 27 +-
demo/Dialog.py | 14 +-
demo/DialogUnits.py | 2 +-
demo/DragAndDrop.py | 4 +-
demo/DragImage.py | 2 +-
demo/DrawXXXList.py | 38 +-
demo/EventManager.py | 17 +-
demo/FileDialog.py | 22 +-
demo/FileHistory.py | 17 +-
demo/FindReplaceDialog.py | 2 +-
demo/FloatBar.py | 26 +-
demo/FloatCanvas.py | 3 +-
demo/FontDialog.py | 14 +-
demo/FontEnumerator.py | 4 +-
demo/Frame.py | 16 +-
demo/GLCanvas.py | 4 +-
demo/Gauge.py | 6 +-
demo/GenericButtons.py | 8 +-
demo/GenericDirCtrl.py | 16 +-
demo/GraphicsContext.py | 36 +-
demo/GraphicsGradient.py | 15 +-
demo/GridBagSizer.py | 6 +-
demo/GridCustEditor.py | 14 +-
demo/GridSimple.py | 2 +-
demo/GridStdEdRend.py | 6 +-
demo/Grid_MegaExample.py | 16 +-
demo/HTML2_WebView.py | 4 +-
demo/HtmlWindow.py | 8 +-
demo/I18N.py | 74 +--
demo/Image.py | 4 +-
demo/ImageFromStream.py | 2 +-
demo/Img2PyArtProvider.py | 6 +-
demo/ItemsPicker.py | 20 +-
demo/Joystick.py | 89 ++-
demo/KeyEvents.py | 38 +-
demo/LayoutConstraints.py | 2 +-
demo/ListBox.py | 16 +-
demo/ListCtrl.py | 124 ++--
demo/ListCtrl_edit.py | 22 +-
demo/ListCtrl_virtual.py | 23 +-
demo/MDIDemo.py | 17 +-
demo/MDISashDemo.py | 44 +-
demo/MVCTree.py | 14 +-
demo/Main.py | 554 +++++++++---------
demo/Mask.py | 8 +-
demo/MaskedEditControls.py | 2 +-
demo/MediaCtrl.py | 1 -
demo/Menu.py | 63 ++-
demo/MimeTypesManager.py | 44 +-
demo/MiniFrame.py | 12 +-
demo/MultiSash.py | 24 +-
demo/Notebook.py | 6 +-
demo/OwnerDrawnComboBox.py | 22 +-
demo/PenAndBrushStyles.py | 30 +-
demo/Pickers.py | 10 +-
demo/PlateButton.py | 2 +-
demo/PopupControl.py | 13 +-
demo/PopupMenu.py | 8 +-
demo/PrintDialog.py | 5 +-
demo/PrintFramework.py | 45 +-
demo/RawBitmapAccess.py | 14 +-
demo/ResizeWidget.py | 13 +-
demo/SashWindow.py | 55 +-
demo/ScrolledWindow.py | 9 +-
demo/ShapedWindow.py | 23 +-
demo/Sizers.py | 34 +-
demo/Slider.py | 10 +-
demo/Sound.py | 18 +-
demo/StatusBar.py | 24 +-
demo/StyledTextCtrl_1.py | 85 ++-
demo/StyledTextCtrl_2.py | 12 +-
demo/SystemSettings.py | 23 +-
demo/TablePrint.py | 30 +-
demo/Ticker.py | 53 +-
demo/TimeCtrl.py | 10 +-
demo/ToolBar.py | 35 +-
demo/TreeCtrl.py | 37 +-
demo/UIActionSimulator.py | 6 +-
demo/URLDragAndDrop.py | 5 +-
demo/Unicode.py | 50 +-
demo/Validator.py | 22 +-
demo/WIPzChecklistPhoenixDemo.txt | 779 ++++++++++++++++++++++++++
demo/Wizard.py | 37 +-
demo/XmlResource.py | 4 +-
demo/agw/AUI.py | 44 +-
demo/agw/AquaButton.py | 32 +-
demo/agw/BalloonTip.py | 69 +--
demo/agw/ButtonPanel.py | 251 ++++-----
demo/agw/FlatMenu.py | 162 +++---
demo/agw/FlatNotebook.py | 186 +++---
demo/agw/FloatSpin.py | 60 +-
demo/agw/FoldPanelBar.py | 38 +-
demo/agw/FourWaySplitter.py | 18 +-
demo/agw/GradientButton.py | 18 +-
demo/agw/LabelBook.py | 12 +-
demo/agw/MacLargeDemo.py | 92 +--
demo/agw/PeakMeter.py | 26 +-
demo/agw/PersistentControls.py | 74 +--
demo/agw/PieCtrl.py | 2 +-
demo/agw/PyGauge.py | 40 +-
demo/agw/PyProgress.py | 4 +-
demo/agw/RibbonBar.py | 114 ++--
demo/agw/RulerCtrl.py | 28 +-
demo/agw/ShapedButton.py | 156 +++---
demo/agw/ShortcutEditor.py | 2 +-
demo/agw/SpeedMeter.py | 150 ++---
demo/agw/SuperToolTip.py | 56 +-
demo/agw/ThumbnailCtrl.py | 106 ++--
demo/agw/ToasterBox.py | 4 +-
demo/agw/UltimateListCtrl.py | 6 +-
demo/agw/UltimateReportDemo.py | 198 +++----
demo/agw/UltimateVirtualDemo.py | 32 +-
demo/agw/Windows7Explorer_Contents.py | 82 +--
demo/agw/XLSGrid.py | 4 +-
demo/agw/ZoomBar.py | 42 +-
demo/bitmaps/phoenix_title.png | Bin 0 -> 5702 bytes
demo/bitmaps/phoenix_top.png | Bin 0 -> 90998 bytes
demo/bitmaps/splash.png | Bin 64072 -> 95824 bytes
demo/demo.pyw | 4 +
demo/run.py | 14 +-
demo/version.py | 2 +-
152 files changed, 3244 insertions(+), 2863 deletions(-)
create mode 100644 demo/BannerWindow.py
create mode 100644 demo/WIPzChecklistPhoenixDemo.txt
create mode 100644 demo/bitmaps/phoenix_title.png
create mode 100644 demo/bitmaps/phoenix_top.png
create mode 100644 demo/demo.pyw
diff --git a/demo/AUI_MDI.py b/demo/AUI_MDI.py
index 50bbb6d3..6a42ff39 100644
--- a/demo/AUI_MDI.py
+++ b/demo/AUI_MDI.py
@@ -30,7 +30,7 @@ class ParentFrame(wx.aui.AuiMDIParentFrame):
def OnNewChild(self, evt):
self.count += 1
child = ChildFrame(self, self.count)
- child.Activate()
+ child.Show()
def OnDoClose(self, evt):
# Close all ChildFrames first else Python crashes
diff --git a/demo/About.py b/demo/About.py
index c9ea6ed1..62eb7408 100644
--- a/demo/About.py
+++ b/demo/About.py
@@ -66,7 +66,7 @@ demo item so you can learn how to use the classes yourself.
if __name__ == '__main__':
- app = wx.PySimpleApp()
+ app = wx.App()
dlg = MyAboutBox(None)
dlg.ShowModal()
dlg.Destroy()
diff --git a/demo/AboutBox.py b/demo/AboutBox.py
index fdec097b..dc5f5790 100644
--- a/demo/AboutBox.py
+++ b/demo/AboutBox.py
@@ -1,5 +1,5 @@
-
import wx
+import wx.adv
from wx.lib.wordwrap import wordwrap
#----------------------------------------------------------------------
@@ -15,7 +15,7 @@ class TestPanel(wx.Panel):
def OnButton(self, evt):
# First we create and fill the info object
- info = wx.AboutDialogInfo()
+ info = wx.adv.AboutDialogInfo()
info.Name = "Hello World"
info.Version = "1.2.3"
info.Copyright = "(C) 2006 Programmers and Coders Everywhere"
@@ -23,7 +23,7 @@ class TestPanel(wx.Panel):
"A \"hello world\" program is a software program that prints out "
"\"Hello world!\" on a display device. It is used in many introductory "
"tutorials for teaching a programming language."
-
+
"\n\nSuch a program is typically one of the simplest programs possible "
"in a computer language. A \"hello world\" program can be a useful "
"sanity test to make sure that a language's compiler, development "
@@ -37,8 +37,8 @@ class TestPanel(wx.Panel):
info.License = wordwrap(licenseText, 500, wx.ClientDC(self))
# Then we call wx.AboutBox giving it that info object
- wx.AboutBox(info)
-
+ wx.adv.AboutBox(info)
+
#----------------------------------------------------------------------
diff --git a/demo/AdjustChannels.py b/demo/AdjustChannels.py
index 8d0a5bb9..9fc2a532 100644
--- a/demo/AdjustChannels.py
+++ b/demo/AdjustChannels.py
@@ -11,74 +11,73 @@ class TestAdjustChannels(wx.Panel):
def __init__(self, parent, log):
self.log = log
wx.Panel.__init__(self, parent, -1)
-
+
topsizer= wx.BoxSizer(wx.HORIZONTAL) # left controls, right image output
-
+
# slider controls controls
ctrlsizer= wx.BoxSizer(wx.VERTICAL)
-
+
label= wx.StaticText(self, -1, "Factor red in %")
label.SetForegroundColour("RED")
ctrlsizer.Add(label, 0, wx.ALL, 5)
sliderred= wx.Slider(self, wx.NewId(), 100, 0, 200, size=(150, -1), style = wx.SL_HORIZONTAL | wx.SL_AUTOTICKS | wx.SL_LABELS)
sliderred.SetForegroundColour("RED")
- sliderred.SetTickFreq(50, 5)
+ sliderred.SetTickFreq(50)
ctrlsizer.Add(sliderred)
ctrlsizer.AddSpacer(15)
-
+
label= wx.StaticText(self, -1, "Factor green in %")
label.SetForegroundColour("GREEN")
ctrlsizer.Add(label, 0, wx.ALL, 5)
slidergreen= wx.Slider(self, wx.NewId(), 100, 0, 200, size=(150, -1), style = wx.SL_HORIZONTAL | wx.SL_AUTOTICKS | wx.SL_LABELS)
slidergreen.SetForegroundColour("GREEN")
- slidergreen.SetTickFreq(50, 5)
+ slidergreen.SetTickFreq(50)
ctrlsizer.Add(slidergreen)
ctrlsizer.AddSpacer(15)
-
+
label= wx.StaticText(self, -1, "Factor blue in %")
label.SetForegroundColour("BLUE")
ctrlsizer.Add(label, 0, wx.ALL, 5)
sliderblue= wx.Slider(self, wx.NewId(), 100, 0, 200, size=(150, -1), style = wx.SL_HORIZONTAL | wx.SL_AUTOTICKS | wx.SL_LABELS)
sliderblue.SetForegroundColour("BLUE")
- sliderblue.SetTickFreq(50, 5)
+ sliderblue.SetTickFreq(50)
ctrlsizer.Add(sliderblue)
ctrlsizer.AddSpacer(20)
-
+
label= wx.StaticText(self, -1, "Factor alpha in %")
ctrlsizer.Add(label, 0, wx.ALL, 5)
slideralpha= wx.Slider(self, wx.NewId(), 100, 0, 200, size=(150, -1), style = wx.SL_HORIZONTAL | wx.SL_AUTOTICKS | wx.SL_LABELS)
- slideralpha.SetTickFreq(50, 1)
+ slideralpha.SetTickFreq(50)
ctrlsizer.Add(slideralpha)
-
+
topsizer.Add(ctrlsizer, 0, wx.ALL, 10)
-
+
# image window
self.images= ImageWindow(self)
topsizer.Add(self.images, 1, wx.EXPAND)
-
+
self.SetSizer(topsizer)
topsizer.Layout()
-
+
# forward the slider change events to the image window
sliderred.Bind(wx.EVT_SCROLL, self.images.OnScrollRed)
slidergreen.Bind(wx.EVT_SCROLL, self.images.OnScrollGreen)
sliderblue.Bind(wx.EVT_SCROLL, self.images.OnScrollBlue)
slideralpha.Bind(wx.EVT_SCROLL, self.images.OnScrollAlpha)
-
-
+
class ImageWindow(wx.Window):
def __init__(self, parent):
wx.Window.__init__(self, parent)
self.image1= wx.Image(opj('bitmaps/image.bmp'), wx.BITMAP_TYPE_BMP)
self.image2= wx.Image(opj('bitmaps/toucan.png'), wx.BITMAP_TYPE_PNG)
-
+
# the factors -- 1.0 does not not modify the image
self.factorred= 1.0
self.factorgreen= 1.0
self.factorblue= 1.0
self.factoralpha= 1.0
-
+
self.Bind(wx.EVT_PAINT, self.OnPaint)
self.Bind(wx.EVT_ERASE_BACKGROUND, self.OnEraseBackground)
self.Bind(wx.EVT_SIZE, self.OnSize)
@@ -106,30 +105,30 @@ class ImageWindow(wx.Window):
def OnPaint(self, event):
dc= wx.PaintDC(self)
dc= wx.BufferedDC(dc)
-
+
# paint a background to show the alpha manipulation
dc.SetBackground(wx.Brush("WHITE"))
dc.Clear()
dc.SetBrush(wx.Brush("GREY", wx.CROSSDIAG_HATCH))
- windowsize= self.GetSizeTuple()
+ windowsize= self.GetSize()
dc.DrawRectangle(0, 0, windowsize[0], windowsize[1])
-
+
# apply correction to the image channels via wx.Image.AdjustChannels
image= self.image1.AdjustChannels(self.factorred, self.factorgreen, self.factorblue, self.factoralpha)
- bitmap= wx.BitmapFromImage(image)
+ bitmap= wx.Bitmap(image)
dc.DrawBitmap(bitmap, 10, 10, True)
image= self.image2.AdjustChannels(self.factorred, self.factorgreen, self.factorblue, self.factoralpha)
- bitmap= wx.BitmapFromImage(image)
+ bitmap= wx.Bitmap(image)
dc.DrawBitmap(bitmap, 10, 110, True)
def OnSize(self, event):
self.Refresh()
-
- def OnEraseBackground(self, event):
- pass
-
+ def OnEraseBackground(self, event):
+ pass
+
+
#----------------------------------------------------------------------
def runTest(frame, nb, log):
diff --git a/demo/AlphaDrawing.py b/demo/AlphaDrawing.py
index 6fb15a97..9649d0a7 100644
--- a/demo/AlphaDrawing.py
+++ b/demo/AlphaDrawing.py
@@ -34,7 +34,7 @@ then these squares should be transparent.
dc.SetPen(wx.Pen(penclr))
dc.SetBrush(wx.Brush(brushclr))
rect.SetPosition(pos)
- dc.DrawRoundedRectangleRect(rect, 8)
+ dc.DrawRoundedRectangle(rect, 8)
# some additional testing stuff
#dc.SetPen(wx.Pen(wx.Colour(0,0,255, 196)))
diff --git a/demo/AnimateCtrl.py b/demo/AnimateCtrl.py
index d4a2db95..29cb4dbe 100644
--- a/demo/AnimateCtrl.py
+++ b/demo/AnimateCtrl.py
@@ -1,6 +1,6 @@
import wx
-import wx.animate
+from wx.adv import Animation, AnimationCtrl
from Main import opj
GIFNames = [
@@ -21,14 +21,14 @@ class TestPanel(wx.Panel):
sizer = wx.FlexGridSizer(cols=3, hgap=5, vgap=5)
for name in GIFNames:
- ani = wx.animate.Animation(opj(name))
- ctrl = wx.animate.AnimationCtrl(self, -1, ani)
- ctrl.SetUseWindowBackgroundColour()
+ ani = Animation(opj(name))
+ ctrl = AnimationCtrl(self, -1, ani)
+ ctrl.SetBackgroundColour(self.GetBackgroundColour())
ctrl.Play()
- sizer.AddF(ctrl, wx.SizerFlags().Border(wx.ALL, 10))
+ sizer.Add(ctrl, 0, wx.ALL, 10)
border = wx.BoxSizer()
- border.AddF(sizer, wx.SizerFlags(1).Expand().Border(wx.ALL, 20))
+ border.Add(sizer, 1, wx.EXPAND | wx.ALL, 20)
self.SetSizer(border)
diff --git a/demo/ArtProvider.py b/demo/ArtProvider.py
index 774fdf1b..b9c6c344 100644
--- a/demo/ArtProvider.py
+++ b/demo/ArtProvider.py
@@ -107,7 +107,7 @@ class MyArtProvider(wx.ArtProvider):
elif artid == wx.ART_TICK_MARK:
bmp = makeBitmap(tick_png)
- if bmp.Ok():
+ if bmp.IsOk():
self.log.write("MyArtProvider: providing %s:%s at %s\n" %(artid, client, size))
return bmp
@@ -150,7 +150,7 @@ class TestPanel(wx.Panel):
fgs.Add((10, 10), 0, wx.ALIGN_CENTRE|wx.ALL, 5)
box = wx.BoxSizer(wx.VERTICAL)
- bmp = wx.EmptyBitmap(16,16)
+ bmp = wx.Bitmap(16,16)
self.bmp16 = wx.StaticBitmap(self, -1, bmp)
box.Add(self.bmp16, 0, wx.ALIGN_CENTRE|wx.ALL, 5)
text = wx.StaticText(self, -1, "16x16")
@@ -159,7 +159,7 @@ class TestPanel(wx.Panel):
fgs.Add(box, 0, wx.ALIGN_CENTRE|wx.ALL, 5)
box = wx.BoxSizer(wx.VERTICAL)
- bmp = wx.EmptyBitmap(32,32)
+ bmp = wx.Bitmap(32,32)
self.bmp32 = wx.StaticBitmap(self, -1, bmp)
box.Add(self.bmp32, 0, wx.ALIGN_CENTRE|wx.ALL, 5)
text = wx.StaticText(self, -1, "32x32")
@@ -168,7 +168,7 @@ class TestPanel(wx.Panel):
fgs.Add(box, 0, wx.ALIGN_CENTRE|wx.ALL, 5)
box = wx.BoxSizer(wx.VERTICAL)
- bmp = wx.EmptyBitmap(48,48)
+ bmp = wx.Bitmap(48,48)
self.bmp48 = wx.StaticBitmap(self, -1, bmp)
box.Add(self.bmp48, 0, wx.ALIGN_CENTRE|wx.ALL, 5)
text = wx.StaticText(self, -1, "48x48")
@@ -210,24 +210,24 @@ class TestPanel(wx.Panel):
bmp = wx.ArtProvider.GetBitmap(self.artid, self.client, (16,16))
- if not bmp.Ok():
- bmp = wx.EmptyBitmap(16,16)
+ if not bmp.IsOk():
+ bmp = wx.Bitmap(16,16)
self.clearBmp(bmp)
self.bmp16.SetBitmap(bmp)
bmp = wx.ArtProvider.GetBitmap(self.artid, self.client, (32,32))
- if not bmp.Ok():
- bmp = wx.EmptyBitmap(32,32)
+ if not bmp.IsOk():
+ bmp = wx.Bitmap(32,32)
self.clearBmp(bmp)
self.bmp32.SetBitmap(bmp)
bmp = wx.ArtProvider.GetBitmap(self.artid, self.client, (48,48))
- if not bmp.Ok():
- bmp = wx.EmptyBitmap(48,48)
+ if not bmp.IsOk():
+ bmp = wx.Bitmap(48,48)
self.clearBmp(bmp)
self.bmp48.SetBitmap(bmp)
@@ -238,7 +238,7 @@ class TestPanel(wx.Panel):
dc.SelectObject(bmp)
dc.SetBackground(wx.Brush("white"))
dc.Clear()
-
+
#----------------------------------------------------------------------
@@ -276,7 +276,7 @@ provided by wx.ArtProvider.GetBitmap or wx.ArtProvider.GetIcon methods.
def makeBitmap(data):
stream = cStringIO.StringIO(data)
- return wx.BitmapFromImage(wx.ImageFromStream(stream))
+ return wx.Bitmap(wx.Image(stream))
back_png = \
diff --git a/demo/BannerWindow.py b/demo/BannerWindow.py
new file mode 100644
index 00000000..8fae2738
--- /dev/null
+++ b/demo/BannerWindow.py
@@ -0,0 +1 @@
+#!/usr/bin/env python
# -*- coding: utf-8 -*-
import wx
import wx.adv
phoenix = ("A phoenix is a mythical bird with a colorful plumage and a tail of gold and scarlet \n"
"(or purple and blue, according to some sources). It has a 500 to 1,000 year life-cycle, \n"
"near the end of which it builds itself a nest of myrrh twigs that then ignites; both nest \n"
"and bird burn fiercely and are reduced to ashes, from which a new, young phoenix or phoenix \n"
"egg arises, reborn anew to live again. The new phoenix is destined to live as long as its old \n"
"self. In some stories, the new phoenix embalms the ashes of its old self in an egg made of myrrh \n"
"and deposits it in the Egyptian city of Heliopolis (sun city in Greek). The bird was also said to \n"
"regenerate when hurt or wounded by a foe, thus being immortal and invincible - it is also said that \n"
"it can heal a person with a tear from its eyes and make them temporarily immune to death. \n"
"The Phoenix is a symbol of fire and divinity. ")
class MyBannerWindowFrame(wx.Frame):
def __init__(self, parent, id, title):
# ... create the frame itself ...
wx.Frame.__init__(self, parent, id, title)
# Set background Colour. This will become the black border
self.SetBackgroundColour(wx.BLACK)
pnxBmp = wx.Bitmap('bitmaps/phoenix_top.png')
bmpsz = pnxBmp.GetSize()
# Create and initialize the banner.
whitePanel = wx.Panel(self, -1, size=(-1, bmpsz[1]))
whitePanel.SetBackgroundColour(wx.WHITE)
# Create and initialize the 1st banner and define a bitmap.
banner1 = wx.adv.BannerWindow(whitePanel, dir=wx.BOTTOM)
banner1.SetBitmap(pnxBmp)
whiteSizer = wx.BoxSizer(wx.HORIZONTAL)
whiteSizer.Add(banner1, 1)
whitePanel.SetSizer(whiteSizer)
# Create and initialize the 2nd banner and define the gradient text.
banner2 = wx.adv.BannerWindow(self, dir=wx.TOP)
banner2.SetGradient(start='#FF8000', end='#FFFFFF')
banner2.SetText(phoenix, "")
# Layout
vsizer = wx.BoxSizer(wx.VERTICAL)
vsizer.Add(whitePanel, 0, wx.EXPAND | wx.TOP | wx.LEFT | wx.RIGHT, 5)
vsizer.Add(banner2, 1, wx.BOTTOM | wx.LEFT | wx.RIGHT, 5)
self.SetSizer(vsizer)
class TestPanel(wx.Panel):
def __init__(self, parent, log):
self.log = log
wx.Panel.__init__(self, parent, -1)
b = wx.Button(self, -1, "Create and Show a BannerWindow", (50,50))
self.Bind(wx.EVT_BUTTON, self.OnButton, b)
def OnButton(self, evt):
win = MyBannerWindowFrame(self, -1, "This is a BannerWindow")
win.SetSize((700, 350))
win.CenterOnParent(wx.BOTH)
win.Show(True)
def runTest(frame, nb, log):
win = TestPanel(nb, log)
return win
#---------------------------------------------------------------------------
overview = """\
A simple banner window showing either a bitmap or text.
Banner windows can be used to present some overview of the current window contents
to the user in an aesthetically pleasant way. They are typically positioned along
the left or top edge of the window (although this class also supports right-aligned
and bottom-aligned banners) and show either a bitmap with a logo or a few lines of
text on a gradient-filled background.
"""
if __name__ == '__main__':
app = wx.App()
win = MyBannerWindowFrame(None, -1, "This is a BannerWindow")
win.SetSize((700, 350))
win.CenterOnParent(wx.BOTH)
win.Show(True)
app.MainLoop()
\ No newline at end of file
diff --git a/demo/BitmapButton.py b/demo/BitmapButton.py
index 0bd5ed03..a3ae3d94 100644
--- a/demo/BitmapButton.py
+++ b/demo/BitmapButton.py
@@ -34,22 +34,22 @@ class TestPanel(wx.Panel):
bmp.SetMask(mask)
b = wx.BitmapButton(self, -1, bmp, (20, 20),
(bmp.GetWidth()+10, bmp.GetHeight()+10))
- b.SetToolTipString("This is a bitmap button.")
+ b.SetToolTip("This is a bitmap button.")
self.Bind(wx.EVT_BUTTON, self.OnClick, b)
b = wx.BitmapButton(self, -1, bmp, (20, 120),
style = wx.NO_BORDER)
-
+
# hide a little surprise in the button...
img = images.Robin.GetImage()
# we need to make it be the same size as the primary image, so
# grab a subsection of this new image
cropped = img.GetSubImage((20, 20, bmp.GetWidth(), bmp.GetHeight()))
- b.SetBitmapSelected(cropped.ConvertToBitmap())
+ b.SetBitmapPressed(cropped.ConvertToBitmap())
- b.SetToolTipString("This is a bitmap button with \nwx.NO_BORDER style.")
+ b.SetToolTip("This is a bitmap button with \nwx.NO_BORDER style.")
self.Bind(wx.EVT_BUTTON, self.OnClick, b)
-
+
def OnClick(self, event):
self.log.write("Click! (%d)\n" % event.GetId())
@@ -69,7 +69,7 @@ overview = """
A BitmapButton control displays a bitmap. It can have a separate bitmap for each button state: normal, selected, disabled.
-The bitmaps to be displayed should have a small number of colours, such as 16,
+
The bitmaps to be displayed should have a small number of colours, such as 16,
to avoid palette problems.
A bitmap can be derived from most image formats using the wx.Image class.
diff --git a/demo/BitmapComboBox.py b/demo/BitmapComboBox.py
index 30d9f549..8a15d2c2 100644
--- a/demo/BitmapComboBox.py
+++ b/demo/BitmapComboBox.py
@@ -1,6 +1,6 @@
import wx
-import wx.combo
+import wx.adv
import images
@@ -11,8 +11,8 @@ class TestPanel(wx.Panel):
self.log = log
wx.Panel.__init__(self, parent, -1)
- bcb1 = wx.combo.BitmapComboBox(self, pos=(25,25), size=(200,-1))
- bcb2 = wx.combo.BitmapComboBox(self, pos=(250,25), size=(200,-1))
+ bcb1 = wx.adv.BitmapComboBox(self, pos=(25,25), size=(200,-1))
+ bcb2 = wx.adv.BitmapComboBox(self, pos=(250,25), size=(200,-1))
for bcb in [bcb1, bcb2]:
for x in range(12):
@@ -32,7 +32,7 @@ class TestPanel(wx.Panel):
cd = bcb.GetClientData(idx)
self.log.write("EVT_COMBOBOX: Id %d, string '%s', clientData '%s'" % (idx, st, cd))
-
+
#----------------------------------------------------------------------
def runTest(frame, nb, log):
diff --git a/demo/BitmapFromBuffer.py b/demo/BitmapFromBuffer.py
index 69f2c066..15345b75 100644
--- a/demo/BitmapFromBuffer.py
+++ b/demo/BitmapFromBuffer.py
@@ -10,7 +10,7 @@ class TestPanel(wx.Panel):
wx.Panel.__init__(self, parent, -1)
self.Bind(wx.EVT_PAINT, self.OnPaint)
self.width, self.height = 120,120
-
+
self.MakeBitmapRGB(self.width, self.height)
self.MakeBitmapRGBA(self.width, self.height)
self.MakeBitmapRGBpA(self.width, self.height)
@@ -28,7 +28,6 @@ class TestPanel(wx.Panel):
else:
return r, g, b
-
def MakeBitmapRGB(self, width, height):
# Make a bitmap using an array of RGB bytes
bpp = 3 # bytes per pixel
@@ -42,9 +41,7 @@ class TestPanel(wx.Panel):
bytes[offset + 1] = g
bytes[offset + 2] = b
- self.rgbBmp = wx.BitmapFromBuffer(width, height, bytes)
-
-
+ self.rgbBmp = wx.Bitmap().FromBuffer(width, height, bytes)
def MakeBitmapRGBA(self, width, height):
# Make a bitmap using an array of RGBA bytes
@@ -60,8 +57,7 @@ class TestPanel(wx.Panel):
bytes[offset + 2] = b
bytes[offset + 3] = a
- self.rgbaBmp = wx.BitmapFromBufferRGBA(width, height, bytes)
-
+ self.rgbaBmp = wx.Bitmap().FromBufferRGBA(width, height, bytes)
def MakeBitmapRGBpA(self, width, height):
# Make a bitmap using an array of RGB bytes plus a separate
@@ -81,8 +77,7 @@ class TestPanel(wx.Panel):
# pixels for this example, it could just as easily have
# varying alpha values like the other sample.
alpha = array.array('B', [128]*width*height)
- self.rgbaBmp2 = wx.BitmapFromBuffer(width, height, bytes, alpha)
-
+ self.rgbaBmp2 = wx.Bitmap().FromBufferAndAlpha(width, height, bytes, alpha)
def DrawBitmapAndMessage(self, dc, bmp, msg, x_, y_):
x, y = x_, y_
@@ -96,7 +91,6 @@ class TestPanel(wx.Panel):
# draw the bitmap over the text
dc.DrawBitmap(bmp, x+15,y_+15, True)
-
def OnPaint(self, evt):
dc = wx.PaintDC(self)
self.DrawBitmapAndMessage(dc, self.rgbBmp, "No alpha channel in this image", 30,35)
@@ -104,9 +98,6 @@ class TestPanel(wx.Panel):
self.DrawBitmapAndMessage(dc, self.rgbaBmp2,"This one made with RGB+A", 180,220)
-
-
-
#----------------------------------------------------------------------
def runTest(frame, nb, log):
diff --git a/demo/Button.py b/demo/Button.py
index 9493ae2d..bde3f382 100644
--- a/demo/Button.py
+++ b/demo/Button.py
@@ -15,17 +15,17 @@ class TestPanel(wx.Panel):
b.SetDefault()
b.SetSize(b.GetBestSize())
- b = wx.Button(self, 20, "HELLO AGAIN!", (20, 80))
+ b = wx.Button(self, 20, "HELLO AGAIN!", (20, 80))
self.Bind(wx.EVT_BUTTON, self.OnClick, b)
- b.SetToolTipString("This is a Hello button...")
+ b.SetToolTip("This is a Hello button...")
b = wx.Button(self, 40, "Flat Button?", (20,160), style=wx.NO_BORDER)
- b.SetToolTipString("This button has a style flag of wx.NO_BORDER.\n"
+ b.SetToolTip("This button has a style flag of wx.NO_BORDER.\n"
"On some platforms that will give it a flattened look.")
self.Bind(wx.EVT_BUTTON, self.OnClick, b)
b = wx.Button(self, 50, "wx.Button with icon", (20, 220))
- b.SetToolTipString("wx.Button can how have an icon on the left, right,\n"
+ b.SetToolTip("wx.Button can how have an icon on the left, right,\n"
"above or below the label.")
self.Bind(wx.EVT_BUTTON, self.OnClick, b)
@@ -36,16 +36,16 @@ class TestPanel(wx.Panel):
#wx.BOTTOM
)
b.SetBitmapMargins((2,2)) # default is 4 but that seems too big to me.
-
+
# Setting the bitmap and margins changes the best size, so
# reset the initial size since we're not using a sizer in this
# example which would have taken care of this for us.
- b.SetInitialSize()
+ b.SetInitialSize()
#b = wx.Button(self, 60, "Multi-line\nbutton", (20, 280))
#b = wx.Button(self, 70, pos=(160, 280))
#b.SetLabel("Another\nmulti-line")
-
+
def OnClick(self, event):
self.log.write("Click! (%d)\n" % event.GetId())
diff --git a/demo/Calendar.py b/demo/Calendar.py
index 562844f4..224e8270 100644
--- a/demo/Calendar.py
+++ b/demo/Calendar.py
@@ -16,7 +16,7 @@
#
# o Ugh. AFter updating to the Bind() method, things lock up
# on various control clicks. Will have to debug. Only seems
-# to happen on windows with calendar controls, though.
+# to happen on windows with calendar controls, though.
#
# 11/30/2003 - Jeff Grimmett (grimmtooth@softhome.net)
#
@@ -27,7 +27,7 @@
import os
import wx
-import wx.lib.calendar
+import wx.lib.calendar
import images
@@ -637,13 +637,13 @@ def runTest(frame, nb, log):
overview = """\
-This control provides a Calendar control class for displaying and selecting dates.
+This control provides a Calendar control class for displaying and selecting dates.
In addition, the class is extended and can be used for printing/previewing.
-Additional features include weekend highlighting and business type Monday-Sunday
+Additional features include weekend highlighting and business type Monday-Sunday
format.
-See example for various methods used to set display month, year, and highlighted
+See example for various methods used to set display month, year, and highlighted
dates (different font and background colours).
by Lorne White
diff --git a/demo/CalendarCtrl.py b/demo/CalendarCtrl.py
index f7902fec..d592a62a 100644
--- a/demo/CalendarCtrl.py
+++ b/demo/CalendarCtrl.py
@@ -1,6 +1,7 @@
-import wx
-import wx.calendar as wxcal
+import wx
+import wx.adv
+from wx.adv import CalendarCtrl
#----------------------------------------------------------------------
@@ -20,19 +21,19 @@ class TestPanel(wx.Panel):
wx.Panel.__init__(self, parent, ID)
self.log = log
- native = wxcal.CalendarCtrl(self, -1, wx.DateTime.Today(),
- style=wxcal.CAL_SEQUENTIAL_MONTH_SELECTION)
+ native = self.cal = CalendarCtrl(self, -1, wx.DateTime().Today(),
+ style=wx.adv.CAL_SEQUENTIAL_MONTH_SELECTION)
txt = wx.StaticText(self, -1, description)
txt.Wrap(300)
- cal = self.cal = wxcal.GenericCalendarCtrl(self, -1, wx.DateTime.Today(),
- style = wxcal.CAL_SHOW_HOLIDAYS
- | wxcal.CAL_SUNDAY_FIRST
- | wxcal.CAL_SEQUENTIAL_MONTH_SELECTION
- )
+ # 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
+ # )
- cal2 = wxcal.GenericCalendarCtrl(self, -1, wx.DateTime.Today())
+ # cal2 = wxcal.GenericCalendarCtrl(self, -1, wx.DateTime().Today())
# Track a few holidays
@@ -41,22 +42,22 @@ class TestPanel(wx.Panel):
# bind some event handlers to each calendar
- for c in native, cal, cal2:
- c.Bind(wxcal.EVT_CALENDAR, self.OnCalSelected)
- c.Bind(wxcal.EVT_CALENDAR_MONTH, self.OnChangeMonth)
- c.Bind(wxcal.EVT_CALENDAR_SEL_CHANGED, self.OnCalSelChanged)
- c.Bind(wxcal.EVT_CALENDAR_WEEKDAY_CLICKED, self.OnCalWeekdayClicked)
+ 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_SEL_CHANGED, self.OnCalSelChanged)
+ c.Bind(wx.adv.EVT_CALENDAR_WEEKDAY_CLICKED, self.OnCalWeekdayClicked)
# create some sizers for layout
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())
@@ -84,7 +85,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=wxcal.CAL_BORDER_SQUARE,
+ attr = wxcal.CalendarDateAttr(border=wx.adv.CAL_BORDER_SQUARE,
colBorder="blue")
cal.SetAttr(14, attr)
else:
diff --git a/demo/CheckBox.py b/demo/CheckBox.py
index c54edafe..0bc5b45d 100644
--- a/demo/CheckBox.py
+++ b/demo/CheckBox.py
@@ -14,11 +14,11 @@ class TestCheckBox(wx.Panel):
cb2 = wx.CheckBox(self, -1, "Oranges")#, (65, 60), (150, 20), wx.NO_BORDER)
cb2.SetValue(True)
cb3 = wx.CheckBox(self, -1, "Pears")#, (65, 80), (150, 20), wx.NO_BORDER)
-
+
cb4 = wx.CheckBox(self, -1, "3-state checkbox",
style=wx.CHK_3STATE|wx.CHK_ALLOW_3RD_STATE_FOR_USER)
cb5 = wx.CheckBox(self, -1, "Align Right", style=wx.ALIGN_RIGHT)
-
+
self.Bind(wx.EVT_CHECKBOX, self.EvtCheckBox, cb1)
self.Bind(wx.EVT_CHECKBOX, self.EvtCheckBox, cb2)
@@ -40,14 +40,14 @@ class TestCheckBox(wx.Panel):
border.Add(st, 0, wx.ALL, 15)
border.Add(sizer, 0, wx.LEFT, 50)
self.SetSizer(border)
-
+
def EvtCheckBox(self, event):
self.log.write('EvtCheckBox: %d\n' % event.IsChecked())
cb = event.GetEventObject()
if cb.Is3State():
self.log.write("\t3StateValue: %s\n" % cb.Get3StateValue())
-
+
#---------------------------------------------------------------------------
@@ -59,7 +59,7 @@ def runTest(frame, nb, log):
overview = """\
-A checkbox is a labelled box which is either on (checkmark is visible) or off
+A checkbox is a labelled box which is either on (checkmark is visible) or off
(no checkmark).
"""
diff --git a/demo/CheckListCtrlMixin.py b/demo/CheckListCtrlMixin.py
index 0742b146..448aa2a2 100644
--- a/demo/CheckListCtrlMixin.py
+++ b/demo/CheckListCtrlMixin.py
@@ -15,7 +15,7 @@ class CheckListCtrl(wx.ListCtrl, CheckListCtrlMixin):
def OnItemActivated(self, evt):
- self.ToggleItem(evt.m_itemIndex)
+ self.ToggleItem(evt.Index)
# this is called by the base class when an item is checked/unchecked
@@ -46,10 +46,10 @@ class TestPanel(wx.Panel):
for key, data in musicdata.iteritems():
index = self.list.InsertStringItem(sys.maxint, data[0])
- self.list.SetStringItem(index, 1, data[1])
- self.list.SetStringItem(index, 2, data[2])
+ self.list.SetItem(index, 1, data[1])
+ self.list.SetItem(index, 2, data[2])
self.list.SetItemData(index, key)
-
+
self.list.SetColumnWidth(0, wx.LIST_AUTOSIZE)
self.list.SetColumnWidth(1, wx.LIST_AUTOSIZE)
self.list.SetColumnWidth(2, 100)
@@ -60,13 +60,13 @@ class TestPanel(wx.Panel):
self.Bind(wx.EVT_LIST_ITEM_SELECTED, self.OnItemSelected, self.list)
self.Bind(wx.EVT_LIST_ITEM_DESELECTED, self.OnItemDeselected, self.list)
-
+
def OnItemSelected(self, evt):
- self.log.write('item selected: %s\n' % evt.m_itemIndex)
-
+ self.log.write('item selected: %s\n' % evt.Index)
+
def OnItemDeselected(self, evt):
- self.log.write('item deselected: %s\n' % evt.m_itemIndex)
-
+ self.log.write('item deselected: %s\n' % evt.Index)
+
#----------------------------------------------------------------------
diff --git a/demo/Choice.py b/demo/Choice.py
index ef9db235..15eccacb 100644
--- a/demo/Choice.py
+++ b/demo/Choice.py
@@ -20,7 +20,7 @@ class TestChoice(wx.Panel):
def EvtChoice(self, event):
self.log.WriteText('EvtChoice: %s\n' % event.GetString())
self.ch.Append("A new item")
-
+
if event.GetString() == 'one':
self.log.WriteText('Well done!\n')
@@ -34,15 +34,15 @@ def runTest(frame, nb, log):
#---------------------------------------------------------------------------
overview = """
-A Choice control is used to select one of a list of strings. Unlike a listbox,
-only the current selection is visible until the user pulls down the menu of
+A Choice control is used to select one of a list of strings. Unlike a listbox,
+only the current selection is visible until the user pulls down the menu of
choices.
This demo illustrates how to set up the Choice control and how to extract the
-selected choice once it is selected.
+selected choice once it is selected.
Note that the syntax of the constructor is different than the C++ implementation.
-The number of choices and the choice array are consilidated into one python
+The number of choices and the choice array are consilidated into one python
list.
"""
diff --git a/demo/ColorPanel.py b/demo/ColorPanel.py
index 29ef92c1..6c916e2c 100644
--- a/demo/ColorPanel.py
+++ b/demo/ColorPanel.py
@@ -1,5 +1,5 @@
#
-# Note: this module is not a demo per se, but is used by many of
+# Note: this module is not a demo per se, but is used by many of
# the demo modules for various purposes.
#
diff --git a/demo/ColourDB.py b/demo/ColourDB.py
index 4cce7599..b297e9b9 100644
--- a/demo/ColourDB.py
+++ b/demo/ColourDB.py
@@ -28,10 +28,10 @@ class TestWindow(wx.ScrolledWindow):
# Using GetFullTextExtent(), we calculate a basic 'building block'
# that will be used to draw a depiction of the color list. We're
- # using 'Wy' as the model becuase 'W' is a wide character and 'y'
+ # using 'Wy' as the model becuase 'W' is a wide character and 'y'
# has a descender. This constitutes a 'worst case' scenario, which means
# that no matter what we draw later, text-wise, we'll have room for it
- w,h,d,e = dc.GetFullTextExtent("Wy")
+ w,h,d,e = dc.GetFullTextExtent("Wy")
# Height plus descender
self.textHeight = h + d
@@ -44,12 +44,12 @@ class TestWindow(wx.ScrolledWindow):
# jmg 11/8/03: why 24?
numCells = 24
-
+
# 'prep' our scroll bars.
self.SetScrollbars(
self.cellWidth, self.lineHeight, numCells, len(self.clrList) + 2
)
-
+
# Bind event handlers
self.SetBackgroundStyle(wx.BG_STYLE_ERASE)
self.Bind(wx.EVT_PAINT, self.OnPaint)
@@ -103,7 +103,7 @@ class TestWindow(wx.ScrolledWindow):
numColours = len(colours)
if rgn:
- # determine the subset of the color list that has been exposed
+ # determine the subset of the color list that has been exposed
# and needs drawn. This is based on all the precalculation we
# did in __init__()
rect = rgn.GetBox()
@@ -125,14 +125,14 @@ class TestWindow(wx.ScrolledWindow):
dc.SetBrush(brush)
dc.DrawRectangle(10 * self.cellWidth, y,
6 * self.cellWidth, self.textHeight)
-
+
dc.DrawText(str(tuple(colours[line][1:])),
18 * self.cellWidth, y)
hexstr = "#%02X%02X%02X" % tuple(colours[line][1:])
dc.DrawText(hexstr, 25 * self.cellWidth, y)
-
+
# On wxGTK there needs to be a panel under wx.ScrolledWindows if they are
# going to be in a wxNotebook. And, in this demo, we are.
class TestPanel(wx.Panel):
@@ -170,9 +170,9 @@ overview = """
ColourDB
-wxWindows maintains a database of standard RGB colours for a predefined
-set of named colours (such as "BLACK'', "LIGHT GREY''). The application
-may add to this set if desired by using Append. There is only one instance
+
wxWindows maintains a database of standard RGB colours for a predefined
+set of named colours (such as "BLACK'', "LIGHT GREY''). The application
+may add to this set if desired by using Append. There is only one instance
of this class: TheColourDatabase.
The colourdb library is a lightweight API that pre-defines
@@ -188,7 +188,7 @@ font data to generate a "building block" type of construct for repetitive use.
With implementation of V2.5 and later, it is required to have a wx.App already
-initialized before wx.updateColourDB() can be called.
+initialized before wx.updateColourDB() can be called.
Trying to do otherwise will cause an exception to be raised.
diff --git a/demo/ColourDialog.py b/demo/ColourDialog.py
index 13422421..74678b80 100644
--- a/demo/ColourDialog.py
+++ b/demo/ColourDialog.py
@@ -1,5 +1,5 @@
-
-import wx
+
+import wx
#---------------------------------------------------------------------------
@@ -15,7 +15,7 @@ class TestPanel(wx.Panel):
def OnButton(self, evt):
dlg = wx.ColourDialog(self)
- # Ensure the full colour dialog is displayed,
+ # Ensure the full colour dialog is displayed,
# not the abbreviated version.
dlg.GetColourData().SetChooseFull(True)
@@ -27,7 +27,10 @@ class TestPanel(wx.Panel):
# ... then do something with it. The actual colour data will be
# returned as a three-tuple (r, g, b) in this particular case.
- self.log.WriteText('You selected: %s\n' % str(data.GetColour().Get()))
+ color = data.GetColour().Get()
+ self.log.WriteText('You selected: %s\n' % str(color))
+ self.SetBackgroundColour(color)
+ self.Refresh()
# Once the dialog is destroyed, Mr. wx.ColourData is no longer your
# friend. Don't use it again!
@@ -47,21 +50,21 @@ def runTest(frame, nb, log):
overview = """\
This class represents the colour chooser dialog.
-Use of this dialog is a multi-stage process.
+Use of this dialog is a multi-stage process.
-The actual information about how to display the dialog and the colors in the
-dialog's 'registers' are contained in a wx.ColourData instance that is created by
-the dialog at init time. Before displaying the dialog, you may alter these settings
-to suit your needs. In the example, we set the dialog up to show the extended colour
-data selection pane. Otherwise, only the more compact and less extensive colour
-dialog is shown. You may also preset the colour as well as other items.
+The actual information about how to display the dialog and the colors in the
+dialog's 'registers' are contained in a wx.ColourData instance that is created by
+the dialog at init time. Before displaying the dialog, you may alter these settings
+to suit your needs. In the example, we set the dialog up to show the extended colour
+data selection pane. Otherwise, only the more compact and less extensive colour
+dialog is shown. You may also preset the colour as well as other items.
If the user selects something and selects OK, then the wx.ColourData instance contains
the colour data that the user selected. Before destroying the dialog, retrieve the data.
Do not try to retain the wx.ColourData instance. It will probably not be valid
after the dialog is destroyed.
-Along with he wx.ColourDialog documentation, see also the wx.ColourData documentation
+Along with he wx.ColourDialog documentation, see also the wx.ColourData documentation
for details.
"""
diff --git a/demo/ColourSelect.py b/demo/ColourSelect.py
index d255708d..f3aa1aaa 100644
--- a/demo/ColourSelect.py
+++ b/demo/ColourSelect.py
@@ -15,7 +15,7 @@
# - use sizers
# - other minor "improvements"
#----------------------------------------------------------------------------
-#
+#
import wx
import wx.lib.colourselect as csel
@@ -44,7 +44,7 @@ class TestColourSelect(wx.Panel):
self.colourDefaults = csel.ColourSelect(self, -1)
self.Bind(csel.EVT_COLOURSELECT, self.OnSelectColour, id=self.colourDefaults.GetId())
-
+
buttonSizer.AddMany([
(wx.StaticText(self, -1, "Default Colour/Size"), 0, wx.ALIGN_RIGHT | wx.ALIGN_CENTER_VERTICAL),
(self.colourDefaults, 0, wx.ALL, 3),
diff --git a/demo/ComboBox.py b/demo/ComboBox.py
index c4d6623c..cdf9b1c1 100644
--- a/demo/ComboBox.py
+++ b/demo/ComboBox.py
@@ -5,11 +5,11 @@ import wx
class TestComboBox(wx.Panel):
def OnSetFocus(self, evt):
- print "OnSetFocus"
+ # print("OnSetFocus")
evt.Skip()
def OnKillFocus(self, evt):
- print "OnKillFocus"
+ # print("OnKillFocus")
evt.Skip()
def __init__(self, parent, log):
@@ -24,7 +24,7 @@ class TestComboBox(wx.Panel):
wx.StaticText(self, -1, "Select one:", (15, 50), (75, 18))
# This combobox is created with a preset list of values.
- cb = wx.ComboBox(self, 500, "default value", (90, 50),
+ cb = wx.ComboBox(self, 500, "default value", (90, 50),
(160, -1), sampleList,
wx.CB_DROPDOWN
#| wx.TE_PROCESS_ENTER
@@ -80,13 +80,13 @@ def runTest(frame, nb, log):
overview = """\
-A ComboBox is like a combination of an edit control and a listbox. It can be
-displayed as static list with editable or read-only text field; or a drop-down
+A ComboBox is like a combination of an edit control and a listbox. It can be
+displayed as static list with editable or read-only text field; or a drop-down
list with text field; or a drop-down list without a text field.
This example shows both a preset ComboBox and one that is dynamically created
-(that is, it is initially empty but then we 'grow' it out of program-supplied
-data). The former is common for read-only controls.
+(that is, it is initially empty but then we 'grow' it out of program-supplied
+data). The former is common for read-only controls.
This example also shows the two form factors for the ComboBox. The first is more
common, and resembles a Choice control. The latter, although less common, shows
diff --git a/demo/ComboCtrl.py b/demo/ComboCtrl.py
index eb2de5a1..02ec6a8f 100644
--- a/demo/ComboCtrl.py
+++ b/demo/ComboCtrl.py
@@ -1,49 +1,27 @@
import wx
-import wx.combo
+
import os
#----------------------------------------------------------------------
-class NullLog:
- def write(*args):
- pass
+#----------------------------------------------------------------------
+# This class is used to provide an interface between a ComboCtrl and the
+# ListCtrl that is used as the popoup for the combo widget.
+class ListCtrlComboPopup(wx.ComboPopup):
-# This class is used to provide an interface between a ComboCtrl and a
-# ListCtrl that is used as the popoup for the combo widget. In this
-# case we use multiple inheritance to derive from both wx.ListCtrl and
-# wx.ComboPopup, but it also works well when deriving from just
-# ComboPopup and using a has-a relationship with the popup control,
-# you just need to be sure to return the control itself from the
-# GetControl method.
-
-class ListCtrlComboPopup(wx.ListCtrl, wx.combo.ComboPopup):
-
- def __init__(self, log=None):
- if log:
- self.log = log
- else:
- self.log = NullLog()
-
-
- # Since we are using multiple inheritance, and don't know yet
- # which window is to be the parent, we'll do 2-phase create of
- # the ListCtrl instead, and call its Create method later in
- # our Create method. (See Create below.)
- self.PostCreate(wx.PreListCtrl())
-
- # Also init the ComboPopup base class.
- wx.combo.ComboPopup.__init__(self)
-
+ def __init__(self):
+ wx.ComboPopup.__init__(self)
+ self.lc = None
def AddItem(self, txt):
- self.InsertStringItem(self.GetItemCount(), txt)
+ self.lc.InsertItem(self.lc.GetItemCount(), txt)
def OnMotion(self, evt):
- item, flags = self.HitTest(evt.GetPosition())
+ item, flags = self.lc.HitTest(evt.GetPosition())
if item >= 0:
- self.Select(item)
+ self.lc.Select(item)
self.curitem = item
def OnLeftDown(self, evt):
@@ -55,73 +33,59 @@ class ListCtrlComboPopup(wx.ListCtrl, wx.combo.ComboPopup):
# ComboPopup base class. Most of them are not required, but all
# are shown here for demonstration purposes.
-
# This is called immediately after construction finishes. You can
# use self.GetCombo if needed to get to the ComboCtrl instance.
def Init(self):
- self.log.write("ListCtrlComboPopup.Init")
self.value = -1
self.curitem = -1
-
# Create the popup child control. Return true for success.
def Create(self, parent):
- self.log.write("ListCtrlComboPopup.Create")
- wx.ListCtrl.Create(self, parent,
- style=wx.LC_LIST|wx.LC_SINGLE_SEL|wx.SIMPLE_BORDER)
- #self.Bind(wx.EVT_MOTION, self.OnMotion)
- self.Bind(wx.EVT_LEFT_DOWN, self.OnLeftDown)
+ self.lc = wx.ListCtrl(parent, style=wx.LC_LIST | wx.LC_SINGLE_SEL | wx.SIMPLE_BORDER)
+ self.lc.Bind(wx.EVT_MOTION, self.OnMotion)
+ self.lc.Bind(wx.EVT_LEFT_DOWN, self.OnLeftDown)
return True
-
# Return the widget that is to be used for the popup
def GetControl(self):
- #self.log.write("ListCtrlComboPopup.GetControl")
- return self
+ return self.lc
# Called just prior to displaying the popup, you can use it to
# 'select' the current item.
def SetStringValue(self, val):
- self.log.write("ListCtrlComboPopup.SetStringValue")
- idx = self.FindItem(-1, val)
+ idx = self.lc.FindItem(-1, val)
if idx != wx.NOT_FOUND:
- self.Select(idx)
+ self.lc.Select(idx)
# Return a string representation of the current item.
def GetStringValue(self):
- self.log.write("ListCtrlComboPopup.GetStringValue")
if self.value >= 0:
- return self.GetItemText(self.value)
+ return self.lc.GetItemText(self.value)
return ""
# Called immediately after the popup is shown
def OnPopup(self):
- self.log.write("ListCtrlComboPopup.OnPopup")
- wx.combo.ComboPopup.OnPopup(self)
+ wx.ComboPopup.OnPopup(self)
# Called when popup is dismissed
def OnDismiss(self):
- self.log.write("ListCtrlComboPopup.OnDismiss")
- wx.combo.ComboPopup.OnDismiss(self)
+ wx.ComboPopup.OnDismiss(self)
# This is called to custom paint in the combo control itself
# (ie. not the popup). Default implementation draws value as
# string.
def PaintComboControl(self, dc, rect):
- self.log.write("ListCtrlComboPopup.PaintComboControl")
- wx.combo.ComboPopup.PaintComboControl(self, dc, rect)
+ wx.ComboPopup.PaintComboControl(self, dc, rect)
# Receives key events from the parent ComboCtrl. Events not
# handled should be skipped, as usual.
def OnComboKeyEvent(self, event):
- self.log.write("ListCtrlComboPopup.OnComboKeyEvent")
- wx.combo.ComboPopup.OnComboKeyEvent(self, event)
+ wx.ComboPopup.OnComboKeyEvent(self, event)
# Implement if you need to support special action when user
# double-clicks on the parent wxComboCtrl.
def OnComboDoubleClick(self):
- self.log.write("ListCtrlComboPopup.OnComboDoubleClick")
- wx.combo.ComboPopup.OnComboDoubleClick(self)
+ wx.ComboPopup.OnComboDoubleClick(self)
# Return final size of popup. Called on every popup, just prior to OnPopup.
# minWidth = preferred minimum width for window
@@ -129,243 +93,15 @@ class ListCtrlComboPopup(wx.ListCtrl, wx.combo.ComboPopup):
# maxHeight = max height for window, as limited by screen size
# and should only be rounded down, if necessary.
def GetAdjustedSize(self, minWidth, prefHeight, maxHeight):
- self.log.write("ListCtrlComboPopup.GetAdjustedSize: %d, %d, %d" % (minWidth, prefHeight, maxHeight))
- return wx.combo.ComboPopup.GetAdjustedSize(self, minWidth, prefHeight, maxHeight)
+ return wx.ComboPopup.GetAdjustedSize(self, minWidth, prefHeight, maxHeight)
# Return true if you want delay the call to Create until the popup
# is shown for the first time. It is more efficient, but note that
# it is often more convenient to have the control created
- # immediately.
+ # immediately.
# Default returns false.
def LazyCreate(self):
- self.log.write("ListCtrlComboPopup.LazyCreate")
- return wx.combo.ComboPopup.LazyCreate(self)
-
-
-
-#----------------------------------------------------------------------
-# This class is a popup containing a TreeCtrl. This time we'll use a
-# has-a style (instead of is-a like above.)
-
-class TreeCtrlComboPopup(wx.combo.ComboPopup):
-
- # overridden ComboPopup methods
-
- def Init(self):
- self.value = None
- self.curitem = None
-
-
- def Create(self, parent):
- self.tree = wx.TreeCtrl(parent, style=wx.TR_HIDE_ROOT
- |wx.TR_HAS_BUTTONS
- |wx.TR_SINGLE
- |wx.TR_LINES_AT_ROOT
- |wx.SIMPLE_BORDER)
- self.tree.Bind(wx.EVT_MOTION, self.OnMotion)
- self.tree.Bind(wx.EVT_LEFT_DOWN, self.OnLeftDown)
-
-
- def GetControl(self):
- return self.tree
-
-
- def GetStringValue(self):
- if self.value:
- return self.tree.GetItemText(self.value)
- return ""
-
-
- def OnPopup(self):
- if self.value:
- self.tree.EnsureVisible(self.value)
- self.tree.SelectItem(self.value)
-
-
- def SetStringValue(self, value):
- # this assumes that item strings are unique...
- root = self.tree.GetRootItem()
- if not root:
- return
- found = self.FindItem(root, value)
- if found:
- self.value = found
- self.tree.SelectItem(found)
-
-
- def GetAdjustedSize(self, minWidth, prefHeight, maxHeight):
- return wx.Size(minWidth, min(200, maxHeight))
-
-
- # helpers
-
- def FindItem(self, parentItem, text):
- item, cookie = self.tree.GetFirstChild(parentItem)
- while item:
- if self.tree.GetItemText(item) == text:
- return item
- if self.tree.ItemHasChildren(item):
- item = self.FindItem(item, text)
- item, cookie = self.tree.GetNextChild(parentItem, cookie)
- return wx.TreeItemId();
-
-
- def AddItem(self, value, parent=None):
- if not parent:
- root = self.tree.GetRootItem()
- if not root:
- root = self.tree.AddRoot("")
- parent = root
-
- item = self.tree.AppendItem(parent, value)
- return item
-
-
- def OnMotion(self, evt):
- # have the selection follow the mouse, like in a real combobox
- item, flags = self.tree.HitTest(evt.GetPosition())
- if item and flags & wx.TREE_HITTEST_ONITEMLABEL:
- self.tree.SelectItem(item)
- self.curitem = item
- evt.Skip()
-
-
- def OnLeftDown(self, evt):
- # do the combobox selection
- item, flags = self.tree.HitTest(evt.GetPosition())
- if item and flags & wx.TREE_HITTEST_ONITEMLABEL:
- self.curitem = item
- self.value = item
- self.Dismiss()
- evt.Skip()
-
-
-#----------------------------------------------------------------------
-# Here we subclass wx.combo.ComboCtrl to do some custom popup animation
-
-CUSTOM_COMBOBOX_ANIMATION_DURATION = 200
-
-class ComboCtrlWithCustomPopupAnim(wx.combo.ComboCtrl):
- def __init__(self, *args, **kw):
- wx.combo.ComboCtrl.__init__(self, *args, **kw)
- self.Bind(wx.EVT_TIMER, self.OnTimer)
- self.aniTimer = wx.Timer(self)
-
-
- def AnimateShow(self, rect, flags):
- self.aniStart = wx.GetLocalTimeMillis()
- self.aniRect = wx.Rect(*rect)
- self.aniFlags = flags
-
- dc = wx.ScreenDC()
- bmp = wx.EmptyBitmap(rect.width, rect.height)
- mdc = wx.MemoryDC(bmp)
- if "wxMac" in wx.PlatformInfo:
- pass
- else:
- mdc.Blit(0, 0, rect.width, rect.height, dc, rect.x, rect.y)
- del mdc
- self.aniBackBitmap = bmp
-
- self.aniTimer.Start(10, wx.TIMER_CONTINUOUS)
- self.OnTimer(None)
- return False
-
-
- def OnTimer(self, evt):
- stopTimer = False
- popup = self.GetPopupControl().GetControl()
- rect = self.aniRect
- dc = wx.ScreenDC()
-
- if self.IsPopupWindowState(self.Hidden):
- stopTimer = True
- else:
- pos = wx.GetLocalTimeMillis() - self.aniStart
- if pos < CUSTOM_COMBOBOX_ANIMATION_DURATION:
- # Actual animation happens here
- width = rect.width
- height = rect.height
-
- center_x = rect.x + (width/2)
- center_y = rect.y + (height/2)
-
- dc.SetPen( wx.BLACK_PEN )
- dc.SetBrush( wx.TRANSPARENT_BRUSH )
-
- w = (((pos*256)/CUSTOM_COMBOBOX_ANIMATION_DURATION)*width)/256
- ratio = float(w) / float(width)
- h = int(height * ratio)
-
- dc.DrawBitmap( self.aniBackBitmap, rect.x, rect.y )
- dc.DrawRectangle( center_x - w/2, center_y - h/2, w, h )
- else:
- stopTimer = True
-
- if stopTimer:
- dc.DrawBitmap( self.aniBackBitmap, rect.x, rect.y )
- popup.Move( (0, 0) )
- self.aniTimer.Stop()
- self.DoShowPopup( rect, self.aniFlags )
-
-
-#----------------------------------------------------------------------
-# FileSelectorCombo displays a dialog instead of a popup control, it
-# also uses a custom bitmap on the combo button.
-
-class FileSelectorCombo(wx.combo.ComboCtrl):
- def __init__(self, *args, **kw):
- wx.combo.ComboCtrl.__init__(self, *args, **kw)
-
- # make a custom bitmap showing "..."
- bw, bh = 14, 16
- bmp = wx.EmptyBitmap(bw,bh)
- dc = wx.MemoryDC(bmp)
-
- # clear to a specific background colour
- bgcolor = wx.Colour(255,254,255)
- dc.SetBackground(wx.Brush(bgcolor))
- dc.Clear()
-
- # draw the label onto the bitmap
- label = "..."
- font = wx.SystemSettings.GetFont(wx.SYS_DEFAULT_GUI_FONT)
- font.SetWeight(wx.FONTWEIGHT_BOLD)
- dc.SetFont(font)
- tw,th = dc.GetTextExtent(label)
- dc.DrawText(label, (bw-tw)/2, (bw-tw)/2)
- del dc
-
- # now apply a mask using the bgcolor
- bmp.SetMaskColour(bgcolor)
-
- # and tell the ComboCtrl to use it
- self.SetButtonBitmaps(bmp, True)
-
- self.Bind(wx.EVT_TEXT, self.onText)
-
- def onText(self, evt):
- print 'EVT_TEXT:', self.GetValue()
- evt.Skip()
-
- # Overridden from ComboCtrl, called when the combo button is clicked
- def OnButtonClick(self):
- path = ""
- name = ""
- if self.GetValue():
- path, name = os.path.split(self.GetValue())
-
- dlg = wx.FileDialog(self, "Choose File", path, name,
- "All files (*.*)|*.*", wx.FD_OPEN)
- if dlg.ShowModal() == wx.ID_OK:
- self.SetValue(dlg.GetPath())
- dlg.Destroy()
- self.SetFocus()
-
- # Overridden from ComboCtrl to avoid assert since there is no ComboPopup
- def DoSetPopupControl(self, popup):
- pass
-
+ return wx.ComboPopup.LazyCreate(self)
#----------------------------------------------------------------------
@@ -375,82 +111,18 @@ class TestPanel(wx.Panel):
self.log = log
wx.Panel.__init__(self, parent, -1)
- fgs = wx.FlexGridSizer(cols=3, hgap=10, vgap=10)
+ comboCtrl = wx.ComboCtrl(self, wx.ID_ANY, "")
- cc = self.MakeLCCombo(log=self.log)
- fgs.Add(cc)
- fgs.Add((10,10))
- fgs.Add(wx.StaticText(self, -1, "wx.ComboCtrl with a ListCtrl popup"))
+ popupCtrl = ListCtrlComboPopup()
- cc = self.MakeLCCombo(style=wx.CB_READONLY)
- fgs.Add(cc)
- fgs.Add((10,10))
- fgs.Add(wx.StaticText(self, -1, " Read-only"))
+ # It is important to call SetPopupControl() as soon as possible
+ comboCtrl.SetPopupControl(popupCtrl)
- cc = self.MakeLCCombo()
- cc.SetButtonPosition(side=wx.LEFT)
- fgs.Add(cc)
- fgs.Add((10,10))
- fgs.Add(wx.StaticText(self, -1, " Button on the left"))
+ # Populate using wx.ListView methods
+ popupCtrl.AddItem("First Item")
+ popupCtrl.AddItem("Second Item")
+ popupCtrl.AddItem("Third Item")
- cc = self.MakeLCCombo()
- cc.SetPopupMaxHeight(250)
- fgs.Add(cc)
- fgs.Add((10,10))
- fgs.Add(wx.StaticText(self, -1, " Max height of popup set"))
-
- cc = wx.combo.ComboCtrl(self, size=(250,-1))
- tcp = TreeCtrlComboPopup()
- cc.SetPopupControl(tcp)
- fgs.Add(cc)
- fgs.Add((10,10))
- fgs.Add(wx.StaticText(self, -1, "TreeCtrl popup"))
- # add some items to the tree
- for i in range(5):
- item = tcp.AddItem('Item %d' % (i+1))
- for j in range(15):
- tcp.AddItem('Subitem %d-%d' % (i+1, j+1), parent=item)
-
- cc = ComboCtrlWithCustomPopupAnim(self, size=(250, -1))
- popup = ListCtrlComboPopup()
- cc.SetPopupMaxHeight(150)
- cc.SetPopupControl(popup)
- fgs.Add(cc)
- fgs.Add((10,10))
- fgs.Add(wx.StaticText(self, -1, "Custom popup animation"))
- for word in "How cool was that!? Way COOL!".split():
- popup.AddItem(word)
- if "wxMac" in wx.PlatformInfo:
- cc.SetValue("Sorry, animation not working yet on Mac")
-
-
- cc = FileSelectorCombo(self, size=(250, -1))
- fgs.Add(cc)
- fgs.Add((10,10))
- fgs.Add(wx.StaticText(self, -1, "Custom popup action, and custom button bitmap"))
-
- box = wx.BoxSizer()
- box.Add(fgs, 1, wx.EXPAND|wx.ALL, 20)
- self.SetSizer(box)
-
-
- def MakeLCCombo(self, log=None, style=0):
- # Create a ComboCtrl
- cc = wx.combo.ComboCtrl(self, style=style, size=(250,-1))
-
- # Create a Popup
- popup = ListCtrlComboPopup(log)
-
- # Associate them with each other. This also triggers the
- # creation of the ListCtrl.
- cc.SetPopupControl(popup)
-
- # Add some items to the listctrl.
- for x in range(75):
- popup.AddItem("Item-%02d" % x)
-
- return cc
-
#----------------------------------------------------------------------
diff --git a/demo/CommandLinkButton.py b/demo/CommandLinkButton.py
index 5b0e1bf9..f7ae7986 100644
--- a/demo/CommandLinkButton.py
+++ b/demo/CommandLinkButton.py
@@ -1,5 +1,6 @@
import wx
+import wx.adv
#----------------------------------------------------------------------
@@ -8,7 +9,7 @@ class TestPanel(wx.Panel):
self.log = log
wx.Panel.__init__(self, parent, -1)
- cmd = wx.CommandLinkButton(self, -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
diff --git a/demo/Cursor.py b/demo/Cursor.py
index ade91686..d20eaf46 100644
--- a/demo/Cursor.py
+++ b/demo/Cursor.py
@@ -89,15 +89,15 @@ class TestPanel(wx.Panel):
image = images.Pointy.GetImage()
# since this image didn't come from a .cur file, tell it where the hotspot is
- image.SetOptionInt(wx.IMAGE_OPTION_CUR_HOTSPOT_X, 1)
- image.SetOptionInt(wx.IMAGE_OPTION_CUR_HOTSPOT_Y, 1)
+ image.SetOption(wx.IMAGE_OPTION_CUR_HOTSPOT_X, 1)
+ image.SetOption(wx.IMAGE_OPTION_CUR_HOTSPOT_Y, 1)
# make the image into a cursor
cursor = wx.CursorFromImage(image)
else:
# create one of the stock (built-in) cursors
- cursor = wx.StockCursor(cnum)
+ cursor = wx.Cursor(cnum)
# set the cursor for the window
self.win.SetCursor(cursor)
diff --git a/demo/CustomDragAndDrop.py b/demo/CustomDragAndDrop.py
index 42fd4006..8234fcc2 100644
--- a/demo/CustomDragAndDrop.py
+++ b/demo/CustomDragAndDrop.py
@@ -24,36 +24,33 @@ class DoodlePad(wx.Window):
def SetMode(self, mode):
self.mode = mode
if self.mode == "Draw":
- self.SetCursor(wx.StockCursor(wx.CURSOR_PENCIL))
+ self.SetCursor(wx.Cursor(wx.CURSOR_PENCIL))
else:
self.SetCursor(wx.STANDARD_CURSOR)
-
def OnPaint(self, event):
dc = wx.PaintDC(self)
self.DrawSavedLines(dc)
def DrawSavedLines(self, dc):
- dc.BeginDrawing()
+ # dc.BeginDrawing()
dc.SetPen(wx.Pen(wx.BLUE, 3))
for line in self.lines:
for coords in line:
dc.DrawLine(*coords)
- dc.EndDrawing()
-
+ # dc.EndDrawing()
def OnLeftDown(self, event):
if self.mode == "Drag":
self.StartDragOpperation()
elif self.mode == "Draw":
self.curLine = []
- self.x, self.y = event.GetPositionTuple()
+ self.x, self.y = event.GetPosition()
self.CaptureMouse()
else:
wx.Bell()
self.log.write("unknown mode!\n")
-
def OnLeftUp(self, event):
if self.HasCapture():
self.lines.append(self.curLine)
@@ -67,14 +64,14 @@ class DoodlePad(wx.Window):
def OnMotion(self, event):
if self.HasCapture() and event.Dragging() and not self.mode == "Drag":
dc = wx.ClientDC(self)
- dc.BeginDrawing()
+ # dc.BeginDrawing()
dc.SetPen(wx.Pen(wx.BLUE, 3))
- coords = (self.x, self.y) + event.GetPositionTuple()
+ evtPos = event.GetPosition()
+ coords = (self.x, self.y) + (evtPos.x, evtPos.y)
self.curLine.append(coords)
dc.DrawLine(*coords)
- self.x, self.y = event.GetPositionTuple()
- dc.EndDrawing()
-
+ self.x, self.y = event.GetPosition()
+ # dc.EndDrawing()
def StartDragOpperation(self):
# pickle the lines list
@@ -87,7 +84,7 @@ class DoodlePad(wx.Window):
# Also create a Bitmap version of the drawing
size = self.GetSize()
- bmp = wx.EmptyBitmap(size.width, size.height)
+ bmp = wx.Bitmap(size.width, size.height)
dc = wx.MemoryDC()
dc.SelectObject(bmp)
dc.SetBackground(wx.WHITE_BRUSH)
@@ -153,7 +150,6 @@ class DoodleDropTarget(wx.DropTarget):
return d
-
# Called when OnDrop returns True. We need to get the data and
# do something with it.
def OnData(self, x, y, d):
@@ -165,12 +161,11 @@ class DoodleDropTarget(wx.DropTarget):
linesdata = self.data.GetData()
lines = cPickle.loads(linesdata)
self.dv.SetLines(lines)
-
+
# what is returned signals the source what to do
# with the original data (move, copy, etc.) In this
# case we just return the suggested value given to us.
- return d
-
+ return d
class DoodleViewer(wx.Window):
@@ -194,13 +189,13 @@ class DoodleViewer(wx.Window):
self.DrawSavedLines(dc)
def DrawSavedLines(self, dc):
- dc.BeginDrawing()
+ # dc.BeginDrawing()
dc.SetPen(wx.Pen(wx.RED, 3))
for line in self.lines:
for coords in line:
dc.DrawLine(*coords)
- dc.EndDrawing()
+ # dc.EndDrawing()
#----------------------------------------------------------------------
@@ -300,13 +295,14 @@ def runTest(frame, nb, log):
if __name__ == '__main__':
import sys
-
+
class DummyLog:
def WriteText(self, text):
sys.stdout.write(text)
class TestApp(wx.App):
def OnInit(self):
+ wx.InitAllImageHandlers()
self.MakeFrame()
return True
diff --git a/demo/DVC_CustomRenderer.py b/demo/DVC_CustomRenderer.py
index 4a65a2ec..4d5cb3c2 100644
--- a/demo/DVC_CustomRenderer.py
+++ b/demo/DVC_CustomRenderer.py
@@ -38,7 +38,7 @@ class MyCustomRenderer(dv.PyDataViewCustomRenderer):
dc.SetBrush(wx.Brush('light grey'))
dc.SetPen(wx.TRANSPARENT_PEN)
rect.Deflate(1, 1)
- dc.DrawRoundedRectangleRect(rect, 2)
+ dc.DrawRoundedRectangle(rect, 2)
# And then finish up with this helper function that draws the
# text for us, dealing with alignment, font and color
diff --git a/demo/DVC_DataViewModel.py b/demo/DVC_DataViewModel.py
index b832f512..016511f3 100644
--- a/demo/DVC_DataViewModel.py
+++ b/demo/DVC_DataViewModel.py
@@ -10,7 +10,7 @@ import random
def makeBlank(self):
# Just a little helper function to make an empty image for our
# model to use.
- empty = wx.EmptyBitmap(16,16,32)
+ empty = wx.Bitmap(16,16,32)
dc = wx.MemoryDC(empty)
dc.SetBackground(wx.Brush((0,0,0,0)))
dc.Clear()
@@ -32,17 +32,17 @@ class Song(object):
d = random.choice(range(27))+1
m = random.choice(range(12))
y = random.choice(range(1980, 2005))
- self.date = wx.DateTimeFromDMY(d,m,y)
-
+ self.date = wx.DateTime().FromDMY(d,m,y)
+
def __repr__(self):
return 'Song: %s-%s' % (self.artist, self.title)
-
+
class Genre(object):
def __init__(self, name):
self.name = name
self.songs = []
-
+
def __repr__(self):
return 'Genre: ' + self.name
@@ -50,13 +50,13 @@ class Genre(object):
# This model acts as a bridge between the DataViewCtrl and the music data, and
# organizes it hierarchically as a collection of Genres, each of which is a
-# collection of songs. We derive the class from PyDataViewModel, which knows
+# collection of songs. We derive the class from PyDataViewCtrl, which knows
# how to reflect the C++ virtual methods to the Python methods in the derived
# class.
# This model provides these data columns:
#
-# 0. Genre: string
+# 0. Genre : string
# 1. Artist: string
# 2. Title: string
# 3. id: integer
@@ -69,7 +69,7 @@ class MyTreeListModel(dv.PyDataViewModel):
dv.PyDataViewModel.__init__(self)
self.data = data
self.log = log
-
+
# The objmapper is an instance of DataViewItemObjectMapper and is used
# to help associate Python objects with DataViewItem objects. Normally
# a dictionary is used so any Python object can be used as data nodes.
@@ -80,7 +80,7 @@ class MyTreeListModel(dv.PyDataViewModel):
# self.ItemToObject methods used below.
self.objmapper.UseWeakRefs(True)
-
+
# Report how many columns this model provides data for.
def GetColumnCount(self):
return 6
@@ -95,9 +95,9 @@ class MyTreeListModel(dv.PyDataViewModel):
5 : 'bool',
}
return mapper[col]
-
-
- def GetChildren(self, parent, children):
+
+
+ def GetChildren(self, parent, children):
# The view calls this method to find the children of any node in the
# control. There is an implicit hidden root node, and the top level
# item(s) should be reported as children of this node. A List view
@@ -105,7 +105,7 @@ class MyTreeListModel(dv.PyDataViewModel):
# view adds additional items as children of the other items, as needed,
# to provide the tree hierachy.
##self.log.write("GetChildren\n")
-
+
# If the parent item is invalid then it represents the hidden root
# item, so we'll use the genre objects as its children and they will
# end up being the collection of visible roots in our tree.
@@ -113,7 +113,7 @@ class MyTreeListModel(dv.PyDataViewModel):
for genre in self.data:
children.append(self.ObjectToItem(genre))
return len(self.data)
-
+
# Otherwise we'll fetch the python object associated with the parent
# item and make DV items for each of it's child objects.
node = self.ItemToObject(parent)
@@ -122,12 +122,12 @@ class MyTreeListModel(dv.PyDataViewModel):
children.append(self.ObjectToItem(song))
return len(node.songs)
return 0
-
+
def IsContainer(self, item):
# Return True if the item has children, False otherwise.
##self.log.write("IsContainer\n")
-
+
# The hidden root is a container
if not item:
return True
@@ -136,38 +136,38 @@ class MyTreeListModel(dv.PyDataViewModel):
if isinstance(node, Genre):
return True
# but everything else (the song objects) are not
- return False
+ return False
#def HasContainerColumns(self, item):
# self.log.write('HasContainerColumns\n')
# return True
-
+
def GetParent(self, item):
# Return the item which is this item's parent.
##self.log.write("GetParent\n")
-
+
if not item:
return dv.NullDataViewItem
- node = self.ItemToObject(item)
+ node = self.ItemToObject(item)
if isinstance(node, Genre):
return dv.NullDataViewItem
elif isinstance(node, Song):
for g in self.data:
if g.name == node.genre:
return self.ObjectToItem(g)
-
-
+
+
def GetValue(self, item, col):
# Return the value to be displayed for this item and column. For this
# example we'll just pull the values from the data objects we
# associated with the items in GetChildren.
-
+
# Fetch the data object for this item.
node = self.ItemToObject(item)
-
+
if isinstance(node, Genre):
# We'll only use the first column for the Genre objects,
# for the other columns lets just return empty values
@@ -179,8 +179,8 @@ class MyTreeListModel(dv.PyDataViewModel):
5 : False,
}
return mapper[col]
-
-
+
+
elif isinstance(node, Song):
mapper = { 0 : node.genre,
1 : node.artist,
@@ -190,10 +190,10 @@ class MyTreeListModel(dv.PyDataViewModel):
5 : node.like,
}
return mapper[col]
-
+
else:
raise RuntimeError("unknown node type")
-
+
def GetAttr(self, item, col, attr):
@@ -204,14 +204,14 @@ class MyTreeListModel(dv.PyDataViewModel):
attr.SetBold(True)
return True
return False
-
-
+
+
def SetValue(self, value, item, col):
self.log.write("SetValue: %s\n" % value)
-
+
# We're not allowing edits in column zero (see below) so we just need
# to deal with Song objects and cols 1 - 5
-
+
node = self.ItemToObject(item)
if isinstance(node, Song):
if col == 1:
@@ -224,7 +224,7 @@ class MyTreeListModel(dv.PyDataViewModel):
node.date = value
elif col == 5:
node.like = value
-
+
#----------------------------------------------------------------------
@@ -241,17 +241,17 @@ class TestPanel(wx.Panel):
| dv.DV_VERT_RULES
| dv.DV_MULTIPLE
)
-
+
# Create an instance of our model...
if model is None:
self.model = MyTreeListModel(data, log)
else:
- self.model = model
+ self.model = model
# Tel the DVC to use the model
self.dvc.AssociateModel(self.model)
- # Define the columns that we want in the view. Notice the
+ # Define the columns that we want in the view. Notice the
# parameter which tells the view which col in the data model to pull
# values from for each view column.
if 1:
@@ -263,41 +263,41 @@ class TestPanel(wx.Panel):
self.dvc.AppendColumn(c0)
else:
self.dvc.AppendTextColumn("Genre", 0, width=80)
-
+
c1 = self.dvc.AppendTextColumn("Artist", 1, width=170, mode=dv.DATAVIEW_CELL_EDITABLE)
c2 = self.dvc.AppendTextColumn("Title", 2, width=260, mode=dv.DATAVIEW_CELL_EDITABLE)
c3 = self.dvc.AppendDateColumn('Acquired', 4, width=100, mode=dv.DATAVIEW_CELL_ACTIVATABLE)
c4 = self.dvc.AppendToggleColumn('Like', 5, width=40, mode=dv.DATAVIEW_CELL_ACTIVATABLE)
-
+
# Notice how we pull the data from col 3, but this is the 6th col
# added to the DVC. The order of the view columns is not dependent on
# the order of the model columns at all.
c5 = self.dvc.AppendTextColumn("id", 3, width=40, mode=dv.DATAVIEW_CELL_EDITABLE)
c5.Alignment = wx.ALIGN_RIGHT
-
+
# Set some additional attributes for all the columns
for c in self.dvc.Columns:
c.Sortable = True
c.Reorderable = True
-
+
self.Sizer = wx.BoxSizer(wx.VERTICAL)
self.Sizer.Add(self.dvc, 1, wx.EXPAND)
-
+
b1 = wx.Button(self, label="New View", name="newView")
self.Bind(wx.EVT_BUTTON, self.OnNewView, b1)
-
+
self.Sizer.Add(b1, 0, wx.ALL, 5)
-
-
+
+
def OnNewView(self, evt):
f = wx.Frame(None, title="New view, shared model", size=(600,400))
TestPanel(f, self.log, model=self.model)
b = f.FindWindowByName("newView")
b.Disable()
f.Show()
-
-
+
+
#----------------------------------------------------------------------
def runTest(frame, nb, log):
diff --git a/demo/DVC_IndexListModel.py b/demo/DVC_IndexListModel.py
index cedc022e..5105221c 100644
--- a/demo/DVC_IndexListModel.py
+++ b/demo/DVC_IndexListModel.py
@@ -17,9 +17,9 @@ import wx.dataview as dv
# For this example our data is stored in a simple list of lists. In
# real life you can use whatever you want or need to hold your data.
-class TestModel(dv.PyDataViewIndexListModel):
+class TestModel(dv.DataViewIndexListModel):
def __init__(self, data, log):
- dv.PyDataViewIndexListModel.__init__(self, len(data))
+ dv.DataViewIndexListModel.__init__(self, len(data))
self.data = data
self.log = log
@@ -46,7 +46,7 @@ class TestModel(dv.PyDataViewIndexListModel):
def GetCount(self):
#self.log.write('GetCount')
return len(self.data)
-
+
# Called to check if non-standard attributes should be used in the
# cell at (row, col)
def GetAttrByRow(self, row, col, attr):
@@ -74,28 +74,28 @@ class TestModel(dv.PyDataViewIndexListModel):
else:
return cmp(self.data[row1][col], self.data[row2][col])
-
+
def DeleteRows(self, rows):
# make a copy since we'll be sorting(mutating) the list
rows = list(rows)
# use reverse order so the indexes don't change as we remove items
rows.sort(reverse=True)
-
+
for row in rows:
# remove it from our data structure
del self.data[row]
# notify the view(s) using this model that it has been removed
self.RowDeleted(row)
-
-
+
+
def AddRow(self, value):
# update data structure
self.data.append(value)
# notify views
self.RowAppended()
-
-
+
+
class TestPanel(wx.Panel):
def __init__(self, parent, log, model=None, data=None):
self.log = log
@@ -109,12 +109,12 @@ class TestPanel(wx.Panel):
| dv.DV_VERT_RULES
| dv.DV_MULTIPLE
)
-
+
# Create an instance of our simple model...
if model is None:
self.model = TestModel(data, log)
else:
- self.model = model
+ self.model = model
# ...and associate it with the dataview control. Models can
# be shared between multiple DataViewCtrls, so this does not
@@ -158,9 +158,9 @@ class TestPanel(wx.Panel):
c0.Reorderable = False
# set the Sizer property (same as SetSizer)
- self.Sizer = wx.BoxSizer(wx.VERTICAL)
+ self.Sizer = wx.BoxSizer(wx.VERTICAL)
self.Sizer.Add(self.dvc, 1, wx.EXPAND)
-
+
# Add some buttons to help out with the tests
b1 = wx.Button(self, label="New View", name="newView")
self.Bind(wx.EVT_BUTTON, self.OnNewView, b1)
@@ -196,7 +196,7 @@ class TestPanel(wx.Panel):
rows = [self.model.GetRow(item) for item in items]
self.model.DeleteRows(rows)
-
+
def OnAddRow(self, evt):
# Add some bogus data to a new row in the model's data
id = len(self.model.data) + 1
@@ -205,7 +205,7 @@ class TestPanel(wx.Panel):
'new title %d' % id,
'genre %d' % id]
self.model.AddRow(value)
-
+
def OnEditingDone(self, evt):
self.log.write("OnEditingDone\n")
@@ -213,7 +213,7 @@ class TestPanel(wx.Panel):
def OnValueChanged(self, evt):
self.log.write("OnValueChanged\n")
-
+
#----------------------------------------------------------------------
def runTest(frame, nb, log):
diff --git a/demo/DVC_ListCtrl.py b/demo/DVC_ListCtrl.py
index 626bfbe5..543d9ec7 100644
--- a/demo/DVC_ListCtrl.py
+++ b/demo/DVC_ListCtrl.py
@@ -25,17 +25,17 @@ class TestPanel(wx.Panel):
dvlc.AppendTextColumn('artist', width=170)
dvlc.AppendTextColumn('title', width=260)
dvlc.AppendTextColumn('genre', width=80)
-
+
# Load the data. Each item (row) is added as a sequence of values
# whose order matches the columns
for itemvalues in musicdata:
dvlc.AppendItem(itemvalues)
-
+
# Set the layout so the listctrl fills the panel
self.Sizer = wx.BoxSizer()
self.Sizer.Add(dvlc, 1, wx.EXPAND)
-
-
+
+
#----------------------------------------------------------------------
diff --git a/demo/DVC_TreeCtrl.py b/demo/DVC_TreeCtrl.py
index aab6c4bc..fe2c200b 100644
--- a/demo/DVC_TreeCtrl.py
+++ b/demo/DVC_TreeCtrl.py
@@ -16,9 +16,9 @@ class TestPanel(wx.Panel):
isz = (16,16)
il = wx.ImageList(*isz)
- fldridx = il.AddIcon(wx.ArtProvider.GetIcon(wx.ART_FOLDER, wx.ART_OTHER, isz))
- fldropenidx = il.AddIcon(wx.ArtProvider.GetIcon(wx.ART_FOLDER_OPEN, wx.ART_OTHER, isz))
- fileidx = il.AddIcon(wx.ArtProvider.GetIcon(wx.ART_NORMAL_FILE, wx.ART_OTHER, isz))
+ fldridx = il.Add(wx.ArtProvider.GetIcon(wx.ART_FOLDER, wx.ART_OTHER, isz))
+ fldropenidx = il.Add(wx.ArtProvider.GetIcon(wx.ART_FOLDER_OPEN, wx.ART_OTHER, isz))
+ fileidx = il.Add(wx.ArtProvider.GetIcon(wx.ART_NORMAL_FILE, wx.ART_OTHER, isz))
dvtc.SetImageList(il)
self.root = dvtc.AppendContainer(dv.NullDataViewItem,
@@ -41,8 +41,8 @@ class TestPanel(wx.Panel):
# Set the layout so the treectrl fills the panel
self.Sizer = wx.BoxSizer()
self.Sizer.Add(dvtc, 1, wx.EXPAND)
-
-
+
+
#----------------------------------------------------------------------
diff --git a/demo/DatePickerCtrl.py b/demo/DatePickerCtrl.py
index a738af18..661691a3 100644
--- a/demo/DatePickerCtrl.py
+++ b/demo/DatePickerCtrl.py
@@ -1,5 +1,6 @@
import wx
+import wx.adv
#----------------------------------------------------------------------
@@ -11,22 +12,22 @@ class TestPanel(wx.Panel):
sizer = wx.BoxSizer(wx.VERTICAL)
self.SetSizer(sizer)
- dpc = wx.DatePickerCtrl(self, size=(120,-1),
- style = wx.DP_DROPDOWN
- | wx.DP_SHOWCENTURY
- | wx.DP_ALLOWNONE )
- self.Bind(wx.EVT_DATE_CHANGED, self.OnDateChanged, dpc)
+ dpc = wx.adv.DatePickerCtrl(self, size=(120,-1),
+ style = wx.adv.DP_DROPDOWN
+ | wx.adv.DP_SHOWCENTURY
+ | wx.adv.DP_ALLOWNONE )
+ self.Bind(wx.adv.EVT_DATE_CHANGED, self.OnDateChanged, dpc)
sizer.Add(dpc, 0, wx.ALL, 50)
# In some cases the widget used above will be a native date
- # picker, so show the generic one too.
- dpc = wx.GenericDatePickerCtrl(self, size=(120,-1),
- style = wx.TAB_TRAVERSAL
- | wx.DP_DROPDOWN
- | wx.DP_SHOWCENTURY
- | wx.DP_ALLOWNONE )
- self.Bind(wx.EVT_DATE_CHANGED, self.OnDateChanged, dpc)
- sizer.Add(dpc, 0, wx.LEFT, 50)
+ # picker, so show the generic one too.
+ # dpc = wx.adv.DatePickerCtrlGeneric(self, size=(120,-1),
+ # style = wx.TAB_TRAVERSAL
+ # | wx.adv.DP_DROPDOWN
+ # | wx.adv.DP_SHOWCENTURY
+ # | wx.adv.DP_ALLOWNONE )
+ # self.Bind(wx.adv.EVT_DATE_CHANGED, self.OnDateChanged, dpc)
+ # sizer.Add(dpc, 0, wx.LEFT, 50)
def OnDateChanged(self, evt):
diff --git a/demo/Dialog.py b/demo/Dialog.py
index 611eea54..3ac95c25 100644
--- a/demo/Dialog.py
+++ b/demo/Dialog.py
@@ -11,22 +11,16 @@ wx.HelpProvider.Set(provider)
class TestDialog(wx.Dialog):
def __init__(
- self, parent, ID, title, size=wx.DefaultSize, pos=wx.DefaultPosition,
- style=wx.DEFAULT_DIALOG_STYLE,
+ self, parent, id, title, size=wx.DefaultSize, pos=wx.DefaultPosition,
+ style=wx.DEFAULT_DIALOG_STYLE, name='dialog'
):
# Instead of calling wx.Dialog.__init__ we precreate the dialog
# so we can set an extra style that must be set before
# creation, and then we create the GUI object using the Create
# method.
- pre = wx.PreDialog()
- pre.SetExtraStyle(wx.DIALOG_EX_CONTEXTHELP)
- pre.Create(parent, ID, title, pos, size, style)
-
- # This next step is the most important, it turns this Python
- # object into the real wrapper of the dialog (instead of pre)
- # as far as the wxPython extension is concerned.
- self.PostCreate(pre)
+ wx.Dialog.__init__(self, parent, id, title, pos, size, style, name)
+ self.SetExtraStyle(wx.DIALOG_EX_CONTEXTHELP)
# Now continue with the normal construction of the dialog
# contents
diff --git a/demo/DialogUnits.py b/demo/DialogUnits.py
index 975eb175..586f7f98 100644
--- a/demo/DialogUnits.py
+++ b/demo/DialogUnits.py
@@ -6,7 +6,7 @@
# Author: Robin Dunn
#
# Created: A long time ago, in a galaxy far, far away...
-# RCS-ID: $Id$
+# RCS-ID: $Id: DialogUnits.py 25140 2004-01-13 03:17:17Z RD $
# Copyright: (c) 1998 by Total Control Software
# Licence: wxWindows license
#----------------------------------------------------------------------------
diff --git a/demo/DragAndDrop.py b/demo/DragAndDrop.py
index 95b192db..029b1b44 100644
--- a/demo/DragAndDrop.py
+++ b/demo/DragAndDrop.py
@@ -94,9 +94,9 @@ class ClipTextPanel(wx.Panel):
#----------------------------------------------------------------------
-class OtherDropTarget(wx.PyDropTarget):
+class OtherDropTarget(wx.DropTarget):
def __init__(self, window, log):
- wx.PyDropTarget.__init__(self)
+ wx.DropTarget.__init__(self)
self.log = log
self.do = wx.FileDataObject()
self.SetDataObject(self.do)
diff --git a/demo/DragImage.py b/demo/DragImage.py
index 6b065d9b..f2ec5174 100644
--- a/demo/DragImage.py
+++ b/demo/DragImage.py
@@ -21,7 +21,7 @@ class DragShape:
self.bmp.GetWidth(), self.bmp.GetHeight())
def Draw(self, dc, op = wx.COPY):
- if self.bmp.Ok():
+ if self.bmp.IsOk():
memDC = wx.MemoryDC()
memDC.SelectObject(self.bmp)
diff --git a/demo/DrawXXXList.py b/demo/DrawXXXList.py
index 5086b14c..6e6f4210 100644
--- a/demo/DrawXXXList.py
+++ b/demo/DrawXXXList.py
@@ -132,7 +132,7 @@ def makeRandomColors(num):
for i in range(num):
c = random.choice(colours)
- colors.append(wx.NamedColour(c))
+ colors.append(wx.Colour(c))
return colors
@@ -187,7 +187,7 @@ def Init(w, h, n):
def TestPoints(dc,log):
- dc.BeginDrawing()
+ # dc.BeginDrawing()
start = time.time()
dc.SetPen(wx.Pen("BLACK", 4))
@@ -195,7 +195,7 @@ def TestPoints(dc,log):
dc.DrawPointList(points, wx.Pen("RED", 2))
dc.DrawPointList(points, pens)
- dc.EndDrawing()
+ # dc.EndDrawing()
log.write("DrawTime: %s seconds with DrawPointList\n" % (time.time() - start))
@@ -203,7 +203,7 @@ def TestArrayPoints(dc,log):
try:
import Numeric
- dc.BeginDrawing()
+ # dc.BeginDrawing()
start = time.time()
dc.SetPen(wx.Pen("BLACK", 1))
@@ -212,7 +212,7 @@ def TestArrayPoints(dc,log):
#dc.DrawPointList(Apoints, wx.Pen("RED", 2))
#dc.DrawPointList(Apoints, pens)
- dc.EndDrawing()
+ # dc.EndDrawing()
log.write("DrawTime: %s seconds with DrawPointList an Numpy Array\n" % (time.time() - start))
except ImportError:
log.write("Couldn't import Numeric")
@@ -220,7 +220,7 @@ def TestArrayPoints(dc,log):
def TestLines(dc,log):
- dc.BeginDrawing()
+ # dc.BeginDrawing()
start = time.time()
dc.SetPen(wx.Pen("BLACK", 2))
@@ -228,12 +228,12 @@ def TestLines(dc,log):
dc.DrawLineList(lines, wx.Pen("RED", 2))
dc.DrawLineList(lines, pens)
- dc.EndDrawing()
+ # dc.EndDrawing()
log.write("DrawTime: %s seconds with DrawLineList\n" % (time.time() - start))
def TestRectangles(dc,log):
- dc.BeginDrawing()
+ # dc.BeginDrawing()
start = time.time()
dc.SetPen( wx.Pen("BLACK",1) )
@@ -248,12 +248,12 @@ def TestRectangles(dc,log):
## #dc.DrawRectangleList(rectangles,pens,brushes)
## dc.DrawRectangleList(rectangles)
- dc.EndDrawing()
+ # dc.EndDrawing()
log.write("DrawTime: %s seconds with DrawRectanglesList\n" % (time.time() - start))
def TestEllipses(dc,log):
- dc.BeginDrawing()
+ # dc.BeginDrawing()
start = time.time()
dc.SetPen( wx.Pen("BLACK",1) )
@@ -266,7 +266,7 @@ def TestEllipses(dc,log):
dc.DrawEllipseList(rectangles,None,brushes)
dc.DrawEllipseList(rectangles,pens,brushes)
- dc.EndDrawing()
+ # dc.EndDrawing()
log.write("DrawTime: %s seconds with DrawEllipsesList\n" % (time.time() - start))
@@ -275,7 +275,7 @@ def TestRectanglesArray(dc,log):
import Numeric
Apoints = Numeric.array(rectangles)
- dc.BeginDrawing()
+ # dc.BeginDrawing()
start = time.time()
dc.SetPen(wx.Pen("BLACK", 1))
dc.DrawRectangleList(rectangles)
@@ -287,7 +287,7 @@ def TestRectanglesArray(dc,log):
## #dc.DrawRectangleList(rectangles,pens,brushes)
## dc.DrawRectangleList(rectangles)
- dc.EndDrawing()
+ # dc.EndDrawing()
log.write("DrawTime: %s seconds with DrawRectangleList and Numpy Array\n" % (time.time() - start))
except ImportError:
log.write("Couldn't import Numeric")
@@ -295,7 +295,7 @@ def TestRectanglesArray(dc,log):
def TestRectanglesLoop(dc,log):
- dc.BeginDrawing()
+ # dc.BeginDrawing()
start = time.time()
dc.DrawRectangleList(rectangles,pens,brushes)
@@ -308,12 +308,12 @@ def TestRectanglesLoop(dc,log):
dc.SetBrush( brushes[i] )
dc.DrawRectangle(rectangles[i][0],rectangles[i][1],rectangles[i][2],rectangles[i][3])
- dc.EndDrawing()
+ # dc.EndDrawing()
log.write("DrawTime: %s seconds with Python loop\n" % (time.time() - start))
def TestPolygons(dc,log):
- dc.BeginDrawing()
+ # dc.BeginDrawing()
start = time.time()
dc.SetPen(wx.Pen("BLACK", 1))
@@ -324,11 +324,11 @@ def TestPolygons(dc,log):
dc.DrawPolygonList(polygons,None,brushes)
log.write("DrawTime: %s seconds with DrawPolygonList\n" % (time.time() - start))
- dc.EndDrawing()
+ # dc.EndDrawing()
def TestText(dc,log):
- dc.BeginDrawing()
+ # dc.BeginDrawing()
start = time.time()
@@ -340,7 +340,7 @@ def TestText(dc,log):
log.write("DrawTime: %s seconds with DrawTextList\n" % (time.time() - start))
- dc.EndDrawing()
+ # dc.EndDrawing()
diff --git a/demo/EventManager.py b/demo/EventManager.py
index 7f794289..bcc4dfbe 100644
--- a/demo/EventManager.py
+++ b/demo/EventManager.py
@@ -9,8 +9,8 @@
# Licence: wxWindows license
#---------------------------------------------------------------------------
-import wx
-import wx.lib.evtmgr as em
+import wx
+import wx.lib.evtmgr as em
#----------------------------------------------------------------------
@@ -20,9 +20,9 @@ class TestPanel(wx.Panel):
self.log = log
fsize = self.GetFont().GetPointSize()
- f1 = wx.Font(fsize+0, wx.SWISS, wx.NORMAL, wx.NORMAL)
- f2 = wx.Font(fsize+2, wx.SWISS, wx.NORMAL, wx.BOLD)
- f3 = wx.Font(fsize+6, wx.SWISS, wx.NORMAL, wx.BOLD)
+ f1 = wx.Font(fsize+0, wx.FONTFAMILY_SWISS, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL)
+ f2 = wx.Font(fsize+2, wx.FONTFAMILY_SWISS, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_BOLD)
+ f3 = wx.Font(fsize+6, wx.FONTFAMILY_SWISS, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_BOLD)
title1 = wx.StaticText(self, -1, 'EventManager')
title1.SetFont(f3)
@@ -111,7 +111,7 @@ class Tile(wx.Window):
def doLayout(self, event):
self.Layout()
-
+
def setHover(self, event):
self.SetBackgroundColour(Tile.hover)
@@ -128,7 +128,6 @@ class Tile(wx.Window):
self.Refresh()
-
class InnerTile(wx.Window):
IDLE_COLOR = wx.Colour( 80, 10, 10)
START_COLOR = wx.Colour(200, 70, 50)
@@ -181,7 +180,7 @@ class InnerTile(wx.Window):
def makeColor(self, mouseEvent):
- self.makeColorFromTuple(mouseEvent.GetPositionTuple())
+ self.makeColorFromTuple(mouseEvent.GetPosition())
def makeColorFromTuple(self, (x, y)):
@@ -194,8 +193,6 @@ class InnerTile(wx.Window):
self.setColor(wx.Colour(int(r), int(g), int(b)))
-
-
#----------------------------------------------------------------------
def runTest(frame, nb, log):
diff --git a/demo/FileDialog.py b/demo/FileDialog.py
index da832540..0e56fcf7 100644
--- a/demo/FileDialog.py
+++ b/demo/FileDialog.py
@@ -38,13 +38,15 @@ class TestPanel(wx.Panel):
# dialog is set up to change the current working directory to the path chosen.
dlg = wx.FileDialog(
self, message="Choose a file",
- defaultDir=os.getcwd(),
+ defaultDir=os.getcwd(),
defaultFile="",
wildcard=wildcard,
- style=wx.OPEN | wx.MULTIPLE | wx.CHANGE_DIR
+ style=wx.FD_OPEN | wx.FD_MULTIPLE |
+ wx.FD_CHANGE_DIR | wx.FD_FILE_MUST_EXIST |
+ wx.FD_PREVIEW
)
- # Show the dialog and retrieve the user response. If it is the OK response,
+ # Show the dialog and retrieve the user response. If it is the OK response,
# process the data.
if dlg.ShowModal() == wx.ID_OK:
# This returns a Python list of files that were selected.
@@ -63,7 +65,6 @@ class TestPanel(wx.Panel):
dlg.Destroy()
-
def OnButton2(self, evt):
self.log.WriteText("CWD: %s\n" % os.getcwd())
@@ -75,15 +76,15 @@ class TestPanel(wx.Panel):
# force the current working directory to change if the user chooses a different
# directory than the one initially set.
dlg = wx.FileDialog(
- self, message="Save file as ...", defaultDir=os.getcwd(),
- defaultFile="", wildcard=wildcard, style=wx.SAVE
+ self, message="Save file as ...", defaultDir=os.getcwd(),
+ defaultFile="", wildcard=wildcard, style=wx.FD_SAVE | wx.FD_OVERWRITE_PROMPT
)
# This sets the default filter that the user will initially see. Otherwise,
# the first filter in the list will be used by default.
dlg.SetFilterIndex(2)
- # Show the dialog and retrieve the user response. If it is the OK response,
+ # Show the dialog and retrieve the user response. If it is the OK response,
# process the data.
if dlg.ShowModal() == wx.ID_OK:
path = dlg.GetPath()
@@ -92,7 +93,7 @@ class TestPanel(wx.Panel):
# Normally, at this point you would save your data using the file and path
# data that the user provided to you, but since we didn't actually start
# with any data to work with, that would be difficult.
- #
+ #
# The code to do so would be similar to this, assuming 'data' contains
# the data you want to save:
#
@@ -111,7 +112,6 @@ class TestPanel(wx.Panel):
# BAD things can happen otherwise!
dlg.Destroy()
-
#---------------------------------------------------------------------------
@@ -125,12 +125,12 @@ def runTest(frame, nb, log):
overview = """\
This class provides the file selection dialog. It incorporates OS-native features
-depending on the OS in use, and can be used both for open and save operations.
+depending on the OS in use, and can be used both for open and save operations.
The files displayed can be filtered by setting up a wildcard filter, multiple files
can be selected (open only), and files can be forced in a read-only mode.
There are two ways to get the results back from the dialog. GetFiles() returns only
-the file names themselves, in a Python list. GetPaths() returns the full path and
+the file names themselves, in a Python list. GetPaths() returns the full path and
filenames combined as a Python list.
"""
diff --git a/demo/FileHistory.py b/demo/FileHistory.py
index b94b4567..8a587229 100644
--- a/demo/FileHistory.py
+++ b/demo/FileHistory.py
@@ -5,11 +5,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
+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.
"""
@@ -77,16 +77,14 @@ class TestPanel(wx.Panel):
del self.filehistory
self.menu.Destroy()
-
def OnRightClick(self, evt):
self.PopupMenu(self.menu)
-
def OnFileOpenDialog(self, evt):
dlg = wx.FileDialog(self,
defaultDir = os.getcwd(),
wildcard = "All Files|*",
- style = wx.OPEN | wx.CHANGE_DIR)
+ style = wx.FD_OPEN | wx.FD_CHANGE_DIR)
if dlg.ShowModal() == wx.ID_OK:
path = dlg.GetPath()
@@ -97,7 +95,6 @@ class TestPanel(wx.Panel):
dlg.Destroy()
-
def OnFileHistory(self, evt):
# get the file based on the menu ID
fileNum = evt.GetId() - wx.ID_FILE1
@@ -128,7 +125,7 @@ list appended to a menu, such as the File menu.
Note that this inclusion is not automatic; as illustrated in this example,
you must add files (and remove them) as deemed necessary within the framework
-of your program.
+of your program.
Note also the additional cleanup required for this class, namely trapping the
enclosing window's Destroy event and deleting the file history control and its
diff --git a/demo/FindReplaceDialog.py b/demo/FindReplaceDialog.py
index b27a83ce..dbe6f697 100644
--- a/demo/FindReplaceDialog.py
+++ b/demo/FindReplaceDialog.py
@@ -73,7 +73,7 @@ class TestPanel(wx.Panel):
else:
replaceTxt = ""
- self.log.write("%s -- Find text: %s %s Flags: %d \n" %
+ self.log.write("%s -- Find text: %s Replace text: %s Flags: %d \n" %
(evtType, evt.GetFindString(), replaceTxt, evt.GetFlags()))
diff --git a/demo/FloatBar.py b/demo/FloatBar.py
index 8f85d6e2..cb73bd13 100644
--- a/demo/FloatBar.py
+++ b/demo/FloatBar.py
@@ -22,7 +22,7 @@ class TestFloatBar(wx.Frame):
win = wx.Window(self, -1)
win.SetBackgroundColour("WHITE")
wx.StaticText(
- win, -1, "Drag the toolbar to float it,\n"
+ win, -1, "Drag the toolbar to float it,\n"
"Toggle the last tool to remove\nthe title.", (15,15)
)
@@ -38,26 +38,26 @@ class TestFloatBar(wx.Frame):
copy_bmp = wx.ArtProvider.GetBitmap(wx.ART_COPY, wx.ART_TOOLBAR, tsize)
paste_bmp= wx.ArtProvider.GetBitmap(wx.ART_PASTE, wx.ART_TOOLBAR, tsize)
- tb.AddSimpleTool(10, new_bmp, "New", "Long help for 'New'")
+ tb.AddTool(10, "New", new_bmp, "Long help for 'New'")
self.Bind(wx.EVT_TOOL, self.OnToolClick, id=10)
self.Bind(wx.EVT_TOOL_RCLICKED, self.OnToolRClick, id=10)
- tb.AddSimpleTool(20, open_bmp, "Open")
+ tb.AddTool(20, "Open", open_bmp)
self.Bind(wx.EVT_TOOL, self.OnToolClick, id=20)
self.Bind(wx.EVT_TOOL_RCLICKED, self.OnToolRClick, id=20)
tb.AddSeparator()
- tb.AddSimpleTool(30, copy_bmp, "Copy")
+ tb.AddTool(30, "Copy", copy_bmp)
self.Bind(wx.EVT_TOOL, self.OnToolClick, id=30)
self.Bind(wx.EVT_TOOL_RCLICKED, self.OnToolRClick, id=30)
- tb.AddSimpleTool(40, paste_bmp, "Paste")
+ tb.AddTool(40, "Paste", paste_bmp)
self.Bind(wx.EVT_TOOL, self.OnToolClick, id=40)
self.Bind(wx.EVT_TOOL_RCLICKED, self.OnToolRClick, id=40)
tb.AddSeparator()
- tb.AddCheckTool(60, images.Tog1.GetBitmap(), images.Tog2.GetBitmap())
+ tb.AddCheckTool(60, "Check", images.Tog1.GetBitmap(), images.Tog2.GetBitmap(), "Check", "Long Help: Check", None)
self.Bind(wx.EVT_TOOL, self.OnToolClick, id=60)
self.Bind(wx.EVT_TOOL_RCLICKED, self.OnToolRClick, id=60)
@@ -74,7 +74,7 @@ class TestFloatBar(wx.Frame):
self.log.WriteText("tool %s clicked\n" % event.GetId())
if event.GetId() == 60:
- print event.GetExtraLong(), event.IsChecked(), event.GetInt(), self.tb.GetToolState(60)
+ print(event.GetExtraLong(), event.IsChecked(), event.GetInt(), self.tb.GetToolState(60))
if event.GetExtraLong():
self.tb.SetTitle("")
@@ -131,15 +131,3 @@ if __name__ == '__main__':
import run
run.main(['', os.path.basename(sys.argv[0])] + sys.argv[1:])
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/demo/FloatCanvas.py b/demo/FloatCanvas.py
index 86919bd0..a8ec3272 100644
--- a/demo/FloatCanvas.py
+++ b/demo/FloatCanvas.py
@@ -438,7 +438,7 @@ def BuildDrawFrame(): # this gets called when needed, rather than on import
Canvas = self.Canvas
Canvas.InitAll()
- ## Random tests of everything:
+ ## Random tests of everything:
colors = self.colors
# Rectangles
for i in range(3):
@@ -1847,6 +1847,7 @@ if __name__ == "__main__":
wx.App.__init__(self, *args, **kwargs)
def OnInit(self):
+ wx.InitAllImageHandlers()
DrawFrame = BuildDrawFrame()
frame = DrawFrame(None, -1, "FloatCanvas Demo App",wx.DefaultPosition,(700,700))
diff --git a/demo/FontDialog.py b/demo/FontDialog.py
index f5b9bcc9..253ee4dc 100644
--- a/demo/FontDialog.py
+++ b/demo/FontDialog.py
@@ -73,9 +73,9 @@ class TestPanel(wx.Panel):
self.sampleText.SetFont(self.curFont)
self.sampleText.SetForegroundColour(self.curClr)
self.ps.SetLabel(str(self.curFont.GetPointSize()))
- self.family.SetLabel(self.curFont.GetFamilyString())
- self.style.SetLabel(self.curFont.GetStyleString())
- self.weight.SetLabel(self.curFont.GetWeightString())
+ self.family.SetLabel('%s' %self.curFont.GetFamily())
+ self.style.SetLabel('%s' %self.curFont.GetStyle())
+ self.weight.SetLabel('%s' %self.curFont.GetWeight())
self.face.SetLabel(self.curFont.GetFaceName())
self.nfi.SetLabel(self.curFont.GetNativeFontInfo().ToString())
self.Layout()
@@ -88,7 +88,7 @@ class TestPanel(wx.Panel):
data.SetInitialFont(self.curFont)
dlg = wx.FontDialog(self, data)
-
+
if dlg.ShowModal() == wx.ID_OK:
data = dlg.GetFontData()
font = data.GetChosenFont()
@@ -117,15 +117,15 @@ def runTest(frame, nb, log):
overview = """\
-This class allows you to use the system font selection dialog
+This class allows you to use the system font selection dialog
from within your program. Generally speaking, this allows you
-to select a font by its name, font size, and weight, and
+to select a font by its name, font size, and weight, and
on some systems such things as strikethrough and underline.
As with other dialogs used in wxPython, it is important to
use the class' methods to extract the information you need
about the font before you destroy the dialog. Failure
-to observe this almost always leads to a program failure of
+to observe this almost always leads to a program failure of
some sort, often ugly.
This demo serves two purposes; it shows how to use the dialog
diff --git a/demo/FontEnumerator.py b/demo/FontEnumerator.py
index 4356a5a8..f5ac9188 100644
--- a/demo/FontEnumerator.py
+++ b/demo/FontEnumerator.py
@@ -3,7 +3,6 @@ import wx
#----------------------------------------------------------------------
-
class TestPanel(wx.Panel):
def __init__(self, parent, log):
wx.Panel.__init__(self, parent, -1)
@@ -35,13 +34,12 @@ class TestPanel(wx.Panel):
self.lb1.SetSelection(0)
self.OnSelect(None)
- wx.FutureCall(300, self.SetTextSize)
+ wx.CallLater(300, self.SetTextSize)
def SetTextSize(self):
self.txt.SetSize(self.txt.GetBestSize())
-
def OnSelect(self, evt):
face = self.lb1.GetStringSelection()
font = wx.Font(28, wx.DEFAULT, wx.NORMAL, wx.NORMAL, False, face)
diff --git a/demo/Frame.py b/demo/Frame.py
index 6a205094..b2abbf49 100644
--- a/demo/Frame.py
+++ b/demo/Frame.py
@@ -40,7 +40,7 @@ class TestPanel(wx.Panel):
style = wx.DEFAULT_FRAME_STYLE)
win.Show(True)
-
+
#---------------------------------------------------------------------------
@@ -54,14 +54,14 @@ def runTest(frame, nb, log):
overview = """\
-A Frame is a window whose size and position can (usually) be changed by
-the user. It usually has thick borders and a title bar, and can optionally
-contain a menu bar, toolbar and status bar. A frame can contain any window
-that is not a Frame or Dialog. It is one of the most fundamental of the
-wxWindows components.
+A Frame is a window whose size and position can (usually) be changed by
+the user. It usually has thick borders and a title bar, and can optionally
+contain a menu bar, toolbar and status bar. A frame can contain any window
+that is not a Frame or Dialog. It is one of the most fundamental of the
+wxWindows components.
-A Frame that has a status bar and toolbar created via the
-CreateStatusBar / CreateToolBar functions manages
+A Frame that has a status bar and toolbar created via the
+CreateStatusBar / CreateToolBar functions manages
these windows, and adjusts the value returned by GetClientSize
to reflect the remaining size available to application windows.
diff --git a/demo/GLCanvas.py b/demo/GLCanvas.py
index 26635db4..3c7f3f7c 100644
--- a/demo/GLCanvas.py
+++ b/demo/GLCanvas.py
@@ -41,9 +41,9 @@ class ButtonPanel(wx.Panel):
self.Bind(wx.EVT_BUTTON, self.OnButton, btn)
#** Enable this to show putting a GLCanvas on the wx.Panel
- if 1:
+ if 0:
c = CubeCanvas(self)
- c.SetMinSize((200, 200))
+ c.SetSize((200, 200))
box.Add(c, 0, wx.ALIGN_CENTER|wx.ALL, 15)
self.SetAutoLayout(True)
diff --git a/demo/Gauge.py b/demo/Gauge.py
index d53bcdbf..769c965e 100644
--- a/demo/Gauge.py
+++ b/demo/Gauge.py
@@ -12,7 +12,10 @@ 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, 50, (110, 95), (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.Bind(wx.EVT_TIMER, self.TimerHandler)
self.timer = wx.Timer(self)
@@ -29,6 +32,7 @@ class TestPanel(wx.Panel):
self.g1.SetValue(self.count)
self.g2.Pulse()
+ self.g3.Pulse()
#----------------------------------------------------------------------
diff --git a/demo/GenericButtons.py b/demo/GenericButtons.py
index ff0ba020..5c6874dd 100644
--- a/demo/GenericButtons.py
+++ b/demo/GenericButtons.py
@@ -46,9 +46,9 @@ class TestPanel(wx.Panel):
b.SetMinSize(wx.DefaultSize)
b.SetBackgroundColour("Navy")
b.SetForegroundColour(wx.WHITE)
- b.SetToolTipString("This is a BIG button...")
+ b.SetToolTip("This is a BIG button...")
# let the sizer set best size
- sizer.Add(b, flag=wx.ADJUST_MINSIZE)
+ sizer.Add(b, flag=wx.ADJUST_MINSIZE)
# An image button
bmp = images.Test2.GetBitmap()
@@ -138,8 +138,8 @@ class TestPanel(wx.Panel):
b = buttons.ThemedGenToggleButton(self, -1, 'native renderered toggle')
self.Bind(wx.EVT_BUTTON, self.OnButton, b)
vbox.Add(b, 0, wx.ALL, 5)
-
-
+
+
border = wx.BoxSizer(wx.VERTICAL)
border.Add(sizer, 0, wx.ALL, 25)
diff --git a/demo/GenericDirCtrl.py b/demo/GenericDirCtrl.py
index 409abb15..1ebd1d47 100644
--- a/demo/GenericDirCtrl.py
+++ b/demo/GenericDirCtrl.py
@@ -6,17 +6,21 @@ import wx
class TestPanel(wx.Panel):
def __init__(self, parent, log):
wx.Panel.__init__(self, parent, -1)
+
self.log = log
txt1 = wx.StaticText(self, -1, "style=0")
dir1 = wx.GenericDirCtrl(self, -1, size=(200,225), style=0)
txt2 = wx.StaticText(self, -1, "wx.DIRCTRL_DIR_ONLY")
- dir2 = wx.GenericDirCtrl(self, -1, size=(200,225), style=wx.DIRCTRL_DIR_ONLY|wx.DIRCTRL_MULTIPLE)
+ dir2 = wx.GenericDirCtrl(self, -1, size=(200,225), style=wx.DIRCTRL_DIR_ONLY)
- txt3 = wx.StaticText(self, -1, "wx.DIRCTRL_SHOW_FILTERS")
- dir3 = wx.GenericDirCtrl(self, -1, size=(200,225), style=wx.DIRCTRL_SHOW_FILTERS,
- filter="All files (*.*)|*.*|Python files (*.py)|*.py")
+ txt3 = wx.StaticText(self, -1, "wx.DIRCTRL_SHOW_FILTERS\nwx.DIRCTRL_3D_INTERNAL\nwx.DIRCTRL_MULTIPLE")
+ dir3 = wx.GenericDirCtrl(self, -1, size=(200,225),
+ style=wx.DIRCTRL_SHOW_FILTERS |
+ wx.DIRCTRL_3D_INTERNAL |
+ wx.DIRCTRL_MULTIPLE,
+ filter="All files (*.*)|*.*|Python files (*.py)|*.py")
sz = wx.FlexGridSizer(cols=3, hgap=5, vgap=5)
sz.Add((35, 35)) # some space above
@@ -53,8 +57,8 @@ def runTest(frame, nb, log):
overview = """\
This control can be used to place a directory listing (with optional files)
-on an arbitrary window. The control contains a TreeCtrl window representing
-the directory hierarchy, and optionally, a Choice window containing a list
+on an arbitrary window. The control contains a TreeCtrl window representing
+the directory hierarchy, and optionally, a Choice window containing a list
of filters.
The filters work in the same manner as in FileDialog.
diff --git a/demo/GraphicsContext.py b/demo/GraphicsContext.py
index 56a29667..3d997501 100644
--- a/demo/GraphicsContext.py
+++ b/demo/GraphicsContext.py
@@ -28,7 +28,7 @@ class TestPanel(wx.Panel):
# the new size of the window.
self.InitBuffer()
evt.Skip()
-
+
def OnPaint(self, evt):
if USE_BUFFER:
@@ -49,14 +49,14 @@ class TestPanel(wx.Panel):
sz = self.GetClientSize()
sz.width = max(1, sz.width)
sz.height = max(1, sz.height)
- self._buffer = wx.EmptyBitmap(sz.width, sz.height, 32)
+ self._buffer = wx.Bitmap(sz.width, sz.height, 32)
dc = wx.MemoryDC(self._buffer)
dc.SetBackground(wx.Brush(self.GetBackgroundColour()))
dc.Clear()
gc = self.MakeGC(dc)
self.Draw(gc)
-
+
def MakeGC(self, dc):
try:
@@ -76,19 +76,19 @@ class TestPanel(wx.Panel):
# backend, (GDI+ on Windows, CoreGraphics on Mac, or
# Cairo on GTK).
gc = wx.GraphicsContext.Create(dc)
-
+
except NotImplementedError:
dc.DrawText("This build of wxPython does not support the wx.GraphicsContext "
"family of classes.",
25, 25)
return None
return gc
-
-
+
+
def Draw(self, gc):
font = wx.SystemSettings.GetFont(wx.SYS_DEFAULT_GUI_FONT)
font.SetWeight(wx.BOLD)
- gc.SetFont(font)
+ gc.SetFont(font, wx.BLACK)
# make a path that contains a circle and some lines, centered at 0,0
path = gc.CreatePath()
@@ -102,7 +102,7 @@ class TestPanel(wx.Panel):
# Now use that path to demonstrate various capbilites of the grpahics context
- gc.PushState() # save current translation/scale/other state
+ gc.PushState() # save current translation/scale/other state
gc.Translate(60, 75) # reposition the context origin
gc.SetPen(wx.Pen("navy", 1))
@@ -113,16 +113,16 @@ class TestPanel(wx.Panel):
("FillPath", gc.FillPath),
("DrawPath", gc.DrawPath)]:
w, h = gc.GetTextExtent(label)
-
+
gc.DrawText(label, -w/2, -BASE2-h-4)
PathFunc(path)
gc.Translate(2*BASE, 0)
-
+
gc.PopState() # restore saved state
gc.PushState() # save it again
gc.Translate(60, 200) # offset to the lower part of the window
-
+
gc.DrawText("Scale", 0, -BASE2)
gc.Translate(0, 20)
@@ -132,11 +132,11 @@ class TestPanel(wx.Panel):
# (100,100), (0,100), (0,0) ])
#gc.ClipRegion(rgn)
#gc.ResetClip()
-
+
gc.SetBrush(wx.Brush(wx.Colour(178, 34, 34, 128))) # 128 == half transparent
for cnt in range(8):
gc.Scale(1.08, 1.08) # increase scale by 8%
- gc.Translate(5,5)
+ gc.Translate(5,5)
gc.DrawPath(path)
@@ -151,12 +151,12 @@ class TestPanel(wx.Panel):
# draw our path again, rotating it about the central point,
# and changing colors as we go
for angle in range(0, 360, 30):
- gc.PushState() # save this new current state so we can
+ gc.PushState() # save this new current state so we can
# pop back to it at the end of the loop
r, g, b = [int(c * 255) for c in colorsys.hsv_to_rgb(float(angle)/360, 1, 1)]
gc.SetBrush(wx.Brush(wx.Colour(r, g, b, 64)))
gc.SetPen(wx.Pen(wx.Colour(r, g, b, 128)))
-
+
# use translate to artfully reposition each drawn path
gc.Translate(1.5 * BASE2 * cos(radians(angle)),
1.5 * BASE2 * sin(radians(angle)))
@@ -172,12 +172,12 @@ class TestPanel(wx.Panel):
bmp = wx.Bitmap(opj('bitmaps/toucan.png'))
bsz = bmp.GetSize()
gc.DrawBitmap(bmp,
- #-bsz.width,
+ #-bsz.width,
#-bsz.height/2,
- -bsz.width/2.5,
+ -bsz.width/2.5,
-bsz.height/2.5,
-
+
bsz.width, bsz.height)
diff --git a/demo/GraphicsGradient.py b/demo/GraphicsGradient.py
index f53acf67..f452de34 100644
--- a/demo/GraphicsGradient.py
+++ b/demo/GraphicsGradient.py
@@ -21,8 +21,8 @@ class GradientPanel(wx.Panel):
# create a simple default brush we can use until a gradient
# brush is given to us
- ctx = g.GraphicsContext.CreateMeasuringContext()
- self.brush = ctx.CreateBrush(wx.Brush('white'))
+ ctx = g.GraphicsContext.Create()
+ self.brush = wx.WHITE_BRUSH
def DrawWithBrush(self, brush):
self.brush = brush
@@ -37,7 +37,6 @@ class GradientPanel(wx.Panel):
gc.DrawRectangle(0,0,w,h)
-
class GradientStopPanel(wx.Panel):
"""
Contains the controls for editing each gradient stop. (Colour,
@@ -49,13 +48,13 @@ class GradientStopPanel(wx.Panel):
# make some widgets
self.pos = wx.SpinCtrlDouble(self, value='%2f' % posVal, size=(65,-1),
min=0.0, max=1.0, initial=posVal, inc=0.01)
- self.pos.SetToolTipString(
+ self.pos.SetToolTip(
"A value between 0 and 1 representing the distance between (x1,y1) "
"and (x2,y2) for this gradient stop.")
- self.colour = wx.ColourPickerCtrl(self, col=colour)
- self.colour.SetToolTipString("The colour for this gradient stop")
+ self.colour = wx.ColourPickerCtrl(self, colour=colour)
+ self.colour.SetToolTip("The colour for this gradient stop")
self.minusBtn = wx.Button(self, -1, " - ", style=wx.BU_EXACTFIT)
- self.minusBtn.SetToolTipString("Remove this gradient stop")
+ self.minusBtn.SetToolTip("Remove this gradient stop")
# put them in a sizer
sizer = wx.BoxSizer(wx.HORIZONTAL)
@@ -230,7 +229,7 @@ class TestPanel(wx.Panel):
s.colour.GetColour(), s.pos.GetValue())
gstops.Add(gs)
- ctx = g.GraphicsContext.CreateMeasuringContext()
+ ctx = g.GraphicsContext.Create()
brush = ctx.CreateLinearGradientBrush(x1,y1, x2,y2, gstops)
self.gpanel.DrawWithBrush(brush)
diff --git a/demo/GridBagSizer.py b/demo/GridBagSizer.py
index 9ea8df74..7fa2867b 100644
--- a/demo/GridBagSizer.py
+++ b/demo/GridBagSizer.py
@@ -68,10 +68,10 @@ class TestFrame(wx.Frame):
gbs.AddGrowableCol(2)
box = wx.BoxSizer()
- box.Add(gbs, 1, wx.ALL|wx.EXPAND, 10)
+ box.Add(gbs, 0, wx.ALL, 10)
- p.SetSizer(box)
- self.SetClientSize(p.GetBestSize())
+ p.SetSizerAndFit(box)
+ self.SetClientSize(p.GetSize())
def OnHideButton(self, evt):
diff --git a/demo/GridCustEditor.py b/demo/GridCustEditor.py
index 22d6e5bc..7b23439c 100644
--- a/demo/GridCustEditor.py
+++ b/demo/GridCustEditor.py
@@ -5,7 +5,7 @@ import wx
import wx.grid as gridlib
#---------------------------------------------------------------------------
-class MyCellEditor(gridlib.PyGridCellEditor):
+class MyCellEditor(gridlib.GridCellEditor):
"""
This is a sample GridCellEditor that shows you how to make your own custom
grid editors. All the methods that can be overridden are shown here. The
@@ -15,7 +15,7 @@ class MyCellEditor(gridlib.PyGridCellEditor):
def __init__(self, log):
self.log = log
self.log.write("MyCellEditor ctor\n")
- gridlib.PyGridCellEditor.__init__(self)
+ gridlib.GridCellEditor.__init__(self)
def Create(self, parent, id, evtHandler):
@@ -39,7 +39,7 @@ class MyCellEditor(gridlib.PyGridCellEditor):
PaintBackground and do something meaningful there.
"""
self.log.write("MyCellEditor: SetSize %s\n" % rect)
- self._tc.SetDimensions(rect.x, rect.y, rect.width+2, rect.height+2,
+ self._tc.SetSize(rect.x, rect.y, rect.width+2, rect.height+2,
wx.SIZE_ALLOW_MINUS_ONE)
@@ -93,7 +93,7 @@ class MyCellEditor(gridlib.PyGridCellEditor):
return val
else:
return None
-
+
def ApplyEdit(self, row, col, grid):
"""
@@ -108,7 +108,7 @@ class MyCellEditor(gridlib.PyGridCellEditor):
self.startValue = ''
self._tc.SetValue('')
-
+
def Reset(self):
"""
@@ -144,8 +144,8 @@ class MyCellEditor(gridlib.PyGridCellEditor):
self.log.write("MyCellEditor: StartingKey %d\n" % evt.GetKeyCode())
key = evt.GetKeyCode()
ch = None
- if key in [ wx.WXK_NUMPAD0, wx.WXK_NUMPAD1, wx.WXK_NUMPAD2, wx.WXK_NUMPAD3,
- wx.WXK_NUMPAD4, wx.WXK_NUMPAD5, wx.WXK_NUMPAD6, wx.WXK_NUMPAD7,
+ if key in [ wx.WXK_NUMPAD0, wx.WXK_NUMPAD1, wx.WXK_NUMPAD2, wx.WXK_NUMPAD3,
+ wx.WXK_NUMPAD4, wx.WXK_NUMPAD5, wx.WXK_NUMPAD6, wx.WXK_NUMPAD7,
wx.WXK_NUMPAD8, wx.WXK_NUMPAD9
]:
diff --git a/demo/GridSimple.py b/demo/GridSimple.py
index 9939748a..77e92c98 100644
--- a/demo/GridSimple.py
+++ b/demo/GridSimple.py
@@ -94,7 +94,7 @@ class SimpleGrid(gridlib.Grid): ##, mixins.GridAutoEditMixin):
self.Bind(gridlib.EVT_GRID_COL_SIZE, self.OnColSize)
self.Bind(gridlib.EVT_GRID_RANGE_SELECT, self.OnRangeSelect)
- self.Bind(gridlib.EVT_GRID_CELL_CHANGE, self.OnCellChange)
+ self.Bind(gridlib.EVT_GRID_CELL_CHANGED, self.OnCellChange)
self.Bind(gridlib.EVT_GRID_SELECT_CELL, self.OnSelectCell)
self.Bind(gridlib.EVT_GRID_EDITOR_SHOWN, self.OnEditorShown)
diff --git a/demo/GridStdEdRend.py b/demo/GridStdEdRend.py
index 6a89c3e1..808f908b 100644
--- a/demo/GridStdEdRend.py
+++ b/demo/GridStdEdRend.py
@@ -6,15 +6,15 @@ import wx.grid as gridlib
#---------------------------------------------------------------------------
-class MyCustomRenderer(gridlib.PyGridCellRenderer):
+class MyCustomRenderer(gridlib.GridCellRenderer):
def __init__(self):
- gridlib.PyGridCellRenderer.__init__(self)
+ gridlib.GridCellRenderer.__init__(self)
def Draw(self, grid, attr, dc, rect, row, col, isSelected):
dc.SetBackgroundMode(wx.SOLID)
dc.SetBrush(wx.Brush(wx.BLACK, wx.SOLID))
dc.SetPen(wx.TRANSPARENT_PEN)
- dc.DrawRectangleRect(rect)
+ dc.DrawRectangle(rect)
dc.SetBackgroundMode(wx.TRANSPARENT)
dc.SetFont(attr.GetFont())
diff --git a/demo/Grid_MegaExample.py b/demo/Grid_MegaExample.py
index 54c02e3a..418976a5 100644
--- a/demo/Grid_MegaExample.py
+++ b/demo/Grid_MegaExample.py
@@ -6,7 +6,7 @@ import images
#---------------------------------------------------------------------------
-class MegaTable(Grid.PyGridTableBase):
+class MegaTable(Grid.GridTableBase):
"""
A custom wx.Grid Table using user supplied data
"""
@@ -17,7 +17,7 @@ class MegaTable(Grid.PyGridTableBase):
colname
"""
# The base class must be initialized *first*
- Grid.PyGridTableBase.__init__(self)
+ Grid.GridTableBase.__init__(self)
self.data = data
self.colnames = colnames
self.plugins = plugins or {}
@@ -187,14 +187,14 @@ class MegaTable(Grid.PyGridTableBase):
# --------------------------------------------------------------------
# Sample wx.Grid renderers
-class MegaImageRenderer(Grid.PyGridCellRenderer):
+class MegaImageRenderer(Grid.GridCellRenderer):
def __init__(self, table):
"""
Image Renderer Test. This just places an image in a cell
based on the row index. There are N choices and the
choice is made by choice[row%N]
"""
- Grid.PyGridCellRenderer.__init__(self)
+ Grid.GridCellRenderer.__init__(self)
self.table = table
self._choices = [images.Smiles.GetBitmap,
images.Mondrian.GetBitmap,
@@ -236,10 +236,10 @@ class MegaImageRenderer(Grid.PyGridCellRenderer):
0, 0, wx.COPY, True)
-class MegaFontRenderer(Grid.PyGridCellRenderer):
+class MegaFontRenderer(Grid.GridCellRenderer):
def __init__(self, table, color="blue", font="ARIAL", fontsize=8):
"""Render data in the specified color and font and fontsize"""
- Grid.PyGridCellRenderer.__init__(self)
+ Grid.GridCellRenderer.__init__(self)
self.table = table
self.color = color
self.font = wx.Font(fontsize, wx.DEFAULT, wx.NORMAL, wx.NORMAL, 0, font)
@@ -257,7 +257,7 @@ class MegaFontRenderer(Grid.PyGridCellRenderer):
# clear the background
dc.SetBackgroundMode(wx.SOLID)
-
+
if isSelected:
dc.SetBrush(wx.Brush(wx.BLUE, wx.SOLID))
dc.SetPen(wx.Pen(wx.BLUE, 1, wx.SOLID))
@@ -288,7 +288,7 @@ class MegaFontRenderer(Grid.PyGridCellRenderer):
# when the text is larger than the grid cell
width, height = dc.GetTextExtent(text)
-
+
if width > rect.width-2:
width, height = dc.GetTextExtent("...")
x = rect.x+1 + rect.width-2 - width
diff --git a/demo/HTML2_WebView.py b/demo/HTML2_WebView.py
index e57376a8..72a56c16 100644
--- a/demo/HTML2_WebView.py
+++ b/demo/HTML2_WebView.py
@@ -17,8 +17,8 @@ class TestPanel(wx.Panel):
sizer = wx.BoxSizer(wx.VERTICAL)
btnSizer = wx.BoxSizer(wx.HORIZONTAL)
self.wv = webview.WebView.New(self)
- self.Bind(webview.EVT_WEB_VIEW_NAVIGATING, self.OnWebViewNavigating, self.wv)
- self.Bind(webview.EVT_WEB_VIEW_LOADED, self.OnWebViewLoaded, self.wv)
+ self.Bind(webview.EVT_WEBVIEW_NAVIGATING, self.OnWebViewNavigating, self.wv)
+ self.Bind(webview.EVT_WEBVIEW_LOADED, self.OnWebViewLoaded, self.wv)
btn = wx.Button(self, -1, "Open", style=wx.BU_EXACTFIT)
diff --git a/demo/HtmlWindow.py b/demo/HtmlWindow.py
index ec583b6b..632a9f2c 100644
--- a/demo/HtmlWindow.py
+++ b/demo/HtmlWindow.py
@@ -69,7 +69,7 @@ class TestHtmlPanel(wx.Panel):
if frame:
self.titleBase = frame.GetTitle()
- html.HtmlWindow_AddFilter(MyHtmlFilter(log))
+ html.HtmlWindow.AddFilter(MyHtmlFilter(log))
self.html = MyHtmlWindow(self, -1, log)
self.html.SetRelatedFrame(frame, self.titleBase + " -- %s")
@@ -132,10 +132,10 @@ class TestHtmlPanel(wx.Panel):
def OnLoadFile(self, event):
- dlg = wx.FileDialog(self, style=wx.OPEN,
+ dlg = wx.FileDialog(self, style=wx.FD_OPEN,
wildcard='HTML Files|*.htm;*.html', )
- if dlg.ShowModal():
+ if dlg.ShowModal() == wx.OK:
path = dlg.GetPath()
self.html.LoadPage(path)
@@ -145,7 +145,7 @@ class TestHtmlPanel(wx.Panel):
def OnLoadURL(self, event):
dlg = wx.TextEntryDialog(self, "Enter a URL")
- if dlg.ShowModal():
+ if dlg.ShowModal() == wx.OK:
url = dlg.GetValue()
self.html.LoadPage(url)
diff --git a/demo/I18N.py b/demo/I18N.py
index e35f483a..15063047 100644
--- a/demo/I18N.py
+++ b/demo/I18N.py
@@ -24,20 +24,20 @@ exampleStrings = [
]
-[wxID_LANGUAGESELECTPANEL, wxID_LANGUAGESELECTPANELENGLISHBASECH,
- wxID_LANGUAGESELECTPANELLANGCTRLCONTAINER,
- wxID_LANGUAGESELECTPANELLANGFILTERRB, wxID_LANGUAGESELECTPANELSTATICLINE1,
- wxID_LANGUAGESELECTPANELSTATICTEXT1, wxID_LANGUAGESELECTPANELSTATICTEXT2,
- wxID_LANGUAGESELECTPANELSTATICTEXT3, wxID_LANGUAGESELECTPANELTRANSLATEDST,
+[wxID_LANGUAGESELECTPANEL, wxID_LANGUAGESELECTPANELENGLISHBASECH,
+ wxID_LANGUAGESELECTPANELLANGCTRLCONTAINER,
+ wxID_LANGUAGESELECTPANELLANGFILTERRB, wxID_LANGUAGESELECTPANELSTATICLINE1,
+ wxID_LANGUAGESELECTPANELSTATICTEXT1, wxID_LANGUAGESELECTPANELSTATICTEXT2,
+ wxID_LANGUAGESELECTPANELSTATICTEXT3, wxID_LANGUAGESELECTPANELTRANSLATEDST,
] = [wx.NewId() for _init_ctrls in range(9)]
class LanguageSelectPanel(wx.Panel):
def _init_coll_boxSizer3_Items(self, parent):
# generated method, don't edit
- parent.AddWindow(self.langCtrlContainer, 1, border=0, flag=wx.GROW)
- parent.AddSpacer(wx.Size(8, 8), border=0, flag=0)
- parent.AddWindow(self.langFilterRB, 0, border=0, flag=0)
+ parent.Add(self.langCtrlContainer, 1, flag=wx.GROW, border=0)
+ parent.Add(wx.Size(8, 8), flag=0, border=0)
+ parent.Add(self.langFilterRB, 0, flag=0, border=0)
def _init_coll_flexGridSizer1_Growables(self, parent):
# generated method, don't edit
@@ -48,18 +48,18 @@ class LanguageSelectPanel(wx.Panel):
def _init_coll_boxSizer1_Items(self, parent):
# generated method, don't edit
- parent.AddWindow(self.staticText1, 0, border=8, flag=wx.ALL)
- parent.AddSizer(self.boxSizer3, 1, border=8, flag=wx.ALL | wx.GROW)
- parent.AddSizer(self.boxSizer2, 0, border=8, flag=wx.GROW | wx.ALL)
+ parent.Add(self.staticText1, 0, border=8, flag=wx.ALL)
+ parent.Add(self.boxSizer3, 1, flag=wx.ALL | wx.GROW, border=8)
+ parent.Add(self.boxSizer2, 0, flag=wx.GROW | wx.ALL, border=8)
def _init_coll_boxSizer2_Items(self, parent):
# generated method, don't edit
- parent.AddWindow(self.staticText2, 0, border=8, flag=wx.ALL)
- parent.AddWindow(self.englishBaseCh, 0, border=8, flag=wx.GROW | wx.ALL)
- parent.AddWindow(self.staticLine1, 0, border=8, flag=wx.GROW | wx.ALL)
- parent.AddWindow(self.staticText3, 0, border=8, flag=wx.ALL)
- parent.AddWindow(self.translatedST, 0, border=8, flag=wx.GROW | wx.ALL)
+ parent.Add(self.staticText2, 0, flag=wx.ALL, border=8)
+ parent.Add(self.englishBaseCh, 0, flag=wx.GROW | wx.ALL, border=8)
+ parent.Add(self.staticLine1, 0, flag=wx.GROW | wx.ALL, border=8)
+ parent.Add(self.staticText3, 0, flag=wx.ALL, border=8)
+ parent.Add(self.translatedST, 0, flag=wx.GROW | wx.ALL, border=8)
def _init_sizers(self):
# generated method, don't edit
@@ -81,9 +81,9 @@ class LanguageSelectPanel(wx.Panel):
def _init_ctrls(self, prnt):
# generated method, don't edit
wx.Panel.__init__(self, id=wxID_LANGUAGESELECTPANEL,
- name='LanguageSelectPanel', parent=prnt,
+ name='LanguageSelectPanel', parent=prnt,
style=wx.RESIZE_BORDER | wx.DEFAULT_DIALOG_STYLE)
-
+
self.staticText1 = wx.StaticText(id=wxID_LANGUAGESELECTPANELSTATICTEXT1,
label='Choose a language that will be used for example translation.',
name='staticText1', parent=self, style=0)
@@ -126,14 +126,14 @@ class LanguageSelectPanel(wx.Panel):
def __init__(self, parent, log):
self.choices = []
self.choices = exampleStrings
-
+
self._init_ctrls(parent)
self.log = log
lang = wx.LANGUAGE_DEFAULT
filter = 'demo'
- langs = (wx.LANGUAGE_AFRIKAANS, wx.LANGUAGE_ENGLISH, wx.LANGUAGE_DEFAULT,
+ langs = (wx.LANGUAGE_AFRIKAANS, wx.LANGUAGE_ENGLISH, wx.LANGUAGE_DEFAULT,
wx.LANGUAGE_SPANISH, wx.LANGUAGE_GERMAN, wx.LANGUAGE_ITALIAN,
wx.LANGUAGE_FRENCH)
@@ -144,23 +144,23 @@ class LanguageSelectPanel(wx.Panel):
wx.Locale.AddCatalogLookupPathPrefix(opj('data/locale'))
self.updateLanguage(wx.LANGUAGE_DEFAULT)
-
- self.filterMap = {'demo': langlistctrl.LC_ONLY,
- 'available': langlistctrl.LC_AVAILABLE,
+
+ self.filterMap = {'demo': langlistctrl.LC_ONLY,
+ 'available': langlistctrl.LC_AVAILABLE,
'all': langlistctrl.LC_ALL}
-
- self.filterIdxMap = {0: 'demo',
- 1: 'available',
+
+ self.filterIdxMap = {0: 'demo',
+ 1: 'available',
2: 'all'}
self.langs = langs
- self.langCtrl = langlistctrl.LanguageListCtrl(self.langCtrlContainer, -1,
+ self.langCtrl = langlistctrl.LanguageListCtrl(self.langCtrlContainer, -1,
filter=self.filterMap[filter], only=langs, select=lang)
-
+
self.langCtrl.Bind(wx.EVT_LIST_ITEM_SELECTED, self.OnLangSelectAndTranslate)
self.langCtrl.Bind(wx.EVT_LIST_ITEM_DESELECTED, self.OnClearTranslatedText)
-
+
self.OnLangCtrlContainerSize()
-
+
self.englishBaseCh.Select(0)
self.OnLangSelectAndTranslate()
@@ -174,7 +174,7 @@ class LanguageSelectPanel(wx.Panel):
if self.locale:
assert sys.getrefcount(self.locale) <= 2
del self.locale
-
+
# create a locale object for this language
self.locale = wx.Locale(lang)
if self.locale.IsOk():
@@ -196,22 +196,22 @@ class LanguageSelectPanel(wx.Panel):
def OnLangSelectAndTranslate(self, event=None):
lang = self.langCtrl.GetLanguage()
-
+
if lang is not None:
# set to the selected language
self.updateLanguage(lang)
self.translateExample()
-
+
# set back to default
self.updateLanguage(wx.LANGUAGE_DEFAULT)
def OnClearTranslatedText(self, event):
- self.translatedST.SetLabel('')
+ self.translatedST.SetLabel('')
def runTest(frame, nb, log):
- win = LanguageSelectPanel(nb, log)
+ win = LanguageSelectPanel(nb, log)
return win
#-------------------------------------------------------------------------------
@@ -221,13 +221,13 @@ overview = """
This demo demonstrates how to setup and use the wx.Locale object to translate text.
-It also shows the langlistctrl.LanguageListCtrl that can be used to display
+It also shows the langlistctrl.LanguageListCtrl that can be used to display
languages with their associated countries flags, e.g. for setting the language
in your application.
"""
-
+
if __name__ == '__main__':
import sys,os
import run
diff --git a/demo/Image.py b/demo/Image.py
index 7b1cdb7c..b8320417 100644
--- a/demo/Image.py
+++ b/demo/Image.py
@@ -55,7 +55,9 @@ a file in a variety of formats, and is extensible to new formats via image
format handlers. Functions are available to set and get image bits, so it can
be used for basic image manipulation.
-
The following image handlers are available.
+
The following image handlers are available. wxBMPHandler is always installed
+by default. To use other image formats, install the appropriate handler or use
+wx.InitAllImageHandlers().
diff --git a/demo/ImageFromStream.py b/demo/ImageFromStream.py
index 15e1e399..0e1cc7b4 100644
--- a/demo/ImageFromStream.py
+++ b/demo/ImageFromStream.py
@@ -14,7 +14,7 @@ class TestPanel(wx.Panel):
data = open(opj('bitmaps/image.png'), "rb").read()
stream = cStringIO.StringIO(data)
- bmp = wx.BitmapFromImage( wx.ImageFromStream( stream ))
+ bmp = wx.Bitmap(wx.Image(stream))
wx.StaticText(
self, -1, "This image was loaded from a Python file-like object:",
diff --git a/demo/Img2PyArtProvider.py b/demo/Img2PyArtProvider.py
index 206979f0..bd2f55c7 100644
--- a/demo/Img2PyArtProvider.py
+++ b/demo/Img2PyArtProvider.py
@@ -29,7 +29,7 @@ class TestPanel(wx.Panel):
box.Add(ch, 0, wx.ALIGN_CENTER_VERTICAL)
box.Add((50,10))
- bmp = wx.EmptyBitmap(32,22)
+ bmp = wx.Bitmap(32,22)
self.bmpFlag = wx.StaticBitmap(self, -1, bmp)
box.Add(self.bmpFlag, 0, wx.ALIGN_CENTER_VERTICAL)
@@ -53,8 +53,8 @@ class TestPanel(wx.Panel):
def getArt(self):
bmp = wx.ArtProvider.GetBitmap('wx.ART_'+self.country, wx.ART_OTHER, (32,22))
- if not bmp.Ok():
- bmp = wx.EmptyBitmap(32,22)
+ if not bmp.IsOk():
+ bmp = wx.Bitmap(32,22)
self.clearBmp(bmp)
self.bmpFlag.SetBitmap(bmp)
diff --git a/demo/ItemsPicker.py b/demo/ItemsPicker.py
index c7a27b41..9f3b8cff 100644
--- a/demo/ItemsPicker.py
+++ b/demo/ItemsPicker.py
@@ -24,7 +24,7 @@ class TestPanel(wx.Panel):
b.Bind(wx.EVT_BUTTON,self.Go)
sizer.Add(b,0,wx.ALL,10)
self.SetSizer(sizer)
-
+
def Go(self,e):
style = 0
if self.sortChoices.GetValue():
@@ -35,17 +35,17 @@ class TestPanel(wx.Panel):
style |= IP_REMOVE_FROM_CHOICES
d = ItemsPickerDialog(self, style, self.log)
d.ShowModal()
-
-
+
+
class ItemsPickerDialog(wx.Dialog):
def __init__(self,parent, style, log):
wx.Dialog.__init__(self,parent)
self.log = log
- sizer =wx.BoxSizer(wx.VERTICAL)
+ sizer = wx.BoxSizer(wx.VERTICAL)
b = wx.Button(self, -1, "Add Item")
b.Bind(wx.EVT_BUTTON, self.OnAdd)
sizer.Add(b, 0, wx.ALL, 5)
- self.ip = ItemsPicker(self,-1,
+ self.ip = ItemsPicker(self,-1,
['ThisIsItem3','ThisIsItem2','ThisIsItem1'],
'Stuff:', 'Selected stuff:',ipStyle = style)
self.ip.Bind(EVT_IP_SELECTION_CHANGED, self.OnSelectionChange)
@@ -54,13 +54,13 @@ class ItemsPickerDialog(wx.Dialog):
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()))
@@ -76,14 +76,14 @@ def runTest(frame, nb, log):
overview = """
-ItemsPicker
-
+ItemsPicker
+
ItemsPicker is a widget that allows the user to choose a set of picked
items out of a given list
"""
-
+
if __name__ == '__main__':
import sys,os
diff --git a/demo/Joystick.py b/demo/Joystick.py
index f26d7e1a..26696289 100644
--- a/demo/Joystick.py
+++ b/demo/Joystick.py
@@ -6,7 +6,7 @@
# .wdr-derived demo
#
# Created: 02-Jan-2004
-# RCS-ID: $Id$
+# RCS-ID: $Id: Joystick.py 71447 2012-05-17 02:41:08Z RD $
# Copyright:
# Licence: wxWindows license
#----------------------------------------------------------------------------
@@ -14,6 +14,7 @@
import math
import wx
+import wx.adv
haveJoystick = True
if wx.Platform == "__WXMAC__":
@@ -45,41 +46,38 @@ class JoyGauge(wx.Panel):
self.stick = stick
size = (100,100)
-
+
wx.Panel.__init__(self, parent, -1, size=size)
self.Bind(wx.EVT_PAINT, self.OnPaint)
self.Bind(wx.EVT_SIZE, self.OnSize)
self.Bind(wx.EVT_ERASE_BACKGROUND, lambda e: None)
- self.buffer = wx.EmptyBitmap(*size)
+ self.buffer = wx.Bitmap(*size)
dc = wx.BufferedDC(None, self.buffer)
self.DrawFace(dc)
self.DrawJoystick(dc)
-
+
def OnSize(self, event):
# The face Bitmap init is done here, to make sure the buffer is always
# the same size as the Window
w, h = self.GetClientSize()
- self.buffer = wx.EmptyBitmap(w,h)
+ self.buffer = wx.Bitmap(w,h)
dc = wx.BufferedDC(wx.ClientDC(self), self.buffer)
self.DrawFace(dc)
self.DrawJoystick(dc)
-
def DrawFace(self, dc):
dc.SetBackground(wx.Brush(self.GetBackgroundColour()))
dc.Clear()
-
def OnPaint(self, evt):
# When dc is destroyed it will blit self.buffer to the window,
# since no other drawing is needed we'll just return and let it
# do it's thing
dc = wx.BufferedPaintDC(self, self.buffer)
-
def DrawJoystick(self, dc):
# draw the guage as a maxed square in the center of this window.
w, h = self.GetClientSize()
@@ -94,7 +92,7 @@ class JoyGauge(wx.Panel):
dc.SetClippingRegion(xorigin, yorigin, edgeSize, edgeSize)
# Optimize drawing a bit (for Win)
- dc.BeginDrawing()
+ # dc.BeginDrawing()
dc.SetBrush(wx.Brush(wx.Colour(251, 252, 237)))
dc.DrawRectangle(xorigin, yorigin, edgeSize, edgeSize)
@@ -143,8 +141,7 @@ class JoyGauge(wx.Panel):
dc.CrossHair(x, y)
# Turn off drawing optimization
- dc.EndDrawing()
-
+ # dc.EndDrawing()
def Update(self):
dc = wx.BufferedDC(wx.ClientDC(self), self.buffer)
@@ -201,7 +198,7 @@ class POVGauge(wx.Panel):
self.Bind(wx.EVT_SIZE, self.OnSize)
self.Bind(wx.EVT_ERASE_BACKGROUND, lambda e: None)
- self.buffer = wx.EmptyBitmap(*self.size)
+ self.buffer = wx.Bitmap(*self.size)
dc = wx.BufferedDC(None, self.buffer)
self.DrawFace(dc)
self.DrawPOV(dc)
@@ -212,24 +209,21 @@ class POVGauge(wx.Panel):
w, h = self.GetClientSize()
s = min(w, h)
self.size = (s, s)
- self.buffer = wx.EmptyBitmap(w,h)
+ self.buffer = wx.Bitmap(w,h)
dc = wx.BufferedDC(wx.ClientDC(self), self.buffer)
self.DrawFace(dc)
self.DrawPOV(dc)
-
def DrawFace(self, dc):
dc.SetBackground(wx.Brush(self.GetBackgroundColour()))
dc.Clear()
-
def OnPaint(self, evt):
# When dc is destroyed it will blit self.buffer to the window,
# since no other drawing is needed we'll just return and let it
# do it's thing
dc = wx.BufferedPaintDC(self, self.buffer)
-
def DrawPOV(self, dc):
# draw the guage as a maxed circle in the center of this window.
w, h = self.GetClientSize()
@@ -241,7 +235,7 @@ class POVGauge(wx.Panel):
ycenter = yorigin + diameter / 2
# Optimize drawing a bit (for Win)
- dc.BeginDrawing()
+ # dc.BeginDrawing()
# our 'raster'.
dc.SetBrush(wx.Brush(wx.WHITE))
@@ -297,15 +291,13 @@ class POVGauge(wx.Panel):
dc.DrawCircle(nx, ny, 8)
# Turn off drawing optimization
- dc.EndDrawing()
-
+ # dc.EndDrawing()
def Update(self):
dc = wx.BufferedDC(wx.ClientDC(self), self.buffer)
self.DrawFace(dc)
self.DrawPOV(dc)
-
def Calibrate(self):
s = self.stick
self.avail = s.HasPOV()
@@ -327,7 +319,7 @@ class POVStatus(wx.Panel):
sizer = wx.BoxSizer(wx.VERTICAL)
sizer.Add((20,20))
-
+
self.avail = wx.CheckBox(self, -1, "Available")
sizer.Add(self.avail, 0, wx.ALL | wx.EXPAND | wx.ALIGN_LEFT, 2)
@@ -364,7 +356,7 @@ class POVPanel(wx.Panel):
gsizer = wx.BoxSizer(wx.VERTICAL)
sizer.Add((25,25))
-
+
fn = parent.GetFont()
fn.SetPointSize(fn.GetPointSize() + 3)
fn.SetWeight(wx.BOLD)
@@ -372,11 +364,11 @@ class POVPanel(wx.Panel):
t = wx.StaticText(self, -1, "POV Control", style = wx.ALIGN_CENTER)
t.SetFont(fn)
gsizer.Add(t, 0, wx.ALL | wx.EXPAND, 1)
-
+
self.display = POVGauge(self, stick)
gsizer.Add(self.display, 1, wx.ALL | wx.EXPAND | wx.ALIGN_CENTER, 1)
sizer.Add(gsizer, 1, wx.ALL | wx.EXPAND | wx.ALIGN_CENTER, 1)
-
+
self.status = POVStatus(self, stick)
sizer.Add(self.status, 1, wx.ALL | wx.EXPAND | wx.ALIGN_CENTER, 1)
@@ -406,14 +398,14 @@ class LED(wx.Panel):
fn.SetPointSize(fn.GetPointSize() - 1)
fn.SetWeight(wx.BOLD)
self.fn = fn
-
+
wx.Panel.__init__(self, parent, -1, size=self.size)
self.Bind(wx.EVT_PAINT, self.OnPaint)
self.Bind(wx.EVT_SIZE, self.OnSize)
self.Bind(wx.EVT_ERASE_BACKGROUND, lambda e: None)
- self.buffer = wx.EmptyBitmap(*self.size)
+ self.buffer = wx.Bitmap(*self.size)
dc = wx.BufferedDC(None, self.buffer)
self.DrawFace(dc)
self.DrawLED(dc)
@@ -424,7 +416,7 @@ class LED(wx.Panel):
w, h = self.GetClientSize()
s = min(w, h)
self.size = (s, s)
- self.buffer = wx.EmptyBitmap(*self.size)
+ self.buffer = wx.Bitmap(*self.size)
dc = wx.BufferedDC(wx.ClientDC(self), self.buffer)
self.DrawFace(dc)
self.DrawLED(dc)
@@ -454,7 +446,7 @@ class LED(wx.Panel):
yorigin = center - (bh / 2)
# Optimize drawing a bit (for Win)
- dc.BeginDrawing()
+ # dc.BeginDrawing()
# our 'raster'.
if self.state == 0:
@@ -488,7 +480,8 @@ class LED(wx.Panel):
dc.DrawText(txt, tx, ty)
# Turn off drawing optimization
- dc.EndDrawing()
+ # dc.EndDrawing()
+ # dc.EndDrawing()
def Update(self):
@@ -815,9 +808,9 @@ class Axis(wx.Panel):
if min < 0:
max += abs(min)
val += abs(min)
- min = 0
+ min = 0
range = float(max - min)
-
+
#
# The relative value is used by the derived wx.Gauge since it is a
# positive-only control.
@@ -905,7 +898,7 @@ class JoystickDemoPanel(wx.Panel):
# Try to grab the control. If we get it, capture the stick.
# Otherwise, throw up an exception message and play stupid.
try:
- self.stick = wx.Joystick()
+ self.stick = wx.adv.Joystick()
self.stick.SetCapture(self)
# Calibrate our controls
wx.CallAfter(self.Calibrate)
@@ -924,10 +917,10 @@ class JoystickDemoPanel(wx.Panel):
self.joy = JoyPanel(self, self.stick)
sizer.Add(self.joy, (1, 0), (1, 1), wx.ALL | wx.GROW, 2)
-
+
self.pov = POVPanel(self, self.stick)
sizer.Add(self.pov, (1, 1), (1, 2), wx.ALL | wx.GROW, 2)
-
+
self.axes = AxisPanel(self, self.stick)
sizer.Add(self.axes, (2, 0), (1, 3), wx.ALL | wx.GROW, 2)
@@ -968,7 +961,7 @@ class JoystickDemoPanel(wx.Panel):
if self.stick:
self.stick.ReleaseCapture()
self.stick = None
-
+
#----------------------------------------------------------------------------
def runTest(frame, nb, log):
@@ -980,7 +973,7 @@ def runTest(frame, nb, log):
win = MessagePanel(nb, 'wx.Joystick is not available on this platform.',
'Sorry', wx.ICON_WARNING)
return win
-
+
#----------------------------------------------------------------------------
@@ -1009,13 +1002,13 @@ a regular basis.
Data types
Data from the joystick comes in two flavors: that which defines the boundaries, and that
-which defines the current state of the stick. Thus, we have Get*Max() and Get*Min()
+which defines the current state of the stick. Thus, we have Get*Max() and Get*Min()
methods for all axes, the max number of axes, the max number of buttons, and so on. In
general, this data can be read once and stored to speed computation up.
Analog Input
-Analog input (the axes) is delivered as a whole, positive number. If you need to know
+Analog input (the axes) is delivered as a whole, positive number. If you need to know
if the axis is at zero (centered) or not, you will first have to calculate that center
based on the max and min values. The demo shows a bar graph for each axis expressed
in native numerical format, plus a 'centered' X-Y axis compass showing the relationship
@@ -1031,29 +1024,29 @@ Button state is retrieved as one int that contains each button state mapped to a
You get the state of a button by AND-ing its bit against the returned value, in the form
- # assume buttonState is what the stick returned, and buttonBit
+ # assume buttonState is what the stick returned, and buttonBit
# is the bit you want to examine
-
+
if (buttonState & ( 1 << buttonBit )) :
# button pressed, do something with it
-The problem here is that some OSs return a 32-bit value for up to 32 buttons
-(imagine that stick!). Python V2.3 will generate an exception for bit
+
The problem here is that some OSs return a 32-bit value for up to 32 buttons
+(imagine that stick!). Python V2.3 will generate an exception for bit
values over 30. For that reason, this demo is limited to 16 buttons.
Note that more than one button can be pressed at a time, so be sure to check all of them!
-
+
POV Input
POV hats come in two flavors: four-way, and continuous. four-way POVs are restricted to
the cardinal points of the compass; continuous, or CTS POV hats can deliver input in
.01 degree increments, theoreticaly. The data is returned as a whole number; the last
-two digits are considered to be to the right of the decimal point, so in order to
-use this information, you need to divide by 100 right off the bat.
+two digits are considered to be to the right of the decimal point, so in order to
+use this information, you need to divide by 100 right off the bat.
-Different methods are provided to retrieve the POV data for a CTS hat
+
Different methods are provided to retrieve the POV data for a CTS hat
versus a four-way hat.
Caveats
@@ -1072,9 +1065,9 @@ rely on wx.JoystickEvents to tell you when something has changed, necessarilly.
Fortunately, there is an easy workaround. In the top level frame, create a wx.Timer
that will poll the stick at a set interval. Of course, if you do this, you might as
well forgo catching wxEVT_JOYSTICK_* events at all and rely on the timer to do the
-polling.
+polling.
-
Ideally, the timer should be a one-shot; after it fires, collect and process data as
+
Ideally, the timer should be a one-shot; after it fires, collect and process data as
needed, then re-start the timer, possibly using wx.CallAfter().
diff --git a/demo/KeyEvents.py b/demo/KeyEvents.py
index 90277cc0..603cc528 100644
--- a/demo/KeyEvents.py
+++ b/demo/KeyEvents.py
@@ -141,7 +141,7 @@ if 'wxMac' in wx.PlatformInfo:
else:
keyMap[wx.WXK_COMMAND] = "WXK_COMMAND"
keyMap[wx.WXK_CONTROL] = "WXK_CONTROL"
-
+
#----------------------------------------------------------------------
@@ -230,14 +230,14 @@ class KeySink(wx.Window):
class KeyLog(wx.ListCtrl, listmix.ListCtrlAutoWidthMixin):
colHeaders = [ "Event Type",
- "Key Name",
- "Key Code",
+ "Key Name",
+ "Key Code",
"Modifiers",
"Unicode",
"UniChr",
"RawKeyCode",
"RawKeyFlags",
- ]
+ ]
def __init__(self, parent):
wx.ListCtrl.__init__(self, parent, -1,
@@ -272,8 +272,9 @@ class KeyLog(wx.ListCtrl, listmix.ListCtrlAutoWidthMixin):
UniChr = ''
if "unicode" in wx.PlatformInfo:
- UniChr = "\"" + unichr(evt.GetUnicodeKey()) + "\""
-
+ # UniChr = "\"" + unichr(evt.GetUnicodeKey()) + "\""
+ UniChr = "\"" + unichr(keycode) + "\""
+
modifiers = ""
for mod, ch in [(evt.ControlDown(), 'C'),
(evt.AltDown(), 'A'),
@@ -285,14 +286,15 @@ class KeyLog(wx.ListCtrl, listmix.ListCtrlAutoWidthMixin):
else:
modifiers += '-'
- id = self.InsertStringItem(self.GetItemCount(), evType)
- self.SetStringItem(id, 1, keyname)
- self.SetStringItem(id, 2, str(keycode))
- self.SetStringItem(id, 3, modifiers)
- self.SetStringItem(id, 4, str(evt.GetUnicodeKey()))
- self.SetStringItem(id, 5, UniChr)
- self.SetStringItem(id, 6, str(evt.GetRawKeyCode()))
- self.SetStringItem(id, 7, str(evt.GetRawKeyFlags()))
+ id = self.InsertItem(self.GetItemCount(), evType)
+ self.SetItem(id, 1, keyname)
+ self.SetItem(id, 2, str(keycode))
+ self.SetItem(id, 3, modifiers)
+ # self.SetItem(id, 4, str(evt.GetUnicodeKey()))
+ self.SetItem(id, 4, unicode(unichr(keycode)))
+ self.SetItem(id, 5, UniChr)
+ self.SetItem(id, 6, str(evt.GetRawKeyCode()))
+ self.SetItem(id, 7, str(evt.GetRawKeyFlags()))
#print ( id, evType, keyname, str(keycode), modifiers, str(evt.GetRawKeyCode()), str(evt.GetRawKeyFlags()))
@@ -325,8 +327,8 @@ class KeyLog(wx.ListCtrl, listmix.ListCtrlAutoWidthMixin):
wx.TheClipboard.Close()
else:
wx.MessageBox("Unable to open the clipboard", "Error")
-
-
+
+
#----------------------------------------------------------------------
@@ -342,12 +344,12 @@ class TestPanel(wx.Panel):
btn = wx.Button(self, -1, "Clear", style=wx.BU_EXACTFIT)
self.Bind(wx.EVT_BUTTON, self.OnClearBtn, btn)
- btn.SetToolTipString(
+ btn.SetToolTip(
"Clear the items from the log window")
btn2 = wx.Button(self, -1, "Copy", style=wx.BU_EXACTFIT)
self.Bind(wx.EVT_BUTTON, self.OnCopyBtn, btn2)
- btn2.SetToolTipString(
+ btn2.SetToolTip(
"Copy the contents of the log window to the clipboard")
cb1 = wx.CheckBox(self, -1, "Call evt.Skip in Key* events")
diff --git a/demo/LayoutConstraints.py b/demo/LayoutConstraints.py
index 3484fe5d..278d2887 100644
--- a/demo/LayoutConstraints.py
+++ b/demo/LayoutConstraints.py
@@ -9,7 +9,7 @@ class TestLayoutConstraints(wx.Panel):
self.SetAutoLayout(True)
self.Bind(wx.EVT_BUTTON, self.OnButton, id=100)
- self.SetBackgroundColour(wx.NamedColour("MEDIUM ORCHID"))
+ self.SetBackgroundColour(wx.Colour("MEDIUM ORCHID"))
self.panelA = wx.Window(self, -1, style=wx.SIMPLE_BORDER)
self.panelA.SetBackgroundColour(wx.BLUE)
diff --git a/demo/ListBox.py b/demo/ListBox.py
index 0e1816a8..2f1273c3 100644
--- a/demo/ListBox.py
+++ b/demo/ListBox.py
@@ -34,7 +34,6 @@ class FindPrefixListBox(wx.ListBox):
self.log.WriteText('Prefix %s is not found.\n' % prefix)
return -1
-
def OnKey(self, evt):
key = evt.GetKeyCode()
@@ -101,18 +100,18 @@ class TestListBox(wx.Panel):
def EvtListBox(self, event):
- self.log.WriteText('EvtListBox: %s, %s, %s, %s\n' %
+ self.log.WriteText('EvtListBox: %s, %s, %s\n' %
(event.GetString(),
event.IsSelection(),
- event.GetSelection(),
- event.GetClientData()))
+ event.GetSelection()
+ # event.GetClientData()
+ ))
lb = event.GetEventObject()
- data = lb.GetClientData(lb.GetSelection())
-
- if data is not None:
- self.log.WriteText('\tdata: %s\n' % data)
+ # data = lb.GetClientData(lb.GetSelection())
+ # if data is not None:
+ # self.log.WriteText('\tdata: %s\n' % data)
def EvtListBoxDClick(self, event):
self.log.WriteText('EvtListBoxDClick: %s\n' % self.lb1.GetSelection())
@@ -142,7 +141,6 @@ def runTest(frame, nb, log):
-
overview = """
A listbox is used to select one or more of a list of
strings. The strings are displayed in a scrolling box, with the
diff --git a/demo/ListCtrl.py b/demo/ListCtrl.py
index 7ad06c1d..75dd4423 100644
--- a/demo/ListCtrl.py
+++ b/demo/ListCtrl.py
@@ -5,7 +5,7 @@
# Author: Robin Dunn & Gary Dumer
#
# Created:
-# RCS-ID: $Id$
+# RCS-ID: $Id: ListCtrl.py 70188 2011-12-29 23:25:41Z RD $
# Copyright: (c) 1998 by Total Control Software
# Licence: wxWindows license
#----------------------------------------------------------------------------
@@ -90,17 +90,17 @@ class TestListCtrlPanel(wx.Panel, listmix.ColumnSorterMixin):
self.log = log
tID = wx.NewId()
-
+
sizer = wx.BoxSizer(wx.VERTICAL)
-
+
if wx.Platform == "__WXMAC__" and \
hasattr(wx.GetApp().GetTopWindow(), "LoadDemo"):
self.useNative = wx.CheckBox(self, -1, "Use native listctrl")
- self.useNative.SetValue(
+ self.useNative.SetValue(
not wx.SystemOptions.GetOptionInt("mac.listctrl.always_use_generic") )
self.Bind(wx.EVT_CHECKBOX, self.OnUseNative, self.useNative)
sizer.Add(self.useNative, 0, wx.ALL | wx.ALIGN_RIGHT, 4)
-
+
self.il = wx.ImageList(16, 16)
self.idx1 = self.il.Add(images.Smiles.GetBitmap())
@@ -108,7 +108,7 @@ class TestListCtrlPanel(wx.Panel, listmix.ColumnSorterMixin):
self.sm_dn = self.il.Add(images.SmallDnArrow.GetBitmap())
self.list = TestListCtrl(self, tID,
- style=wx.LC_REPORT
+ style=wx.LC_REPORT
#| wx.BORDER_SUNKEN
| wx.BORDER_NONE
| wx.LC_EDIT_LABELS
@@ -118,7 +118,7 @@ class TestListCtrlPanel(wx.Panel, listmix.ColumnSorterMixin):
#| wx.LC_HRULES
#| wx.LC_SINGLE_SEL
)
-
+
self.list.SetImageList(self.il, wx.IMAGE_LIST_SMALL)
sizer.Add(self.list, 1, wx.EXPAND)
@@ -153,7 +153,6 @@ class TestListCtrlPanel(wx.Panel, listmix.ColumnSorterMixin):
# for wxGTK
self.list.Bind(wx.EVT_RIGHT_UP, self.OnRightClick)
-
def OnUseNative(self, event):
wx.SystemOptions.SetOptionInt("mac.listctrl.always_use_generic", not event.IsChecked())
wx.GetApp().GetTopWindow().LoadDemo("ListCtrl")
@@ -167,25 +166,25 @@ class TestListCtrlPanel(wx.Panel, listmix.ColumnSorterMixin):
else:
# but since we want images on the column header we have to do it the hard way:
info = wx.ListItem()
- info.m_mask = wx.LIST_MASK_TEXT | wx.LIST_MASK_IMAGE | wx.LIST_MASK_FORMAT
- info.m_image = -1
- info.m_format = 0
- info.m_text = "Artist"
- self.list.InsertColumnInfo(0, info)
+ info.Mask = wx.LIST_MASK_TEXT | wx.LIST_MASK_IMAGE | wx.LIST_MASK_FORMAT
+ info.Image = -1
+ info.Align = 0
+ info.Text = "Artist"
+ self.list.InsertColumn(0, info)
- info.m_format = wx.LIST_FORMAT_RIGHT
- info.m_text = "Title"
- self.list.InsertColumnInfo(1, info)
+ info.Align = wx.LIST_FORMAT_RIGHT
+ info.Text = "Title"
+ self.list.InsertColumn(1, info)
- info.m_format = 0
- info.m_text = "Genre"
- self.list.InsertColumnInfo(2, info)
+ info.Align = 0
+ info.Text = "Genre"
+ self.list.InsertColumn(2, info)
items = musicdata.items()
for key, data in items:
- index = self.list.InsertImageStringItem(sys.maxint, data[0], self.idx1)
- self.list.SetStringItem(index, 1, data[1])
- self.list.SetStringItem(index, 2, data[2])
+ index = self.list.InsertItem(sys.maxint, data[0], self.idx1)
+ self.list.SetItem(index, 1, data[1])
+ self.list.SetItem(index, 2, data[2])
self.list.SetItemData(index, key)
self.list.SetColumnWidth(0, wx.LIST_AUTOSIZE)
@@ -205,7 +204,6 @@ class TestListCtrlPanel(wx.Panel, listmix.ColumnSorterMixin):
self.currentItem = 0
-
# Used by the ColumnSorterMixin, see wx/lib/mixins/listctrl.py
def GetListCtrl(self):
return self.list
@@ -214,7 +212,6 @@ class TestListCtrlPanel(wx.Panel, listmix.ColumnSorterMixin):
def GetSortImages(self):
return (self.sm_dn, self.sm_up)
-
def OnRightDown(self, event):
x = event.GetX()
y = event.GetY()
@@ -226,15 +223,13 @@ class TestListCtrlPanel(wx.Panel, listmix.ColumnSorterMixin):
event.Skip()
-
def getColumnText(self, index, col):
item = self.list.GetItem(index, col)
return item.GetText()
-
def OnItemSelected(self, event):
##print event.GetItem().GetTextColour()
- self.currentItem = event.m_itemIndex
+ self.currentItem = event.Index
self.log.WriteText("OnItemSelected: %s, %s, %s, %s\n" %
(self.currentItem,
self.list.GetItemText(self.currentItem),
@@ -249,18 +244,16 @@ class TestListCtrlPanel(wx.Panel, listmix.ColumnSorterMixin):
event.Skip()
-
def OnItemDeselected(self, evt):
item = evt.GetItem()
- self.log.WriteText("OnItemDeselected: %d" % evt.m_itemIndex)
+ self.log.WriteText("OnItemDeselected: %d" % evt.Index)
# Show how to reselect something we don't want deselected
- if evt.m_itemIndex == 11:
+ if evt.Index == 11:
wx.CallAfter(self.list.SetItemState, 11, wx.LIST_STATE_SELECTED, wx.LIST_STATE_SELECTED)
-
def OnItemActivated(self, event):
- self.currentItem = event.m_itemIndex
+ self.currentItem = event.Index
self.log.WriteText("OnItemActivated: %s\nTopItem: %s" %
(self.list.GetItemText(self.currentItem), self.list.GetTopItem()))
@@ -290,7 +283,6 @@ class TestListCtrlPanel(wx.Panel, listmix.ColumnSorterMixin):
#if event.GetColumn() == 0:
# event.Veto()
-
def OnColDragging(self, event):
self.log.WriteText("OnColDragging\n")
@@ -335,18 +327,18 @@ class TestListCtrlPanel(wx.Panel, listmix.ColumnSorterMixin):
self.PopupMenu(menu)
menu.Destroy()
-
def OnPopupOne(self, event):
self.log.WriteText("Popup one\n")
- print "FindItem:", self.list.FindItem(-1, "Roxette")
- print "FindItemData:", self.list.FindItemData(-1, 11)
+ print("FindItem:", self.list.FindItem(-1, "Roxette"))
+ print("FindItemData:", self.list.FindItemData(-1, 11))
def OnPopupTwo(self, event):
self.log.WriteText("Selected items:\n")
index = self.list.GetFirstSelected()
while index != -1:
- self.log.WriteText(" %s: %s\n" % (self.list.GetItemText(index), self.getColumnText(index, 1)))
+ self.log.WriteText(" %s: %s\n" % (self.list.GetItemText(index),
+ self.getColumnText(index, 1)))
index = self.list.GetNextSelected(index)
def OnPopupThree(self, event):
@@ -359,7 +351,9 @@ class TestListCtrlPanel(wx.Panel, listmix.ColumnSorterMixin):
def OnPopupFive(self, event):
item = self.list.GetItem(self.currentItem)
- print item.m_text, item.m_itemId, self.list.GetItemData(self.currentItem)
+ self.log.WriteText("Text:%s, Id:%s, Data:%s" %(item.Text,
+ item.Id,
+ self.list.GetItemData(self.currentItem)))
def OnPopupSix(self, event):
self.list.EditLabel(self.currentItem)
@@ -377,12 +371,12 @@ def runTest(frame, nb, log):
overview = """\
-A list control presents lists in a number of formats: list view, report view,
-icon view and small icon view. In any case, elements are numbered from zero.
-For all these modes (but not for virtual list controls), the items are stored
+A list control presents lists in a number of formats: list view, report view,
+icon view and small icon view. In any case, elements are numbered from zero.
+For all these modes (but not for virtual list controls), the items are stored
in the control and must be added to it using InsertItem method.
-To intercept events from a list control, use the event table macros described in
+
To intercept events from a list control, use the event table macros described in
wxListEvent.
Mix-ins
@@ -392,22 +386,22 @@ This example demonstrates how to use mixins. The following mixins are available.
ColumnSorterMixin(numColumns)
-A mixin class that handles sorting of a wxListCtrl in REPORT mode when the column
+
A mixin class that handles sorting of a wxListCtrl in REPORT mode when the column
header is clicked on.
There are a few requirments needed in order for this to work genericly:
- - The combined class must have a
GetListCtrl method that returns
- the ListCtrl to be sorted, and the list control must exist at the time the
- ColumnSorterMixin.__init__()method is called because it uses
+ - The combined class must have a
GetListCtrl method that returns
+ the ListCtrl to be sorted, and the list control must exist at the time the
+ ColumnSorterMixin.__init__()method is called because it uses
GetListCtrl.
- - Items in the list control must have a unique data value set with
+
- Items in the list control must have a unique data value set with
list.SetItemData.
- The combined class must have an attribute named
itemDataMap
- that is a dictionary mapping the data values to a sequence of objects
- representing the values in each column. These valuesare compared in
+ that is a dictionary mapping the data values to a sequence of objects
+ representing the values in each column. These valuesare compared in
the column sorter to determine sort order.
@@ -424,11 +418,11 @@ set, it also sets up an event handler for EVT_LIST_COL_CLICK events
Sort the list on demand. Can also be used to set the sort column and order.
GetColumnWidths()
-Returns a list of column widths. Can be used to help restore the current
+Returns a list of column widths. Can be used to help restore the current
view later.
GetSortImages()
-Returns a tuple of image list indexes the indexes in the image list for an
+Returns a tuple of image list indexes the indexes in the image list for an
image to be put on the column header when sorting in descending order
GetColumnSorter()
@@ -436,7 +430,7 @@ image to be put on the column header when sorting in descending order
GetSecondarySortValues(col, key1, key2)
Returns a tuple of 2 values to use for secondary sort values when the
-items in the selected column match equal. The default just returns the
+items in the selected column match equal. The default just returns the
item data values.
@@ -445,17 +439,17 @@ item data values.
ListCtrlAutoWidthMixin()
-A mix-in class that automatically resizes the last column to take up the
+
A mix-in class that automatically resizes the last column to take up the
remaining width of the ListCtrl.
-
This causes the ListCtrl to automatically take up the full width of the list,
-without either a horizontal scroll bar (unless absolutely necessary) or empty
+
This causes the ListCtrl to automatically take up the full width of the list,
+without either a horizontal scroll bar (unless absolutely necessary) or empty
space to the right of the last column.
NOTE: This only works for report-style lists.
-
WARNING: If you override the EVT_SIZE event in your ListCtrl,
-make sure you call event.Skip() to ensure that the mixin's _OnResize method is
+
WARNING: If you override the EVT_SIZE event in your ListCtrl,
+make sure you call event.Skip() to ensure that the mixin's _OnResize method is
called.
This mix-in class was written by Erik Westra
@@ -464,12 +458,12 @@ called.
resizeLastColumn(minWidth)
-- Resize the last column appropriately. If the list's columns are too wide to
-fit within the window, we use a horizontal scrollbar. Otherwise, we expand the
-right-most column to take up the remaining free space in the list. This method is
-called automatically when the ListCtrl is resized; you can also call it yourself
-whenever you want the last column to be resized appropriately (eg, when adding,
-removing or resizing columns). 'minWidth' is the preferred minimum width for
+
- Resize the last column appropriately. If the list's columns are too wide to
+fit within the window, we use a horizontal scrollbar. Otherwise, we expand the
+right-most column to take up the remaining free space in the list. This method is
+called automatically when the ListCtrl is resized; you can also call it yourself
+whenever you want the last column to be resized appropriately (eg, when adding,
+removing or resizing columns). 'minWidth' is the preferred minimum width for
the last column.
@@ -481,7 +475,7 @@ the last column.
Mixin that defines a platform independent selection policy
-
As selection single and multi-select list return the item index or a
+
As selection single and multi-select list return the item index or a
list of item indexes respectively.
Methods
@@ -497,7 +491,7 @@ list of item indexes respectively.
Override to implement dynamic menus (destroy).
getSelection()
-Returns the current selection (or selections as a Python list if extended
+Returns the current selection (or selections as a Python list if extended
selection is enabled)
diff --git a/demo/ListCtrl_edit.py b/demo/ListCtrl_edit.py
index f352931e..9ae7e044 100644
--- a/demo/ListCtrl_edit.py
+++ b/demo/ListCtrl_edit.py
@@ -49,9 +49,9 @@ class TestListCtrl(wx.ListCtrl,
items = listctrldata.items()
for key, data in items:
- index = self.InsertStringItem(sys.maxint, data[0])
- self.SetStringItem(index, 1, data[1])
- self.SetStringItem(index, 2, data[2])
+ index = self.InsertItem(sys.maxint, data[0])
+ self.SetItem(index, 1, data[1])
+ self.SetItem(index, 2, data[2])
self.SetItemData(index, key)
self.SetColumnWidth(0, wx.LIST_AUTOSIZE)
@@ -60,22 +60,20 @@ class TestListCtrl(wx.ListCtrl,
self.currentItem = 0
-
def SetStringItem(self, index, col, data):
if col in range(3):
- wx.ListCtrl.SetStringItem(self, index, col, data)
- wx.ListCtrl.SetStringItem(self, index, 3+col, str(len(data)))
+ wx.ListCtrl.SetItem(self, index, col, data)
+ wx.ListCtrl.SetItem(self, index, 3+col, str(len(data)))
else:
try:
datalen = int(data)
except:
return
- wx.ListCtrl.SetStringItem(self, index, col, data)
+ wx.ListCtrl.SetItem(self, index, col, data)
data = self.GetItem(index, col-3).GetText()
- wx.ListCtrl.SetStringItem(self, index, col-3, data[0:datalen])
-
+ wx.ListCtrl.SetItem(self, index, col-3, data[0:datalen])
@@ -87,11 +85,11 @@ class TestListCtrlPanel(wx.Panel):
tID = wx.NewId()
sizer = wx.BoxSizer(wx.VERTICAL)
-
+
if wx.Platform == "__WXMAC__" and \
hasattr(wx.GetApp().GetTopWindow(), "LoadDemo"):
self.useNative = wx.CheckBox(self, -1, "Use native listctrl")
- self.useNative.SetValue(
+ self.useNative.SetValue(
not wx.SystemOptions.GetOptionInt("mac.listctrl.always_use_generic") )
self.Bind(wx.EVT_CHECKBOX, self.OnUseNative, self.useNative)
sizer.Add(self.useNative, 0, wx.ALL | wx.ALIGN_RIGHT, 4)
@@ -108,7 +106,7 @@ class TestListCtrlPanel(wx.Panel):
def OnUseNative(self, event):
- wx.SystemOptions.SetOptionInt("mac.listctrl.always_use_generic", not event.IsChecked())
+ wx.SystemOptions.SetOption("mac.listctrl.always_use_generic", not event.IsChecked())
wx.GetApp().GetTopWindow().LoadDemo("ListCtrl_edit")
diff --git a/demo/ListCtrl_virtual.py b/demo/ListCtrl_virtual.py
index ff211aa2..594d2efb 100644
--- a/demo/ListCtrl_virtual.py
+++ b/demo/ListCtrl_virtual.py
@@ -7,7 +7,7 @@ import images
class TestVirtualList(wx.ListCtrl):
def __init__(self, parent, log):
wx.ListCtrl.__init__(
- self, parent, -1,
+ self, parent, -1,
style=wx.LC_REPORT|wx.LC_VIRTUAL|wx.LC_HRULES|wx.LC_VRULES
)
@@ -41,17 +41,16 @@ class TestVirtualList(wx.ListCtrl):
def makeBlank(self):
- empty = wx.EmptyBitmap(16,16,32)
+ empty = wx.Bitmap(16,16,32)
dc = wx.MemoryDC(empty)
dc.SetBackground(wx.Brush((0,0,0,0)))
dc.Clear()
del dc
empty.SetMaskColour((0,0,0))
return empty
-
def OnItemSelected(self, event):
- self.currentItem = event.m_itemIndex
+ self.currentItem = event.Index
self.log.WriteText('OnItemSelected: "%s", "%s", "%s", "%s"\n' %
(self.currentItem,
self.GetItemText(self.currentItem),
@@ -59,7 +58,7 @@ class TestVirtualList(wx.ListCtrl):
self.getColumnText(self.currentItem, 2)))
def OnItemActivated(self, event):
- self.currentItem = event.m_itemIndex
+ self.currentItem = event.Index
self.log.WriteText("OnItemActivated: %s\nTopItem: %s\n" %
(self.GetItemText(self.currentItem), self.GetTopItem()))
@@ -68,7 +67,7 @@ class TestVirtualList(wx.ListCtrl):
return item.GetText()
def OnItemDeselected(self, evt):
- self.log.WriteText("OnItemDeselected: %s" % evt.m_itemIndex)
+ self.log.WriteText("OnItemDeselected: %s" % evt.Index)
#-----------------------------------------------------------------
@@ -97,24 +96,24 @@ class TestVirtualList(wx.ListCtrl):
class TestVirtualListPanel(wx.Panel):
def __init__(self, parent, log):
wx.Panel.__init__(self, parent, -1, style=wx.WANTS_CHARS)
-
+
self.log = log
sizer = wx.BoxSizer(wx.VERTICAL)
-
+
if wx.Platform == "__WXMAC__" and \
hasattr(wx.GetApp().GetTopWindow(), "LoadDemo"):
self.useNative = wx.CheckBox(self, -1, "Use native listctrl")
- self.useNative.SetValue(
+ self.useNative.SetValue(
not wx.SystemOptions.GetOptionInt("mac.listctrl.always_use_generic") )
self.Bind(wx.EVT_CHECKBOX, self.OnUseNative, self.useNative)
sizer.Add(self.useNative, 0, wx.ALL | wx.ALIGN_RIGHT, 4)
-
+
self.list = TestVirtualList(self, self.log)
sizer.Add(self.list, 1, wx.EXPAND)
-
+
self.SetSizer(sizer)
self.SetAutoLayout(True)
-
+
def OnUseNative(self, event):
wx.SystemOptions.SetOptionInt("mac.listctrl.always_use_generic", not event.IsChecked())
wx.GetApp().GetTopWindow().LoadDemo("ListCtrl_virtual")
diff --git a/demo/MDIDemo.py b/demo/MDIDemo.py
index d884f114..b384fe3e 100644
--- a/demo/MDIDemo.py
+++ b/demo/MDIDemo.py
@@ -1,9 +1,9 @@
import wx
-# Importing ScrolledWindow demo to make use of the MyCanvas
+# Importing ScrolledWindow demo to make use of the MyCanvas
# class defined within.
-import ScrolledWindow
+import ScrolledWindow
import images
SHOW_BACKGROUND = 1
@@ -42,23 +42,24 @@ class MyParentFrame(wx.MDIParentFrame):
def OnExit(self, evt):
self.Close(True)
-
def OnNewWindow(self, evt):
self.winCount = self.winCount + 1
win = wx.MDIChildFrame(self, -1, "Child Window: %d" % self.winCount)
canvas = ScrolledWindow.MyCanvas(win)
win.Show(True)
-
def OnEraseBackground(self, evt):
dc = evt.GetDC()
# tile the background bitmap
- sz = self.GetClientSize()
+ try:
+ sz = self.GetClientSize()
+ except RuntimeError:#closing demo
+ return
w = self.bg_bmp.GetWidth()
h = self.bg_bmp.GetHeight()
x = 0
-
+
while x < sz.width:
y = 0
@@ -74,14 +75,12 @@ class MyParentFrame(wx.MDIParentFrame):
if __name__ == '__main__':
class MyApp(wx.App):
def OnInit(self):
+ wx.InitAllImageHandlers()
frame = MyParentFrame()
frame.Show(True)
self.SetTopWindow(frame)
return True
-
app = MyApp(False)
app.MainLoop()
-
-
diff --git a/demo/MDISashDemo.py b/demo/MDISashDemo.py
index ad7b3261..b9a78e5b 100644
--- a/demo/MDISashDemo.py
+++ b/demo/MDISashDemo.py
@@ -1,6 +1,7 @@
#!/usr/bin/env python
import wx
+import wx.adv
import ScrolledWindow
@@ -42,7 +43,7 @@ class MyParentFrame(wx.MDIParentFrame):
self.Bind(wx.EVT_MENU, self.OnExit, id=ID_Menu_Exit)
self.Bind(
- wx.EVT_SASH_DRAGGED_RANGE, self.OnSashDrag, id=ID_WINDOW_TOP,
+ wx.adv.EVT_SASH_DRAGGED_RANGE, self.OnSashDrag, id=ID_WINDOW_TOP,
id2=ID_WINDOW_BOTTOM
)
@@ -51,34 +52,34 @@ class MyParentFrame(wx.MDIParentFrame):
# Create some layout windows
# A window like a toolbar
- win = wx.SashLayoutWindow(self, ID_WINDOW_TOP, style=wx.NO_BORDER|wx.SW_3D)
+ win = wx.adv.SashLayoutWindow(self, ID_WINDOW_TOP, style=wx.NO_BORDER|wx.adv.SW_3D)
win.SetDefaultSize((1000, 30))
- win.SetOrientation(wx.LAYOUT_HORIZONTAL)
- win.SetAlignment(wx.LAYOUT_TOP)
+ win.SetOrientation(wx.adv.LAYOUT_HORIZONTAL)
+ win.SetAlignment(wx.adv.LAYOUT_TOP)
win.SetBackgroundColour(wx.Colour(255, 0, 0))
- win.SetSashVisible(wx.SASH_BOTTOM, True)
+ win.SetSashVisible(wx.adv.SASH_BOTTOM, True)
self.topWindow = win
# A window like a statusbar
- win = wx.SashLayoutWindow(self, ID_WINDOW_BOTTOM, style=wx.NO_BORDER|wx.SW_3D)
+ win = wx.adv.SashLayoutWindow(self, ID_WINDOW_BOTTOM, style=wx.NO_BORDER|wx.adv.SW_3D)
win.SetDefaultSize((1000, 30))
- win.SetOrientation(wx.LAYOUT_HORIZONTAL)
- win.SetAlignment(wx.LAYOUT_BOTTOM)
+ win.SetOrientation(wx.adv.LAYOUT_HORIZONTAL)
+ win.SetAlignment(wx.adv.LAYOUT_BOTTOM)
win.SetBackgroundColour(wx.Colour(0, 0, 255))
- win.SetSashVisible(wx.SASH_TOP, True)
+ win.SetSashVisible(wx.adv.SASH_TOP, True)
self.bottomWindow = win
# A window to the left of the client window
- win = wx.SashLayoutWindow(self, ID_WINDOW_LEFT1, style=wx.NO_BORDER|wx.SW_3D)
+ win = wx.adv.SashLayoutWindow(self, ID_WINDOW_LEFT1, style=wx.NO_BORDER|wx.adv.SW_3D)
win.SetDefaultSize((120, 1000))
- win.SetOrientation(wx.LAYOUT_VERTICAL)
- win.SetAlignment(wx.LAYOUT_LEFT)
+ win.SetOrientation(wx.adv.LAYOUT_VERTICAL)
+ win.SetAlignment(wx.adv.LAYOUT_LEFT)
win.SetBackgroundColour(wx.Colour(0, 255, 0))
- win.SetSashVisible(wx.SASH_RIGHT, True)
+ win.SetSashVisible(wx.adv.SASH_RIGHT, True)
win.SetExtraBorderSize(10)
textWindow = wx.TextCtrl(win, -1, "", style=wx.TE_MULTILINE|wx.SUNKEN_BORDER)
textWindow.SetValue("A sub window")
@@ -87,22 +88,22 @@ class MyParentFrame(wx.MDIParentFrame):
# Another window to the left of the client window
- win = wx.SashLayoutWindow(self, ID_WINDOW_LEFT2, style=wx.NO_BORDER|wx.SW_3D)
+ win = wx.adv.SashLayoutWindow(self, ID_WINDOW_LEFT2, style=wx.NO_BORDER|wx.adv.SW_3D)
win.SetDefaultSize((120, 1000))
- win.SetOrientation(wx.LAYOUT_VERTICAL)
- win.SetAlignment(wx.LAYOUT_LEFT)
+ win.SetOrientation(wx.adv.LAYOUT_VERTICAL)
+ win.SetAlignment(wx.adv.LAYOUT_LEFT)
win.SetBackgroundColour(wx.Colour(0, 255, 255))
- win.SetSashVisible(wx.SASH_RIGHT, True)
+ win.SetSashVisible(wx.adv.SASH_RIGHT, True)
self.leftWindow2 = win
def OnSashDrag(self, event):
- if event.GetDragStatus() == wx.SASH_STATUS_OUT_OF_RANGE:
+ if event.GetDragStatus() == wx.adv.SASH_STATUS_OUT_OF_RANGE:
return
eID = event.GetId()
-
+
if eID == ID_WINDOW_TOP:
self.topWindow.SetDefaultSize((1000, event.GetDragRect().height))
@@ -115,12 +116,12 @@ class MyParentFrame(wx.MDIParentFrame):
elif eID == ID_WINDOW_BOTTOM:
self.bottomWindow.SetDefaultSize((1000, event.GetDragRect().height))
- wx.LayoutAlgorithm().LayoutMDIFrame(self)
+ wx.adv.LayoutAlgorithm().LayoutMDIFrame(self)
self.GetClientWindow().Refresh()
def OnSize(self, event):
- wx.LayoutAlgorithm().LayoutMDIFrame(self)
+ wx.adv.LayoutAlgorithm().LayoutMDIFrame(self)
def OnExit(self, evt):
@@ -139,6 +140,7 @@ 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/MVCTree.py b/demo/MVCTree.py
index 3f1f5256..ebe9ac16 100644
--- a/demo/MVCTree.py
+++ b/demo/MVCTree.py
@@ -37,13 +37,13 @@ def runTest(frame, nb, log):
# p.AddEditor(FileEditor(p))
p.SetMultiSelect(True)
- tree.EVT_MVCTREE_SEL_CHANGING(p, p.GetId(), selchanging)
- tree.EVT_MVCTREE_SEL_CHANGED(p, p.GetId(), selchanged)
- tree.EVT_MVCTREE_ITEM_EXPANDED(p, p.GetId(), expanded)
- tree.EVT_MVCTREE_ITEM_COLLAPSED(p, p.GetId(), closed)
- tree.EVT_MVCTREE_ADD_ITEM(p, p.GetId(), add)
- tree.EVT_MVCTREE_DELETE_ITEM(p, p.GetId(), delitem)
- tree.EVT_MVCTREE_KEY_DOWN(p, p.GetId(), key)
+ 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
diff --git a/demo/Main.py b/demo/Main.py
index f3ff53b6..a0ab7e9c 100644
--- a/demo/Main.py
+++ b/demo/Main.py
@@ -6,7 +6,7 @@
# Author: Robin Dunn
#
# Created: A long time ago, in a galaxy far, far away...
-# RCS-ID: $Id$
+# RCS-ID: $Id: Main.py 71772 2012-06-14 22:37:10Z RD $
# Copyright: (c) 1999 by Total Control Software
# Licence: wxWindows license
#----------------------------------------------------------------------------
@@ -56,11 +56,13 @@ import cPickle, cStringIO, re, urllib2
import shutil
from threading import Thread
-import wx
-import wx.aui
+import wx
+import wx.adv
+import wx.lib.agw.aui as aui
import wx.html
from wx.lib.msgpanel import MessagePanel
-
+from wx.adv import TaskBarIcon as TaskBarIcon
+from wx.adv import SplashScreen as SplashScreen
import wx.lib.mixins.inspection
import version
@@ -71,8 +73,8 @@ images = None
# For debugging
##wx.Trap();
-##print "wx.VERSION_STRING = %s (%s)" % (wx.VERSION_STRING, wx.USE_UNICODE and 'unicode' or 'ansi')
-##print "pid:", os.getpid()
+##print("wx.VERSION_STRING = %s (%s)" % (wx.VERSION_STRING, wx.USE_UNICODE and 'unicode' or 'ansi'))
+##print("pid:", os.getpid())
##raw_input("Press Enter...")
#---------------------------------------------------------------------------
@@ -89,6 +91,7 @@ _demoPngs = ["overview", "recent", "frame", "dialog", "moredialog", "core",
_treeList = [
# new stuff
('Recent Additions/Updates', [
+ 'BannerWindow',
'PropertyGrid',
'SystemSettings',
'GridLabelRenderer',
@@ -171,7 +174,7 @@ _treeList = [
'RadioButton',
'SashWindow',
'ScrolledWindow',
- 'SearchCtrl',
+ 'SearchCtrl',
'Slider',
'SpinButton',
'SpinCtrl',
@@ -188,7 +191,7 @@ _treeList = [
'TreeCtrl',
'Validator',
]),
-
+
('"Book" Controls', [
'AUI_Notebook',
'Choicebook',
@@ -233,13 +236,13 @@ _treeList = [
'ExpandoTextCtrl',
'FancyText',
'FileBrowseButton',
- 'FloatBar',
+ 'FloatBar',
'FloatCanvas',
'HtmlWindow',
'HTML2_WebView',
'InfoBar',
'IntCtrl',
- 'MVCTree',
+ 'MVCTree',
'MaskedEditControls',
'MaskedNumCtrl',
'MediaCtrl',
@@ -263,7 +266,7 @@ _treeList = [
'TreeMixin',
'VListBox',
]),
-
+
# How to lay out the controls in a frame/dialog
('Window Layout', [
'GridBagSizer',
@@ -331,7 +334,7 @@ _treeList = [
'GraphicsContext',
'GraphicsGradient',
'GLCanvas',
- 'I18N',
+ 'I18N',
'Joystick',
'MimeTypesManager',
'MouseGestures',
@@ -349,7 +352,6 @@ _treeList = [
'Unicode',
]),
-
('Check out the samples dir too', [] ),
]
@@ -367,7 +369,7 @@ _eventTable = 'Events
\n' \
_appearanceTable = 'Appearance
\n' \
'Control appearance on various platform:\n' \
'
'
-
+
_styleHeaders = ["Style Name", "Description"]
_eventHeaders = ["Event Name", "Description"]
_headerTable = '| %s | '
@@ -387,7 +389,7 @@ _importList = ["wx.aui", "wx.calendar", "wx.html", "wx.media", "wx.wizard",
"wx.combo", "wx.animate", "wx.gizmos", "wx.glcanvas", "wx.grid",
"wx.richtext", "wx.stc"]
-_dirWX = dir(wx)
+_dirWX = dir(wx)
for mod in _importList:
try:
module = __import__(mod)
@@ -405,7 +407,7 @@ def ReplaceCapitals(string):
* `string`: the string to be analyzed.
"""
-
+
newString = ""
for char in string:
if char.isupper():
@@ -415,7 +417,7 @@ def ReplaceCapitals(string):
return newString
-
+
def RemoveHTMLTags(data):
"""
Removes all the HTML tags from a string.
@@ -440,7 +442,7 @@ def FormatDocs(keyword, values, num):
text = "
" + table%(keyword.lower(), keyword.lower()) + "\n\n"
else:
text = "
" + table
-
+
for indx in xrange(2):
text += _headerTable%headers[indx]
@@ -449,16 +451,16 @@ def FormatDocs(keyword, values, num):
for name in names:
text += "
\n"
-
+
description = values[name].strip()
pythonValue = name.replace("wx", "wx.")
if num == 3:
-
+
colour = "#ff0000"
value = "Unavailable"
cutValue = pythonValue[3:]
-
+
if cutValue in _dirWX:
try:
val = eval(pythonValue)
@@ -475,19 +477,19 @@ def FormatDocs(keyword, values, num):
pythonValue = "%s.%s"%(packages, cutValue)
break
- text += _styleTag%pythonValue + "\n"
+ text += _styleTag%pythonValue + "\n"
else:
text += _eventTag%pythonValue + "\n"
-
+
text += _description%FormatDescription(description) + "\n"
text += "
\n"
text += "\n
\n\n"
return text
-
+
def FormatDescription(description):
"""
Formats a wxWidgets C++ description in a more wxPython-based way.
@@ -506,7 +508,7 @@ def FormatDescription(description):
def FormatImages(appearance):
- text = "
" + _appearanceTable
+ text = "
" + _appearanceTable
for indx in xrange(2):
text += "\n
\n"
@@ -523,7 +525,7 @@ def FormatImages(appearance):
text += "\n
\n\n"
return text
-
+
def FindWindowStyles(text, originalText, widgetName):
"""
Finds the windows styles and events in the input text.
@@ -538,12 +540,12 @@ def FindWindowStyles(text, originalText, widgetName):
winStyles, winEvents, winExtra, winAppearance = {}, {}, {}, {}
inStyle = inExtra = inEvent = False
-
+
for line in text:
if "following styles:" in line:
inStyle = True
continue
-
+
elif "Event macros" in line:
inEvent = True
continue
@@ -555,25 +557,25 @@ def FindWindowStyles(text, originalText, widgetName):
if "Appearance:" in line:
winAppearance = FindImages(originalText, widgetName)
continue
-
+
elif not line.strip():
inStyle = inEvent = inExtra = False
continue
if inStyle:
start = line.index(':')
- windowStyle = line[0:start]
+ windowStyle = line[0:start]
styleDescription = line[start+1:]
winStyles[windowStyle] = styleDescription
elif inEvent:
start = line.index(':')
eventName = line[0:start]
- eventDescription = line[start+1:]
+ eventDescription = line[start+1:]
winEvents[eventName] = eventDescription
elif inExtra:
start = line.index(':')
styleName = line[0:start]
- styleDescription = line[start+1:]
+ styleDescription = line[start+1:]
winExtra[styleName] = styleDescription
return winStyles, winEvents, winExtra, winAppearance
@@ -592,7 +594,7 @@ def FindImages(text, widgetName):
winAppearance = {}
start = text.find("class='appearance'")
-
+
if start < 0:
return winAppearance
@@ -609,7 +611,7 @@ def FindImages(text, widgetName):
possibleImage = possibleImage.replace("'", "")
f = urllib2.urlopen(_trunkURL + possibleImage)
stream = f.read()
-
+
elif "alt=" in items:
plat = items.replace("alt=", "").replace("'", "").strip()
path = os.path.join(imagesDir, plat, widgetName + ".png")
@@ -618,7 +620,7 @@ def FindImages(text, widgetName):
image.SaveFile(path, wx.BITMAP_TYPE_PNG)
winAppearance[plat] = path
-
+
return winAppearance
@@ -628,9 +630,9 @@ def FindImages(text, widgetName):
class InternetThread(Thread):
""" Worker thread class to attempt connection to the internet. """
-
+
def __init__(self, notifyWindow, selectedClass):
-
+
Thread.__init__(self)
self.notifyWindow = notifyWindow
@@ -639,11 +641,11 @@ class InternetThread(Thread):
self.setDaemon(True)
self.start()
-
+
def run(self):
""" Run the worker thread. """
-
+
# This is the code executing in the new thread. Simulation of
# a long process as a simple urllib2 call
@@ -657,7 +659,7 @@ class InternetThread(Thread):
if not self.keepRunning:
return
-
+
wx.CallAfter(self.notifyWindow.LoadDocumentation, data)
except (IOError, urllib2.HTTPError):
# Unable to get to the internet
@@ -674,9 +676,9 @@ class InternetThread(Thread):
#---------------------------------------------------------------------------
# Show how to derive a custom wxLog class
-class MyLog(wx.PyLog):
+class MyLog(wx.Log):
def __init__(self, textCtrl, logTime=0):
- wx.PyLog.__init__(self)
+ wx.Log.__init__(self)
self.tc = textCtrl
self.logTime = logTime
@@ -704,8 +706,8 @@ try:
# Some methods to make it compatible with how the wxTextCtrl is used
def SetValue(self, value):
- if wx.USE_UNICODE:
- value = value.decode('iso8859_1')
+ # if wx.USE_UNICODE:
+ # value = value.decode('iso8859_1')
val = self.GetReadOnly()
self.SetReadOnly(False)
self.SetText(value)
@@ -751,31 +753,31 @@ try:
start = self.PositionFromLine(line)
end = self.GetLineEndPosition(line)
self.SetSelection(start, end)
-
+
def SetUpEditor(self):
"""
- This method carries out the work of setting up the demo editor.
+ This method carries out the work of setting up the demo editor.
It's seperate so as not to clutter up the init code.
"""
import keyword
-
+
self.SetLexer(stc.STC_LEX_PYTHON)
self.SetKeyWords(0, " ".join(keyword.kwlist))
-
+
# Enable folding
- self.SetProperty("fold", "1" )
+ self.SetProperty("fold", "1" )
# Highlight tab/space mixing (shouldn't be any)
self.SetProperty("tab.timmy.whinge.level", "1")
# Set left and right margins
self.SetMargins(2,2)
-
+
# Set up the numbers in the margin for margin #1
self.SetMarginType(1, wx.stc.STC_MARGIN_NUMBER)
# Reasonable value for, say, 4-5 digits using a mono font (40 pix)
self.SetMarginWidth(1, 40)
-
+
# Indentation and tab stuff
self.SetIndent(4) # Proscribed indent size for wx
self.SetIndentationGuides(True) # Show indent guides
@@ -783,25 +785,25 @@ try:
self.SetTabIndents(True) # Tab key indents
self.SetTabWidth(4) # Proscribed tab size for wx
self.SetUseTabs(False) # Use spaces rather than tabs, or
- # TabTimmy will complain!
+ # TabTimmy will complain!
# White space
self.SetViewWhiteSpace(False) # Don't view white space
-
+
# EOL: Since we are loading/saving ourselves, and the
# strings will always have \n's in them, set the STC to
- # edit them that way.
+ # edit them that way.
self.SetEOLMode(wx.stc.STC_EOL_LF)
self.SetViewEOL(False)
-
+
# No right-edge mode indicator
self.SetEdgeMode(stc.STC_EDGE_NONE)
-
+
# Setup a margin to hold fold markers
self.SetMarginType(2, stc.STC_MARGIN_SYMBOL)
self.SetMarginMask(2, stc.STC_MASK_FOLDERS)
self.SetMarginSensitive(2, True)
self.SetMarginWidth(2, 12)
-
+
# and now set up the fold markers
self.MarkerDefine(stc.STC_MARKNUM_FOLDEREND, stc.STC_MARK_BOXPLUSCONNECTED, "white", "black")
self.MarkerDefine(stc.STC_MARKNUM_FOLDEROPENMID, stc.STC_MARK_BOXMINUSCONNECTED, "white", "black")
@@ -810,21 +812,21 @@ try:
self.MarkerDefine(stc.STC_MARKNUM_FOLDERSUB, stc.STC_MARK_VLINE, "white", "black")
self.MarkerDefine(stc.STC_MARKNUM_FOLDER, stc.STC_MARK_BOXPLUS, "white", "black")
self.MarkerDefine(stc.STC_MARKNUM_FOLDEROPEN, stc.STC_MARK_BOXMINUS, "white", "black")
-
+
# Global default style
if wx.Platform == '__WXMSW__':
- self.StyleSetSpec(stc.STC_STYLE_DEFAULT,
+ self.StyleSetSpec(stc.STC_STYLE_DEFAULT,
'fore:#000000,back:#FFFFFF,face:Courier New')
elif wx.Platform == '__WXMAC__':
- # TODO: if this looks fine on Linux too, remove the Mac-specific case
+ # TODO: if this looks fine on Linux too, remove the Mac-specific case
# and use this whenever OS != MSW.
- self.StyleSetSpec(stc.STC_STYLE_DEFAULT,
+ self.StyleSetSpec(stc.STC_STYLE_DEFAULT,
'fore:#000000,back:#FFFFFF,face:Monaco')
else:
defsize = wx.SystemSettings.GetFont(wx.SYS_ANSI_FIXED_FONT).GetPointSize()
- self.StyleSetSpec(stc.STC_STYLE_DEFAULT,
+ self.StyleSetSpec(stc.STC_STYLE_DEFAULT,
'fore:#000000,back:#FFFFFF,face:Courier,size:%d'%defsize)
-
+
# Clear styles and revert to default.
self.StyleClearAll()
@@ -832,14 +834,14 @@ try:
# The rest remains unchanged.
# Line numbers in margin
- self.StyleSetSpec(wx.stc.STC_STYLE_LINENUMBER,'fore:#000000,back:#99A9C2')
+ self.StyleSetSpec(wx.stc.STC_STYLE_LINENUMBER,'fore:#000000,back:#99A9C2')
# Highlighted brace
self.StyleSetSpec(wx.stc.STC_STYLE_BRACELIGHT,'fore:#00009D,back:#FFFF00')
# Unmatched brace
self.StyleSetSpec(wx.stc.STC_STYLE_BRACEBAD,'fore:#00009D,back:#FF0000')
# Indentation guide
self.StyleSetSpec(wx.stc.STC_STYLE_INDENTGUIDE, "fore:#CDCDCD")
-
+
# Python styles
self.StyleSetSpec(wx.stc.STC_P_DEFAULT, 'fore:#000000')
# Comments
@@ -870,8 +872,8 @@ try:
# Selection background
self.SetSelBackground(1, '#66CCFF')
- self.SetSelBackground(True, wx.SystemSettings_GetColour(wx.SYS_COLOUR_HIGHLIGHT))
- self.SetSelForeground(True, wx.SystemSettings_GetColour(wx.SYS_COLOUR_HIGHLIGHTTEXT))
+ self.SetSelBackground(True, wx.SystemSettings.GetColour(wx.SYS_COLOUR_HIGHLIGHT))
+ self.SetSelForeground(True, wx.SystemSettings.GetColour(wx.SYS_COLOUR_HIGHLIGHTTEXT))
def RegisterModifiedEvent(self, eventHandler):
self.Bind(wx.stc.EVT_STC_CHANGE, eventHandler)
@@ -889,7 +891,7 @@ except ImportError:
def SetReadOnly(self, flag):
self.SetEditable(not flag)
# NOTE: STC already has this method
-
+
def GetText(self):
return self.GetValue()
@@ -942,7 +944,7 @@ class DemoCodePanel(wx.Panel):
self.controlBox.Add(radioButton, 0, wx.EXPAND | wx.RIGHT, 5)
radioButton.modID = modID # makes it easier for the event handler
radioButton.Bind(wx.EVT_RADIOBUTTON, self.OnRadioButton)
-
+
self.controlBox.Add(self.btnSave, 0, wx.RIGHT, 5)
self.controlBox.Add(self.btnRestore, 0)
@@ -950,7 +952,7 @@ class DemoCodePanel(wx.Panel):
self.box.Add(self.controlBox, 0, wx.EXPAND)
self.box.Add(wx.StaticLine(self), 0, wx.EXPAND)
self.box.Add(self.editor, 1, wx.EXPAND)
-
+
self.box.Fit(self)
self.SetSizer(self.box)
@@ -969,11 +971,11 @@ class DemoCodePanel(wx.Panel):
def ActiveModuleChanged(self):
self.LoadDemoSource(self.demoModules.GetSource())
self.UpdateControlState()
- self.mainFrame.pnl.Freeze()
+ self.mainFrame.pnl.Freeze()
self.ReloadDemo()
self.mainFrame.pnl.Thaw()
-
+
def LoadDemoSource(self, source):
self.editor.Clear()
self.editor.SetValue(source)
@@ -986,8 +988,8 @@ class DemoCodePanel(wx.Panel):
self.editor.SetFocus()
if highlight:
self.editor.SelectLine(line)
-
-
+
+
def UpdateControlState(self):
active = self.demoModules.GetActiveID()
# Update the radio/restore buttons
@@ -1007,7 +1009,7 @@ class DemoCodePanel(wx.Panel):
if moduleID == modModified:
self.btnRestore.Enable(False)
-
+
def OnRadioButton(self, event):
radioSelected = event.GetEventObject()
modSelected = radioSelected.modID
@@ -1021,11 +1023,11 @@ class DemoCodePanel(wx.Panel):
if self.demoModules.name != __name__:
self.mainFrame.RunModule()
-
+
def OnCodeModified(self, event):
self.btnSave.Enable(self.editor.IsModified())
-
+
def OnSave(self, event):
if self.demoModules.Exists(modModified):
if self.demoModules.GetActiveID() == modOriginal:
@@ -1037,7 +1039,7 @@ class DemoCodePanel(wx.Panel):
if result == wx.ID_NO:
return
dlg.Destroy()
-
+
self.demoModules.SetActive(modModified)
modifiedFilename = GetModifiedFilename(self.demoModules.name)
@@ -1053,7 +1055,7 @@ class DemoCodePanel(wx.Panel):
return
else:
wx.LogMessage("Created directory for modified demos: %s" % GetModifiedDirectory())
-
+
# Save
f = open(modifiedFilename, "wt")
source = self.editor.GetText()
@@ -1061,7 +1063,7 @@ class DemoCodePanel(wx.Panel):
f.write(source)
finally:
f.close()
-
+
busy = wx.BusyInfo("Reloading demo module...")
self.demoModules.LoadFromFile(modModified, modifiedFilename)
self.ActiveModuleChanged()
@@ -1074,7 +1076,7 @@ class DemoCodePanel(wx.Panel):
self.demoModules.Delete(modModified)
os.unlink(modifiedFilename) # Delete the modified copy
busy = wx.BusyInfo("Reloading demo module...")
-
+
self.ActiveModuleChanged()
self.mainFrame.SetTreeModified(False)
@@ -1125,7 +1127,7 @@ def GetOriginalFilename(name):
if os.path.isfile(name):
return name
-
+
originalDir = os.getcwd()
listDir = os.listdir(originalDir)
# Loop over the content of the demo directory
@@ -1135,7 +1137,7 @@ def GetOriginalFilename(name):
continue
dirFile = os.listdir(item)
# See if a file called "name" is there
- if name in dirFile:
+ if name in dirFile:
return os.path.join(item, name)
# We must return a string...
@@ -1167,14 +1169,14 @@ def MakeDocDirs():
for plat in _platformNames:
imageDir = os.path.join(docDir, "images", plat)
- if not os.path.exists(imageDir):
+ if not os.path.exists(imageDir):
os.makedirs(imageDir)
-
+
def GetDocFile():
-
+
docFile = os.path.join(GetDataDir(), "docs", "TrunkDocs.pkl")
-
+
return docFile
@@ -1189,14 +1191,14 @@ def SearchDemo(name, keyword):
fid = open(GetOriginalFilename(name), "rt")
fullText = fid.read()
fid.close()
-
+
fullText = fullText.decode("iso-8859-1")
if fullText.find(keyword) >= 0:
return True
- return False
-
+ return False
+
def HuntExternalDemos():
"""
@@ -1277,14 +1279,14 @@ def LookForExternals(externalDemos, demoName):
# No match found, return None for both
return pkg, overview
-
+
#---------------------------------------------------------------------------
class ModuleDictWrapper(object):
"""Emulates a module with a dynamically compiled __dict__"""
def __init__(self, dict):
self.dict = dict
-
+
def __getattr__(self, name):
if name in self.dict:
return self.dict[name]
@@ -1299,16 +1301,16 @@ class DemoModules(object):
def __init__(self, name):
self.modActive = -1
self.name = name
-
- # (dict , source , filename , description , error information )
- # ( 0 , 1 , 2 , 3 , 4 )
+
+ # (dict , source , filename , description , error information )
+ # ( 0 , 1 , 2 , 3 , 4 )
self.modules = [[dict(), "" , "" , "" , None],
[dict(), "" , "" , "" , None]]
-
+
for i in [modOriginal, modModified]:
self.modules[i][0]['__file__'] = \
os.path.join(os.getcwdu(), GetOriginalFilename(name))
-
+
# load original module
self.LoadFromFile(modOriginal, GetOriginalFilename(name))
self.SetActive(modOriginal)
@@ -1335,9 +1337,9 @@ class DemoModules(object):
source = self.modules[modID][1]
description = self.modules[modID][2]
description = description.encode(sys.getfilesystemencoding())
-
+
try:
- code = compile(source, description, "exec")
+ code = compile(source, description, "exec")
exec code in self.modules[modID][0]
except:
self.modules[modID][4] = DemoError(sys.exc_info())
@@ -1364,7 +1366,7 @@ class DemoModules(object):
def GetActiveID(self):
return self.modActive
-
+
def GetSource(self, modID = None):
if modID is None:
modID = self.modActive
@@ -1396,7 +1398,7 @@ class DemoModules(object):
source = self.modules[modID][1]
filename = self.modules[modID][2]
- try:
+ try:
file = open(filename, "wt")
file.write(source)
finally:
@@ -1418,7 +1420,7 @@ class DemoError(object):
"""Wraps and stores information about the current exception"""
def __init__(self, exc_info):
import copy
-
+
excType, excValue = exc_info[:2]
# traceback list entries: (filename, line number, function name, text)
self.traceback = traceback.extract_tb(exc_info[2])
@@ -1448,7 +1450,7 @@ class DemoError(object):
self.exception_details = "" & type(excValue).__name__
del exc_info
-
+
def __str__(self):
ret = "Type %s \n \
Traceback: %s \n \
@@ -1483,7 +1485,7 @@ class DemoErrorPanel(wx.Panel):
boxInfoGrid.Add(wx.StaticText(self, -1, demoError.exception_details) , 0, textFlags, 5 )
boxInfoSizer.Add(boxInfoGrid, 0, wx.ALIGN_CENTRE | wx.ALL, 5 )
self.box.Add(boxInfoSizer, 0, wx.ALIGN_CENTER | wx.ALL, 5)
-
+
# Set up the traceback list
# This one automatically resizes last column to take up remaining space
from ListCtrl import TestListCtrl
@@ -1512,11 +1514,11 @@ class DemoErrorPanel(wx.Panel):
#Add the traceback data
for x in range(len(traceback)):
data = traceback[x]
- list.InsertStringItem(x, os.path.basename(data[0])) # Filename
- list.SetStringItem(x, 1, str(data[1])) # Line
- list.SetStringItem(x, 2, str(data[2])) # Function
- list.SetStringItem(x, 3, str(data[3])) # Code
-
+ list.InsertItem(x, os.path.basename(data[0])) # Filename
+ list.SetItem(x, 1, str(data[1])) # Line
+ list.SetItem(x, 2, str(data[2])) # Function
+ list.SetItem(x, 3, str(data[3])) # Code
+
# Check whether this entry is from the demo module
if data[0] == "" or data[0] == "": # FIXME: make more generalised
self.list.SetItemData(x, int(data[1])) # Store line number for easy access
@@ -1526,15 +1528,15 @@ class DemoErrorPanel(wx.Panel):
self.list.SetItem(item)
else:
self.list.SetItemData(x, -1) # Editor can't jump into this one's code
-
+
def OnItemSelected(self, event):
# This occurs before OnDoubleClick and can be used to set the
# currentItem. OnDoubleClick doesn't get a wxListEvent....
- self.currentItem = event.m_itemIndex
+ self.currentItem = event.Index
event.Skip()
-
+
def OnDoubleClick(self, event):
# If double-clicking on a demo's entry, jump to the line number
line = self.list.GetItemData(self.currentItem)
@@ -1542,42 +1544,42 @@ class DemoErrorPanel(wx.Panel):
self.nb.SetSelection(1) # Switch to the code viewer tab
wx.CallAfter(self.codePanel.JumpToLine, line-1, True)
event.Skip()
-
+
#---------------------------------------------------------------------------
class MainPanel(wx.Panel):
"""
- Just a simple derived panel where we override Freeze and Thaw so they are
- only used on wxMSW.
+ Just a simple derived panel where we override Freeze and Thaw to work
+ around an issue on wxGTK.
"""
def Freeze(self):
- if 'wxMSW' in wx.PlatformInfo:
+ if not 'wxGTK' in wx.PlatformInfo:
return super(MainPanel, self).Freeze()
-
+
def Thaw(self):
- if 'wxMSW' in wx.PlatformInfo:
+ if not 'wxGTK' in wx.PlatformInfo:
return super(MainPanel, self).Thaw()
-
+
#---------------------------------------------------------------------------
-class DemoTaskBarIcon(wx.TaskBarIcon):
+class DemoTaskBarIcon(TaskBarIcon):
TBMENU_RESTORE = wx.NewId()
TBMENU_CLOSE = wx.NewId()
TBMENU_CHANGE = wx.NewId()
TBMENU_REMOVE = wx.NewId()
-
+
def __init__(self, frame):
- wx.TaskBarIcon.__init__(self, wx.TBI_DOCK) # wx.TBI_CUSTOM_STATUSITEM
+ TaskBarIcon.__init__(self, wx.adv.TBI_DOCK) # wx.adv.TBI_CUSTOM_STATUSITEM
self.frame = frame
# Set the image
icon = self.MakeIcon(images.WXPdemo.GetImage())
self.SetIcon(icon, "wxPython Demo")
self.imgidx = 1
-
+
# bind some events
- self.Bind(wx.EVT_TASKBAR_LEFT_DCLICK, self.OnTaskBarActivate)
+ self.Bind(wx.adv.EVT_TASKBAR_LEFT_DCLICK, self.OnTaskBarActivate)
self.Bind(wx.EVT_MENU, self.OnTaskBarActivate, id=self.TBMENU_RESTORE)
self.Bind(wx.EVT_MENU, self.OnTaskBarClose, id=self.TBMENU_CLOSE)
self.Bind(wx.EVT_MENU, self.OnTaskBarChange, id=self.TBMENU_CHANGE)
@@ -1610,9 +1612,9 @@ class DemoTaskBarIcon(wx.TaskBarIcon):
elif "wxGTK" in wx.PlatformInfo:
img = img.Scale(22, 22)
# wxMac can be any size upto 128x128, so leave the source img alone....
- icon = wx.IconFromBitmap(img.ConvertToBitmap() )
+ icon = wx.IconFromBitmap(img.ConvertToBitmap())
return icon
-
+
def OnTaskBarActivate(self, evt):
if self.frame.IsIconized():
@@ -1627,14 +1629,14 @@ class DemoTaskBarIcon(wx.TaskBarIcon):
def OnTaskBarChange(self, evt):
- names = [ "WXPdemo", "Mondrian", "Pencil", "Carrot" ]
+ names = [ "WXPdemo", "Mondrian", "Pencil", "Carrot" ]
name = names[self.imgidx]
-
+
eImg = getattr(images, name)
self.imgidx += 1
if self.imgidx >= len(names):
self.imgidx = 0
-
+
icon = self.MakeIcon(eImg.Image)
self.SetIcon(icon, "This is a new icon: " + name)
@@ -1646,7 +1648,7 @@ class DemoTaskBarIcon(wx.TaskBarIcon):
#---------------------------------------------------------------------------
class wxPythonDemo(wx.Frame):
- overviewText = "wxPython Demo"
+ overviewText = "wxPython Overview"
def __init__(self, parent, title):
wx.Frame.__init__(self, parent, -1, title, size = (970, 720),
@@ -1655,8 +1657,8 @@ class wxPythonDemo(wx.Frame):
self.SetMinSize((640,480))
self.pnl = pnl = MainPanel(self)
-
- self.mgr = wx.aui.AuiManager()
+
+ self.mgr = aui.AuiManager()
self.mgr.SetManagedWindow(pnl)
self.loaded = False
@@ -1675,9 +1677,9 @@ class wxPythonDemo(wx.Frame):
self.tbicon = DemoTaskBarIcon(self)
except:
self.tbicon = None
-
+
self.otherWin = None
-
+
self.allowDocs = False
self.downloading = False
self.internetThread = None
@@ -1693,31 +1695,31 @@ class wxPythonDemo(wx.Frame):
self.Centre(wx.BOTH)
- self.statusBar = self.CreateStatusBar(2, wx.ST_SIZEGRIP)
+ self.statusBar = self.CreateStatusBar(2)#, wx.ST_SIZEGRIP
self.statusBar.SetStatusWidths([-2, -1])
statusText = "Welcome to wxPython %s"%version.VERSION_STRING
self.statusBar.SetStatusText(statusText, 0)
-
- self.downloadGauge = wx.Gauge(self.statusBar, -1, 50)
- self.downloadGauge.SetToolTipString("Downloading Docs...")
+
+ self.downloadGauge = wx.Gauge(self.statusBar, wx.ID_ANY, 50)
+ self.downloadGauge.SetToolTip("Downloading Docs...")
self.downloadGauge.Hide()
self.sizeChanged = False
self.Reposition()
-
+
self.statusBar.Bind(wx.EVT_SIZE, self.OnStatusBarSize)
self.statusBar.Bind(wx.EVT_IDLE, self.OnStatusBarIdle)
self.dying = False
self.skipLoad = False
self.allowAuiFloating = False
-
+
def EmptyHandler(evt): pass
self.ReadConfigurationFile()
- self.externalDemos = HuntExternalDemos()
-
+ self.externalDemos = HuntExternalDemos()
+
# Create a Notebook
self.nb = wx.Notebook(pnl, -1, style=wx.CLIP_CHILDREN)
imgList = wx.ImageList(16, 16)
@@ -1727,11 +1729,11 @@ class wxPythonDemo(wx.Frame):
for indx in xrange(9):
bmp = images.catalog["spinning_nb%d"%indx].GetBitmap()
imgList.Add(bmp)
-
+
self.nb.AssignImageList(imgList)
self.BuildMenuBar()
-
+
self.finddata = wx.FindReplaceData()
self.finddata.SetFlags(wx.FR_DOWN)
@@ -1739,9 +1741,9 @@ class wxPythonDemo(wx.Frame):
leftPanel = wx.Panel(pnl, style=wx.TAB_TRAVERSAL|wx.CLIP_CHILDREN)
self.treeMap = {}
self.searchItems = {}
-
+
self.tree = wxPythonDemoTree(leftPanel)
-
+
self.filter = wx.SearchCtrl(leftPanel, style=wx.TE_PROCESS_ENTER)
self.filter.ShowCancelButton(True)
self.filter.Bind(wx.EVT_TEXT, self.RecreateTree)
@@ -1762,12 +1764,12 @@ class wxPythonDemo(wx.Frame):
self.tree.Bind(wx.EVT_TREE_ITEM_COLLAPSED, self.OnItemCollapsed)
self.tree.Bind(wx.EVT_TREE_SEL_CHANGED, self.OnSelChanged)
self.tree.Bind(wx.EVT_LEFT_DOWN, self.OnTreeLeftDown)
-
+
# Set up a wx.html.HtmlWindow on the Overview Notebook page
# we put it in a panel first because there seems to be a
# refresh bug of some sort (wxGTK) when it is directly in
# the notebook...
-
+
if 0: # the old way
self.ovr = wx.html.HtmlWindow(self.nb, -1, size=(400, 400))
self.nb.AddPage(self.ovr, self.overviewText, imageId=0)
@@ -1797,8 +1799,8 @@ class wxPythonDemo(wx.Frame):
#wx.Log_SetActiveTarget(wx.LogTextCtrl(self.log))
# But instead of the above we want to show how to use our own wx.Log class
- wx.Log_SetActiveTarget(MyLog(self.log))
-
+ wx.Log.SetActiveTarget(MyLog(self.log))
+
# for serious debugging
#wx.Log_SetActiveTarget(wx.LogStderr())
#wx.Log_SetTraceMask(wx.TraceMessages)
@@ -1834,9 +1836,9 @@ class wxPythonDemo(wx.Frame):
self.tree.EnsureVisible(selectedDemo)
# Use the aui manager to set up everything
- self.mgr.AddPane(self.nb, wx.aui.AuiPaneInfo().CenterPane().Name("Notebook"))
+ self.mgr.AddPane(self.nb, aui.AuiPaneInfo().CenterPane().Name("Notebook"))
self.mgr.AddPane(leftPanel,
- wx.aui.AuiPaneInfo().
+ aui.AuiPaneInfo().
Left().Layer(2).BestSize((240, -1)).
MinSize((240, -1)).
Floatable(self.allowAuiFloating).FloatingSize((240, 700)).
@@ -1844,7 +1846,7 @@ class wxPythonDemo(wx.Frame):
CloseButton(False).
Name("DemoTree"))
self.mgr.AddPane(self.log,
- wx.aui.AuiPaneInfo().
+ aui.AuiPaneInfo().
Bottom().BestSize((-1, 150)).
MinSize((-1, 140)).
Floatable(self.allowAuiFloating).FloatingSize((500, 160)).
@@ -1855,8 +1857,8 @@ class wxPythonDemo(wx.Frame):
self.auiConfigurations[DEFAULT_PERSPECTIVE] = self.mgr.SavePerspective()
self.mgr.Update()
- self.mgr.SetFlags(self.mgr.GetFlags() ^ wx.aui.AUI_MGR_TRANSPARENT_DRAG)
-
+ self.mgr.SetAGWFlags(self.mgr.GetAGWFlags() ^ aui.AUI_MGR_TRANSPARENT_DRAG)
+
def ReadConfigurationFile(self):
@@ -1892,9 +1894,9 @@ class wxPythonDemo(wx.Frame):
self.pickledData = cPickle.load(fid)
except:
self.pickledData = {}
-
+
fid.close()
-
+
def BuildMenuBar(self):
@@ -1905,11 +1907,11 @@ class wxPythonDemo(wx.Frame):
'Redirect print statements to a window',
wx.ITEM_CHECK)
self.Bind(wx.EVT_MENU, self.OnToggleRedirect, item)
-
+
wx.App.SetMacExitMenuItemId(9123)
exitItem = wx.MenuItem(menu, 9123, 'E&xit\tCtrl-Q', 'Get the heck outta here!')
exitItem.SetBitmap(images.catalog['exit'].GetBitmap())
- menu.AppendItem(exitItem)
+ menu.Append(exitItem)
self.Bind(wx.EVT_MENU, self.OnFileExit, exitItem)
self.mainmenu.Append(menu, '&File')
@@ -1923,64 +1925,64 @@ class wxPythonDemo(wx.Frame):
self.Bind(wx.EVT_MENU, self.OnDemoMenu, mi)
menuItem.SetBitmap(images.catalog[_demoPngs[indx+1]].GetBitmap())
menuItem.SetSubMenu(submenu)
- menu.AppendItem(menuItem)
+ menu.Append(menuItem)
self.mainmenu.Append(menu, '&Demo')
# Make an Option menu
menu = wx.Menu()
item = wx.MenuItem(menu, -1, 'Allow download of docs', 'Docs for window styles and events from the web', wx.ITEM_CHECK)
- menu.AppendItem(item)
+ menu.Append(item)
item.Check(self.allowDocs)
self.Bind(wx.EVT_MENU, self.OnAllowDownload, item)
item = wx.MenuItem(menu, -1, 'Delete saved docs', 'Deletes the cPickle file where docs are stored')
item.SetBitmap(images.catalog['deletedocs'].GetBitmap())
- menu.AppendItem(item)
+ menu.Append(item)
self.Bind(wx.EVT_MENU, self.OnDeleteDocs, item)
-
+
menu.AppendSeparator()
item = wx.MenuItem(menu, -1, 'Allow floating panes', 'Allows the demo panes to be floated using wxAUI', wx.ITEM_CHECK)
- menu.AppendItem(item)
+ menu.Append(item)
item.Check(self.allowAuiFloating)
self.Bind(wx.EVT_MENU, self.OnAllowAuiFloating, item)
-
+
auiPerspectives = self.auiConfigurations.keys()
auiPerspectives.sort()
perspectivesMenu = wx.Menu()
item = wx.MenuItem(perspectivesMenu, -1, DEFAULT_PERSPECTIVE, "Load startup default perspective", wx.ITEM_RADIO)
self.Bind(wx.EVT_MENU, self.OnAUIPerspectives, item)
- perspectivesMenu.AppendItem(item)
+ perspectivesMenu.Append(item)
for indx, key in enumerate(auiPerspectives):
if key == DEFAULT_PERSPECTIVE:
continue
item = wx.MenuItem(perspectivesMenu, -1, key, "Load user perspective %d"%indx, wx.ITEM_RADIO)
- perspectivesMenu.AppendItem(item)
+ perspectivesMenu.Append(item)
self.Bind(wx.EVT_MENU, self.OnAUIPerspectives, item)
- menu.AppendMenu(wx.ID_ANY, "&AUI Perspectives", perspectivesMenu)
+ menu.Append(wx.ID_ANY, "&AUI Perspectives", perspectivesMenu)
self.perspectives_menu = perspectivesMenu
item = wx.MenuItem(menu, -1, 'Save Perspective', 'Save AUI perspective')
item.SetBitmap(images.catalog['saveperspective'].GetBitmap())
- menu.AppendItem(item)
+ menu.Append(item)
self.Bind(wx.EVT_MENU, self.OnSavePerspective, item)
item = wx.MenuItem(menu, -1, 'Delete Perspective', 'Delete AUI perspective')
item.SetBitmap(images.catalog['deleteperspective'].GetBitmap())
- menu.AppendItem(item)
+ menu.Append(item)
self.Bind(wx.EVT_MENU, self.OnDeletePerspective, item)
menu.AppendSeparator()
item = wx.MenuItem(menu, -1, 'Restore Tree Expansion', 'Restore the initial tree expansion state')
item.SetBitmap(images.catalog['expansion'].GetBitmap())
- menu.AppendItem(item)
+ menu.Append(item)
self.Bind(wx.EVT_MENU, self.OnTreeExpansion, item)
self.mainmenu.Append(menu, '&Options')
self.options_menu = menu
-
+
# Make a Help menu
menu = wx.Menu()
findItem = wx.MenuItem(menu, -1, '&Find\tCtrl-F', 'Find in the Demo Code')
@@ -1990,18 +1992,18 @@ class wxPythonDemo(wx.Frame):
else:
findNextItem = wx.MenuItem(menu, -1, 'Find &Next\tCtrl-G', 'Find Next')
findNextItem.SetBitmap(images.catalog['findnext'].GetBitmap())
- menu.AppendItem(findItem)
- menu.AppendItem(findNextItem)
+ menu.Append(findItem)
+ menu.Append(findNextItem)
menu.AppendSeparator()
shellItem = wx.MenuItem(menu, -1, 'Open Py&Shell Window\tF5',
'An interactive interpreter window with the demo app and frame objects in the namesapce')
shellItem.SetBitmap(images.catalog['pyshell'].GetBitmap())
- menu.AppendItem(shellItem)
+ menu.Append(shellItem)
inspToolItem = wx.MenuItem(menu, -1, 'Open &Widget Inspector\tF6',
'A tool that lets you browse the live widgets and sizers in an application')
inspToolItem.SetBitmap(images.catalog['inspect'].GetBitmap())
- menu.AppendItem(inspToolItem)
+ menu.Append(inspToolItem)
if 'wxMac' not in wx.PlatformInfo:
menu.AppendSeparator()
helpItem = menu.Append(wx.ID_ABOUT, '&About wxPython Demo', 'wxPython RULES!!!')
@@ -2019,7 +2021,7 @@ class wxPythonDemo(wx.Frame):
self.mainmenu.Append(menu, '&Help')
self.SetMenuBar(self.mainmenu)
- self.EnableAUIMenu()
+ self.EnableAUIMenu()
if False:
# This is another way to set Accelerators, in addition to
@@ -2031,14 +2033,14 @@ class wxPythonDemo(wx.Frame):
(wx.ACCEL_NORMAL, wx.WXK_F9, shellItem.GetId()),
])
self.SetAcceleratorTable(aTable)
-
- #---------------------------------------------
+
+ #---------------------------------------------
def RecreateTree(self, evt=None):
# Catch the search type (name or content)
searchMenu = self.filter.GetMenu().GetMenuItems()
fullSearch = searchMenu[1].IsChecked()
-
+
if evt:
if fullSearch:
# Do not`scan all the demo files for every char
@@ -2054,12 +2056,12 @@ class wxPythonDemo(wx.Frame):
if prnt:
current = (self.tree.GetItemText(item),
self.tree.GetItemText(prnt))
-
+
self.tree.Freeze()
self.tree.DeleteAllItems()
self.root = self.tree.AddRoot("wxPython Overview")
self.tree.SetItemImage(self.root, 0)
- self.tree.SetItemPyData(self.root, 0)
+ self.tree.SetItemData(self.root, 0)
treeFont = self.tree.GetFont()
catFont = self.tree.GetFont()
@@ -2070,16 +2072,16 @@ class wxPythonDemo(wx.Frame):
# was the size of the same label in the default font.
if USE_CUSTOMTREECTRL or 'wxMSW' not in wx.PlatformInfo:
treeFont.SetPointSize(treeFont.GetPointSize()+2)
-
+
treeFont.SetWeight(wx.BOLD)
catFont.SetWeight(wx.BOLD)
self.tree.SetItemFont(self.root, treeFont)
-
+
firstChild = None
selectItem = None
filter = self.filter.GetValue()
count = 0
-
+
for category, items in _treeList:
count += 1
if filter:
@@ -2090,19 +2092,19 @@ class wxPythonDemo(wx.Frame):
if items:
child = self.tree.AppendItem(self.root, category, image=count)
self.tree.SetItemFont(child, catFont)
- self.tree.SetItemPyData(child, count)
+ self.tree.SetItemData(child, count)
if not firstChild: firstChild = child
for childItem in items:
image = count
if DoesModifiedExist(childItem):
image = len(_demoPngs)
theDemo = self.tree.AppendItem(child, childItem, image=image)
- self.tree.SetItemPyData(theDemo, count)
+ self.tree.SetItemData(theDemo, count)
self.treeMap[childItem] = theDemo
if current and (childItem, category) == current:
selectItem = theDemo
-
-
+
+
self.tree.Expand(self.root)
if firstChild:
self.tree.Expand(firstChild)
@@ -2114,7 +2116,7 @@ class wxPythonDemo(wx.Frame):
self.skipLoad = True
self.tree.SelectItem(selectItem)
self.skipLoad = False
-
+
self.tree.Thaw()
self.searchItems = {}
@@ -2135,9 +2137,9 @@ class wxPythonDemo(wx.Frame):
# reposition the download gauge
def Reposition(self):
- rect = self.statusBar.GetFieldRect(1)
- self.downloadGauge.SetPosition((rect.x+2, rect.y+2))
- self.downloadGauge.SetSize((rect.width-4, rect.height-4))
+ # rect = self.statusBar.GetFieldRect(1)
+ # self.downloadGauge.SetPosition((rect.x+2, rect.y+2))
+ # self.downloadGauge.SetSize((rect.width-4, rect.height-4))
self.sizeChanged = False
@@ -2146,12 +2148,12 @@ class wxPythonDemo(wx.Frame):
# Catch the search type (name or content)
searchMenu = self.filter.GetMenu().GetMenuItems()
fullSearch = searchMenu[1].IsChecked()
-
+
if fullSearch:
self.OnSearch()
else:
self.RecreateTree()
-
+
def OnSearch(self, event=None):
@@ -2161,7 +2163,7 @@ class wxPythonDemo(wx.Frame):
return
wx.BeginBusyCursor()
-
+
for category, items in _treeList:
self.searchItems[category] = []
for childItem in items:
@@ -2169,7 +2171,7 @@ class wxPythonDemo(wx.Frame):
self.searchItems[category].append(childItem)
wx.EndBusyCursor()
- self.RecreateTree()
+ self.RecreateTree()
def SetTreeModified(self, modified):
@@ -2179,8 +2181,8 @@ class wxPythonDemo(wx.Frame):
else:
image = self.tree.GetItemPyData(item)
self.tree.SetItemImage(item, image)
-
-
+
+
def WriteText(self, text):
if text[-1:] == '\n':
text = text[:-1]
@@ -2220,7 +2222,7 @@ class wxPythonDemo(wx.Frame):
item = event.GetItem()
itemText = self.tree.GetItemText(item)
self.LoadDemo(itemText)
-
+
self.StartDownload()
#---------------------------------------------
@@ -2228,7 +2230,7 @@ class wxPythonDemo(wx.Frame):
try:
wx.BeginBusyCursor()
self.pnl.Freeze()
-
+
os.chdir(self.cwd)
self.ShutdownDemoModule()
@@ -2272,7 +2274,7 @@ class wxPythonDemo(wx.Frame):
self.codePage = None
self.codePage = DemoCodePanel(self.nb, self)
self.codePage.LoadDemo(self.demoModules)
-
+
#---------------------------------------------
def RunModule(self):
"""Runs the active module"""
@@ -2280,11 +2282,11 @@ class wxPythonDemo(wx.Frame):
module = self.demoModules.GetActive()
self.ShutdownDemoModule()
overviewText = ""
-
+
# o The RunTest() for all samples must now return a window that can
# be palced in a tab in the main notebook.
# o If an error occurs (or has occurred before) an error tab is created.
-
+
if module is not None:
wx.LogMessage("Running demo module...")
if hasattr(module, "overview"):
@@ -2301,12 +2303,12 @@ class wxPythonDemo(wx.Frame):
self.demoPage.SetBackgroundColour(bg)
assert self.demoPage is not None, "runTest must return a window!"
-
+
else:
# There was a previous error in compiling or exec-ing
self.demoPage = DemoErrorPanel(self.nb, self.codePage,
self.demoModules.GetErrorInfo(), self)
-
+
self.SetOverview(self.demoModules.name + " Overview", overviewText)
if self.firstTime:
@@ -2325,13 +2327,13 @@ class wxPythonDemo(wx.Frame):
self.demoPage.ShutdownDemo()
## wx.YieldIfNeeded() # in case the page has pending events
self.demoPage = None
-
+
#---------------------------------------------
def UpdateNotebook(self, select = -1):
nb = self.nb
debug = False
self.pnl.Freeze()
-
+
def UpdatePage(page, pageText):
pageExists = False
pagePos = -1
@@ -2340,7 +2342,7 @@ class wxPythonDemo(wx.Frame):
pageExists = True
pagePos = i
break
-
+
if page:
if not pageExists:
# Add a new page
@@ -2361,7 +2363,7 @@ class wxPythonDemo(wx.Frame):
if debug: wx.LogMessage("DBG: DELETED %s" % pageText)
else:
if debug: wx.LogMessage("DBG: STILL GONE - %s" % pageText)
-
+
if select == -1:
select = nb.GetSelection()
@@ -2372,15 +2374,15 @@ class wxPythonDemo(wx.Frame):
nb.SetSelection(select)
self.pnl.Thaw()
-
+
#---------------------------------------------
def SetOverview(self, name, text):
self.curOverview = text
lead = text[:6]
if lead != '' and lead != '':
text = '
'.join(text.split('\n'))
- if wx.USE_UNICODE:
- text = text.decode('iso8859_1')
+ # if wx.USE_UNICODE:
+ # text = text.decode('iso8859_1')
self.ovr.SetPage(text)
self.nb.SetPageText(0, os.path.split(name)[1])
@@ -2394,7 +2396,7 @@ class wxPythonDemo(wx.Frame):
item = self.tree.GetSelection()
if self.tree.ItemHasChildren(item):
return
-
+
itemText = self.tree.GetItemText(item)
if itemText in self.pickledData:
@@ -2421,7 +2423,7 @@ class wxPythonDemo(wx.Frame):
def StopDownload(self, error=None):
self.downloadTimer.Stop()
-
+
if not self.downloading:
return
@@ -2436,7 +2438,7 @@ class wxPythonDemo(wx.Frame):
self.internetThread.keepRunning = False
self.internetThread = None
-
+
self.downloading = False
self.downloadGauge.Hide()
self.Reposition()
@@ -2446,16 +2448,16 @@ class wxPythonDemo(wx.Frame):
lead = text[:6]
if lead != '' and lead != '':
text = '
'.join(text.split('\n'))
-
+
self.ovr.SetPage(text)
#---------------------------------------------
def LoadDocumentation(self, data):
-
+
text = self.curOverview
addHtml = False
-
+
if '' not in text and '' not in text:
text = '
'.join(text.split('\n'))
@@ -2463,7 +2465,7 @@ class wxPythonDemo(wx.Frame):
if appearance:
text += FormatImages(appearance)
-
+
for names, values in zip(["Styles", "Extra Styles", "Events"], [styles, extra, events]):
if not values:
continue
@@ -2477,12 +2479,12 @@ class wxPythonDemo(wx.Frame):
self.pickledData[itemText] = data
if wx.USE_UNICODE:
- text = text.decode('iso8859_1')
+ text = text.decode('iso8859_1')
self.StopDownload()
self.ovr.SetPage(text)
- #print "load time: ", time.time() - start
-
+ #print("load time: ", time.time() - start)
+
# Menu methods
def OnFileExit(self, *event):
self.Close()
@@ -2491,10 +2493,10 @@ class wxPythonDemo(wx.Frame):
app = wx.GetApp()
if event.Checked():
app.RedirectStdio()
- print "Print statements and other standard output will now be directed to this window."
+ print("Print statements and other standard output will now be directed to this window.")
else:
app.RestoreStdio()
- print "Print statements and other standard output will now be sent to the usual location."
+ print("Print statements and other standard output will now be sent to the usual location.")
def OnAllowDownload(self, event):
@@ -2516,22 +2518,22 @@ class wxPythonDemo(wx.Frame):
if result == wx.ID_NO:
dlg.Destroy()
return
-
+
dlg.Destroy()
busy = wx.BusyInfo("Deleting downloaded data...")
wx.SafeYield()
-
+
pickledFile = GetDocFile()
docDir = os.path.split(pickledFile)[0]
-
+
if os.path.exists(docDir):
shutil.rmtree(docDir, ignore_errors=True)
self.pickledData = {}
del busy
self.sendDownloadError = True
-
+
def OnAllowAuiFloating(self, event):
@@ -2550,8 +2552,8 @@ class wxPythonDemo(wx.Frame):
for indx in xrange(4, len(menuItems)-1):
item = menuItems[indx]
item.Enable(self.allowAuiFloating)
-
-
+
+
def OnAUIPerspectives(self, event):
perspective = self.perspectives_menu.GetLabel(event.GetId())
self.mgr.LoadPerspective(self.auiConfigurations[perspective])
@@ -2560,7 +2562,7 @@ class wxPythonDemo(wx.Frame):
def OnSavePerspective(self, event):
dlg = wx.TextEntryDialog(self, "Enter a name for the new perspective:", "AUI Configuration")
-
+
dlg.SetValue(("Perspective %d")%(len(self.auiConfigurations)+1))
if dlg.ShowModal() != wx.ID_OK:
return
@@ -2572,11 +2574,11 @@ class wxPythonDemo(wx.Frame):
wx.MessageBox("The selected perspective name:\n\n%s\n\nAlready exists."%perspectiveName,
"Error", style=wx.ICON_ERROR)
return
-
+
item = wx.MenuItem(self.perspectives_menu, -1, dlg.GetValue(),
"Load user perspective %d"%(len(self.auiConfigurations)+1),
wx.ITEM_RADIO)
- self.Bind(wx.EVT_MENU, self.OnAUIPerspectives, item)
+ self.Bind(wx.EVT_MENU, self.OnAUIPerspectives, item)
self.perspectives_menu.AppendItem(item)
item.Check(True)
self.auiConfigurations.update({dlg.GetValue(): self.mgr.SavePerspective()})
@@ -2586,12 +2588,12 @@ class wxPythonDemo(wx.Frame):
menuItems = self.perspectives_menu.GetMenuItems()
lst = []
loadDefault = False
-
+
for indx, item in enumerate(menuItems):
if indx > 0:
lst.append(item.GetLabel())
-
- dlg = wx.MultiChoiceDialog(self,
+
+ dlg = wx.MultiChoiceDialog(self,
"Please select the perspectives\nyou would like to delete:",
"Delete AUI Perspectives", lst)
@@ -2614,8 +2616,8 @@ class wxPythonDemo(wx.Frame):
def OnTreeExpansion(self, event):
self.tree.SetExpansionState(self.expansionState)
-
-
+
+
def OnHelpAbout(self, event):
from About import MyAboutBox
about = MyAboutBox(self)
@@ -2625,7 +2627,7 @@ class wxPythonDemo(wx.Frame):
def OnHelpFind(self, event):
if self.finddlg != None:
return
-
+
self.nb.SetSelection(1)
self.finddlg = wx.FindReplaceDialog(self, self.finddata, "Find",
wx.FR_NOMATCHCASE | wx.FR_NOWHOLEWORD)
@@ -2705,7 +2707,7 @@ class wxPythonDemo(wx.Frame):
self.shell.Show()
# Hook the close event of the main frame window so that we
- # close the shell at the same time if it still exists
+ # close the shell at the same time if it still exists
def CloseShell(evt):
if self.shell:
self.shell.Close()
@@ -2726,7 +2728,7 @@ class wxPythonDemo(wx.Frame):
wnd = self
InspectionTool().Show(wnd, True)
-
+
#---------------------------------------------
def OnCloseWindow(self, event):
self.mgr.UnInit()
@@ -2735,16 +2737,16 @@ class wxPythonDemo(wx.Frame):
self.codePage = None
self.mainmenu = None
self.StopDownload()
-
- if self.tbicon is not None:
- self.tbicon.Destroy()
+
+ # if self.tbicon is not None:
+ # self.tbicon.Destroy()
config = GetConfig()
config.Write('ExpansionState', str(self.tree.GetExpansionState()))
config.Write('AUIPerspectives', str(self.auiConfigurations))
config.Write('AllowDownloads', str(self.allowDocs))
config.Write('AllowAUIFloating', str(self.allowAuiFloating))
-
+
config.Flush()
MakeDocDirs()
@@ -2769,16 +2771,16 @@ class wxPythonDemo(wx.Frame):
def OnDownloadTimer(self, event):
self.downloadGauge.Pulse()
-
+
self.downloadImage += 1
if self.downloadImage > 9:
self.downloadImage = 3
-
+
self.nb.SetPageImage(0, self.downloadImage)
## wx.SafeYield()
-
+
#---------------------------------------------
-
+
def ShowTip(self):
config = GetConfig()
showTipText = config.Read("tips")
@@ -2786,13 +2788,13 @@ class wxPythonDemo(wx.Frame):
showTip, index = eval(showTipText)
else:
showTip, index = (1, 0)
-
- if showTip:
- tp = wx.CreateFileTipProvider(opj("data/tips.txt"), index)
- showTip = wx.ShowTip(self, tp)
- index = tp.GetCurrentTip()
- config.Write("tips", str( (showTip, index) ))
- config.Flush()
+
+ # if showTip:
+ # tp = wx.CreateFileTipProvider(opj("data/tips.txt"), index)
+ # showTip = wx.ShowTip(self, tp)
+ # index = tp.GetCurrentTip()
+ # config.Write("tips", str( (showTip, index) ))
+ # config.Flush()
#---------------------------------------------
def OnDemoMenu(self, event):
@@ -2828,14 +2830,14 @@ class wxPythonDemo(wx.Frame):
#---------------------------------------------------------------------------
#---------------------------------------------------------------------------
-class MySplashScreen(wx.SplashScreen):
+class MySplashScreen(SplashScreen):
def __init__(self):
bmp = wx.Image(opj("bitmaps/splash.png")).ConvertToBitmap()
- wx.SplashScreen.__init__(self, bmp,
- wx.SPLASH_CENTRE_ON_SCREEN | wx.SPLASH_TIMEOUT,
+ SplashScreen.__init__(self, bmp,
+ wx.adv.SPLASH_CENTRE_ON_SCREEN | wx.adv.SPLASH_TIMEOUT,
5000, None, -1)
self.Bind(wx.EVT_CLOSE, self.OnClose)
- self.fc = wx.FutureCall(2000, self.ShowMain)
+ self.fc = wx.CallLater(2000, self.ShowMain)
def OnClose(self, evt):
@@ -2843,7 +2845,7 @@ class MySplashScreen(wx.SplashScreen):
# destroyed
evt.Skip()
self.Hide()
-
+
# if the timer is still running then go ahead and show the
# main frame now
if self.fc.IsRunning():
@@ -2869,7 +2871,7 @@ if USE_CUSTOMTREECTRL:
TreeBaseClass = CT.CustomTreeCtrl
else:
TreeBaseClass = wx.TreeCtrl
-
+
class wxPythonDemoTree(ExpansionState, TreeBaseClass):
def __init__(self, parent):
@@ -2881,35 +2883,29 @@ class wxPythonDemoTree(ExpansionState, TreeBaseClass):
self.SetWindowStyle(self.GetWindowStyle() & ~wx.TR_LINES_AT_ROOT)
self.SetInitialSize((100,80))
-
-
+
+
def AppendItem(self, parent, text, image=-1, wnd=None):
if USE_CUSTOMTREECTRL:
item = TreeBaseClass.AppendItem(self, parent, text, image=image, wnd=wnd)
else:
item = TreeBaseClass.AppendItem(self, parent, text, image=image)
return item
-
+
def BuildTreeImageList(self):
imgList = wx.ImageList(16, 16)
for png in _demoPngs:
imgList.Add(images.catalog[png].GetBitmap())
-
+
# add the image for modified demos.
imgList.Add(images.catalog["custom"].GetBitmap())
self.AssignImageList(imgList)
- def GetItemIdentity(self, item):
- return self.GetPyData(item)
- def Freeze(self):
- if 'wxMSW' in wx.PlatformInfo:
- return super(wxPythonDemoTree, self).Freeze()
-
- def Thaw(self):
- if 'wxMSW' in wx.PlatformInfo:
- return super(wxPythonDemoTree, self).Thaw()
+ def GetItemIdentity(self, item):
+ return self.GetItemData(item)
+
#---------------------------------------------------------------------------
@@ -2934,9 +2930,9 @@ class MyApp(wx.App, wx.lib.mixins.inspection.InspectionMixin):
# For debugging
#self.SetAssertMode(wx.PYAPP_ASSERT_DIALOG|wx.PYAPP_ASSERT_EXCEPTION)
- wx.SystemOptions.SetOptionInt("mac.window-plain-transition", 1)
+ wx.SystemOptions.SetOption("mac.window-plain-transition", 1)
self.SetAppName("wxPyDemo")
-
+
# Create and show the splash screen. It will then create and
# show the main frame when it is time to do so. Normally when
# using a SplashScreen you would create it, show it and then
@@ -3006,4 +3002,4 @@ if __name__ == '__main__':
main()
#----------------------------------------------------------------------------
-
+
diff --git a/demo/Mask.py b/demo/Mask.py
index 01d773f3..42592f34 100644
--- a/demo/Mask.py
+++ b/demo/Mask.py
@@ -28,7 +28,7 @@ if 'mac-cg' in wx.PlatformInfo:
('wx.COPY', wx.COPY),
('wx.INVERT', wx.INVERT),
('wx.XOR', wx.XOR),
- ]
+ ]
import images
@@ -118,9 +118,9 @@ def runTest(frame, nb, log):
overview = """\
-This class encapsulates a monochrome mask bitmap, where the masked area is black
-and the unmasked area is white. When associated with a bitmap and drawn in a device
-context, the unmasked area of the bitmap will be drawn, and the masked area will
+This class encapsulates a monochrome mask bitmap, where the masked area is black
+and the unmasked area is white. When associated with a bitmap and drawn in a device
+context, the unmasked area of the bitmap will be drawn, and the masked area will
not be drawn.
This example shows not only how to create a Mask, but the effects of the Device
diff --git a/demo/MaskedEditControls.py b/demo/MaskedEditControls.py
index 5923db9b..c6033209 100644
--- a/demo/MaskedEditControls.py
+++ b/demo/MaskedEditControls.py
@@ -218,7 +218,7 @@ has a legal range specified.
("Integer (signed)", "#{6}", "", 'F-_', "", '','', ' 0 '),
("Integer (unsigned)\n(1-399)","######", "", 'F_', "", (1,399),'', '1 '),
("Float (signed)", "#{6}.#{9}", "", 'F-_R', "", '','', '000000.000000000'),
- ("Date (MDY) + Time", "##/##/#### ##:##:## AM", 'BCDEFGHIJKLMNOQRSTUVWXYZ','DF!',"", '','', wx.DateTime_Now().Format("%m/%d/%Y %I:%M:%S %p")),
+ ("Date (MDY) + Time", "##/##/#### ##:##:## AM", 'BCDEFGHIJKLMNOQRSTUVWXYZ','DF!',"", '','', wx.DateTime.Now().Format("%m/%d/%Y %I:%M:%S %p")),
]
self.layoutGeneralTable( controls, grid )
diff --git a/demo/MediaCtrl.py b/demo/MediaCtrl.py
index 539a3c40..6a85b78f 100644
--- a/demo/MediaCtrl.py
+++ b/demo/MediaCtrl.py
@@ -37,7 +37,6 @@ class TestPanel(wx.Panel):
szBackend=backend)
if not ok:
raise NotImplementedError
- self.mc.PostCreate(self.mc)
except NotImplementedError:
self.Destroy()
raise
diff --git a/demo/Menu.py b/demo/Menu.py
index 2e97d754..a031dc0a 100644
--- a/demo/Menu.py
+++ b/demo/Menu.py
@@ -43,7 +43,7 @@ check the source for this sample to see how to implement them.
submenu.Append(2031,"Lanthanium")
submenu.Append(2032,"Cerium")
submenu.Append(2033,"Praseodymium")
- menu2.AppendMenu(203, "Lanthanides", submenu)
+ menu2.Append(203, "Lanthanides", submenu)
# Append 2nd menu
menuBar.Append(menu2, "&Elements")
@@ -65,10 +65,23 @@ check the source for this sample to see how to implement them.
menuBar.Append(menu4, "Chec&k")
menu5 = wx.Menu()
- # Show how to put an icon in the menu
+ # Show how to put an icon in the menu item
item = wx.MenuItem(menu5, 500, "&Smile!\tCtrl+S", "This one has an icon")
item.SetBitmap(images.Smiles.GetBitmap())
- menu5.AppendItem(item)
+ menu5.Append(item)
+
+ menuitemwithbmp = wx.MenuItem(menu5, wx.ID_ANY, "Submenu with Bitmap")
+ # Show how to change the background colour of the menu item
+ menuitemwithbmp.SetBackgroundColour(wx.YELLOW)
+ # Show how to change the menu item's text colour
+ menuitemwithbmp.SetTextColour(wx.BLUE)
+ # Show how to change the menu item's font
+ menuitemwithbmp.SetFont(wx.Font(10, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_BOLD, False, ''))
+ submenu = wx.Menu(style=wx.MENU_TEAROFF)
+ submenu.Append(wx.MenuItem(menu5, wx.ID_ANY, "Woot!"))
+ menuitemwithbmp.SetBitmap(images.book.GetBitmap())
+ menuitemwithbmp.SetSubMenu(submenu)
+ menu5.Append(menuitemwithbmp)
# Shortcuts
menu5.Append(501, "Interesting thing\tCtrl+A", "Note the shortcut!")
@@ -78,7 +91,7 @@ check the source for this sample to see how to implement them.
menu5.Append(503, "remove the submenu")
menu6 = wx.Menu()
menu6.Append(601, "Submenu Item")
- menu5.AppendMenu(504, "submenu", menu6)
+ menu5.Append(504, "submenu", menu6)
menu5.Append(505, "remove this menu")
menu5.Append(506, "this is updated")
menu5.Append(507, "insert after this...")
@@ -131,7 +144,7 @@ check the source for this sample to see how to implement them.
help = item.GetHelp()
# but in this case just call Skip so the default is done
- event.Skip()
+ event.Skip()
def Menu101(self, event):
@@ -198,10 +211,10 @@ check the source for this sample to see how to implement them.
#menu.Remove(504)
# this also works
- menu.RemoveItem(mb.FindItemById(504))
+ menu.RemoveItem(mb.FindItemById(504))
- # This doesn't work, as expected since submenuItem is not on menu
- #menu.RemoveItem(submenuItem)
+ # This doesn't work, as expected since submenuItem is not on menu
+ #menu.RemoveItem(submenuItem)
def TestRemove2(self, evt):
@@ -265,29 +278,29 @@ def runTest(frame, nb, log):
overview = """\
A demo of using wx.MenuBar and wx.Menu in various ways.
-A menu is a popup (or pull down) list of items, one of which may be selected
-before the menu goes away (clicking elsewhere dismisses the menu). Menus may be
+A menu is a popup (or pull down) list of items, one of which may be selected
+before the menu goes away (clicking elsewhere dismisses the menu). Menus may be
used to construct either menu bars or popup menus.
-A menu item has an integer ID associated with it which can be used to identify
-the selection, or to change the menu item in some way. A menu item with a special
-identifier -1 is a separator item and doesn't have an associated command but just
+A menu item has an integer ID associated with it which can be used to identify
+the selection, or to change the menu item in some way. A menu item with a special
+identifier -1 is a separator item and doesn't have an associated command but just
makes a separator line appear in the menu.
-Menu items may be either normal items, check items or radio items. Normal items
-don't have any special properties while the check items have a boolean flag associated
-to them and they show a checkmark in the menu when the flag is set. wxWindows
-automatically toggles the flag value when the item is clicked and its value may
-be retrieved using either IsChecked method of wx.Menu or wx.MenuBar itself or by
+Menu items may be either normal items, check items or radio items. Normal items
+don't have any special properties while the check items have a boolean flag associated
+to them and they show a checkmark in the menu when the flag is set. wxWindows
+automatically toggles the flag value when the item is clicked and its value may
+be retrieved using either IsChecked method of wx.Menu or wx.MenuBar itself or by
using wxEvent.IsChecked when you get the menu notification for the item in question.
-The radio items are similar to the check items except that all the other items
-in the same radio group are unchecked when a radio item is checked. The radio group
-is formed by a contiguous range of radio items, i.e. it starts at the first item of
-this kind and ends with the first item of a different kind (or the end of the menu).
-Notice that because the radio groups are defined in terms of the item positions
-inserting or removing the items in the menu containing the radio items risks to not
-work correctly. Finally note that the radio items are only supported under Windows
+The radio items are similar to the check items except that all the other items
+in the same radio group are unchecked when a radio item is checked. The radio group
+is formed by a contiguous range of radio items, i.e. it starts at the first item of
+this kind and ends with the first item of a different kind (or the end of the menu).
+Notice that because the radio groups are defined in terms of the item positions
+inserting or removing the items in the menu containing the radio items risks to not
+work correctly. Finally note that the radio items are only supported under Windows
and GTK+ currently.
"""
diff --git a/demo/MimeTypesManager.py b/demo/MimeTypesManager.py
index b4d9f048..776619ee 100644
--- a/demo/MimeTypesManager.py
+++ b/demo/MimeTypesManager.py
@@ -6,8 +6,8 @@
# .wdr-derived demo
#
# Created: 12/31/03
-# RCS-ID: $Id$
-# Copyright:
+# RCS-ID: $Id: MimeTypesManager.py 71035 2012-03-28 19:16:31Z RD $
+# Copyright:
# Licence: wxWindows license
#----------------------------------------------------------------------
#
@@ -28,18 +28,18 @@ if 'unicode' in wx.PlatformInfo:
class MimeTypesDemoPanel(wx.Panel):
def __init__(self, parent, log):
-
+
self.log = log
-
+
wx.Panel.__init__(self, parent, -1)
# This will be used for all of the labels that follow (bold label)
bfont = self.GetFont()
bfont.SetWeight(wx.BOLD)
-
+
# Contains everything
tsizer = wx.BoxSizer(wx.VERTICAL)
-
+
# Contains upper controls
usizer = wx.BoxSizer(wx.HORIZONTAL)
@@ -159,7 +159,7 @@ class MimeTypesDemoPanel(wx.Panel):
# multi-line) so the sizer can then expand it to whatever
# space is available
self.allcommands.SetSize((-1, 20))
-
+
llsizer.Add(self.allcommands, (7, 1), (1, 3), wx.ALL | wx.GROW | wx.ALIGN_CENTER, 2)
# Tell the sizer to expand this row as needed
@@ -169,7 +169,7 @@ class MimeTypesDemoPanel(wx.Panel):
#----------------------------------------------------------------------------
lrsizer = wx.BoxSizer(wx.VERTICAL)
-
+
#------- List box with known MIME types
t = wx.StaticText(self, -1, 'Known MIME types')
@@ -194,13 +194,13 @@ class MimeTypesDemoPanel(wx.Panel):
self.SetSizer(tsizer)
tsizer.Fit(self)
-
+
# Populate the Known MIME types list with what is in the database
try:
mtypes = wx.TheMimeTypesManager.EnumAllFileTypes()
except wx.PyAssertionError:
mtypes = []
-
+
# TODO: On wxMac, EnumAllFileTypes produces tons of dupes, which
# causes quirky behavior because the list control doesn't expect
# dupes, and simply wastes space. So remove the dupes for now,
@@ -213,7 +213,7 @@ class MimeTypesDemoPanel(wx.Panel):
if mimes:
mimes.sort()
self.mimelist.AppendItems(mimes)
-
+
# Do a lookup of *.wav for a starting position
self.OnLookup()
@@ -238,7 +238,7 @@ class MimeTypesDemoPanel(wx.Panel):
if fileType:
if self.mimelist.FindString(txt) != -1:
self.mimelist.SetSelection(self.mimelist.FindString(txt))
-
+
# Must be an extension lookup
else:
fileType = wx.TheMimeTypesManager.GetFileTypeFromExtension(txt)
@@ -274,7 +274,7 @@ class MimeTypesDemoPanel(wx.Panel):
self.icon.SetIcon(icon)
else:
bmp = images.NoIcon.GetBitmap()
- self.icon.SetBitmap(bmp)
+ self.icon.SetBitmap(bmp)
self.iconsource.SetValue(file)
self.iconoffset.SetValue(convert(idx))
@@ -309,14 +309,14 @@ class MimeTypesDemoPanel(wx.Panel):
#------- All commands
all = ft.GetAllCommands(filename, mime)
-
+
if all is None:
self.allcommands.SetValue("")
else:
verbs, commands = all
text = pprint.pformat(map(None, verbs, commands))
self.allcommands.SetValue(text)
-
+
#----------------------------------------------------------------------
@@ -328,16 +328,16 @@ def runTest(frame, nb, log):
overview = """\
-The wx.MimeTypesManager class allows the application to retrieve the
-information about all known MIME types from a system-specific location and the
-filename extensions to the MIME types and vice versa. After initialization the
-methods GetFileTypeFromMimeType() and GetFileTypeFromExtension()
-may be called: they will return a wx.FileType object which may be further
+The wx.MimeTypesManager class allows the application to retrieve the
+information about all known MIME types from a system-specific location and the
+filename extensions to the MIME types and vice versa. After initialization the
+methods GetFileTypeFromMimeType() and GetFileTypeFromExtension()
+may be called: they will return a wx.FileType object which may be further
queried for file description, icon and other attributes.
A global instance of wx.MimeTypesManager is always available as
-wx.TheMimeTypesManager. It is recommended to use this instance instead
-of creating your own because gathering MIME information may take quite a long
+wx.TheMimeTypesManager. It is recommended to use this instance instead
+of creating your own because gathering MIME information may take quite a long
on Unix systems.
This demo shows how to use wx.TheMimeTypesManager to list all known MIME types
diff --git a/demo/MiniFrame.py b/demo/MiniFrame.py
index 2bea751f..305289f1 100644
--- a/demo/MiniFrame.py
+++ b/demo/MiniFrame.py
@@ -5,7 +5,7 @@ import wx
class MyMiniFrame(wx.MiniFrame):
def __init__(
self, parent, title, pos=wx.DefaultPosition, size=wx.DefaultSize,
- style=wx.DEFAULT_FRAME_STYLE
+ style=wx.DEFAULT_FRAME_STYLE
):
wx.MiniFrame.__init__(self, parent, -1, title, pos, size, style)
@@ -20,7 +20,7 @@ class MyMiniFrame(wx.MiniFrame):
self.Close(True)
def OnCloseWindow(self, event):
- print "OnCloseWindow"
+ # print("OnCloseWindow")
self.Destroy()
#---------------------------------------------------------------------------
@@ -36,12 +36,12 @@ class TestPanel(wx.Panel):
def OnButton(self, evt):
win = MyMiniFrame(self, "This is a wx.MiniFrame",
- style=wx.DEFAULT_FRAME_STYLE | wx.TINY_CAPTION_HORIZ)
+ style=wx.DEFAULT_FRAME_STYLE | wx.TINY_CAPTION)
win.SetSize((200, 200))
win.CenterOnParent(wx.BOTH)
win.Show(True)
-
+
#---------------------------------------------------------------------------
@@ -54,8 +54,8 @@ def runTest(frame, nb, log):
overview = """\
-A MiniFrame is a Frame with a small title bar. It is suitable for floating
-toolbars that must not take up too much screen area. In other respects, it's the
+A MiniFrame is a Frame with a small title bar. It is suitable for floating
+toolbars that must not take up too much screen area. In other respects, it's the
same as a wx.Frame.
"""
diff --git a/demo/MultiSash.py b/demo/MultiSash.py
index 6af173b5..d02d6eca 100644
--- a/demo/MultiSash.py
+++ b/demo/MultiSash.py
@@ -1,7 +1,7 @@
-import wx
-import wx.lib.multisash as sash
-import wx.stc as stc
+import wx
+import wx.lib.multisash as sash
+import wx.stc as stc
#---------------------------------------------------------------------------
@@ -31,7 +31,7 @@ class TestWindow(stc.StyledTextCtrl):
# shared document reference
doc = None
-
+
def __init__(self, parent):
stc.StyledTextCtrl.__init__(self, parent, -1, style=wx.NO_BORDER)
self.SetMarginWidth(1,0)
@@ -43,21 +43,21 @@ class TestWindow(stc.StyledTextCtrl):
self.StyleSetFont(
stc.STC_STYLE_DEFAULT,
- wx.Font(fSize, wx.MODERN, wx.NORMAL, wx.NORMAL)
+ 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):
# Reset doc reference in case this demo is run again
TestWindow.doc = None
-
+
#---------------------------------------------------------------------------
diff --git a/demo/Notebook.py b/demo/Notebook.py
index 8eeaca7c..cd95b30a 100644
--- a/demo/Notebook.py
+++ b/demo/Notebook.py
@@ -15,7 +15,7 @@ class TestNB(wx.Notebook):
def __init__(self, parent, id, log):
wx.Notebook.__init__(self, parent, id, size=(21,21), style=
wx.BK_DEFAULT
- #wx.BK_TOP
+ #wx.BK_TOP
#wx.BK_BOTTOM
#wx.BK_LEFT
#wx.BK_RIGHT
@@ -62,10 +62,10 @@ class TestNB(wx.Notebook):
win = self.makeColorPanel(wx.CYAN)
self.AddPage(win, "Cyan")
- win = self.makeColorPanel(wx.NamedColour('Midnight Blue'))
+ win = self.makeColorPanel(wx.Colour('Midnight Blue'))
self.AddPage(win, "Midnight Blue")
- win = self.makeColorPanel(wx.NamedColour('Indian Red'))
+ win = self.makeColorPanel(wx.Colour('Indian Red'))
self.AddPage(win, "Indian Red")
self.Bind(wx.EVT_NOTEBOOK_PAGE_CHANGED, self.OnPageChanged)
diff --git a/demo/OwnerDrawnComboBox.py b/demo/OwnerDrawnComboBox.py
index ada91fb1..75a7c925 100644
--- a/demo/OwnerDrawnComboBox.py
+++ b/demo/OwnerDrawnComboBox.py
@@ -1,13 +1,13 @@
import wx
-import wx.combo
+import wx.adv
#----------------------------------------------------------------------
# This ComboBox class graphically displays the various pen styles that
# are available, making it easy for the user to choose the style they
# want.
-class PenStyleComboBox(wx.combo.OwnerDrawnComboBox):
+class PenStyleComboBox(wx.adv.OwnerDrawnComboBox):
# Overridden from OwnerDrawnComboBox, called to draw each
# item in the list
@@ -42,11 +42,11 @@ class PenStyleComboBox(wx.combo.OwnerDrawnComboBox):
penStyle = wx.HORIZONTAL_HATCH
elif item == 11:
penStyle = wx.VERTICAL_HATCH
-
+
pen = wx.Pen(dc.GetTextForeground(), 3, penStyle)
dc.SetPen(pen)
- if flags & wx.combo.ODCB_PAINTING_CONTROL:
+ if flags & wx.adv.ODCB_PAINTING_CONTROL:
# for painting the control itself
dc.DrawLine( r.x+5, r.y+r.height/2, r.x+r.width - 5, r.y+r.height/2 )
@@ -58,22 +58,22 @@ class PenStyleComboBox(wx.combo.OwnerDrawnComboBox):
)
dc.DrawLine( r.x+5, r.y+((r.height/4)*3)+1, r.x+r.width - 5, r.y+((r.height/4)*3)+1 )
-
+
# Overridden from OwnerDrawnComboBox, called for drawing the
# background area of each item.
def OnDrawBackground(self, dc, rect, item, flags):
# If the item is selected, or its item # iseven, or we are painting the
# combo control itself, then use the default rendering.
- if (item & 1 == 0 or flags & (wx.combo.ODCB_PAINTING_CONTROL |
- wx.combo.ODCB_PAINTING_SELECTED)):
- wx.combo.OwnerDrawnComboBox.OnDrawBackground(self, dc, rect, item, flags)
+ if (item & 1 == 0 or flags & (wx.adv.ODCB_PAINTING_CONTROL |
+ wx.adv.ODCB_PAINTING_SELECTED)):
+ wx.adv.OwnerDrawnComboBox.OnDrawBackground(self, dc, rect, item, flags)
return
# Otherwise, draw every other background with different colour.
bgCol = wx.Colour(240,240,250)
dc.SetBrush(wx.Brush(bgCol))
dc.SetPen(wx.Pen(bgCol))
- dc.DrawRectangleRect(rect);
+ dc.DrawRectangle(rect);
@@ -90,9 +90,9 @@ class PenStyleComboBox(wx.combo.OwnerDrawnComboBox):
# -1 for default/undetermined
def OnMeasureItemWidth(self, item):
return -1; # default - will be measured from text width
-
-
+
+
#----------------------------------------------------------------------
diff --git a/demo/PenAndBrushStyles.py b/demo/PenAndBrushStyles.py
index b66dc816..1fc73fb8 100644
--- a/demo/PenAndBrushStyles.py
+++ b/demo/PenAndBrushStyles.py
@@ -14,15 +14,13 @@ brush_styles = ["wx.SOLID", "wx.TRANSPARENT", "wx.STIPPLE", "wx.BDIAGONAL_HATCH"
"wx.HORIZONTAL_HATCH", "wx.VERTICAL_HATCH"]
-
-
class BasePanel(wx.Panel):
def __init__(self, parent):
wx.Panel.__init__(self, parent, style=wx.SUNKEN_BORDER|wx.WANTS_CHARS)
self.SetBackgroundStyle(wx.BG_STYLE_CUSTOM)
- self.Bind(wx.EVT_SIZE, self.OnSize)
+ self.Bind(wx.EVT_SIZE, self.OnSize)
self.Bind(wx.EVT_PAINT, self.OnPaint)
@@ -36,7 +34,7 @@ class PenPanel(BasePanel):
def __init__(self, parent, pen_name):
BasePanel.__init__(self, parent)
self.pen_name = pen_name
-
+
def OnPaint(self, event):
width, height = self.GetClientSize()
@@ -49,8 +47,8 @@ class PenPanel(BasePanel):
font.MakeSmaller()
dc.SetFont(font)
w, labelHeight = dc.GetTextExtent('Wy')
-
- name = self.pen_name
+
+ name = self.pen_name
if "STIPPLE" in name:
bmp = images.Smiles.GetBitmap()
@@ -67,7 +65,7 @@ class PenPanel(BasePanel):
# dash values represent units on, off, on. off...
pen.SetDashes([2, 5, 2, 2])
name += " ([2, 5, 2, 2])"
-
+
dc.SetTextForeground(wx.BLACK)
dc.DrawText(name, 1, 1)
@@ -80,7 +78,7 @@ class BrushPanel(BasePanel):
def __init__(self, parent, brush_name):
BasePanel.__init__(self, parent)
self.brush_name = brush_name
-
+
def OnPaint(self, event):
width, height = self.GetClientSize()
@@ -94,16 +92,16 @@ class BrushPanel(BasePanel):
dc.SetFont(font)
w, labelHeight = dc.GetTextExtent('Wy')
- dc.SetPen(wx.TRANSPARENT_PEN)
+ dc.SetPen(wx.TRANSPARENT_PEN)
name = self.brush_name
-
+
if "STIPPLE" in name:
bmp = images.Smiles.GetBitmap()
bmp.SetMask(None)
- brush = wx.BrushFromBitmap(bmp)
+ brush = wx.Brush(bmp)
else:
brush = wx.Brush(wx.BLUE, eval(name))
-
+
dc.SetTextForeground(wx.BLACK)
dc.DrawText(name, 1, 1)
@@ -124,7 +122,7 @@ class TestPanel(wx.Panel):
label1.SetFont(font)
mainSizer.Add(label1, 0, wx.EXPAND|wx.ALL, 10)
-
+
gs1 = wx.GridSizer(4, 4, 3, 3) # rows, cols, vgap, hgap
for pen_name in pen_styles:
@@ -137,7 +135,7 @@ class TestPanel(wx.Panel):
label2.SetFont(font)
mainSizer.Add(label2, 0, wx.EXPAND|wx.ALL, 10)
-
+
gs2 = wx.GridSizer(3, 3, 3, 3) # rows, cols, vgap, hgap
for brush_name in brush_styles:
@@ -145,9 +143,9 @@ class TestPanel(wx.Panel):
gs2.Add(small, 0, wx.EXPAND)
mainSizer.Add(gs2, 1, wx.EXPAND|wx.LEFT|wx.RIGHT|wx.BOTTOM, 10)
-
+
self.SetSizer(mainSizer)
-
+
diff --git a/demo/Pickers.py b/demo/Pickers.py
index 1291533a..e6dfaffb 100644
--- a/demo/Pickers.py
+++ b/demo/Pickers.py
@@ -14,9 +14,9 @@ class TestPanel(wx.Panel):
title.SetForegroundColour("navy")
box.Add(title, 0, wx.ALIGN_CENTER|wx.ALL, 5)
#print title.GetBestSize(), title.GetMinSize(), title.GetSize()
-
+
box.Add(wx.StaticLine(self), 0, wx.EXPAND)
-
+
fgs = wx.FlexGridSizer(cols=4, hgap=5, vgap=5)
fgs.AddGrowableCol(3)
fgs.Add((10,10)) # spacer
@@ -32,7 +32,7 @@ class TestPanel(wx.Panel):
cp1 = wx.ColourPickerCtrl(self)
fgs.Add(cp1, 0, wx.ALIGN_CENTER)
fgs.Add((10,10)) # spacer
- cp2 = wx.ColourPickerCtrl(self, style=wx.CLRP_USE_TEXTCTRL)
+ cp2 = wx.ColourPickerCtrl(self, style=wx.CLRP_USE_TEXTCTRL)
cp2.SetTextCtrlProportion(5)
fgs.Add(cp2, 0, wx.EXPAND)
fgs.Add(wx.StaticText(self, -1, " with label:"), 0, wx.ALIGN_CENTER_VERTICAL)
@@ -86,9 +86,9 @@ class TestPanel(wx.Panel):
self.log.write("You chose: %s\n" % repr(evt.GetPath()))
def OnPickFont(self, evt):
- font = evt.GetFont()
+ font = evt.GetFont()
self.log.write("You chose: %s\n" % font.GetNativeFontInfoUserDesc())
-
+
#----------------------------------------------------------------------
def runTest(frame, nb, log):
diff --git a/demo/PlateButton.py b/demo/PlateButton.py
index 33c10de0..7aeabb48 100644
--- a/demo/PlateButton.py
+++ b/demo/PlateButton.py
@@ -230,7 +230,7 @@ class GradientPanel(wx.Panel):
def OnPaint(self, evt):
dc = wx.PaintDC(self)
gc = wx.GraphicsContext.Create(dc)
- col1 = wx.SystemSettings_GetColour(wx.SYS_COLOUR_3DSHADOW)
+ col1 = wx.SystemSettings.GetColour(wx.SYS_COLOUR_3DSHADOW)
col2 = platebtn.AdjustColour(col1, -90)
col1 = platebtn.AdjustColour(col1, 90)
rect = self.GetClientRect()
diff --git a/demo/PopupControl.py b/demo/PopupControl.py
index d5b17f56..1e3afd09 100644
--- a/demo/PopupControl.py
+++ b/demo/PopupControl.py
@@ -1,14 +1,15 @@
-import wx
-import wx.lib.popupctl as pop
-import wx.calendar as cal
+import wx
+import wx.adv
+import wx.lib.popupctl as pop
+from wx.adv import CalendarCtrl
class TestDateControl(pop.PopupControl):
def __init__(self,*_args,**_kwargs):
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))
+ self.cal = CalendarCtrl(self.win,-1,pos = (0,0))
bz = self.cal.GetBestSize()
self.win.SetSize(bz)
@@ -18,7 +19,7 @@ class TestDateControl(pop.PopupControl):
self.SetPopupContent(self.win)
# Event registration for date selection
- self.cal.Bind(cal.EVT_CALENDAR, self.OnCalSelected)
+ self.cal.Bind(wx.adv.EVT_CALENDAR, self.OnCalSelected)
# Method called when a day is selected in the calendar
@@ -52,7 +53,7 @@ class TestDateControl(pop.PopupControl):
if d > 0 and d < 31:
if m >= 0 and m < 12:
if y > 1000:
- self.cal.SetDate(wx.DateTimeFromDMY(d,m,y))
+ self.cal.SetDate(wx.DateTime.FromDMY(d,m,y))
didSet = True
if not didSet:
diff --git a/demo/PopupMenu.py b/demo/PopupMenu.py
index 7d6a9059..2c6ca10f 100644
--- a/demo/PopupMenu.py
+++ b/demo/PopupMenu.py
@@ -52,7 +52,7 @@ class TestPanel(wx.Panel):
#
# Yet another anternate way to do IDs. Some prefer them up top to
# avoid clutter, some prefer them close to the object of interest
- # for clarity.
+ # for clarity.
if not hasattr(self, "popupID1"):
self.popupID1 = wx.NewId()
self.popupID2 = wx.NewId()
@@ -80,7 +80,7 @@ class TestPanel(wx.Panel):
item = wx.MenuItem(menu, self.popupID1,"One")
bmp = images.Smiles.GetBitmap()
item.SetBitmap(bmp)
- menu.AppendItem(item)
+ menu.Append(item)
# add some other items
menu.Append(self.popupID2, "Two")
menu.Append(self.popupID3, "Three")
@@ -91,7 +91,7 @@ class TestPanel(wx.Panel):
sm = wx.Menu()
sm.Append(self.popupID8, "sub item 1")
sm.Append(self.popupID9, "sub item 1")
- menu.AppendMenu(self.popupID7, "Test Submenu", sm)
+ menu.Append(self.popupID7, "Test Submenu", sm)
# Popup the menu. If an item is selected then its handler
@@ -129,8 +129,6 @@ class TestPanel(wx.Panel):
-
-
#----------------------------------------------------------------------
def runTest(frame, nb, log):
diff --git a/demo/PrintDialog.py b/demo/PrintDialog.py
index e86dddf2..caceebed 100644
--- a/demo/PrintDialog.py
+++ b/demo/PrintDialog.py
@@ -20,7 +20,7 @@ class TestPanel(wx.Panel):
data.EnablePageNumbers(True)
data.SetMinPage(1)
data.SetMaxPage(5)
- data.SetAllPages(True)
+ # data.SetAllPages(True)
dlg = wx.PrintDialog(self, data)
@@ -31,7 +31,6 @@ class TestPanel(wx.Panel):
dlg.Destroy()
-
#---------------------------------------------------------------------------
@@ -43,7 +42,7 @@ def runTest(frame, nb, log):
overview = """\
-This class represents the print and print setup common dialogs. You may obtain
+This class represents the print and print setup common dialogs. You may obtain
a wx.PrinterDC device context from a successfully dismissed print dialog.
User information is stored in a wx.PrintDialogData object that is passed to the
diff --git a/demo/PrintFramework.py b/demo/PrintFramework.py
index 4cc1c940..3bcc3532 100644
--- a/demo/PrintFramework.py
+++ b/demo/PrintFramework.py
@@ -61,7 +61,7 @@ class MyPrintout(wx.Printout):
maxY = maxY + (2 * marginY)
# Get the size of the DC in pixels
- (w, h) = dc.GetSizeTuple()
+ (w, h) = dc.GetSize()
# Calculate a suitable scaling factor
scaleX = float(w) / maxX
@@ -98,7 +98,7 @@ class TestPrintPanel(wx.Panel):
self.printData = wx.PrintData()
self.printData.SetPaperId(wx.PAPER_LETTER)
self.printData.SetPrintMode(wx.PRINT_MODE_PRINTER)
-
+
self.box = wx.BoxSizer(wx.VERTICAL)
self.canvas = ScrolledWindow.MyCanvas(self)
self.box.Add(self.canvas, 1, wx.GROW)
@@ -122,11 +122,10 @@ class TestPrintPanel(wx.Panel):
self.SetSizer(self.box)
-
def OnPageSetup(self, evt):
psdd = wx.PageSetupDialogData(self.printData)
psdd.EnablePrinter(True)
- psdd.CalculatePaperSizeFromId()
+ # psdd.CalculatePaperSizeFromId()
dlg = wx.PageSetupDialog(self, psdd)
dlg.ShowModal()
@@ -143,7 +142,7 @@ class TestPrintPanel(wx.Panel):
printout2 = MyPrintout(self.canvas, self.log)
self.preview = wx.PrintPreview(printout, printout2, data)
- if not self.preview.Ok():
+ if not self.preview.IsOk():
self.log.WriteText("Houston, we have a problem...\n")
return
@@ -154,8 +153,6 @@ class TestPrintPanel(wx.Panel):
pfrm.SetSize(self.frame.GetSize())
pfrm.Show(True)
-
-
def OnDoPrint(self, event):
pdd = wx.PrintDialogData(self.printData)
pdd.SetToPage(2)
@@ -180,8 +177,6 @@ def runTest(frame, nb, log):
-
-
overview = """\
@@ -193,26 +188,26 @@ setup dialog.
Classes demonstrated here:
- - wx.Printout() - This class encapsulates the functionality of printing out
- an application document. A new class must be derived and members overridden
- to respond to calls such as OnPrintPage and HasPage. Instances of this class
- are passed to wx.Printer.Print() or a wx.PrintPreview object to initiate
+
- wx.Printout() - This class encapsulates the functionality of printing out
+ an application document. A new class must be derived and members overridden
+ to respond to calls such as OnPrintPage and HasPage. Instances of this class
+ are passed to wx.Printer.Print() or a wx.PrintPreview object to initiate
printing or previewing.
-
-
- wx.PrintData() - This class holds a variety of information related to
- printers and printer device contexts. This class is used to create a
- wx.PrinterDC and a wx.PostScriptDC. It is also used as a data member of
- wx.PrintDialogData and wx.PageSetupDialogData, as part of the mechanism for
+
+
- wx.PrintData() - This class holds a variety of information related to
+ printers and printer device contexts. This class is used to create a
+ wx.PrinterDC and a wx.PostScriptDC. It is also used as a data member of
+ wx.PrintDialogData and wx.PageSetupDialogData, as part of the mechanism for
transferring data between the print dialogs and the application.
-
- wx.PrintDialog() - This class represents the print and print setup
- common dialogs. You may obtain a wx.PrinterDC device context from a
+
- wx.PrintDialog() - This class represents the print and print setup
+ common dialogs. You may obtain a wx.PrinterDC device context from a
successfully dismissed print dialog.
-
-
- wx.PrintPreview() - Objects of this class manage the print preview
- process. The object is passed a wx.Printout object, and the wx.PrintPreview
- object itself is passed to a wx.PreviewFrame object. Previewing is started by
- initializing and showing the preview frame. Unlike wxPrinter.Print, flow of
+
+
- wx.PrintPreview() - Objects of this class manage the print preview
+ process. The object is passed a wx.Printout object, and the wx.PrintPreview
+ object itself is passed to a wx.PreviewFrame object. Previewing is started by
+ initializing and showing the preview frame. Unlike wxPrinter.Print, flow of
control returns to the application immediately after the frame is shown.
diff --git a/demo/RawBitmapAccess.py b/demo/RawBitmapAccess.py
index b4b6b768..843d5abc 100644
--- a/demo/RawBitmapAccess.py
+++ b/demo/RawBitmapAccess.py
@@ -53,9 +53,9 @@ class TestPanel(wx.Panel):
log.write("Timing...\n")
num = 100
tm = t.timeit(num)
- log.write("%d passes in %f seconds == %f seconds per pass " %
+ log.write("%d passes in %f seconds == %f seconds per pass " %
(num, tm, tm/num))
-
+
if not USE_NUMPY:
log.write("using raw access\n")
self.redBmp = self.MakeBitmap(178, 34, 34)
@@ -85,7 +85,7 @@ class TestPanel(wx.Panel):
def MakeBitmap(self, red, green, blue, alpha=128):
# Create the bitmap that we will stuff pixel values into using
# the raw bitmap access classes.
- bmp = wx.EmptyBitmap(DIM, DIM, 32)
+ bmp = wx.Bitmap(DIM, DIM, 32)
# Create an object that facilitates access to the bitmap's
# pixel buffer
@@ -126,7 +126,7 @@ class TestPanel(wx.Panel):
pixels.Set(red, green, blue, wx.ALPHA_OPAQUE)
pixels.MoveTo(pixelData, DIM-1, y)
pixels.Set(red, green, blue, wx.ALPHA_OPAQUE)
-
+
return bmp
@@ -153,9 +153,9 @@ class TestPanel(wx.Panel):
# finally, use the array to create a bitmap
bmp = wx.BitmapFromBufferRGBA(DIM, DIM, arr)
return bmp
-
-
-
+
+
+
#----------------------------------------------------------------------
def runTest(frame, nb, log):
diff --git a/demo/ResizeWidget.py b/demo/ResizeWidget.py
index 2f824230..2f44b613 100644
--- a/demo/ResizeWidget.py
+++ b/demo/ResizeWidget.py
@@ -12,7 +12,7 @@ class TestPanel(wx.Panel):
rw1 = rw.ResizeWidget(self)
rw2 = rw.ResizeWidget(self)
self.rw2 = rw2
-
+
# This one we will reparent to the ResizeWidget...
tst = wx.Panel(self)
tst.SetBackgroundColour('pink')
@@ -20,11 +20,11 @@ class TestPanel(wx.Panel):
tst.SetMinSize((80,35))
tst.SetMaxSize((200,100))
rw1.SetManagedChild(tst)
-
+
# This one we will create as a child of the resizer to start with
lb = wx.ListBox(rw2, size=(100,70),
choices="zero one two three four five six seven eight nine".split())
-
+
# now make a sizer with a bunch of other widgets
fgs = wx.FlexGridSizer(cols=4, vgap=5, hgap=5)
for i in range(16):
@@ -36,21 +36,20 @@ class TestPanel(wx.Panel):
fgs.Add(wx.Button(self))
self.Bind(wx.EVT_BUTTON, self.OnButton)
-
+
self.Sizer = wx.BoxSizer()
self.Sizer.Add(fgs, 0, wx.ALL, 10)
self.Bind(rw.EVT_RW_LAYOUT_NEEDED, self.OnLayoutNeeded)
-
+
def OnLayoutNeeded(self, evt):
self.Layout()
-
def OnButton(self, evt):
self.rw2.EnableResize(not self.rw2.IsResizeEnabled())
-
+
#----------------------------------------------------------------------
def runTest(frame, nb, log):
diff --git a/demo/SashWindow.py b/demo/SashWindow.py
index 72b6357c..c703e37d 100644
--- a/demo/SashWindow.py
+++ b/demo/SashWindow.py
@@ -1,5 +1,6 @@
-import wx
+import wx
+import wx.adv
#---------------------------------------------------------------------------
@@ -13,46 +14,46 @@ class TestSashWindow(wx.Panel):
# Create some layout windows
# A window like a toolbar
- topwin = wx.SashLayoutWindow(
+ topwin = wx.adv.SashLayoutWindow(
self, -1, wx.DefaultPosition, (200, 30),
- wx.NO_BORDER|wx.SW_3D
+ wx.NO_BORDER|wx.adv.SW_3D
)
topwin.SetDefaultSize((1000, 30))
- topwin.SetOrientation(wx.LAYOUT_HORIZONTAL)
- topwin.SetAlignment(wx.LAYOUT_TOP)
+ topwin.SetOrientation(wx.adv.LAYOUT_HORIZONTAL)
+ topwin.SetAlignment(wx.adv.LAYOUT_TOP)
topwin.SetBackgroundColour(wx.Colour(255, 0, 0))
- topwin.SetSashVisible(wx.SASH_BOTTOM, True)
+ topwin.SetSashVisible(wx.adv.SASH_BOTTOM, True)
self.topWindow = topwin
winids.append(topwin.GetId())
# A window like a statusbar
- bottomwin = wx.SashLayoutWindow(
+ bottomwin = wx.adv.SashLayoutWindow(
self, -1, wx.DefaultPosition, (200, 30),
- wx.NO_BORDER|wx.SW_3D
+ wx.NO_BORDER|wx.adv.SW_3D
)
bottomwin.SetDefaultSize((1000, 30))
- bottomwin.SetOrientation(wx.LAYOUT_HORIZONTAL)
- bottomwin.SetAlignment(wx.LAYOUT_BOTTOM)
+ bottomwin.SetOrientation(wx.adv.LAYOUT_HORIZONTAL)
+ bottomwin.SetAlignment(wx.adv.LAYOUT_BOTTOM)
bottomwin.SetBackgroundColour(wx.Colour(0, 0, 255))
- bottomwin.SetSashVisible(wx.SASH_TOP, True)
+ bottomwin.SetSashVisible(wx.adv.SASH_TOP, True)
self.bottomWindow = bottomwin
winids.append(bottomwin.GetId())
# A window to the left of the client window
- leftwin1 = wx.SashLayoutWindow(
+ leftwin1 = wx.adv.SashLayoutWindow(
self, -1, wx.DefaultPosition, (200, 30),
- wx.NO_BORDER|wx.SW_3D
+ wx.NO_BORDER|wx.adv.SW_3D
)
leftwin1.SetDefaultSize((120, 1000))
- leftwin1.SetOrientation(wx.LAYOUT_VERTICAL)
- leftwin1.SetAlignment(wx.LAYOUT_LEFT)
+ leftwin1.SetOrientation(wx.adv.LAYOUT_VERTICAL)
+ leftwin1.SetAlignment(wx.adv.LAYOUT_LEFT)
leftwin1.SetBackgroundColour(wx.Colour(0, 255, 0))
- leftwin1.SetSashVisible(wx.SASH_RIGHT, True)
+ leftwin1.SetSashVisible(wx.adv.SASH_RIGHT, True)
leftwin1.SetExtraBorderSize(10)
textWindow = wx.TextCtrl(
leftwin1, -1, "", wx.DefaultPosition, wx.DefaultSize,
@@ -66,16 +67,16 @@ class TestSashWindow(wx.Panel):
# Another window to the left of the client window
- leftwin2 = wx.SashLayoutWindow(
+ leftwin2 = wx.adv.SashLayoutWindow(
self, -1, wx.DefaultPosition, (200, 30),
- wx.NO_BORDER|wx.SW_3D
+ wx.NO_BORDER|wx.adv.SW_3D
)
leftwin2.SetDefaultSize((120, 1000))
- leftwin2.SetOrientation(wx.LAYOUT_VERTICAL)
- leftwin2.SetAlignment(wx.LAYOUT_LEFT)
+ leftwin2.SetOrientation(wx.adv.LAYOUT_VERTICAL)
+ leftwin2.SetAlignment(wx.adv.LAYOUT_LEFT)
leftwin2.SetBackgroundColour(wx.Colour(0, 255, 255))
- leftwin2.SetSashVisible(wx.SASH_RIGHT, True)
+ leftwin2.SetSashVisible(wx.adv.SASH_RIGHT, True)
self.leftWindow2 = leftwin2
winids.append(leftwin2.GetId())
@@ -84,7 +85,7 @@ class TestSashWindow(wx.Panel):
self.remainingSpace = wx.Panel(self, -1, style=wx.SUNKEN_BORDER)
self.Bind(
- wx.EVT_SASH_DRAGGED_RANGE, self.OnSashDrag,
+ wx.adv.EVT_SASH_DRAGGED_RANGE, self.OnSashDrag,
id=min(winids), id2=max(winids)
)
@@ -92,7 +93,7 @@ class TestSashWindow(wx.Panel):
def OnSashDrag(self, event):
- if event.GetDragStatus() == wx.SASH_STATUS_OUT_OF_RANGE:
+ if event.GetDragStatus() == wx.adv.SASH_STATUS_OUT_OF_RANGE:
self.log.write('drag is out of range')
return
@@ -115,11 +116,11 @@ class TestSashWindow(wx.Panel):
self.log.write('bottomwin received drag event')
self.bottomWindow.SetDefaultSize((1000, event.GetDragRect().height))
- wx.LayoutAlgorithm().LayoutWindow(self, self.remainingSpace)
+ wx.adv.LayoutAlgorithm().LayoutWindow(self, self.remainingSpace)
self.remainingSpace.Refresh()
def OnSize(self, event):
- wx.LayoutAlgorithm().LayoutWindow(self, self.remainingSpace)
+ wx.adv.LayoutAlgorithm().LayoutWindow(self, self.remainingSpace)
#---------------------------------------------------------------------------
@@ -131,8 +132,8 @@ def runTest(frame, nb, log):
overview = """\
-wx.SashLayoutWindow responds to OnCalculateLayout events generated by
-wxLayoutAlgorithm. It allows the application to use simple accessors to
+wx.adv.SashLayoutWindow responds to OnCalculateLayout events generated by
+wx.adv.LayoutAlgorithm. It allows the application to use simple accessors to
specify how the window should be laid out, rather than having to respond
to events. The fact that the class derives from wx.SashWindow allows sashes
to be used if required, to allow the windows to be user-resizable.
diff --git a/demo/ScrolledWindow.py b/demo/ScrolledWindow.py
index fcd1d74f..8ec46b2b 100644
--- a/demo/ScrolledWindow.py
+++ b/demo/ScrolledWindow.py
@@ -21,7 +21,7 @@ class MyCanvas(wx.ScrolledWindow):
self.drawing = False
self.SetBackgroundColour("WHITE")
- self.SetCursor(wx.StockCursor(wx.CURSOR_PENCIL))
+ self.SetCursor(wx.Cursor(wx.CURSOR_PENCIL))
bmp = images.Test2.GetBitmap()
mask = wx.Mask(bmp, wx.BLUE)
bmp.SetMask(mask)
@@ -32,7 +32,7 @@ class MyCanvas(wx.ScrolledWindow):
if BUFFERED:
# Initialize the buffer bitmap. No real DC is needed at this point.
- self.buffer = wx.EmptyBitmap(self.maxWidth, self.maxHeight)
+ self.buffer = wx.Bitmap(self.maxWidth, self.maxHeight)
dc = wx.BufferedDC(None, self.buffer)
dc.SetBackground(wx.Brush(self.GetBackgroundColour()))
dc.Clear()
@@ -69,7 +69,7 @@ class MyCanvas(wx.ScrolledWindow):
def DoDrawing(self, dc, printing=False):
- dc.BeginDrawing()
+ # dc.BeginDrawing()
dc.SetPen(wx.Pen('RED'))
dc.DrawRectangle(5, 5, 50, 50)
@@ -142,8 +142,7 @@ class MyCanvas(wx.ScrolledWindow):
dc.GradientFillConcentric((20, 325, 50, 50),
"red", "blue", (25,25))
self.DrawSavedLines(dc)
- dc.EndDrawing()
-
+ # dc.EndDrawing()
def DrawSavedLines(self, dc):
dc.SetPen(wx.Pen('MEDIUM FOREST GREEN', 4))
diff --git a/demo/ShapedWindow.py b/demo/ShapedWindow.py
index 80983b1e..5f179d3e 100644
--- a/demo/ShapedWindow.py
+++ b/demo/ShapedWindow.py
@@ -18,12 +18,12 @@ class TestFrame(wx.Frame):
self.hasShape = False
self.delta = (0,0)
- self.Bind(wx.EVT_LEFT_DCLICK, self.OnDoubleClick)
- self.Bind(wx.EVT_LEFT_DOWN, self.OnLeftDown)
- self.Bind(wx.EVT_LEFT_UP, self.OnLeftUp)
- self.Bind(wx.EVT_MOTION, self.OnMouseMove)
- self.Bind(wx.EVT_RIGHT_UP, self.OnExit)
- self.Bind(wx.EVT_PAINT, self.OnPaint)
+ self.Bind(wx.EVT_LEFT_DCLICK, self.OnDoubleClick)
+ self.Bind(wx.EVT_LEFT_DOWN, self.OnLeftDown)
+ self.Bind(wx.EVT_LEFT_UP, self.OnLeftUp)
+ self.Bind(wx.EVT_MOTION, self.OnMouseMove)
+ self.Bind(wx.EVT_RIGHT_UP, self.OnExit)
+ self.Bind(wx.EVT_PAINT, self.OnPaint)
self.bmp = images.Vippi.GetBitmap()
w, h = self.bmp.GetWidth(), self.bmp.GetHeight()
@@ -31,8 +31,8 @@ class TestFrame(wx.Frame):
if wx.Platform != "__WXMAC__":
# wxMac clips the tooltip to the window shape, YUCK!!!
- self.SetToolTipString("Right-click to close the window\n"
- "Double-click the image to set/unset the window shape")
+ self.SetToolTip("Right-click to close the window\n"
+ "Double-click the image to set/unset the window shape")
if wx.Platform == "__WXGTK__":
# wxGTK requires that the window be created before you can
@@ -49,10 +49,9 @@ class TestFrame(wx.Frame):
def SetWindowShape(self, *evt):
# Use the bitmap's mask to determine the region
- r = wx.RegionFromBitmap(self.bmp)
+ r = wx.Region(self.bmp)
self.hasShape = self.SetShape(r)
-
def OnDoubleClick(self, evt):
if self.hasShape:
self.SetShape(wx.Region())
@@ -60,7 +59,6 @@ class TestFrame(wx.Frame):
else:
self.SetWindowShape()
-
def OnPaint(self, evt):
dc = wx.PaintDC(self)
dc.DrawBitmap(self.bmp, 0,0, True)
@@ -68,7 +66,6 @@ class TestFrame(wx.Frame):
def OnExit(self, evt):
self.Close()
-
def OnLeftDown(self, evt):
self.CaptureMouse()
x, y = self.ClientToScreen(evt.GetPosition())
@@ -77,12 +74,10 @@ class TestFrame(wx.Frame):
dy = y - originy
self.delta = ((dx, dy))
-
def OnLeftUp(self, evt):
if self.HasCapture():
self.ReleaseMouse()
-
def OnMouseMove(self, evt):
if evt.Dragging() and evt.LeftIsDown():
x, y = self.ClientToScreen(evt.GetPosition())
diff --git a/demo/Sizers.py b/demo/Sizers.py
index 1d79096a..2482b8b6 100644
--- a/demo/Sizers.py
+++ b/demo/Sizers.py
@@ -15,13 +15,13 @@ import wx
#----------------------------------------------------------------------
-class SampleWindow(wx.PyWindow):
+class SampleWindow(wx.Window):
"""
A simple window that is used as sizer items in the tests below to
show how the various sizers work.
"""
def __init__(self, parent, text, pos=wx.DefaultPosition, size=wx.DefaultSize):
- wx.PyWindow.__init__(self, parent, -1,
+ wx.Window.__init__(self, parent, -1,
#style=wx.RAISED_BORDER
#style=wx.SUNKEN_BORDER
style=wx.SIMPLE_BORDER
@@ -32,11 +32,11 @@ class SampleWindow(wx.PyWindow):
else:
self.bestsize = (80,25)
self.SetSize(self.GetBestSize())
-
+
self.Bind(wx.EVT_PAINT, self.OnPaint)
self.Bind(wx.EVT_SIZE, self.OnSize)
self.Bind(wx.EVT_LEFT_UP, self.OnCloseParent)
-
+
def OnPaint(self, evt):
sz = self.GetSize()
@@ -51,11 +51,11 @@ class SampleWindow(wx.PyWindow):
def OnCloseParent(self, evt):
p = wx.GetTopLevelParent(self)
if p:
- p.Close()
+ p.Close()
def DoGetBestSize(self):
return self.bestsize
-
+
#----------------------------------------------------------------------
@@ -539,7 +539,7 @@ class TestFrame(wx.Frame):
self.Fit()
def OnCloseWindow(self, event):
- self.MakeModal(False)
+ # self.MakeModal(False)
self.Destroy()
@@ -550,28 +550,36 @@ class TestSelectionPanel(wx.Panel):
wx.Panel.__init__(self, parent)
self.list = wx.ListBox(self, -1,
- wx.DLG_PNT(self, 10, 10), wx.DLG_SZE(self, 100, 100),
+ (-1, -1), (-1, -1),
[])
+ self.list.Fit()
self.Bind(wx.EVT_LISTBOX, self.OnSelect, self.list)
self.Bind(wx.EVT_LISTBOX_DCLICK, self.OnDClick, self.list)
- wx.Button(self, -1, "Try it!", wx.DLG_PNT(self, 120, 10)).SetDefault()
- self.Bind(wx.EVT_BUTTON, self.OnDClick)
+ btn = wx.Button(self, -1, "Try it!", (120, 10))
+ btn.Bind(wx.EVT_BUTTON, self.OnDClick)
self.text = wx.TextCtrl(self, -1, "",
- wx.DLG_PNT(self, 10, 115),
- wx.DLG_SZE(self, 200, 50),
+ (10, 115),
+ (200, 50),
wx.TE_MULTILINE | wx.TE_READONLY)
for item in theTests:
self.list.Append(item[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)
+
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 7be4bdb5..2b829c0e 100644
--- a/demo/Slider.py
+++ b/demo/Slider.py
@@ -12,11 +12,11 @@ class TestPanel(wx.Panel):
wx.StaticText(self, -1, "This is a wx.Slider.", (45, 15))
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, (30, 60), (250, -1),
+ wx.SL_HORIZONTAL | wx.SL_AUTOTICKS | wx.SL_LABELS
)
- slider.SetTickFreq(5, 1)
+ slider.SetTickFreq(5)
@@ -32,10 +32,10 @@ def runTest(frame, nb, log):
overview = """\
-A slider is a control with a handle which can be pulled back and forth to
+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 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 2a2977f7..13c6e976 100644
--- a/demo/Sound.py
+++ b/demo/Sound.py
@@ -1,6 +1,6 @@
import wx
-
+import wx.adv
from Main import opj
#----------------------------------------------------------------------
@@ -22,9 +22,9 @@ class TestPanel(wx.Panel):
def OnButton1(self, evt):
try:
- sound = wx.Sound(opj('data/anykey.wav'))
+ sound = wx.adv.Sound(opj('data/anykey.wav'))
self.log.write("before Play...\n")
- sound.Play(wx.SOUND_SYNC)
+ sound.Play(wx.adv.SOUND_SYNC)
self.log.write("...after Play\n")
except NotImplementedError, v:
wx.MessageBox(str(v), "Exception Message")
@@ -33,16 +33,16 @@ class TestPanel(wx.Panel):
def OnButton2(self, evt):
try:
if True:
- sound = wx.Sound(opj('data/plan.wav'))
+ sound = wx.adv.Sound(opj('data/plan.wav'))
else:
# sounds can also be loaded from a buffer object
data = open(opj('data/plan.wav'), 'rb').read()
sound = wx.SoundFromData(data)
self.log.write("before Play...\n")
- sound.Play(wx.SOUND_ASYNC)
+ sound.Play(wx.adv.SOUND_ASYNC)
self.sound = sound # save a reference (This shoudln't be needed, but there seems to be a bug...)
- wx.YieldIfNeeded()
+ # wx.YieldIfNeeded()
self.log.write("...after Play\n")
except NotImplementedError, v:
wx.MessageBox(str(v), "Exception Message")
@@ -52,14 +52,14 @@ class TestPanel(wx.Panel):
dlg = wx.FileDialog(wx.GetTopLevelParent(self),
"Choose a sound file",
wildcard="WAV files (*.wav)|*.wav",
- style=wx.OPEN)
+ style=wx.FD_OPEN)
if dlg.ShowModal() == wx.ID_OK:
try:
- #sound = wx.Sound(dlg.GetPath(), wx.SOUND_SYNC)
+ #sound = wx.adv.Sound(dlg.GetPath(), wx.SOUND_SYNC)
#sound.Play()
# another way to do it.
- wx.Sound.PlaySound(dlg.GetPath(), wx.SOUND_SYNC)
+ wx.adv.Sound.PlaySound(dlg.GetPath(), wx.adv.SOUND_SYNC)
except NotImplementedError, v:
wx.MessageBox(str(v), "Exception Message")
diff --git a/demo/StatusBar.py b/demo/StatusBar.py
index 3f218842..0e379ed5 100644
--- a/demo/StatusBar.py
+++ b/demo/StatusBar.py
@@ -2,6 +2,8 @@
import time
import wx
+RELATIVEWIDTHS = False
+
#---------------------------------------------------------------------------
class CustomStatusBar(wx.StatusBar):
@@ -10,8 +12,11 @@ class CustomStatusBar(wx.StatusBar):
# This status bar has three fields
self.SetFieldsCount(3)
- # Sets the three fields to be relative widths to each other.
- self.SetStatusWidths([-2, -1, -2])
+ if RELATIVEWIDTHS:
+ # Sets the three fields to be relative widths to each other.
+ self.SetStatusWidths([-2, -1, -2])
+ else:
+ self.SetStatusWidths([-2, 90, 140])
self.log = log
self.sizeChanged = False
self.Bind(wx.EVT_SIZE, self.OnSize)
@@ -28,8 +33,7 @@ class CustomStatusBar(wx.StatusBar):
# set the initial position of the checkbox
self.Reposition()
- # We're going to use a timer to drive a 'clock' in the last
- # field.
+ # We're going to use a timer to drive a 'clock' in the last field.
self.timer = wx.PyTimer(self.Notify)
self.timer.Start(1000)
self.Notify()
@@ -70,14 +74,14 @@ class CustomStatusBar(wx.StatusBar):
# reposition the checkbox
def Reposition(self):
- rect = self.GetFieldRect(1)
- rect.x += 1
- rect.y += 1
- self.cb.SetRect(rect)
+ # sw0 = self.GetStatusWidth(0)
+ sw1 = self.GetStatusWidth(1)
+ sw2 = self.GetStatusWidth(2)
+ sz = self.GetSize()
+ self.cb.SetPosition((sz[0] - sw2 - sw1 - 25, 4))
self.sizeChanged = False
-
class TestCustomStatusBar(wx.Frame):
def __init__(self, parent, log):
wx.Frame.__init__(self, parent, -1, 'Test Custom StatusBar')
@@ -124,7 +128,7 @@ overview = """\
A status bar is a narrow window that can be placed along the bottom of
a frame to give small amounts of status information. It can contain
one or more fields, one or more of which can be variable length
-according to the size of the window.
+according to the size of the window.
This example demonstrates how to create a custom status bar with actual
gadgets embedded in it. In this case, the first field is just plain text,
diff --git a/demo/StyledTextCtrl_1.py b/demo/StyledTextCtrl_1.py
index c0c19a59..ef27532b 100644
--- a/demo/StyledTextCtrl_1.py
+++ b/demo/StyledTextCtrl_1.py
@@ -1,13 +1,13 @@
-#
+#
# 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 wx
+import wx.stc as stc
-import images
+import images
#----------------------------------------------------------------------
@@ -174,7 +174,7 @@ def runTest(frame, nb, log):
#ed.StyleClearAll()
#ed.SetScrollWidth(800)
#ed.SetWrapMode(True)
- #ed.SetUseAntiAliasing(False)
+ #ed.SetUseAntiAliasing(False)
#ed.SetViewEOL(True)
#ed.CmdKeyClear(stc.STC_KEY_BACK,
@@ -185,19 +185,19 @@ def runTest(frame, nb, log):
ed.SetText(demoText)
- if wx.USE_UNICODE:
- import codecs
- decode = codecs.lookup("utf-8")[1]
+ # 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')
- ed.AddText('\tRussian: ')
- ed.AddText(unitext)
- ed.GotoPos(0)
+ 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')
+ 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!'
@@ -207,7 +207,7 @@ def runTest(frame, nb, log):
# #text = text.encode('big5')
# ed.GotoPos(ed.GetLength())
# ed.AddText('\n\n' + text)
-
+
ed.EmptyUndoBuffer()
# make some styles
@@ -217,8 +217,7 @@ def runTest(frame, nb, log):
ed.StyleSetSpec(2, "face:%s,italic,fore:#FF0000,size:%d" % (face2, pb))
ed.StyleSetSpec(3, "face:%s,bold,size:%d" % (face2, pb))
ed.StyleSetSpec(4, "face:%s,size:%d" % (face1, pb-1))
- ed.StyleSetSpec(5, "back:#FFF0F0")
-
+
# Now set some text to those styles... Normally this would be
# done in an event handler that happens when text needs displayed.
ed.StartStyling(98, 0xff)
@@ -253,7 +252,7 @@ def runTest(frame, nb, log):
ed.MarkerAdd(20, 0)
- # and an indicator or two
+ # and finally, an indicator or two
ed.IndicatorSetStyle(0, stc.STC_INDIC_SQUIGGLE)
ed.IndicatorSetForeground(0, wx.RED)
ed.IndicatorSetStyle(1, stc.STC_INDIC_DIAGONAL)
@@ -266,34 +265,30 @@ def runTest(frame, nb, log):
ed.SetStyling(8, stc.STC_INDIC1_MASK)
ed.SetStyling(10, stc.STC_INDIC2_MASK | stc.STC_INDIC1_MASK)
- # add some annotations
- ed.AnnotationSetText(23, "\nThis is an annotaion, it is not part of \nthe document's text.\n")
- ed.AnnotationSetVisible(stc.STC_ANNOTATION_BOXED)
- ed.AnnotationSetStyle(23, 5) # line number, style number
# some test stuff...
if debug:
- print "GetTextLength(): ", ed.GetTextLength(), len(ed.GetText())
- print "GetText(): ", repr(ed.GetText())
- print
- print "GetStyledText(98, 104): ", repr(ed.GetStyledText(98, 104)), len(ed.GetStyledText(98, 104))
- print
- print "GetCurLine(): ", repr(ed.GetCurLine())
+ print("GetTextLength(): ", ed.GetTextLength(), len(ed.GetText()))
+ print("GetText(): ", repr(ed.GetText()))
+ print()
+ print("GetStyledText(98, 104): ", repr(ed.GetStyledText(98, 104)), len(ed.GetStyledText(98, 104)))
+ print()
+ print("GetCurLine(): ", repr(ed.GetCurLine()))
ed.GotoPos(5)
- print "GetCurLine(): ", repr(ed.GetCurLine())
- print
- print "GetLine(1): ", repr(ed.GetLine(1))
- print
+ print("GetCurLine(): ", repr(ed.GetCurLine()))
+ print()
+ print("GetLine(1): ", repr(ed.GetLine(1)))
+ print()
ed.SetSelection(25, 35)
- print "GetSelectedText(): ", repr(ed.GetSelectedText())
- print "GetTextRange(25, 35): ", repr(ed.GetTextRange(25, 35))
- print "FindText(0, max, 'indicators'): ",
- print ed.FindText(0, ed.GetTextLength(), "indicators")
- if wx.USE_UNICODE:
- end = ed.GetLength()
- start = ed.PositionFromLine(uniline)
- print "GetTextRange(%d, %d): " % (start, end),
- print repr(ed.GetTextRange(start, end))
+ print("GetSelectedText(): ", repr(ed.GetSelectedText()))
+ print("GetTextRange(25, 35): ", repr(ed.GetTextRange(25, 35)))
+ print("FindText(0, max, 'indicators'): ",)
+ print(ed.FindText(0, ed.GetTextLength(), "indicators")
+ # if wx.USE_UNICODE:
+ end = ed.GetLength()
+ start = ed.PositionFromLine(uniline)
+ print("GetTextRange(%d, %d): " % (start, end),)
+ print(repr(ed.GetTextRange(start, end)))
wx.CallAfter(ed.GotoPos, 0)
diff --git a/demo/StyledTextCtrl_2.py b/demo/StyledTextCtrl_2.py
index 7926e07c..1bf3bac6 100644
--- a/demo/StyledTextCtrl_2.py
+++ b/demo/StyledTextCtrl_2.py
@@ -49,7 +49,7 @@ else:
class PythonSTC(stc.StyledTextCtrl):
fold_symbols = 2
-
+
def __init__(self, parent, ID,
pos=wx.DefaultPosition, size=wx.DefaultSize,
style=0):
@@ -70,7 +70,7 @@ class PythonSTC(stc.StyledTextCtrl):
#self.SetViewEOL(True)
#self.SetEOLMode(stc.STC_EOL_CRLF)
#self.SetUseAntiAliasing(True)
-
+
self.SetEdgeMode(stc.STC_EDGE_BACKGROUND)
self.SetEdgeColumn(78)
@@ -90,7 +90,7 @@ class PythonSTC(stc.StyledTextCtrl):
self.MarkerDefine(stc.STC_MARKNUM_FOLDEREND, stc.STC_MARK_EMPTY, "white", "black")
self.MarkerDefine(stc.STC_MARKNUM_FOLDEROPENMID, stc.STC_MARK_EMPTY, "white", "black")
self.MarkerDefine(stc.STC_MARKNUM_FOLDERMIDTAIL, stc.STC_MARK_EMPTY, "white", "black")
-
+
elif self.fold_symbols == 1:
# Plus for contracted folders, minus for expanded
self.MarkerDefine(stc.STC_MARKNUM_FOLDEROPEN, stc.STC_MARK_MINUS, "white", "black")
@@ -142,7 +142,7 @@ class PythonSTC(stc.StyledTextCtrl):
self.StyleSetSpec(stc.STC_STYLE_BRACEBAD, "fore:#000000,back:#FF0000,bold")
# Python styles
- # Default
+ # Default
self.StyleSetSpec(stc.STC_P_DEFAULT, "fore:#000000,face:%(helv)s,size:%(size)d" % faces)
# Comments
self.StyleSetSpec(stc.STC_P_COMMENTLINE, "fore:#007F00,face:%(other)s,size:%(size)d" % faces)
@@ -176,9 +176,9 @@ class PythonSTC(stc.StyledTextCtrl):
# register some images for use in the AutoComplete box.
self.RegisterImage(1, images.Smiles.GetBitmap())
- self.RegisterImage(2,
+ self.RegisterImage(2,
wx.ArtProvider.GetBitmap(wx.ART_NEW, size=(16,16)))
- self.RegisterImage(3,
+ self.RegisterImage(3,
wx.ArtProvider.GetBitmap(wx.ART_COPY, size=(16,16)))
diff --git a/demo/SystemSettings.py b/demo/SystemSettings.py
index d3861bb4..52372bfd 100644
--- a/demo/SystemSettings.py
+++ b/demo/SystemSettings.py
@@ -17,8 +17,8 @@ element sizes.
"""
__author__ = "Cody Precord "
-__svnid__ = "$Id$"
-__revision__ = "$Revision$"
+__svnid__ = "$Id: SystemSettings.py 64744 2010-06-25 21:59:08Z RD $"
+__revision__ = "$Revision: 64744 $"
#-----------------------------------------------------------------------------#
# Imports
@@ -59,9 +59,9 @@ class TestPanel(wx.Panel):
#----------------------------------------------------------------------
-class SysPanelBase(wx.PyPanel):
+class SysPanelBase(wx.Panel):
def __init__(self, parent, log):
- wx.PyPanel.__init__(self, parent)#, size=(500, 500))
+ wx.Panel.__init__(self, parent)#, size=(500, 500))
# Attributes
self.log = log
@@ -95,7 +95,7 @@ class SysPanelBase(wx.PyPanel):
dc.SetFont(self.GetFont())
dc.SetBrush(wx.WHITE_BRUSH)
dc.Clear()
- dc.DrawRectangleRect(self.GetClientRect())
+ dc.DrawRectangle(self.GetClientRect())
dc.SetPen(wx.BLACK_PEN)
dc.SetTextForeground(wx.BLACK)
@@ -158,10 +158,15 @@ class SysFontPanel(SysPanelBase):
# Attributes:
self._maxw = 0
- self._vals = ['SYS_ANSI_FIXED_FONT', 'SYS_ANSI_VAR_FONT',
- 'SYS_DEFAULT_GUI_FONT', 'SYS_DEVICE_DEFAULT_FONT',
- 'SYS_ICONTITLE_FONT', 'SYS_OEM_FIXED_FONT',
- 'SYS_SYSTEM_FIXED_FONT', 'SYS_SYSTEM_FONT']
+ self._vals = ['SYS_ANSI_FIXED_FONT',
+ 'SYS_ANSI_VAR_FONT',
+ 'SYS_DEFAULT_GUI_FONT',
+ 'SYS_DEVICE_DEFAULT_FONT',
+ # 'SYS_ICONTITLE_FONT',
+ 'SYS_OEM_FIXED_FONT',
+ # 'SYS_SYSTEM_FIXED_FONT',
+ 'SYS_SYSTEM_FONT'
+ ]
def OnPaint(self, evt):
diff --git a/demo/TablePrint.py b/demo/TablePrint.py
index 73818dda..1c9098b8 100644
--- a/demo/TablePrint.py
+++ b/demo/TablePrint.py
@@ -69,14 +69,14 @@ class TablePanel(wx.Panel):
prt.SetLandscape()
prt.SetColumnLineSize(2, 3)
- prt.SetColumnLineColour(3, wx.NamedColour('RED'))
+ prt.SetColumnLineColour(3, wx.RED)
prt.SetRowLineSize(1, 3)
- prt.SetRowLineColour(5, wx.NamedColour('RED'))
+ prt.SetRowLineColour(5, wx.RED)
prt.SetHeader("wx.Windows Applications")
prt.SetFooter()
- prt.SetFooter("Date: ", type = "Date", align=wx.ALIGN_RIGHT, indent = -1, colour = wx.NamedColour('RED'))
+ prt.SetFooter("Date: ", type = "Date", align=wx.ALIGN_RIGHT, indent = -1, colour = wx.RED)
prt.Preview()
def PreviewNarrow(self):
@@ -93,21 +93,21 @@ class TablePanel(wx.Panel):
prt.set_column = [ 1, 1, 1, 1, 2]
prt.label = new_header
prt.SetColAlignment(1, wx.ALIGN_CENTRE)
- prt.SetColBackgroundColour(0, wx.NamedColour('RED'))
- prt.SetColTextColour(0, wx.NamedColour('WHITE'))
- prt.SetCellColour(4, 0, wx.NamedColour('LIGHT BLUE'))
- prt.SetCellColour(4, 1, wx.NamedColour('LIGHT BLUE'))
- prt.SetCellColour(17, 1, wx.NamedColour('LIGHT BLUE'))
+ prt.SetColBackgroundColour(0, wx.RED)
+ prt.SetColTextColour(0, wx.WHITE)
+ prt.SetCellColour(4, 0, wx.Colour('LIGHT BLUE'))
+ prt.SetCellColour(4, 1, wx.Colour('LIGHT BLUE'))
+ prt.SetCellColour(17, 1, wx.Colour('LIGHT BLUE'))
- prt.SetColBackgroundColour(2, wx.NamedColour('LIGHT BLUE'))
- prt.SetCellText(4, 2, wx.NamedColour('RED'))
+ prt.SetColBackgroundColour(2, wx.Colour('LIGHT BLUE'))
+ prt.SetCellText(4, 2, wx.RED)
- prt.SetColTextColour(3, wx.NamedColour('RED'))
- prt.label_font_colour = wx.NamedColour('WHITE')
- prt.SetHeader("wxWindows Applications", colour = wx.NamedColour('RED'))
+ prt.SetColTextColour(3, wx.RED)
+ prt.label_font_colour = wx.WHITE
+ prt.SetHeader("wxWindows Applications", colour = wx.RED)
- prt.SetHeader("Printed: ", type = "Date & Time", align=wx.ALIGN_RIGHT, indent = -1, colour = wx.NamedColour('BLUE'))
- prt.SetFooter("Page No", colour = wx.NamedColour('RED'), type ="Num")
+ prt.SetHeader("Printed: ", type = "Date & Time", align=wx.ALIGN_RIGHT, indent = -1, colour = wx.BLUE)
+ prt.SetFooter("Page No", colour = wx.RED, type ="Num")
prt.Preview()
def OnPreviewMatrix(self):
diff --git a/demo/Ticker.py b/demo/Ticker.py
index 8eb01f78..12ad5e5e 100644
--- a/demo/Ticker.py
+++ b/demo/Ticker.py
@@ -1,5 +1,5 @@
-import wx
+import wx
from wx.lib.ticker import Ticker
import wx.lib.colourselect as csel #for easy color selection
@@ -9,9 +9,9 @@ class TestPanel(wx.Panel):
def __init__(self, parent, log):
self.log = log
wx.Panel.__init__(self, parent, -1)
-
+
self.ticker = Ticker(self)
-
+
# Controls for ...controlling... the ticker.
self.txt = wx.TextCtrl(self, value="I am a scrolling ticker!!!!", size=(200,-1))
wx.CallAfter(self.txt.SetInsertionPoint, 0)
@@ -33,37 +33,37 @@ class TestPanel(wx.Panel):
ppf = wx.Slider(self, value=self.ticker.GetPPF(), minValue=1, maxValue=10,
size=(150,-1),
style=wx.SL_HORIZONTAL|wx.SL_AUTOTICKS|wx.SL_LABELS)
-
+
# Do layout
sz = wx.FlexGridSizer(cols=2, hgap=4, vgap=4)
-
+
sz.Add(txtl, flag=wx.ALIGN_CENTER_VERTICAL)
sz.Add(self.txt, flag=wx.ALIGN_CENTER_VERTICAL)
-
+
sz.Add(fgl, flag=wx.ALIGN_CENTER_VERTICAL)
sz.Add(fgb, flag=wx.ALIGN_CENTER_VERTICAL)
-
+
sz.Add(bgl, flag=wx.ALIGN_CENTER_VERTICAL)
sz.Add(bgb, flag=wx.ALIGN_CENTER_VERTICAL)
-
+
sz.Add(self.fontl, flag=wx.ALIGN_CENTER_VERTICAL)
sz.Add(fontb, flag=wx.ALIGN_CENTER_VERTICAL)
-
+
sz.Add(self.dirl, flag=wx.ALIGN_CENTER_VERTICAL)
sz.Add(dirb, flag=wx.ALIGN_CENTER_VERTICAL)
-
+
sz.Add(fpsl, flag=wx.ALIGN_CENTER_VERTICAL)
sz.Add(fps, flag=wx.ALIGN_CENTER_VERTICAL|wx.ALIGN_LEFT)
-
+
sz.Add(ppfl, flag=wx.ALIGN_CENTER_VERTICAL)
sz.Add(ppf, flag=wx.ALIGN_CENTER_VERTICAL|wx.ALIGN_LEFT)
-
+
sz2 = wx.BoxSizer(wx.VERTICAL)
sz2.Add(self.ticker, flag=wx.EXPAND|wx.ALL, border=5)
sz2.Add(sz, flag=wx.EXPAND|wx.ALL, proportion=1, border=25)
self.SetSizer(sz2)
sz2.SetSizeHints(self)
-
+
# Bind events
self.Bind(wx.EVT_BUTTON, self.OnChangeTickDirection, dirb)
self.Bind(wx.EVT_BUTTON, self.OnChangeTickFont, fontb)
@@ -72,20 +72,19 @@ class TestPanel(wx.Panel):
self.Bind(csel.EVT_COLOURSELECT, self.ChangeTickBGColor, bgb)
self.Bind(wx.EVT_SCROLL, self.ChangeFPS, fps)
self.Bind(wx.EVT_SCROLL, self.ChangePPF, ppf)
-
+
# Set defaults
self.SetTickDirection("rtl")
self.SetTickFont(self.ticker.GetFont())
self.ticker.SetText(self.txt.GetValue())
-
+
def SetTickFont(self, font):
"""Sets ticker font, updates label"""
self.ticker.SetFont(font)
self.fontl.SetLabel("Font: %s"%(self.ticker.GetFont().GetFaceName()))
self.Layout()
-
-
+
def OnChangeTickFont(self, evt):
fd = wx.FontData()
fd.EnableEffects(False)
@@ -94,42 +93,38 @@ class TestPanel(wx.Panel):
if dlg.ShowModal() == wx.ID_OK:
data = dlg.GetFontData()
self.SetTickFont(data.GetChosenFont())
-
-
+
def SetTickDirection(self, dir):
"""Sets tick direction, updates label"""
self.ticker.SetDirection(dir)
self.dirl.SetLabel("Direction: %s"%(self.ticker.GetDirection()))
-
-
+
def OnChangeTickDirection(self, dir):
if self.ticker.GetDirection() == "rtl":
self.SetTickDirection("ltr")
else:
self.SetTickDirection("rtl")
-
-
+
def OnText(self, evt):
"""Live update of the ticker text"""
self.ticker.SetText(self.txt.GetValue())
-
+
def ChangeTickFGColor(self, evt):
self.ticker.SetForegroundColour(evt.GetValue())
-
+
def ChangeTickBGColor(self, evt):
self.ticker.SetBackgroundColour(evt.GetValue())
-
+
def ChangeFPS(self, evt):
self.ticker.SetFPS(evt.GetPosition())
-
+
def ChangePPF(self, evt):
self.ticker.SetPPF(evt.GetPosition())
-
def ShutdownDemo(self):
self.ticker.Stop()
-
+
#----------------------------------------------------------------------
def runTest(frame, nb, log):
diff --git a/demo/TimeCtrl.py b/demo/TimeCtrl.py
index a94bd24d..6574c68f 100644
--- a/demo/TimeCtrl.py
+++ b/demo/TimeCtrl.py
@@ -5,8 +5,8 @@
#
import wx
-import wx.lib.scrolledpanel as scrolled
-import wx.lib.masked as masked
+import wx.lib.scrolledpanel as scrolled
+import wx.lib.masked as masked
#----------------------------------------------------------------------
@@ -18,7 +18,7 @@ class TestPanel( scrolled.ScrolledPanel ):
box_label = wx.StaticBox( self, -1, "Change Controls through API" )
buttonbox = wx.StaticBoxSizer( box_label, wx.HORIZONTAL )
-
+
text1 = wx.StaticText( self, -1, "12-hour format:")
self.time12 = masked.TimeCtrl( self, -1, name="12 hour control" )
h = self.time12.GetSize().height
@@ -73,7 +73,7 @@ class TestPanel( scrolled.ScrolledPanel ):
radio_vbox.Add( self.radio24to12, 0, wx.ALIGN_CENTER_VERTICAL|wx.ALL, 5 )
radio_vbox.Add( self.radioWx, 0, wx.ALIGN_CENTER_VERTICAL|wx.ALL, 5 )
radio_vbox.Add( self.radioMx, 0, wx.ALIGN_CENTER_VERTICAL|wx.ALL, 5 )
-
+
buttonbox.Add( buttonChange, 0, wx.ALIGN_CENTRE|wx.ALL, 5 )
buttonbox.Add( radio_vbox, 0, wx.ALIGN_CENTRE|wx.ALL, 5 )
@@ -168,7 +168,7 @@ class TestPanel( scrolled.ScrolledPanel ):
self.time12.SetValue( self.time24.GetValue() )
elif self.radioWx.GetValue():
- now = wx.DateTime_Now()
+ now = wx.DateTime.Now()
self.time12.SetValue( now )
# (demonstrates that G/SetValue returns/takes a wx.DateTime)
self.time24.SetValue( self.time12.GetValue(as_wxDateTime=True) )
diff --git a/demo/ToolBar.py b/demo/ToolBar.py
index 28f38905..bfe5b361 100644
--- a/demo/ToolBar.py
+++ b/demo/ToolBar.py
@@ -14,7 +14,7 @@ TBFLAGS = ( wx.TB_HORIZONTAL
class TestSearchCtrl(wx.SearchCtrl):
maxSearches = 5
-
+
def __init__(self, parent, id=-1, value="",
pos=wx.DefaultPosition, size=wx.DefaultSize, style=0,
doSearch=None):
@@ -31,13 +31,13 @@ class TestSearchCtrl(wx.SearchCtrl):
self.searches.append(text)
if len(self.searches) > self.maxSearches:
del self.searches[0]
- self.SetMenu(self.MakeMenu())
+ self.SetMenu(self.MakeMenu())
self.SetValue("")
def OnMenuItem(self, evt):
text = self.searches[evt.GetId()-1]
self.doSearch(text)
-
+
def MakeMenu(self):
menu = wx.Menu()
item = menu.Append(-1, "Recent Searches")
@@ -45,7 +45,6 @@ class TestSearchCtrl(wx.SearchCtrl):
for idx, txt in enumerate(self.searches):
menu.Append(1+idx, txt)
return menu
-
class TestToolBar(wx.Frame):
@@ -56,7 +55,7 @@ class TestToolBar(wx.Frame):
self.Bind(wx.EVT_CLOSE, self.OnCloseWindow)
client = wx.Panel(self)
- client.SetBackgroundColour(wx.NamedColour("WHITE"))
+ client.SetBackgroundColour(wx.WHITE)
if FRAMETB:
# Use the wxFrame internals to create the toolbar and
@@ -79,7 +78,6 @@ class TestToolBar(wx.Frame):
sizer = wx.BoxSizer(wx.VERTICAL)
sizer.Add(tb, 0, wx.EXPAND)
client.SetSizer(sizer)
-
log.write("Default toolbar tool size: %s\n" % tb.GetToolBitmapSize())
@@ -92,31 +90,31 @@ class TestToolBar(wx.Frame):
paste_bmp= wx.ArtProvider.GetBitmap(wx.ART_PASTE, wx.ART_TOOLBAR, tsize)
tb.SetToolBitmapSize(tsize)
-
- #tb.AddSimpleTool(10, new_bmp, "New", "Long help for 'New'")
- tb.AddLabelTool(10, "New", new_bmp, shortHelp="New", longHelp="Long help for 'New'")
+
+ #tb.AddTool(10, new_bmp, "New", "Long help for 'New'")
+ tb.AddTool(10, "New", new_bmp, wx.NullBitmap, wx.ITEM_NORMAL, "New", "Long help for 'New'", None)
self.Bind(wx.EVT_TOOL, self.OnToolClick, id=10)
self.Bind(wx.EVT_TOOL_RCLICKED, self.OnToolRClick, id=10)
- #tb.AddSimpleTool(20, open_bmp, "Open", "Long help for 'Open'")
- tb.AddLabelTool(20, "Open", open_bmp, shortHelp="Open", longHelp="Long help for 'Open'")
+ #tb.AddTool(20, open_bmp, "Open", "Long help for 'Open'")
+ tb.AddTool(20, "Open", open_bmp, wx.NullBitmap, wx.ITEM_NORMAL, "Open", "Long help for 'Open'", None)
self.Bind(wx.EVT_TOOL, self.OnToolClick, id=20)
self.Bind(wx.EVT_TOOL_RCLICKED, self.OnToolRClick, id=20)
tb.AddSeparator()
- tb.AddSimpleTool(30, copy_bmp, "Copy", "Long help for 'Copy'")
+ tb.AddTool(30, "Copy", copy_bmp, wx.NullBitmap, wx.ITEM_NORMAL, "Copy", "Long help for 'Copy'", None)
self.Bind(wx.EVT_TOOL, self.OnToolClick, id=30)
self.Bind(wx.EVT_TOOL_RCLICKED, self.OnToolRClick, id=30)
- tb.AddSimpleTool(40, paste_bmp, "Paste", "Long help for 'Paste'")
+ tb.AddTool(40, "Paste", paste_bmp, wx.NullBitmap, wx.ITEM_NORMAL, "Paste", "Long help for 'Paste'", None)
self.Bind(wx.EVT_TOOL, self.OnToolClick, id=40)
self.Bind(wx.EVT_TOOL_RCLICKED, self.OnToolRClick, id=40)
tb.AddSeparator()
#tool = tb.AddCheckTool(50, images.Tog1.GetBitmap(), shortHelp="Toggle this")
- tool = tb.AddCheckLabelTool(50, "Checkable", images.Tog1.GetBitmap(),
- shortHelp="Toggle this")
+ tool = tb.AddTool(50, "Checkable", images.Tog1.GetBitmap(),
+ shortHelp="Toggle this", kind=wx.ITEM_CHECK)
self.Bind(wx.EVT_TOOL, self.OnToolClick, id=50)
self.Bind(wx.EVT_TOOL_ENTER, self.OnToolEnter)
@@ -147,7 +145,6 @@ class TestToolBar(wx.Frame):
self.log.WriteText("DoSearch: %s\n" % text)
# return true to tell the search ctrl to remember the text
return True
-
def OnToolClick(self, event):
self.log.WriteText("tool %s clicked\n" % event.GetId())
@@ -173,13 +170,11 @@ class TestToolBar(wx.Frame):
self.timer.Start(2000)
event.Skip()
-
def OnClearSB(self, event): # called for the timer event handler
self.SetStatusText("")
self.timer.Stop()
self.timer = None
-
def OnCloseWindow(self, event):
if self.timer is not None:
self.timer.Stop()
@@ -227,7 +222,7 @@ must be called to render it.
wx.Toolbar events are also propogated as Menu events; this is especially handy when
you have a menu bar that contains items that carry out the same function. For example,
-it is not uncommon to have a little 'floppy' toolbar icon to 'save' the current file
+it is not uncommon to have a little 'floppy' toolbar icon to 'save' the current file
(whatever it is) as well as a FILE/SAVE menu item that does the same thing. In this
case, both events can be captured and acted upon using the same event handler
with no ill effects.
@@ -235,7 +230,7 @@ with no ill effects.
If there are cases where a toolbar icon should *not* be associated with a menu item,
use a unique ID to trap it.
-There are a number of ways to create a toolbar for a wx.Frame. wx.Frame.CreateToolBar()
+There are a number of ways to create a toolbar for a wx.Frame. wx.Frame.CreateToolBar()
does all the work except it adds no buttons at all unless you override the virtual method
OnCreateToolBar(). On the other hand, you can just subclass wx.ToolBar and then use
wx.Frame.SetToolBar() instead.
diff --git a/demo/TreeCtrl.py b/demo/TreeCtrl.py
index b00d22de..528ca905 100644
--- a/demo/TreeCtrl.py
+++ b/demo/TreeCtrl.py
@@ -38,9 +38,9 @@ class TestTreeCtrlPanel(wx.Panel):
isz = (16,16)
il = wx.ImageList(isz[0], isz[1])
- fldridx = il.Add(wx.ArtProvider_GetBitmap(wx.ART_FOLDER, wx.ART_OTHER, isz))
- fldropenidx = il.Add(wx.ArtProvider_GetBitmap(wx.ART_FOLDER_OPEN, wx.ART_OTHER, isz))
- fileidx = il.Add(wx.ArtProvider_GetBitmap(wx.ART_NORMAL_FILE, wx.ART_OTHER, isz))
+ fldridx = il.Add(wx.ArtProvider.GetBitmap(wx.ART_FOLDER, wx.ART_OTHER, isz))
+ fldropenidx = il.Add(wx.ArtProvider.GetBitmap(wx.ART_FOLDER_OPEN, wx.ART_OTHER, isz))
+ fileidx = il.Add(wx.ArtProvider.GetBitmap(wx.ART_NORMAL_FILE, wx.ART_OTHER, isz))
smileidx = il.Add(images.Smiles.GetBitmap())
self.tree.SetImageList(il)
@@ -52,26 +52,26 @@ class TestTreeCtrlPanel(wx.Panel):
# the item data.
self.root = self.tree.AddRoot("The Root Item")
- self.tree.SetPyData(self.root, None)
+ self.tree.SetItemData(self.root, None)
self.tree.SetItemImage(self.root, fldridx, wx.TreeItemIcon_Normal)
self.tree.SetItemImage(self.root, fldropenidx, wx.TreeItemIcon_Expanded)
for x in range(15):
child = self.tree.AppendItem(self.root, "Item %d" % x)
- self.tree.SetPyData(child, None)
+ self.tree.SetItemData(child, None)
self.tree.SetItemImage(child, fldridx, wx.TreeItemIcon_Normal)
self.tree.SetItemImage(child, fldropenidx, wx.TreeItemIcon_Expanded)
for y in range(5):
last = self.tree.AppendItem(child, "item %d-%s" % (x, chr(ord("a")+y)))
- self.tree.SetPyData(last, None)
+ self.tree.SetItemData(last, None)
self.tree.SetItemImage(last, fldridx, wx.TreeItemIcon_Normal)
self.tree.SetItemImage(last, fldropenidx, wx.TreeItemIcon_Expanded)
for z in range(5):
item = self.tree.AppendItem(last, "item %d-%s-%d" % (x, chr(ord("a")+y), z))
- self.tree.SetPyData(item, None)
+ self.tree.SetItemData(item, None)
self.tree.SetItemImage(item, fileidx, wx.TreeItemIcon_Normal)
self.tree.SetItemImage(item, smileidx, wx.TreeItemIcon_Selected)
@@ -87,7 +87,6 @@ class TestTreeCtrlPanel(wx.Panel):
self.tree.Bind(wx.EVT_RIGHT_DOWN, self.OnRightDown)
self.tree.Bind(wx.EVT_RIGHT_UP, self.OnRightUp)
-
def OnRightDown(self, event):
pt = event.GetPosition();
item, flags = self.tree.HitTest(pt)
@@ -96,17 +95,14 @@ class TestTreeCtrlPanel(wx.Panel):
(self.tree.GetItemText(item), type(item), item.__class__))
self.tree.SelectItem(item)
-
def OnRightUp(self, event):
pt = event.GetPosition();
item, flags = self.tree.HitTest(pt)
- if item:
+ if item:
self.log.WriteText("OnRightUp: %s (manually starting label edit)\n"
% self.tree.GetItemText(item))
self.tree.EditLabel(item)
-
-
def OnBeginEdit(self, event):
self.log.WriteText("OnBeginEdit\n")
# show how to prevent edit...
@@ -128,7 +124,6 @@ class TestTreeCtrlPanel(wx.Panel):
event.Veto()
-
def OnEndEdit(self, event):
self.log.WriteText("OnEndEdit: %s %s\n" %
(event.IsEditCancelled(), event.GetLabel()) )
@@ -139,7 +134,6 @@ class TestTreeCtrlPanel(wx.Panel):
event.Veto()
return
-
def OnLeftDClick(self, event):
pt = event.GetPosition();
item, flags = self.tree.HitTest(pt)
@@ -150,11 +144,9 @@ class TestTreeCtrlPanel(wx.Panel):
self.tree.SortChildren(parent)
event.Skip()
-
def OnSize(self, event):
- w,h = self.GetClientSizeTuple()
- self.tree.SetDimensions(0, 0, w, h)
-
+ w,h = self.GetClientSize()
+ self.tree.SetSize(0, 0, w, h)
def OnItemExpanded(self, event):
item = event.GetItem()
@@ -177,7 +169,6 @@ class TestTreeCtrlPanel(wx.Panel):
#print map(self.tree.GetItemText, items)
event.Skip()
-
def OnActivate(self, event):
if self.item:
self.log.WriteText("OnActivate: %s\n" % self.tree.GetItemText(self.item))
@@ -192,18 +183,14 @@ def runTest(frame, nb, log):
#---------------------------------------------------------------------------
-
-
-
overview = """\
-A TreeCtrl presents information as a hierarchy, with items that may be
-expanded to show further items. Items in a tree control are referenced by
+A TreeCtrl presents information as a hierarchy, with items that may be
+expanded to show further items. Items in a tree control are referenced by
wx.TreeItemId handles.
"""
-
if __name__ == '__main__':
import sys,os
import run
diff --git a/demo/UIActionSimulator.py b/demo/UIActionSimulator.py
index 55987977..a1513a71 100644
--- a/demo/UIActionSimulator.py
+++ b/demo/UIActionSimulator.py
@@ -24,13 +24,13 @@ class TestPanel(wx.Panel):
self.recordBtn = buttons.GenToggleButton(self, -1, "Record")
self.Bind(wx.EVT_BUTTON, self.OnToggleRecordKeys, self.recordBtn)
- self.recordBtn.SetToolTipString(
+ self.recordBtn.SetToolTip(
"Click this button and then type some keys in the\n"
"textctrl. Click here again when done.")
self.playbackKeysBtn = buttons.GenButton(self, -1, "Playback")
self.Bind(wx.EVT_BUTTON, self.OnPlaybackKeys, self.playbackKeysBtn)
- self.playbackKeysBtn.SetToolTipString(
+ self.playbackKeysBtn.SetToolTip(
"Record some key events and then click here to\n"
"replay the recorded events.")
self.playbackKeysBtn.Disable()
@@ -98,7 +98,7 @@ class TestPanel(wx.Panel):
return
evtInfo = ( evtType,
evt.KeyCode,
- evt.Modifiers,
+ evt.GetModifiers(),
self.stopwatchKeys.Time(),
)
self.keyEvents.append(evtInfo)
diff --git a/demo/URLDragAndDrop.py b/demo/URLDragAndDrop.py
index 68795f66..1065b0f0 100644
--- a/demo/URLDragAndDrop.py
+++ b/demo/URLDragAndDrop.py
@@ -3,9 +3,9 @@ import wx
#----------------------------------------------------------------------
-class MyURLDropTarget(wx.PyDropTarget):
+class MyURLDropTarget(wx.DropTarget):
def __init__(self, window):
- wx.PyDropTarget.__init__(self)
+ wx.DropTarget.__init__(self)
self.window = window
self.data = wx.URLDataObject();
@@ -94,7 +94,6 @@ class TestPanel(wx.Panel):
dropSource.SetData(data)
result = dropSource.DoDragDrop()
-
def OnStartDrag2(self, evt):
if evt.Dragging():
url = self.dragText2.GetValue()
diff --git a/demo/Unicode.py b/demo/Unicode.py
index aa7373d5..42639501 100644
--- a/demo/Unicode.py
+++ b/demo/Unicode.py
@@ -47,34 +47,26 @@ class TestPanel(wx.Panel):
box = wx.BoxSizer(wx.VERTICAL)
- if not wx.USE_UNICODE:
- self.AddLine(box)
- self.AddText(box, "Sorry, this wxPython was not built with Unicode support.",
- font = wx.Font(12, wx.SWISS, wx.NORMAL, wx.BOLD))
- self.AddLine(box)
+ font = self.GetFont()
+ font.SetPointSize(14)
+ font.SetWeight(wx.BOLD)
- else:
- font = self.GetFont()
- font.SetPointSize(14)
- font.SetWeight(wx.BOLD)
-
- self.AddLine(box)
- self.AddText(box, chi_uni[0], chi_uni[1], 'Chinese:', font)
- self.AddLine(box)
+ self.AddLine(box)
+ self.AddText(box, chi_uni[0], chi_uni[1], 'Chinese:', font)
+ self.AddLine(box)
- self.AddText(box, lt1_uni[0], lt1_uni[1], 'Lithuanian:', font)
- self.AddLine(box)
- self.AddText(box, lt2_uni[0], lt2_uni[1], 'Lithuanian:', font)
- self.AddLine(box)
+ self.AddText(box, lt1_uni[0], lt1_uni[1], 'Lithuanian:', font)
+ self.AddLine(box)
+ self.AddText(box, lt2_uni[0], lt2_uni[1], 'Lithuanian:', font)
+ self.AddLine(box)
- self.AddText(box, kor_uni[0], kor_uni[1], 'Korean:', font)
- self.AddLine(box)
-
- self.AddText(box, bul_uni[0], bul_uni[1], 'Bulgarian:', font)
- self.AddLine(box)
- self.AddText(box, rus_uni[0], rus_uni[1], 'Russian:', font)
- self.AddLine(box)
+ self.AddText(box, kor_uni[0], kor_uni[1], 'Korean:', font)
+ self.AddLine(box)
+ self.AddText(box, bul_uni[0], bul_uni[1], 'Bulgarian:', font)
+ self.AddLine(box)
+ self.AddText(box, rus_uni[0], rus_uni[1], 'Russian:', font)
+ self.AddLine(box)
border = wx.BoxSizer(wx.VERTICAL)
border.Add(box, 1, wx.EXPAND|wx.ALL, 10)
@@ -123,15 +115,15 @@ This demo shows how Unicode can be used to support text in many different
languages using one locale when Unicode is enabled.
So what is the difference between the ANSI and Unicode builds?
-
-If ANSI is used, Python strings (bytes) are always used, and you can only
+
+
If ANSI is used, Python strings (bytes) are always used, and you can only
display strings that use either the ASCII encoding, or the system's default
-encoding. Any attempt to display other strings will result in garbled
+encoding. Any attempt to display other strings will result in garbled
characters.
When unicode is enabled, then all functions and methods in wxPython
-that return a wxString will return an Python unicode object, and parameters
-that expect a wxString can accept either a Python string or unicode object. (NOTE: If you aren't familiar with the difference between Python
+that return a wxString will return an Python unicode object, and parameters
+that expect a wxString can accept either a Python string or unicode object. (NOTE: If you aren't familiar with the difference between Python
strings and Unicode objects, you should view this Python Unicode Object introduction.)
If a string object is passed then it will be decoded into unicode using the
converter pointed to by wxConvCurrent, which will use the default
diff --git a/demo/Validator.py b/demo/Validator.py
index 9faf3f72..c4103fdd 100644
--- a/demo/Validator.py
+++ b/demo/Validator.py
@@ -7,19 +7,20 @@ import wx
ALPHA_ONLY = 1
DIGIT_ONLY = 2
-class MyValidator(wx.PyValidator):
+class MyValidator(wx.Validator):
def __init__(self, flag=None, pyVar=None):
- wx.PyValidator.__init__(self)
+ wx.Validator.__init__(self)
self.flag = flag
self.Bind(wx.EVT_CHAR, self.OnChar)
+
def Clone(self):
return MyValidator(self.flag)
def Validate(self, win):
tc = self.GetWindow()
val = tc.GetValue()
-
+
if self.flag == ALPHA_ONLY:
for x in val:
if x not in string.letters:
@@ -32,7 +33,6 @@ class MyValidator(wx.PyValidator):
return True
-
def OnChar(self, event):
key = event.GetKeyCode()
@@ -48,7 +48,7 @@ class MyValidator(wx.PyValidator):
event.Skip()
return
- if not wx.Validator_IsSilent():
+ if not wx.Validator.IsSilent():
wx.Bell()
# Returning without calling even.Skip eats the event before it
@@ -102,15 +102,14 @@ class TestValidatorPanel(wx.Panel):
#----------------------------------------------------------------------
-class TextObjectValidator(wx.PyValidator):
+class TextObjectValidator(wx.Validator):
""" This validator is used to ensure that the user has entered something
into the text object editor dialog's text field.
"""
def __init__(self):
""" Standard constructor.
"""
- wx.PyValidator.__init__(self)
-
+ wx.Validator.__init__(self)
def Clone(self):
@@ -120,7 +119,6 @@ class TextObjectValidator(wx.PyValidator):
"""
return TextObjectValidator()
-
def Validate(self, win):
""" Validate the contents of the given text control.
"""
@@ -135,11 +133,10 @@ class TextObjectValidator(wx.PyValidator):
return False
else:
textCtrl.SetBackgroundColour(
- wx.SystemSettings_GetColour(wx.SYS_COLOUR_WINDOW))
+ wx.SystemSettings.GetColour(wx.SYS_COLOUR_WINDOW))
textCtrl.Refresh()
return True
-
def TransferToWindow(self):
""" Transfer data from validator to window.
@@ -148,7 +145,6 @@ class TextObjectValidator(wx.PyValidator):
"""
return True # Prevent wxDialog from complaining.
-
def TransferFromWindow(self):
""" Transfer data from window to validator.
@@ -216,7 +212,7 @@ def runTest(frame, nb, log):
overview = """\
-wx.Validator is the base class for a family of validator classes that mediate
+wx.Validator is the base class for a family of validator classes that mediate
between a class of control, and application data.
A validator has three major roles:
diff --git a/demo/WIPzChecklistPhoenixDemo.txt b/demo/WIPzChecklistPhoenixDemo.txt
new file mode 100644
index 00000000..12d26e65
--- /dev/null
+++ b/demo/WIPzChecklistPhoenixDemo.txt
@@ -0,0 +1,779 @@
+__ __ _____ _____
+\ \ / /|_ _|| __ \
+ \ \ /\ / / | | | |__) | ____
+ \ \/ \/ / | | | ___/ |_ /
+ \ /\ / _| |_ | | / /
+ \/ \/ |_____||_| /___|
+WIPz Phoenix Demos Checklist
+"""
+[X] Demo Works! Woot :)
+[ ] Demo Still NEEDS work, has missing libs, other. :(
+"""
+When all done, this checklist.txt can be discarded.
+
+Frames and Dialogs Demos
+========================
+[ ] AUI_DockingWindowMgr
+[ ] AUI_MDI
+[X] Dialog
+[X] Frame
+[X] MDIWindows
+[X] MiniFrame
+[X] Wizard
+
+Common Dialogs Demos
+====================
+[X] AboutBox
+[X] ColourDialog
+[X] DirDialog
+[X] FileDialog
+[X] FindReplaceDialog
+[X] FontDialog
+[X] MessageDialog
+[X] MultiChoiceDialog
+[X] PageSetupDialog
+[X] PrintDialog
+[X] ProgressDialog
+[X] SingleChoiceDialog
+[X] TextEntryDialog
+
+More Dialogs Demos
+==================
+[X] ImageBrowser
+ TODO
+ C:\Python27\lib\site-packages\wx-2.9.5-phoenix\wx\lib\imagebrowser.py:144: wxPyD
+ eprecationWarning: Call to deprecated item BitmapFromBuffer. Use :meth:`Bitmap.F
+ romBuffer` or :meth:`Bitmap.FromBufferAndAlpha` instead.
+ return wx.BitmapFromBuffer(size, size, data)
+[X] ScrolledMessageDialog
+
+Core Windows/Controls Demos
+===========================
+[X] BitmapButton
+[X] Button
+[X] CheckBox
+[X] CheckListBox
+[X] Choice
+[X] ComboBox
+[X] CommandLinkButton
+[ ] DVC_CustomRenderer
+ TODO
+ TypeError: invalid result type from MyCustomRenderer.Render()
+[ ] DVC_DataViewModel
+[X] DVC_IndexListModel
+[X] DVC_ListCtrl
+[X] DVC_TreeCtrl
+[X] Gauge
+[ ] Grid
+[ ] Grid_MegaExample
+[ ] GridLabelRenderer
+[X] ListBox
+[X] ListCtrl
+[X] ListCtrl_virtual
+[X] ListCtrl_edit
+ TODO
+ Traceback (most recent call last):
+ File "C:\Python27\lib\site-packages\wx-2.9.5-phoenix\wx\lib\mixins\listctrl.py
+ ", line 561, in OnLeftDown
+ self.OpenEditor(col, row)
+ File "C:\Python27\lib\site-packages\wx-2.9.5-phoenix\wx\lib\mixins\listctrl.py
+ ", line 572, in OpenEditor
+ evt.m_item.SetId(item.GetId())
+ AttributeError: 'ListEvent' object has no attribute 'm_item'
+[X] Menu
+[X] PopupMenu
+[X] PopupWindow
+[X] RadioBox
+[X] RadioButton
+[X] SashWindow
+[X] ScrolledWindow
+[X] SearchCtrl
+[X] Slider
+[X] SpinButton
+[X] SpinCtrl
+[X] SpinCtrlDouble
+[X] SplitterWindow
+[X] StaticBitmap
+[X] StaticBox
+[X] StaticText
+[ ] StatusBar
+[X] StockButtons
+[X] TextCtrl
+ TODO
+ Text Positions Ctrl is Giving an
+ IndexError: string out of range
+ when clicking at the end of text
+[X] ToggleButton
+[X] ToolBar
+[X] TreeCtrl
+[X] Validator
+
+"Book" Controls Demos
+=====================
+[ ] AUI_Notebook
+[X] Choicebook
+[X] FlatNotebook
+[X] Listbook
+[X] Notebook
+[X] Toolbook
+[X] Treebook
+ TODO
+ Traceback (most recent call last):
+ File "C:\Python27\lib\site-packages\wx-2.9.5-phoenix\wx\core.py", line 1948, i
+ n Notify
+ self.notify()
+ File "C:\Python27\lib\site-packages\wx-2.9.5-phoenix\wx\core.py", line 3017, i
+ n Notify
+ self.result = self.callable(*self.args, **self.kwargs)
+ File "Treebook.py", line 68, in AdjustSize
+ self.GetTreeCtrl().InvalidateBestSize()
+ AttributeError: 'TestTB' object has no attribute 'GetTreeCtrl'
+
+Custom Controls Demos
+=====================
+[ ] AnalogClock
+[X] ColourSelect
+ TODO
+ Traceback (most recent call last):
+ File "ColourSelect.py", line 81, in OnSelectColour
+ self.log.WriteText("Colour selected: %s" % str(event.GetValue()))
+ AttributeError: 'CommandEvent' object has no attribute 'GetValue'
+[X] ComboTreeBox
+ TODO
+ C:\Python27\lib\site-packages\wx-2.9.5-phoenix\wx\lib\combotreebox.py:532: wxPyD
+ eprecationWarning: Call to deprecated item. The TreeItemData class no longer exi
+ sts, just pass your object directly to the tree instead.
+ data=wx.TreeItemData(clientData))
+[ ] Editor
+ TODO
+ Traceback (most recent call last):
+ File "C:\Python27\lib\site-packages\wx-2.9.5-phoenix\wx\lib\editor\editor.py",
+ line 194, in OnPaint
+ self.UpdateView(dc)
+ File "C:\Python27\lib\site-packages\wx-2.9.5-phoenix\wx\lib\editor\editor.py",
+ line 183, in UpdateView
+ if dc.Ok():
+ AttributeError: 'PaintDC' object has no attribute 'Ok'
+[X] GenericButtons
+[X] GenericDirCtrl
+ NOTE
+ Slow
+[X] ItemsPicker
+[ ] LEDNumberCtrl
+[ ] MultiSash
+ TODO
+ Traceback (most recent call last):
+ File "C:\Python27\lib\site-packages\wx-2.9.5-phoenix\wx\lib\multisash.py", lin
+ e 617, in OnPaint
+ highlight = wx.Pen(wx.SystemSettings_GetColour(wx.SYS_COLOUR_BTNHIGHLIGHT),
+ 1, wx.SOLID)
+ AttributeError: 'module' object has no attribute 'SystemSettings_GetColour'
+
+ C:\Python27\lib\site-packages\wx-2.9.5-phoenix\wx\lib\multisash.py:659: wxPyDepr
+ ecationWarning: Using deprecated class. Use Cursor instead.
+ self.SetCursor(wx.StockCursor(wx.CURSOR_BULLSEYE))
+
+ C:\Python27\lib\site-packages\wx-2.9.5-phoenix\wx\lib\multisash.py:655: wxPyDepr
+ ecationWarning: Using deprecated class. Use Cursor instead.
+ self.SetCursor(wx.StockCursor(wx.CURSOR_ARROW))
+[X] PlateButton
+ TODO
+ C:\Python27\lib\site-packages\wx-2.9.5-phoenix\wx\lib\platebtn.py:135: wxPyDepre
+ cationWarning: Using deprecated class. Use Control instead.
+ name=name)
+
+ C:\Python27\lib\site-packages\wx-2.9.5-phoenix\wx\lib\platebtn.py:145: wxPyDepre
+ cationWarning: Call to deprecated item BitmapFromImage. Use :class:`Bitmap` inst
+ ead
+ self._bmp['disable'] = wx.BitmapFromImage(img)
+[X] PopupControl
+ TODO
+ C:\Python27\lib\site-packages\wx-2.9.5-phoenix\wx\lib\popupctl.py:157: wxPyDepre
+ cationWarning: Using deprecated class. Use Control instead.
+ wx.PyControl.__init__(self, *_args, **_kwargs)
+ C:\Python27\lib\site-packages\wx-2.9.5-phoenix\wx\lib\popupctl.py:32: wxPyDeprec
+ ationWarning: Using deprecated class. Use Control instead.
+ wx.PyControl.__init__(self, *_args, **_kwargs)
+ C:\Python27\lib\site-packages\wx-2.9.5-phoenix\wx\lib\popupctl.py:181: wxPyDepre
+ cationWarning: Call to deprecated item. Use SetSize instead.
+ self.textCtrl.SetDimensions(0, 0, w - self.marginWidth - self.buttonWidth, h)
+ C:\Python27\lib\site-packages\wx-2.9.5-phoenix\wx\lib\popupctl.py:182: wxPyDepre
+ cationWarning: Call to deprecated item. Use SetSize instead.
+ self.bCtrl.SetDimensions(w - self.buttonWidth, 0, self.buttonWidth, h)
+[ ] PyColourChooser
+[ ] TreeListCtrl
+
+AGW Demos
+=========
+[X] AdvancedSplash
+[X] AquaButton
+[X] AUI
+[X] BalloonTip
+[X] ButtonPanel
+[X] CubeColourDialog
+[ ] CustomTreeCtrl
+ TODO
+ wx.WXK_PRIOR
+[ ] FlatMenu
+ TODO
+ Crashes on opening menu
+[X] FlatNotebook
+[X] FloatSpin
+[X] FoldPanelBar
+[X] FourWaySplitter
+[X] GenericMessageDialog
+[X] GradientButton
+[X] HyperLinkCtrl
+[ ] HyperTreeList
+ TODO
+ wx.WXK_PRIOR
+[X] AGWInfoBar
+[X] KnobCtrl
+ TODO
+ Traceback (most recent call last):
+ File "agw\KnobCtrl.py", line 166, in OnSecondColour
+ self.knob1.SetSecondGradientColour(event.GetValue())
+ AttributeError: 'CommandEvent' object has no attribute 'GetValue'
+[X] LabelBook
+[X] MultiDirDialog
+[X] PeakMeter
+[ ] PersistentControls
+ TODO
+ wx.HtmlListBox
+[X] PieCtrl
+ TODO
+ Traceback (most recent call last):
+ File "agw\PieCtrl.py", line 44, in Notify
+ self._parent._progresspie.SetValue(self._parent._progresspie.GetValue() + se
+ lf._parent._incr)
+ File "C:\Python27\lib\site-packages\wx-2.9.5-phoenix\wx\lib\agw\piectrl.py", l
+ ine 924, in SetValue
+ self.Refresh()
+ RuntimeError: wrapped C/C++ object of type ProgressPie has been deleted
+[X] PyBusyInfo
+[X] PyCollapsiblePane
+[X] PyGauge
+[X] PyProgress
+ TODO
+ Crashes if color is changed before starting
+ Also cancel button doesn't work
+[ ] RibbonBar
+ TODO
+ Traceback (most recent call last):
+ File "agw\RibbonBar.py", line 902, in OnButton1
+ size=(800, 600), log=self.log)
+ File "agw\RibbonBar.py", line 357, in __init__
+ self._primary_gallery = self.PopulateColoursPanel(primary_panel, self._defau
+ lt_primary, ID_PRIMARY_COLOUR)
+ File "agw\RibbonBar.py", line 473, in PopulateColoursPanel
+ self.AddColourToGallery(gallery, "BLUE", dc)
+ File "agw\RibbonBar.py", line 803, in AddColourToGallery
+ item = gallery.Append(bitmap, wx.ID_ANY)
+ File "C:\Python27\lib\site-packages\wx-2.9.5-phoenix\wx\lib\agw\ribbon\gallery
+ .py", line 628, in Append
+ raise Exception("exception")
+ Exception: exception
+[X] RulerCtrl
+ TODO
+ Traceback (most recent call last):
+ File "agw\RulerCtrl.py", line 378, in OnLabelColour
+ self.ruler3.SetLabelColour(event.GetValue())
+ AttributeError: 'CommandEvent' object has no attribute 'GetValue'
+[X] ShapedButton
+[X] ShortcutEditor
+[X] SpeedMeter
+ TODO
+ Traceback (most recent call last):
+ File "C:\Python27\lib\site-packages\wx-2.9.5-phoenix\wx\lib\agw\speedmeter.py"
+ , line 380, in OnSize
+ self.UpdateDrawing()
+ File "C:\Python27\lib\site-packages\wx-2.9.5-phoenix\wx\lib\agw\speedmeter.py"
+ , line 394, in UpdateDrawing
+ self.Draw(dc)
+ File "C:\Python27\lib\site-packages\wx-2.9.5-phoenix\wx\lib\agw\speedmeter.py"
+ , line 900, in Draw
+ width, height, dummy = fancytext.GetFullExtent(strings, dc)
+ File "C:\Python27\lib\site-packages\wx-2.9.5-phoenix\wx\lib\fancytext.py", lin
+ e 348, in GetFullExtent
+ RenderToRenderer(str, renderer, enclose)
+ File "C:\Python27\lib\site-packages\wx-2.9.5-phoenix\wx\lib\fancytext.py", lin
+ e 331, in RenderToRenderer
+ p.Parse(str, 1)
+ File "C:\Python27\lib\site-packages\wx-2.9.5-phoenix\wx\lib\fancytext.py", lin
+ e 123, in startElement
+ getattr(self, method)(attrs)
+ File "C:\Python27\lib\site-packages\wx-2.9.5-phoenix\wx\lib\fancytext.py", lin
+ e 232, in start
+ self.characterData(code)
+ File "C:\Python27\lib\site-packages\wx-2.9.5-phoenix\wx\lib\fancytext.py", lin
+ e 141, in characterData
+ width, height, descent, extl = self.dc.GetFullTextExtent(chunk)
+ UnicodeDecodeError: 'utf8' codec can't decode byte 0xf0 in position 0: unexpecte
+ d end of data
+[X] SuperToolTip
+[X] ThumbnailCtrl
+[X] ToasterBox
+ TODO
+ is crashing on/after toasty
+[X] UltimateListCtrl
+ TODO
+ Windows7ExplorerContents
+[ ] XLSGrid
+[X] ZoomBar
+ TODO
+ Traceback (most recent call last):
+ File "agw\ZoomBar.py", line 154, in OnZoomColour
+ colour = event.GetValue()
+ AttributeError: 'CommandEvent' object has no attribute 'GetValue'
+
+More Windows/Controls Demos
+===========================
+[ ] ActiveX_FlashWindow
+[ ] ActiveX_IEHtmlWindow
+[ ] ActiveX_PDFWindow
+[X] BitmapComboBox
+[X] Calendar
+ TODO
+ File "C:\Python27\lib\site-packages\wx-2.9.5-phoenix\wx\lib\calendar.py"
+ #replaceall wx.PyControl with wx.Control
+ #replaceall DrawRectangleRect with DrawRectangle
+ #replaceall DrawRectanglePointSize with DrawRectangle
+ #replaceall DrawLinePoint with DrawLine
+ #replaceall DrawTextPoint with DrawText
+ #replaceall SystemSettings_ with SystemSettings.
+
+ #Commented out dc BeginDrawing() and EndDrawing() stuff
+ Traceback (most recent call last):
+ File "C:\Python27\lib\site-packages\wx-2.9.5-phoenix\wx\lib\calendar.py", line
+ 985, in OnPaint
+ self.DoDrawing(DC)
+ File "C:\Python27\lib\site-packages\wx-2.9.5-phoenix\wx\lib\calendar.py", line
+ 989, in DoDrawing
+ DC.BeginDrawing()
+ AttributeError: 'PaintDC' object has no attribute 'BeginDrawing'
+
+ Traceback (most recent call last):
+ File "C:\Python27\lib\site-packages\wx-2.9.5-phoenix\wx\lib\calendar.py", line
+ 768, in OnLeftEvent
+ self.ProcessClick(event)
+ File "C:\Python27\lib\site-packages\wx-2.9.5-phoenix\wx\lib\calendar.py", line
+ 761, in ProcessClick
+ key = self.GetDayHit(self.x, self.y)
+ File "C:\Python27\lib\site-packages\wx-2.9.5-phoenix\wx\lib\calendar.py", line
+ 949, in GetDayHit
+ if wx.IntersectRect(ms_rect, val) is not None:
+ AttributeError: 'module' object has no attribute 'IntersectRect'
+
+[X] CalendarCtrl
+ TODO
+ could use some work/cleanup
+[X] CheckListCtrlMixin
+[X] CollapsiblePane
+[X] ComboCtrl
+[ ] ContextHelp
+[X] DatePickerCtrl
+[ ] DynamicSashWindow
+[ ] EditableListBox
+[X] ExpandoTextCtrl
+ TODO
+ Traceback (most recent call last):
+ File "ExpandoTextCtrl.py", line 82, in OnSetMaxHeight
+ dlg = wx.NumberEntryDialog(self, "", "Enter new max height:",
+ AttributeError: 'module' object has no attribute 'NumberEntryDialog'
+[X] FancyText
+[X] FileBrowseButton
+ TODO
+ C:\Python27\lib\site-packages\wx-2.9.5-phoenix\wx\lib\filebrowsebutton.py:132: w
+ xPyDeprecationWarning: Call to deprecated item. Use SetToolTip instead.
+ textControl.SetToolTipString( self.toolTip )
+ C:\Python27\lib\site-packages\wx-2.9.5-phoenix\wx\lib\filebrowsebutton.py:145: w
+ xPyDeprecationWarning: Call to deprecated item. Use SetToolTip instead.
+ button.SetToolTipString( self.toolTip )
+ C:\Python27\lib\site-packages\wx-2.9.5-phoenix\wx\lib\filebrowsebutton.py:109: w
+ xPyDeprecationWarning: Call to deprecated item. Use SetSize instead.
+ self.SetDimensions(-1, -1, size.width, size.height, wx.SIZE_USE_EXISTING)
+ C:\Python27\lib\site-packages\wx-2.9.5-phoenix\wx\lib\filebrowsebutton.py:245: w
+ xPyDeprecationWarning: Call to deprecated item. Use SetToolTip instead.
+ textControl.SetToolTipString( self.toolTip )
+[X] FloatBar
+[X] FloatCanvas
+[X] HtmlWindow
+ TODO
+ Traceback (most recent call last):
+ File "HtmlWindow.py", line 177, in OnViewSource
+ source = self.html.GetParser().GetSource()
+ AttributeError: 'MyHtmlWindow' object has no attribute 'GetParser'
+[X] HTML2_WebView
+[X] InfoBar
+[ ] IntCtrl
+ TODO
+ C:\Python27\lib\site-packages\wx-2.9.5-phoenix\wx\lib\intctrl.py:89: wxPyDepreca
+ tionWarning: Using deprecated class. Use Validator instead.
+ wx.PyValidator.__init__(self)
+[ ] MVCTree
+ TODO
+ C:\Python27\lib\site-packages\wx-2.9.5-phoenix\wx\lib\mvctree.py:171: wxPyDeprec
+ ationWarning: Using deprecated class. Use Colour instead.
+ self.textcolor = wx.NamedColour("BLACK")
+ C:\Python27\lib\site-packages\wx-2.9.5-phoenix\wx\lib\mvctree.py:172: wxPyDeprec
+ ationWarning: Using deprecated class. Use Colour instead.
+ self.bgcolor = wx.NamedColour("WHITE")
+ C:\Python27\lib\site-packages\wx-2.9.5-phoenix\wx\lib\mvctree.py:173: wxPyDeprec
+ ationWarning: Using deprecated class. Use Colour instead.
+ self.fgcolor = wx.NamedColour("BLUE")
+ C:\Python27\lib\site-packages\wx-2.9.5-phoenix\wx\lib\mvctree.py:174: wxPyDeprec
+ ationWarning: Using deprecated class. Use Colour instead.
+ self.linecolor = wx.NamedColour("GREY")
+ :40: wxPyDeprecationWarning: Call to deprecated item __call__. Use :meth
+ :`EvtHandler.Bind` instead.
+ :41: wxPyDeprecationWarning: Call to deprecated item __call__. Use :meth
+ :`EvtHandler.Bind` instead.
+ :42: wxPyDeprecationWarning: Call to deprecated item __call__. Use :meth
+ :`EvtHandler.Bind` instead.
+ :43: wxPyDeprecationWarning: Call to deprecated item __call__. Use :meth
+ :`EvtHandler.Bind` instead.
+ :44: wxPyDeprecationWarning: Call to deprecated item __call__. Use :meth
+ :`EvtHandler.Bind` instead.
+ :45: wxPyDeprecationWarning: Call to deprecated item __call__. Use :meth
+ :`EvtHandler.Bind` instead.
+ :46: wxPyDeprecationWarning: Call to deprecated item __call__. Use :meth
+ :`EvtHandler.Bind` instead.
+ Traceback (most recent call last):
+ File "C:\Python27\lib\site-packages\wx-2.9.5-phoenix\wx\lib\mvctree.py", line
+ 1145, in OnPaint
+ self.painter.Paint(dc, self.currentRoot, self.doubleBuffered)
+ File "C:\Python27\lib\site-packages\wx-2.9.5-phoenix\wx\lib\mvctree.py", line
+ 606, in Paint
+ dc.BeginDrawing()
+ AttributeError: 'PaintDC' object has no attribute 'BeginDrawing'
+[X] MaskedEditControls
+ TODO
+ C:\Python27\lib\site-packages\wx-2.9.5-phoenix\wx\lib\masked\combobox.py:266: wx
+ PyDeprecationWarning: Call to deprecated item. Use SetTextSelection instead.
+ return self.SetMark( sel_start, sel_to )
+[X] MaskedNumCtrl
+[ ] MediaCtrl
+[X] MultiSplitterWindow
+ TODO
+ C:\Python27\lib\site-packages\wx-2.9.5-phoenix\wx\lib\splitter.py:68: wxPyDeprec
+ ationWarning: Using deprecated class. Use Panel instead.
+ wx.PyPanel.__init__(self, parent, id, pos, size, style, name)
+ C:\Python27\lib\site-packages\wx-2.9.5-phoenix\wx\lib\splitter.py:83: wxPyDeprec
+ ationWarning: Using deprecated class. Use Cursor instead.
+ self._sashCursorWE = wx.StockCursor(wx.CURSOR_SIZEWE)
+ C:\Python27\lib\site-packages\wx-2.9.5-phoenix\wx\lib\splitter.py:84: wxPyDeprec
+ ationWarning: Using deprecated class. Use Cursor instead.
+ self._sashCursorNS = wx.StockCursor(wx.CURSOR_SIZENS)
+ C:\Python27\lib\site-packages\wx-2.9.5-phoenix\wx\lib\splitter.py:709: wxPyDepre
+ cationWarning: Call to deprecated item. Use SetSize instead.
+ cw - 2*border, ch - 2*border)
+ C:\Python27\lib\site-packages\wx-2.9.5-phoenix\wx\lib\splitter.py:717: wxPyDepre
+ cationWarning: Call to deprecated item. Use SetSize instead.
+ self._windows[idx].SetDimensions(x, y, spos, h)
+ C:\Python27\lib\site-packages\wx-2.9.5-phoenix\wx\lib\splitter.py:721: wxPyDepre
+ cationWarning: Call to deprecated item. Use SetSize instead.
+ self._windows[idx+1].SetDimensions(x, y, last, h)
+[X] OwnerDrawnComboBox
+[X] Pickers
+[ ] PropertyGrid
+[X] PyCrust
+[ ] PyPlot
+ TODO
+ C:\Python27\lib\site-packages\wx-2.9.5-phoenix\wx\lib\plot.py:586: wxPyDeprecati
+ onWarning: Using deprecated class. Use Cursor instead.
+ self.HandCursor = wx.CursorFromImage(Hand.GetImage())
+ C:\Python27\lib\site-packages\wx-2.9.5-phoenix\wx\lib\plot.py:587: wxPyDeprecati
+ onWarning: Using deprecated class. Use Cursor instead.
+ self.GrabHandCursor = wx.CursorFromImage(GrabHand.GetImage())
+ C:\Python27\lib\site-packages\wx-2.9.5-phoenix\wx\lib\plot.py:588: wxPyDeprecati
+ onWarning: Using deprecated class. Use Cursor instead.
+ self.MagCursor = wx.CursorFromImage(MagPlus.GetImage())
+ C:\Python27\lib\site-packages\wx-2.9.5-phoenix\wx\lib\plot.py:1462: wxPyDeprecat
+ ionWarning: Call to deprecated item EmptyBitmap. Use :class:`Bitmap` instead
+ self._Buffer = wx.EmptyBitmap(Size.width, Size.height)
+ C:\Python27\lib\site-packages\wx-2.9.5-phoenix\wx\lib\plot.py:659: wxPyDeprecati
+ onWarning: Using deprecated class. Use Colour instead.
+ self._gridColour = wx.NamedColour('black')
+[X] PyShell
+[X] ResizeWidget
+ TODO
+ C:\Python27\lib\site-packages\wx-2.9.5-phoenix\wx\lib\resizewidget.py:49: wxPyDe
+ precationWarning: Using deprecated class. Use Panel instead.
+ wx.PyPanel.__init__(self, *args, **kw)
+ Traceback (most recent call last):
+ File "C:\Python27\lib\site-packages\wx-2.9.5-phoenix\wx\lib\resizewidget.py",
+ line 176, in OnSize
+ cr = wx.RectPS((0,0), sz - (RW_THICKNESS, RW_THICKNESS))
+ AttributeError: 'module' object has no attribute 'RectPS'
+[ ] RichTextCtrl
+[X] ScrolledPanel
+[ ] SplitTree
+[X] StyledTextCtrl_1
+[X] StyledTextCtrl_2
+[ ] TablePrint
+ TODO
+ C:\Python27\lib\site-packages\wx-2.9.5-phoenix\wx\lib\printout.py:717: wxPyDepre
+ cationWarning: Using deprecated class. Use Colour instead.
+ self.row_def_line_colour = wx.NamedColour('BLACK')
+ C:\Python27\lib\site-packages\wx-2.9.5-phoenix\wx\lib\printout.py:720: wxPyDepre
+ cationWarning: Using deprecated class. Use Colour instead.
+ self.column_def_line_colour = wx.NamedColour('BLACK')
+ C:\Python27\lib\site-packages\wx-2.9.5-phoenix\wx\lib\printout.py:722: wxPyDepre
+ cationWarning: Using deprecated class. Use Colour instead.
+ self.column_colour = wx.NamedColour('WHITE')
+ C:\Python27\lib\site-packages\wx-2.9.5-phoenix\wx\lib\printout.py:724: wxPyDepre
+ cationWarning: Using deprecated class. Use Colour instead.
+ self.label_colour = wx.NamedColour('LIGHT GREY')
+ :72: wxPyDeprecationWarning: Using deprecated class. Use Colour instead.
+
+ :75: wxPyDeprecationWarning: Using deprecated class. Use Colour instead.
+
+ :79: wxPyDeprecationWarning: Using deprecated class. Use Colour instead.
+
+ C:\Python27\lib\site-packages\wx-2.9.5-phoenix\wx\lib\printout.py:917: wxPyDepre
+ cationWarning: Call to deprecated item. Use IsOk instead.
+ if not self.preview.Ok():
+ Traceback (most recent call last):
+ File "C:\Python27\lib\site-packages\wx-2.9.5-phoenix\wx\lib\printout.py", line
+ 1134, in OnPrintPage
+ self.canvas.DoDrawing(dc)
+ File "C:\Python27\lib\site-packages\wx-2.9.5-phoenix\wx\lib\printout.py", line
+ 945, in DoDrawing
+ DC.BeginDrawing()
+ AttributeError: 'DC' object has no attribute 'BeginDrawing'
+[X] Throbber
+ TODO
+ C:\Python27\lib\site-packages\wx-2.9.5-phoenix\wx\lib\throbber.py:68: wxPyDeprec
+ ationWarning: Using deprecated class. Use Panel instead.
+ wx.PyPanel.__init__(self, parent, id, pos, size, style, name)
+[ ] Ticker
+ TODO
+ C:\Python27\lib\site-packages\wx-2.9.5-phoenix\wx\lib\ticker.py:45: wxPyDeprecat
+ ionWarning: Using deprecated class. Use Control instead.
+ wx.PyControl.__init__(self, parent, id=id, pos=pos, size=size, style=style, na
+ me=name)
+ C:\Python27\lib\site-packages\wx-2.9.5-phoenix\wx\lib\ticker.py:56: wxPyDeprecat
+ ionWarning: Call to deprecated item __call__. Use :meth:`EvtHandler.Bind` instea
+ d.
+ wx.EVT_TIMER(self, -1, self.OnTick)
+[X] TimeCtrl
+ TODO
+ C:\Python27\lib\site-packages\wx-2.9.5-phoenix\wx\lib\masked\timectrl.py:391: wx
+ PyDeprecationWarning: Call to deprecated item DateTimeFromDMY. Use :meth:`DateTi
+ me.FromDMY` instead.
+ wxdt = wx.DateTimeFromDMY(1, 0, 1970)
+ C:\Python27\lib\site-packages\wx-2.9.5-phoenix\wx\lib\masked\timectrl.py:531: wx
+ PyDeprecationWarning: Call to deprecated item DateTimeFromDMY. Use :meth:`DateTi
+ me.FromDMY` instead.
+ wxdt = wx.DateTimeFromDMY(1, 0, 1970)
+ C:\Python27\lib\site-packages\wx-2.9.5-phoenix\wx\lib\masked\timectrl.py:769: wx
+ PyDeprecationWarning: Call to deprecated item DateTimeFromDMY. Use :meth:`DateTi
+ me.FromDMY` instead.
+ wxdt = wx.DateTimeFromDMY(1, 0, 1970)
+ Traceback (most recent call last):
+ File "C:\Python27\lib\site-packages\wx-2.9.5-phoenix\wx\lib\masked\timectrl.py
+ ", line 1177, in __OnTextChange
+ if not BaseMaskedTextCtrl._OnTextChange(self, event):
+ File "C:\Python27\lib\site-packages\wx-2.9.5-phoenix\wx\lib\masked\maskededit.
+ py", line 2966, in _OnTextChange
+ self._CheckValid() # Recolor control as appropriate
+ File "C:\Python27\lib\site-packages\wx-2.9.5-phoenix\wx\lib\masked\maskededit.
+ py", line 5362, in _CheckValid
+ valid = self._validateTime(value)
+ File "C:\Python27\lib\site-packages\wx-2.9.5-phoenix\wx\lib\masked\maskededit.
+ py", line 5556, in _validateTime
+ dateHandler = wx.DateTime_Today()
+ AttributeError: 'module' object has no attribute 'DateTime_Today'
+ Traceback (most recent call last):
+ File "C:\Python27\lib\site-packages\wx-2.9.5-phoenix\wx\lib\masked\timectrl.py
+ ", line 1177, in __OnTextChange
+ if not BaseMaskedTextCtrl._OnTextChange(self, event):
+ File "C:\Python27\lib\site-packages\wx-2.9.5-phoenix\wx\lib\masked\maskededit.
+ py", line 2966, in _OnTextChange
+ self._CheckValid() # Recolor control as appropriate
+ File "C:\Python27\lib\site-packages\wx-2.9.5-phoenix\wx\lib\masked\maskededit.
+ py", line 5362, in _CheckValid
+ valid = self._validateTime(value)
+ File "C:\Python27\lib\site-packages\wx-2.9.5-phoenix\wx\lib\masked\maskededit.
+ py", line 5556, in _validateTime
+ dateHandler = wx.DateTime_Today()
+ AttributeError: 'module' object has no attribute 'DateTime_Today'
+ Traceback (most recent call last):
+ File "C:\Python27\lib\site-packages\wx-2.9.5-phoenix\wx\lib\masked\timectrl.py
+ ", line 1177, in __OnTextChange
+ if not BaseMaskedTextCtrl._OnTextChange(self, event):
+ File "C:\Python27\lib\site-packages\wx-2.9.5-phoenix\wx\lib\masked\maskededit.
+ py", line 2966, in _OnTextChange
+ self._CheckValid() # Recolor control as appropriate
+ File "C:\Python27\lib\site-packages\wx-2.9.5-phoenix\wx\lib\masked\maskededit.
+ py", line 5362, in _CheckValid
+ valid = self._validateTime(value)
+ File "C:\Python27\lib\site-packages\wx-2.9.5-phoenix\wx\lib\masked\maskededit.
+ py", line 5556, in _validateTime
+ dateHandler = wx.DateTime_Today()
+ AttributeError: 'module' object has no attribute 'DateTime_Today'
+ Traceback (most recent call last):
+ File "C:\Python27\lib\site-packages\wx-2.9.5-phoenix\wx\lib\masked\timectrl.py
+ ", line 1177, in __OnTextChange
+ if not BaseMaskedTextCtrl._OnTextChange(self, event):
+ File "C:\Python27\lib\site-packages\wx-2.9.5-phoenix\wx\lib\masked\maskededit.
+ py", line 2966, in _OnTextChange
+ self._CheckValid() # Recolor control as appropriate
+ File "C:\Python27\lib\site-packages\wx-2.9.5-phoenix\wx\lib\masked\maskededit.
+ py", line 5362, in _CheckValid
+ valid = self._validateTime(value)
+ File "C:\Python27\lib\site-packages\wx-2.9.5-phoenix\wx\lib\masked\maskededit.
+ py", line 5556, in _validateTime
+ dateHandler = wx.DateTime_Today()
+ AttributeError: 'module' object has no attribute 'DateTime_Today'
+ Traceback (most recent call last):
+ File "C:\Python27\lib\site-packages\wx-2.9.5-phoenix\wx\lib\masked\timectrl.py
+ ", line 1177, in __OnTextChange
+ if not BaseMaskedTextCtrl._OnTextChange(self, event):
+ File "C:\Python27\lib\site-packages\wx-2.9.5-phoenix\wx\lib\masked\maskededit.
+ py", line 2966, in _OnTextChange
+ self._CheckValid() # Recolor control as appropriate
+ File "C:\Python27\lib\site-packages\wx-2.9.5-phoenix\wx\lib\masked\maskededit.
+ py", line 5362, in _CheckValid
+ valid = self._validateTime(value)
+ File "C:\Python27\lib\site-packages\wx-2.9.5-phoenix\wx\lib\masked\maskededit.
+ py", line 5556, in _validateTime
+ dateHandler = wx.DateTime_Today()
+ AttributeError: 'module' object has no attribute 'DateTime_Today'
+ Traceback (most recent call last):
+ File "C:\Python27\lib\site-packages\wx-2.9.5-phoenix\wx\lib\masked\timectrl.py
+ ", line 1177, in __OnTextChange
+ if not BaseMaskedTextCtrl._OnTextChange(self, event):
+ File "C:\Python27\lib\site-packages\wx-2.9.5-phoenix\wx\lib\masked\maskededit.
+ py", line 2966, in _OnTextChange
+ self._CheckValid() # Recolor control as appropriate
+ File "C:\Python27\lib\site-packages\wx-2.9.5-phoenix\wx\lib\masked\maskededit.
+ py", line 5362, in _CheckValid
+ valid = self._validateTime(value)
+ File "C:\Python27\lib\site-packages\wx-2.9.5-phoenix\wx\lib\masked\maskededit.
+ py", line 5556, in _validateTime
+ dateHandler = wx.DateTime_Today()
+ AttributeError: 'module' object has no attribute 'DateTime_Today'
+[ ] TreeMixin
+[ ] VListBox
+
+Window Layout Demos
+===================
+[ ] GridBagSizer
+[X] LayoutAnchors
+[X] LayoutConstraints
+[X] Layoutf
+[ ] RowColSizer
+ TODO
+ C:\Python27\lib\site-packages\wx-2.9.5-phoenix\wx\lib\rcsizer.py:63: wxPyDepreca
+ tionWarning: Using deprecated class. Use Sizer instead.
+ wx.PySizer.__init__(self)
+[X] ScrolledPanel
+[X] SizedControls
+[X] Sizers
+[X] WrapSizer
+[ ] XmlResource
+[ ] XmlResourceHandler
+[ ] XmlResourceSubclass
+
+Process and Events Demos
+[X] DelayedResult
+[X] EventManager
+ TODO
+ self._publish(msgKwargs)
+ File "C:\Python27\lib\site-packages\wx-2.9.5-phoenix\wx\lib\pubsub\core\topico
+ bj.py", line 340, in _publish
+ self.__sendMessage(data, self, iterState)
+ File "C:\Python27\lib\site-packages\wx-2.9.5-phoenix\wx\lib\pubsub\core\topico
+ bj.py", line 359, in __sendMessage
+ self._mix_callListener(listener, data, iterState)
+ File "C:\Python27\lib\site-packages\wx-2.9.5-phoenix\wx\lib\pubsub\core\kwargs
+ \publishermixin.py", line 64, in _mix_callListener
+ listener(iterState.filteredArgs, self, msgKwargs)
+ File "C:\Python27\lib\site-packages\wx-2.9.5-phoenix\wx\lib\pubsub\core\kwargs
+ \listenerimpl.py", line 27, in __call__
+ cb(**kwargs)
+ File "C:\Python27\lib\site-packages\wx-2.9.5-phoenix\wx\lib\evtmgr.py", line 4
+ 67, in deliverEvent
+ self.eventHandler(message)
+ File "EventManager.py", line 184, in makeColor
+ self.makeColorFromTuple(mouseEvent.GetPositionTuple())
+ AttributeError: 'MouseEvent' object has no attribute 'GetPositionTuple'
+[X] KeyEvents
+[X] Process
+[X] PythonEvents
+[X] Threads
+[X] Timer
+[ ] #'infoframe # needs better explanation and some fixing
+
+Clipboard and DnD Demos
+=======================
+[X] CustomDragAndDrop
+ TODO
+ DoodleDrop isn't showing upon drop
+[X] DragAndDrop
+ TODO
+ TypeError: Invalid result type upon drops
+[X] URLDragAndDrop
+
+Using Images Demos
+==================
+[X] AdjustChannels
+[X] AlphaDrawing
+[X] AnimateCtrl
+[X] ArtProvider
+[X] BitmapFromBuffer
+[X] Cursor
+[ ] DragImage
+[X] Image
+[X] ImageAlpha
+[X] ImageFromStream
+[X] Img2PyArtProvider
+[ ] Mask
+[X] RawBitmapAccess
+[X] Throbber
+ TODO
+ C:\Python27\lib\site-packages\wx-2.9.5-phoenix\wx\lib\throbber.py:68: wxPyDeprec
+ ationWarning: Using deprecated class. Use Panel instead.
+ wx.PyPanel.__init__(self, parent, id, pos, size, style, name)
+
+Miscellaneous Demos
+===================
+[X] AlphaDrawing
+[ ] Cairo
+[ ] Cairo_Snippets
+[X] ColourDB
+[ ] #'DialogUnits # needs more explanations
+[X] DragScroller
+ TODO
+ C:\Python27\lib\site-packages\wx-2.9.5-phoenix\wx\lib\dragscroller.py:49: wxPyDe
+ precationWarning: Using deprecated class. Use Cursor instead.
+ self.scrollwin.SetCursor(wx.StockCursor(wx.CURSOR_SIZING))
+[X] DrawXXXList
+[X] FileHistory
+[X] FontEnumerator
+[X] GraphicsContext
+[ ] GraphicsGradient
+[ ] GLCanvas
+[X] I18N
+ TODO
+ C:\Python27\lib\site-packages\wx-2.9.5-phoenix\wx\lib\langlistctrl.py:375: wxPyD
+ eprecationWarning: Call to deprecated item. Use InsertItem instead.
+ self.InsertImageStringItem(i, self.choices[i], i)
+[X] Joystick
+ TODO
+ Needs more work and tested with a joystick. I dont have one.
+[ ] MimeTypesManager
+[X] MouseGestures
+[ ] OGL
+[ ] PDFViewer
+[X] PenAndBrushStyles
+[X] PrintFramework
+[ ] PseudoDC
+[X] RendererNative
+[X] ShapedWindow
+[X] Sound
+[X] StandardPaths
+[X] SystemSettings
+[X] UIActionSimulator
+[X] Unicode
\ No newline at end of file
diff --git a/demo/Wizard.py b/demo/Wizard.py
index eceba135..910d9979 100644
--- a/demo/Wizard.py
+++ b/demo/Wizard.py
@@ -1,7 +1,9 @@
-import wx
-import wx.wizard as wiz
-import images
+import wx
+import wx.adv
+from wx.adv import Wizard as wiz
+from wx.adv import WizardPage, WizardPageSimple
+import images
#----------------------------------------------------------------------
@@ -16,17 +18,17 @@ def makePageTitle(wizPg, title):
#----------------------------------------------------------------------
-class TitledPage(wiz.WizardPageSimple):
+class TitledPage(wx.adv.WizardPageSimple):
def __init__(self, parent, title):
- wiz.WizardPageSimple.__init__(self, parent)
+ WizardPageSimple.__init__(self, parent)
self.sizer = makePageTitle(self, title)
#----------------------------------------------------------------------
-class SkipNextPage(wiz.PyWizardPage):
+class SkipNextPage(wx.adv.WizardPage):
def __init__(self, parent, title):
- wiz.PyWizardPage.__init__(self, parent)
+ WizardPage.__init__(self, parent)
self.next = self.prev = None
self.sizer = makePageTitle(self, title)
@@ -59,9 +61,9 @@ class SkipNextPage(wiz.PyWizardPage):
#----------------------------------------------------------------------
-class UseAltBitmapPage(wiz.PyWizardPage):
+class UseAltBitmapPage(WizardPage):
def __init__(self, parent, title):
- wiz.PyWizardPage.__init__(self, parent)
+ WizardPage.__init__(self, parent)
self.next = self.prev = None
self.sizer = makePageTitle(self, title)
@@ -103,9 +105,9 @@ class TestPanel(wx.Panel):
b = wx.Button(self, -1, "Run Dynamic Wizard", pos=(50, 100))
self.Bind(wx.EVT_BUTTON, self.OnRunDynamicWizard, b)
- self.Bind(wiz.EVT_WIZARD_PAGE_CHANGED, self.OnWizPageChanged)
- self.Bind(wiz.EVT_WIZARD_PAGE_CHANGING, self.OnWizPageChanging)
- self.Bind(wiz.EVT_WIZARD_CANCEL, self.OnWizCancel)
+ self.Bind(wx.adv.EVT_WIZARD_PAGE_CHANGED, self.OnWizPageChanged)
+ self.Bind(wx.adv.EVT_WIZARD_PAGE_CHANGING, self.OnWizPageChanging)
+ self.Bind(wx.adv.EVT_WIZARD_CANCEL, self.OnWizCancel)
def OnWizPageChanged(self, evt):
@@ -145,7 +147,7 @@ class TestPanel(wx.Panel):
def OnRunSimpleWizard(self, evt):
# Create the wizard and the pages
- wizard = wiz.Wizard(self, -1, "Simple Wizard", images.WizTest1.GetBitmap())
+ wizard = wiz(self, -1, "Simple Wizard", images.WizTest1.GetBitmap())
page1 = TitledPage(wizard, "Page 1")
page2 = TitledPage(wizard, "Page 2")
page3 = TitledPage(wizard, "Page 3")
@@ -161,9 +163,9 @@ wxWizardPageSimple class can easily be used for the pages."""))
page4.sizer.Add(wx.StaticText(page4, -1, "\nThis is the last page."))
# Use the convenience Chain function to connect the pages
- wiz.WizardPageSimple.Chain(page1, page2)
- wiz.WizardPageSimple.Chain(page2, page3)
- wiz.WizardPageSimple.Chain(page3, page4)
+ WizardPageSimple.Chain(page1, page2)
+ WizardPageSimple.Chain(page2, page3)
+ WizardPageSimple.Chain(page3, page4)
wizard.GetPageAreaSizer().Add(page1)
if wizard.RunWizard(page1):
@@ -172,14 +174,13 @@ wxWizardPageSimple class can easily be used for the pages."""))
wx.MessageBox("Wizard was cancelled", "That's all folks!")
-
def OnRunDynamicWizard(self, evt):
# Create the wizard and the pages
#wizard = wx.PreWizard()
#wizard.SetExtraStyle(wx.WIZARD_EX_HELPBUTTON)
#wizard.Create(self, self.ID_wiz, "Simple Wizard",
# images.WizTest1.GetBitmap())
- wizard = wiz.Wizard(self, -1, "Dynamic Wizard", images.WizTest1.GetBitmap())
+ wizard = wiz(self, -1, "Dynamic Wizard", images.WizTest1.GetBitmap())
page1 = TitledPage(wizard, "Page 1")
page2 = SkipNextPage(wizard, "Page 2")
diff --git a/demo/XmlResource.py b/demo/XmlResource.py
index 5d241b1d..89f653f9 100644
--- a/demo/XmlResource.py
+++ b/demo/XmlResource.py
@@ -31,8 +31,8 @@ class TestPanel(wx.Panel):
elif 1:
# or from a Virtual FileSystem:
- wx.FileSystem_AddHandler(wx.MemoryFSHandler())
- wx.MemoryFSHandler_AddFile("XRC_Resources/data_file", resourceText)
+ wx.FileSystem.AddHandler(wx.MemoryFSHandler())
+ wx.MemoryFSHandler().AddFile("XRC_Resources/data_file", resourceText)
res = xrc.XmlResource("memory:XRC_Resources/data_file")
else:
diff --git a/demo/agw/AUI.py b/demo/agw/AUI.py
index 2c9f45de..6bb9a4d7 100644
--- a/demo/agw/AUI.py
+++ b/demo/agw/AUI.py
@@ -362,12 +362,12 @@ ID_NotebookMultiLine = ID_PaneBorderSize + 18
# -- SizeReportCtrl --
# (a utility control that always reports it's client size)
-class SizeReportCtrl(wx.PyControl):
+class SizeReportCtrl(wx.Control):
def __init__(self, parent, id=wx.ID_ANY, pos=wx.DefaultPosition,
size=wx.DefaultSize, mgr=None):
- wx.PyControl.__init__(self, parent, id, pos, size, style=wx.NO_BORDER)
+ wx.Control.__init__(self, parent, id, pos, size, style=wx.NO_BORDER)
self._mgr = mgr
self.Bind(wx.EVT_PAINT, self.OnPaint)
@@ -557,7 +557,7 @@ class SettingsPanel(wx.Panel):
s15.Add((1, 1), 1, wx.EXPAND)
s15.SetItemMinSize(1, (180, 20))
- grid_sizer = wx.GridSizer(0, 2)
+ grid_sizer = wx.GridSizer(rows=0, cols=2, vgap=5, hgap=5)
grid_sizer.SetHGap(5)
grid_sizer.Add(s1)
grid_sizer.Add(s4)
@@ -607,14 +607,14 @@ class SettingsPanel(wx.Panel):
def CreateColourBitmap(self, c):
- image = wx.EmptyImage(25, 14)
+ image = wx.Image(25, 14)
for x in xrange(25):
for y in xrange(14):
pixcol = c
if x == 0 or x == 24 or y == 0 or y == 13:
pixcol = wx.BLACK
- image.SetRGB(x, y, pixcol.Red(), pixcol.Green(), pixcol.Blue())
+ image.SetRGB(wx.Rect(wx.Size(25, 14)), pixcol.Red(), pixcol.Green(), pixcol.Blue())
return image.ConvertToBitmap()
@@ -726,13 +726,13 @@ class SettingsPanel(wx.Panel):
# Class ProgressGauge
# ---------------------------------------------------------------------------- #
-class ProgressGauge(wx.PyWindow):
+class ProgressGauge(wx.Window):
""" This class provides a visual alternative for wx.Gauge."""
def __init__(self, parent, id=wx.ID_ANY, pos=wx.DefaultPosition, size=(-1,30)):
""" Default class constructor. """
- wx.PyWindow.__init__(self, parent, id, pos, size, style=wx.BORDER_NONE)
+ wx.Window.__init__(self, parent, id, pos, size, style=wx.BORDER_NONE)
self._value = 0
self._steps = 16
@@ -786,8 +786,8 @@ class ProgressGauge(wx.PyWindow):
self.DrawProgress(dc, xsize, ysize, increment)
dc.SetBrush(wx.TRANSPARENT_BRUSH)
- dc.SetPen(wx.Pen(wx.SystemSettings_GetColour(wx.SYS_COLOUR_GRADIENTINACTIVECAPTION)))
- dc.DrawRectangleRect(self.GetClientRect())
+ dc.SetPen(wx.Pen(wx.SystemSettings.GetColour(wx.SYS_COLOUR_GRADIENTINACTIVECAPTION)))
+ dc.DrawRectangle(self.GetClientRect())
def LightColour(self, colour, percent):
@@ -1050,10 +1050,10 @@ class AuiFrame(wx.Frame):
guides_menu.AppendRadioItem(ID_AeroGuides, "Aero-Style Docking Guides")
guides_menu.AppendRadioItem(ID_WhidbeyGuides, "Whidbey-Style Docking Guides")
- perspectives_menu.AppendMenu(wx.ID_ANY, "Frame Perspectives", self._perspectives_menu)
- perspectives_menu.AppendMenu(wx.ID_ANY, "AuiNotebook Perspectives", self._nb_perspectives_menu)
+ perspectives_menu.Append(wx.ID_ANY, "Frame Perspectives", self._perspectives_menu)
+ perspectives_menu.Append(wx.ID_ANY, "AuiNotebook Perspectives", self._nb_perspectives_menu)
perspectives_menu.AppendSeparator()
- perspectives_menu.AppendMenu(wx.ID_ANY, "Docking Guides", guides_menu)
+ perspectives_menu.Append(wx.ID_ANY, "Docking Guides", guides_menu)
action_menu = wx.Menu()
action_menu.AppendCheckItem(ID_VetoTree, "Veto Floating Of Tree Pane")
@@ -1072,7 +1072,7 @@ class AuiFrame(wx.Frame):
self._requestPanes[ids] = pane.name
attention_menu.Append(ids, pane.caption)
- action_menu.AppendMenu(wx.ID_ANY, "Request User Attention For", attention_menu)
+ action_menu.Append(wx.ID_ANY, "Request User Attention For", attention_menu)
help_menu = wx.Menu()
help_menu.Append(wx.ID_ABOUT, "About...")
@@ -1539,7 +1539,7 @@ class AuiFrame(wx.Frame):
try:
self.gauge.Pulse()
- except wx.PyDeadObjectError:
+ except:
self.timer.Stop()
@@ -2195,9 +2195,6 @@ class AuiFrame(wx.Frame):
auibook = self._mgr.GetPane("notebook_content").window
auibook.LoadPerspective(self._nb_perspectives[event.GetId() - ID_FirstNBPerspective])
- self.gauge = ProgressGauge(auibook, size=(55, 15))
- auibook.AddControlToPage(4, self.gauge)
-
def OnGuides(self, event):
@@ -2342,19 +2339,19 @@ class AuiFrame(wx.Frame):
m1 = wx.MenuItem(menuPopup, 10001, "Drop Down Item 1")
m1.SetBitmap(bmp)
- menuPopup.AppendItem(m1)
+ menuPopup.Append(m1)
m2 = wx.MenuItem(menuPopup, 10002, "Drop Down Item 2")
m2.SetBitmap(bmp)
- menuPopup.AppendItem(m2)
+ menuPopup.Append(m2)
m3 = wx.MenuItem(menuPopup, 10003, "Drop Down Item 3")
m3.SetBitmap(bmp)
- menuPopup.AppendItem(m3)
+ menuPopup.Append(m3)
m4 = wx.MenuItem(menuPopup, 10004, "Drop Down Item 4")
m4.SetBitmap(bmp)
- menuPopup.AppendItem(m4)
+ menuPopup.Append(m4)
# line up our menu with the button
rect = tb.GetToolRect(event.GetId())
@@ -2521,7 +2518,8 @@ class AuiFrame(wx.Frame):
wx.OK | wx.ICON_INFORMATION)
if wx.Platform != '__WXMAC__':
- dlg.SetFont(wx.Font(8, wx.NORMAL, wx.NORMAL, wx.NORMAL, False))
+ dlg.SetFont(wx.Font(8, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL,
+ False, '', wx.FONTENCODING_DEFAULT))
dlg.ShowModal()
dlg.Destroy()
@@ -2611,7 +2609,7 @@ class AuiFrame(wx.Frame):
ctrl.AddPage(self.CreateHTMLCtrl(ctrl), "Welcome to AUI", False, page_bmp)
panel = wx.Panel(ctrl, -1)
- flex = wx.FlexGridSizer(0, 2)
+ flex = wx.FlexGridSizer(rows=0, cols=2, vgap=2, hgap=2)
flex.Add((5, 5))
flex.Add((5, 5))
flex.Add(wx.StaticText(panel, -1, "wxTextCtrl:"), 0, wx.ALL|wx.ALIGN_CENTRE, 5)
diff --git a/demo/agw/AquaButton.py b/demo/agw/AquaButton.py
index a5e7cc69..1d42dd70 100644
--- a/demo/agw/AquaButton.py
+++ b/demo/agw/AquaButton.py
@@ -19,7 +19,7 @@ try:
except ImportError: # if it's not there locally, try the wxPython lib.
import wx.lib.agw.aquabutton as AB
-
+
class AquaButtonDemo(wx.Panel):
def __init__(self, parent, log):
@@ -29,37 +29,37 @@ class AquaButtonDemo(wx.Panel):
self.mainPanel = wx.Panel(self)
self.mainPanel.SetBackgroundColour(wx.WHITE)
-
+
# Initialize AquaButton 1 (with image)
bitmap = wx.Bitmap(
- os.path.normpath(os.path.join(bitmapDir, "aquabutton.png")),
+ os.path.normpath(os.path.join(bitmapDir, "aquabutton.png")),
wx.BITMAP_TYPE_PNG)
self.btn1 = AB.AquaButton(self.mainPanel, -1, bitmap, "AquaButton")
# Initialize AquaButton 2 (no image)
self.btn2 = AB.AquaButton(self.mainPanel, -1, None, "Hello World!")
- self.backColour = wx.ColourPickerCtrl(self.mainPanel, col=self.btn2.GetBackgroundColour())
- self.hoverColour = wx.ColourPickerCtrl(self.mainPanel, col=self.btn2.GetHoverColour())
- self.textColour = wx.ColourPickerCtrl(self.mainPanel, col=self.btn2.GetForegroundColour())
+ self.backColour = wx.ColourPickerCtrl(self.mainPanel, colour=self.btn2.GetBackgroundColour())
+ self.hoverColour = wx.ColourPickerCtrl(self.mainPanel, colour=self.btn2.GetHoverColour())
+ self.textColour = wx.ColourPickerCtrl(self.mainPanel, colour=self.btn2.GetForegroundColour())
self.pulseCheck = wx.CheckBox(self.mainPanel, -1, "Pulse On Focus")
self.DoLayout()
self.BindEvents()
-
+
def DoLayout(self):
frameSizer = wx.BoxSizer(wx.VERTICAL)
- mainSizer = wx.BoxSizer(wx.VERTICAL)
+ mainSizer = wx.BoxSizer(wx.VERTICAL)
btnSizer = wx.FlexGridSizer(2, 2, 15, 15)
colourSizer = wx.FlexGridSizer(2, 3, 1, 10)
btnSizer.Add(self.btn1, 0, wx.EXPAND|wx.ALIGN_CENTER_VERTICAL)
btnSizer.Add(self.pulseCheck, 0, wx.ALIGN_CENTER_VERTICAL)
-
+
btnSizer.Add(self.btn2, 0, wx.EXPAND|wx.ALIGN_CENTER_VERTICAL)
-
+
labelBack = wx.StaticText(self.mainPanel, -1, "Background Colour")
labelHover = wx.StaticText(self.mainPanel, -1, "Hover Colour")
labelText = wx.StaticText(self.mainPanel, -1, "Text Colour")
@@ -74,17 +74,17 @@ class AquaButtonDemo(wx.Panel):
btnSizer.Add(colourSizer, 0, wx.EXPAND|wx.ALIGN_CENTER_VERTICAL)
label1 = wx.StaticText(self.mainPanel, -1, "Welcome to the AquaButton demo for wxPython!")
-
+
mainSizer.Add(label1, 0, wx.EXPAND|wx.LEFT|wx.RIGHT|wx.TOP, 10)
mainSizer.Add(btnSizer, 1, wx.EXPAND|wx.ALL, 30)
- boldFont = wx.SystemSettings_GetFont(wx.SYS_DEFAULT_GUI_FONT)
+ boldFont = wx.SystemSettings.GetFont(wx.SYS_DEFAULT_GUI_FONT)
boldFont.SetWeight(wx.BOLD)
-
+
for child in self.mainPanel.GetChildren():
if isinstance(child, wx.StaticText):
child.SetFont(boldFont)
-
+
self.mainPanel.SetSizer(mainSizer)
mainSizer.Layout()
frameSizer.Add(self.mainPanel, 1, wx.EXPAND)
@@ -116,13 +116,13 @@ class AquaButtonDemo(wx.Panel):
else:
self.btn2.SetForegroundColour(colour)
-
+
def OnButton(self, event):
obj = event.GetEventObject()
self.log.write("You clicked %s\n"%obj.GetLabel())
-
+
#----------------------------------------------------------------------
def runTest(frame, nb, log):
diff --git a/demo/agw/BalloonTip.py b/demo/agw/BalloonTip.py
index c61d500b..3c03e793 100644
--- a/demo/agw/BalloonTip.py
+++ b/demo/agw/BalloonTip.py
@@ -9,6 +9,7 @@
import wx
from wx.lib.stattext import GenStaticText as StaticText
from wx.lib.buttons import GenBitmapButton as BitmapButton
+from wx.adv import TaskBarIcon as TaskBarIcon
import os
import sys
@@ -35,7 +36,7 @@ ArtIDs = [ "wx.ART_HELP_PAGE",
"wx.ART_QUESTION",
"wx.ART_WARNING",
"wx.ART_INFORMATION",
- "wx.ART_HELP",
+ "wx.ART_HELP",
]
@@ -49,18 +50,18 @@ class BalloonTipDemo(wx.Frame):
wx.Frame.__init__(self, parent, title="BalloonTip wxPython Demo ;-)")
- self.statusbar = self.CreateStatusBar(2, wx.ST_SIZEGRIP)
+ self.statusbar = self.CreateStatusBar(2)
self.statusbar.SetStatusWidths([-2, -1])
# statusbar fields
statusbar_fields = [("Welcome To WxPython " + wx.VERSION_STRING),
("BalloonTip Demo")]
-
+
for i in range(len(statusbar_fields)):
self.statusbar.SetStatusText(statusbar_fields[i], i)
self.SetIcon(images.Mondrian.GetIcon())
self.SetMenuBar(self.CreateMenuBar())
-
+
panel = wx.Panel(self, -1)
mainsizer = wx.FlexGridSizer(3, 4, hgap=2, vgap=2)
@@ -81,40 +82,40 @@ class BalloonTipDemo(wx.Frame):
# Add A ListBox
listbox = wx.ListBox(panel, -1, choices=samplelist, style=wx.LB_SINGLE)
# Add A TreeCtrl
- isz = (16,16)
+ isz = (16,16)
treecontrol = wx.TreeCtrl(panel, -1)
il = wx.ImageList(isz[0], isz[1])
- fldridx = il.Add(wx.ArtProvider_GetBitmap(wx.ART_FOLDER, wx.ART_OTHER, isz))
- fldropenidx = il.Add(wx.ArtProvider_GetBitmap(wx.ART_FILE_OPEN, wx.ART_OTHER, isz))
- fileidx = il.Add(wx.ArtProvider_GetBitmap(wx.ART_REPORT_VIEW, wx.ART_OTHER, isz))
+ fldridx = il.Add(wx.ArtProvider.GetBitmap(wx.ART_FOLDER, wx.ART_OTHER, isz))
+ fldropenidx = il.Add(wx.ArtProvider.GetBitmap(wx.ART_FILE_OPEN, wx.ART_OTHER, isz))
+ fileidx = il.Add(wx.ArtProvider.GetBitmap(wx.ART_REPORT_VIEW, wx.ART_OTHER, isz))
treecontrol.SetImageList(il)
self.il = il
root = treecontrol.AddRoot("ROOT")
- treecontrol.SetPyData(root, None)
+ treecontrol.SetItemData(root, None)
treecontrol.SetItemImage(root, fldridx, wx.TreeItemIcon_Normal)
treecontrol.SetItemImage(root, fldropenidx, wx.TreeItemIcon_Expanded)
for ii in range(11):
child = treecontrol.AppendItem(root, samplelist[ii])
- treecontrol.SetPyData(child, None)
+ treecontrol.SetItemData(child, None)
treecontrol.SetItemImage(child, fldridx, wx.TreeItemIcon_Normal)
treecontrol.SetItemImage(child, fldropenidx, wx.TreeItemIcon_Selected)
- # Add A Slider
- slider = wx.Slider(panel, -1, 25, 1, 100,
+ # Add A Slider
+ slider = wx.Slider(panel, -1, 25, 1, 100,
style=wx.SL_HORIZONTAL | wx.SL_AUTOTICKS)# | wx.SL_LABELS)
- slider.SetTickFreq(5, 1)
+ slider.SetTickFreq(5)
# Add Another TextCtrl
textctrl2 = wx.TextCtrl(panel, -1, "Another TextCtrl")
# Add A GenStaticText
statictext = StaticText(panel, -1, "Hello World!")
statictext.SetFont(wx.Font(9, wx.SWISS, wx.NORMAL, wx.BOLD, False))
- bmp = wx.ArtProvider_GetBitmap(wx.ART_INFORMATION,
+ bmp = wx.ArtProvider.GetBitmap(wx.ART_INFORMATION,
wx.ART_TOOLBAR, (16,16))
# Add A GenBitmapButton
bitmapbutton = BitmapButton(panel, -1, bmp)
button2 = wx.Button(panel, -1, "Disable BalloonTip")
- tbicon = wx.TaskBarIcon()
+ tbicon = TaskBarIcon()
tbicon.SetIcon(images.Mondrian.GetIcon())
controls = list(panel.GetChildren())
@@ -134,7 +135,7 @@ class BalloonTipDemo(wx.Frame):
mainsizer.Add(statictext, 0, wx.EXPAND | wx.ALIGN_CENTER | wx.ALL, 10)
mainsizer.Add(bitmapbutton, 0, wx.ALL, 10)
mainsizer.Add(button2, 0, wx.ALL, 10)
-
+
panel.SetSizer(mainsizer)
mainsizer.Layout()
@@ -145,13 +146,13 @@ class BalloonTipDemo(wx.Frame):
# Declare The BalloonTip Top-Left Icons
icons = []
for ii in xrange(4):
- bmp = wx.ArtProvider_GetBitmap(eval(ArtIDs[ii]), wx.ART_TOOLBAR, (16,16))
+ bmp = wx.ArtProvider.GetBitmap(eval(ArtIDs[ii]), wx.ART_TOOLBAR, (16,16))
icons.append(bmp)
-
+
icons.extend([None]*5)
for ii in xrange(4, 9):
- bmp = wx.ArtProvider_GetBitmap(eval(ArtIDs[ii]), wx.ART_TOOLBAR, (16,16))
+ bmp = wx.ArtProvider.GetBitmap(eval(ArtIDs[ii]), wx.ART_TOOLBAR, (16,16))
icons.append(bmp)
# Declare The BalloonTip Top Titles
@@ -164,12 +165,12 @@ class BalloonTipDemo(wx.Frame):
fontthree = wx.Font(9, wx.SWISS, wx.ITALIC, wx.NORMAL, False)
fontfour = wx.Font(8, wx.SWISS, wx.NORMAL, wx.BOLD, True)
- # Declare The BalloonTip Top Titles Fonts
+ # Declare The BalloonTip Top Titles Fonts
titlefonts = [None, None, fontone, None, fonttwo, fontthree, None, None,
None, fontfour, fontthree, None, None]
# Declare The BalloonTip Top Titles Colours
- titlecolours = [None, None, wx.WHITE, wx.NamedColour("YELLOW"), None, wx.WHITE,
+ titlecolours = [None, None, wx.WHITE, wx.YELLOW, None, wx.WHITE,
wx.BLUE, wx.RED, None, None, wx.LIGHT_GREY, None, None]
# Declare The BalloonTip Messages
@@ -250,11 +251,11 @@ class BalloonTipDemo(wx.Frame):
# Store The Last BalloonTip Reference To Enable/Disable Globall The
# BalloonTip. You Can Store Any Of Them, Not Necessarily The Last One.
- self.lasttip = tipballoon
+ self.lasttip = tipballoon
self.gauge = gauge
self.count = 0
-
- button2.Bind(wx.EVT_BUTTON, self.OnActivateBalloon)
+
+ button2.Bind(wx.EVT_BUTTON, self.OnActivateBalloon)
self.Bind(wx.EVT_IDLE, self.IdleHandler)
frameSizer = wx.BoxSizer(wx.VERTICAL)
@@ -263,28 +264,28 @@ class BalloonTipDemo(wx.Frame):
frameSizer.Layout()
self.Fit()
- self.CenterOnParent()
+ self.CenterOnParent()
def IdleHandler(self, event):
-
+
self.count = self.count + 1
if self.count >= 50:
self.count = 0
self.gauge.SetValue(self.count)
-
+
def CreateMenuBar(self):
# Make a menubar
file_menu = wx.Menu()
help_menu = wx.Menu()
-
+
TEST_QUIT = wx.NewId()
TEST_ABOUT = wx.NewId()
-
+
file_menu.Append(TEST_QUIT, "&Exit")
help_menu.Append(TEST_ABOUT, "&About")
@@ -315,30 +316,30 @@ class BalloonTipDemo(wx.Frame):
"to me at the following adresses:\n\n" + \
"andrea.gavana@agip.it\n" + "andrea_gavana@tin.it\n\n" + \
"Welcome To wxPython " + wx.VERSION_STRING + "!!"
-
+
dlg = wx.MessageDialog(self, msg, "BalloonTip Demo",
wx.OK | wx.ICON_INFORMATION)
dlg.SetFont(wx.Font(8, wx.NORMAL, wx.NORMAL, wx.NORMAL, False, "Verdana"))
dlg.ShowModal()
dlg.Destroy()
-
+
def OnActivateBalloon(self, event):
button = event.GetEventObject()
label = button.GetLabel()
tips = self.lasttip
-
+
if label == "Disable BalloonTip":
button.SetLabel("Enable BalloonTip")
tips.EnableTip(False)
else:
button.SetLabel("Disable BalloonTip")
tips.EnableTip(True)
-
+
event.Skip()
-
+
#---------------------------------------------------------------------------
diff --git a/demo/agw/ButtonPanel.py b/demo/agw/ButtonPanel.py
index 7e51a733..12f1abe5 100644
--- a/demo/agw/ButtonPanel.py
+++ b/demo/agw/ButtonPanel.py
@@ -44,7 +44,7 @@ class SettingsPanel(wx.MiniFrame):
self.targetTitleBar = parent.titleBar
self.parent = parent
self.panel = wx.Panel(self, -1)
-
+
self.coloursizer_staticbox = wx.StaticBox(self.panel, -1, "Colour Options")
self.bottomsizer_staticbox = wx.StaticBox(self.panel, -1, "Size Options")
self.stylesizer_staticbox = wx.StaticBox(self.panel, -1, "ButtonPanel Styles")
@@ -54,7 +54,7 @@ class SettingsPanel(wx.MiniFrame):
self.horizontalgradient = wx.RadioButton(self.panel, -1, "Horizontal Gradient")
b = self.CreateColourBitmap(wx.BLACK)
-
+
self.bakbrush = wx.BitmapButton(self.panel, ID_BackgroundColour, b, size=wx.Size(50,25))
self.gradientfrom = wx.BitmapButton(self.panel, ID_GradientFrom, b, size=wx.Size(50,25))
self.gradientto = wx.BitmapButton(self.panel, ID_GradientTo, b, size=wx.Size(50,25))
@@ -90,13 +90,13 @@ class SettingsPanel(wx.MiniFrame):
self.Bind(wx.EVT_BUTTON, self.OnSetColour, id=ID_SelectionBrush)
self.Bind(wx.EVT_BUTTON, self.OnSetColour, id=ID_SelectionPen)
self.Bind(wx.EVT_BUTTON, self.OnSetColour, id=ID_SeparatorColour)
-
+
self.Bind(wx.EVT_SPINCTRL, self.OnSeparator, self.separatorspin)
self.Bind(wx.EVT_SPINCTRL, self.OnMargins, self.marginspin)
self.Bind(wx.EVT_SPINCTRL, self.OnPadding, self.paddingspin)
self.Bind(wx.EVT_SPINCTRL, self.OnBorder, self.borderspin)
- self.Bind(wx.EVT_CLOSE, self.OnClose)
+ self.Bind(wx.EVT_CLOSE, self.OnClose)
def __set_properties(self):
@@ -118,8 +118,8 @@ class SettingsPanel(wx.MiniFrame):
self.marginspin.SetValue(self.targetTitleBar.GetBPArt().GetMetric(bp.BP_MARGINS_SIZE).x)
self.paddingspin.SetValue(self.targetTitleBar.GetBPArt().GetMetric(bp.BP_PADDING_SIZE).x)
- self.UpdateColours()
-
+ self.UpdateColours()
+
def __do_layout(self):
@@ -145,7 +145,7 @@ class SettingsPanel(wx.MiniFrame):
stylesizer = wx.StaticBoxSizer(self.stylesizer_staticbox, wx.VERTICAL)
tophsizer = wx.BoxSizer(wx.HORIZONTAL)
tophsizer2 = wx.BoxSizer(wx.VERTICAL)
-
+
stylesizer.Add(self.defaultstyle, 0, wx.ALL|wx.EXPAND|wx.ADJUST_MINSIZE, 5)
tophsizer.Add(self.gradientstyle, 0, wx.LEFT|wx.RIGHT|wx.EXPAND|
@@ -153,7 +153,7 @@ class SettingsPanel(wx.MiniFrame):
tophsizer2.Add(self.verticalgradient, 0, wx.BOTTOM|wx.ADJUST_MINSIZE, 3)
tophsizer2.Add(self.horizontalgradient, 0, wx.ADJUST_MINSIZE, 0)
-
+
tophsizer.Add(tophsizer2, 1, wx.LEFT|wx.EXPAND|wx.ALIGN_CENTER_VERTICAL, 10)
stylesizer.Add(tophsizer, 1, wx.EXPAND, 0)
@@ -197,7 +197,7 @@ class SettingsPanel(wx.MiniFrame):
coloursizer.Add(leftsizer, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5)
coloursizer.Add((20, 20), 1, wx.EXPAND|wx.ADJUST_MINSIZE, 0)
-
+
label_6 = wx.StaticText(self.panel, -1, "Text Button Colour:")
sizer_6.Add(label_6, 0, wx.LEFT|wx.RIGHT|wx.BOTTOM|wx.ALIGN_CENTER_VERTICAL|wx.ADJUST_MINSIZE, 5)
sizer_6.Add((0, 0), 1, wx.EXPAND|wx.ADJUST_MINSIZE, 0)
@@ -268,25 +268,25 @@ class SettingsPanel(wx.MiniFrame):
def CreateColourBitmap(self, c):
-
- image = wx.EmptyImage(25, 14)
-
+
+ image = wx.Image(25, 14)
+
for x in xrange(25):
for y in xrange(14):
pixcol = c
if x == 0 or x == 24 or y == 0 or y == 13:
pixcol = wx.BLACK
-
- image.SetRGB(x, y, pixcol.Red(), pixcol.Green(), pixcol.Blue())
-
+
+ image.SetRGB(wx.Rect(0, 0, 25, 14), pixcol.Red(), pixcol.Green(), pixcol.Blue())
+
return image.ConvertToBitmap()
def UpdateColours(self):
-
+
bk = self.targetTitleBar.GetBPArt().GetColour(bp.BP_BACKGROUND_COLOUR)
self.bakbrush.SetBitmapLabel(self.CreateColourBitmap(bk))
-
+
capfrom = self.targetTitleBar.GetBPArt().GetColour(bp.BP_GRADIENT_COLOUR_FROM)
self.gradientfrom.SetBitmapLabel(self.CreateColourBitmap(capfrom))
@@ -298,7 +298,7 @@ class SettingsPanel(wx.MiniFrame):
bor = self.targetTitleBar.GetBPArt().GetColour(bp.BP_BORDER_COLOUR)
self.bordercolour.SetBitmapLabel(self.CreateColourBitmap(bor))
-
+
btntext = self.targetTitleBar.GetBPArt().GetColour(bp.BP_BUTTONTEXT_COLOUR)
self.textbuttoncolour.SetBitmapLabel(self.CreateColourBitmap(btntext))
@@ -307,7 +307,7 @@ class SettingsPanel(wx.MiniFrame):
selp = self.targetTitleBar.GetBPArt().GetColour(bp.BP_SELECTION_PEN_COLOUR)
self.selectionpen.SetBitmapLabel(self.CreateColourBitmap(selp))
-
+
sepc = self.targetTitleBar.GetBPArt().GetColour(bp.BP_SEPARATOR_COLOUR)
self.separatorcolour.SetBitmapLabel(self.CreateColourBitmap(sepc))
@@ -321,15 +321,15 @@ class SettingsPanel(wx.MiniFrame):
self.targetTitleBar.Refresh()
event.Skip()
-
- def OnGradientStyle(self, event):
+
+ def OnGradientStyle(self, event):
self.verticalgradient.Enable(True)
self.horizontalgradient.Enable(True)
self.targetTitleBar.SetStyle(bp.BP_USE_GRADIENT)
self.targetTitleBar.Refresh()
-
+
event.Skip()
@@ -338,28 +338,28 @@ class SettingsPanel(wx.MiniFrame):
self.targetTitleBar.GetBPArt().SetGradientType(bp.BP_GRADIENT_VERTICAL)
self.targetTitleBar.SetStyle(bp.BP_USE_GRADIENT)
self.targetTitleBar.Refresh()
-
+
event.Skip()
-
+
def OnHorizontalGradient(self, event):
self.targetTitleBar.GetBPArt().SetGradientType(bp.BP_GRADIENT_HORIZONTAL)
self.targetTitleBar.SetStyle(bp.BP_USE_GRADIENT)
self.targetTitleBar.Refresh()
-
+
event.Skip()
-
+
def OnSetColour(self, event):
dlg = wx.ColourDialog(self.parent)
-
+
dlg.SetTitle("Colour Picker")
-
+
if dlg.ShowModal() != wx.ID_OK:
return
-
+
var = 0
if event.GetId() == ID_BackgroundColour:
var = bp.BP_BACKGROUND_COLOUR
@@ -380,8 +380,8 @@ class SettingsPanel(wx.MiniFrame):
elif event.GetId() == ID_SeparatorColour:
var = bp.BP_SEPARATOR_COLOUR
else:
- return
-
+ return
+
self.targetTitleBar.GetBPArt().SetColour(var, dlg.GetColourData().GetColour())
self.targetTitleBar.Refresh()
self.UpdateColours()
@@ -410,7 +410,7 @@ class SettingsPanel(wx.MiniFrame):
self.parent.mainPanel.Layout()
self.parent.useredited = True
-
+
event.Skip()
@@ -422,7 +422,7 @@ class SettingsPanel(wx.MiniFrame):
self.targetTitleBar.DoLayout()
self.parent.mainPanel.Layout()
self.parent.useredited = True
-
+
event.Skip()
@@ -435,7 +435,7 @@ class SettingsPanel(wx.MiniFrame):
self.parent.mainPanel.Layout()
self.parent.useredited = True
-
+
event.Skip()
@@ -451,7 +451,7 @@ class ButtonPanelDemo(wx.Frame):
def __init__(self, parent, id=wx.ID_ANY, title="ButtonPanel wxPython Demo ;-)",
pos=wx.DefaultPosition, size=(640, 400), style=wx.DEFAULT_FRAME_STYLE):
-
+
wx.Frame.__init__(self, parent, id, title, pos, size, style)
self.useredited = False
@@ -460,7 +460,7 @@ class ButtonPanelDemo(wx.Frame):
self.SetIcon(images.Mondrian.GetIcon())
self.CreateMenuBar()
- self.statusbar = self.CreateStatusBar(2, wx.ST_SIZEGRIP)
+ self.statusbar = self.CreateStatusBar(2)
self.statusbar.SetStatusWidths([-2, -1])
# statusbar fields
statusbar_fields = [("ButtonPanel wxPython Demo, Andrea Gavana @ 02 Oct 2006"),
@@ -468,18 +468,18 @@ class ButtonPanelDemo(wx.Frame):
for i in range(len(statusbar_fields)):
self.statusbar.SetStatusText(statusbar_fields[i], i)
-
+
self.mainPanel = wx.Panel(self, -1)
self.logtext = wx.TextCtrl(self.mainPanel, -1, "", style=wx.TE_MULTILINE|wx.TE_READONLY)
-
- vSizer = wx.BoxSizer(wx.VERTICAL)
- self.mainPanel.SetSizer(vSizer)
+
+ vSizer = wx.BoxSizer(wx.VERTICAL)
+ self.mainPanel.SetSizer(vSizer)
self.alignments = [bp.BP_ALIGN_LEFT, bp.BP_ALIGN_RIGHT, bp.BP_ALIGN_TOP, bp.BP_ALIGN_BOTTOM]
-
+
self.alignment = bp.BP_ALIGN_LEFT
self.agwStyle = bp.BP_USE_GRADIENT
-
+
self.titleBar = bp.ButtonPanel(self.mainPanel, -1, "A Simple Test & Demo",
agwStyle=self.agwStyle, alignment=self.alignment)
@@ -491,87 +491,87 @@ class ButtonPanelDemo(wx.Frame):
]
self.CreateButtons()
self.SetProperties()
-
-
+
+
def CreateMenuBar(self):
mb = wx.MenuBar()
-
+
file_menu = wx.Menu()
-
+
item = wx.MenuItem(file_menu, wx.ID_ANY, "&Quit")
- file_menu.AppendItem(item)
+ file_menu.Append(item)
self.Bind(wx.EVT_MENU, self.OnClose, item)
edit_menu = wx.Menu()
item = wx.MenuItem(edit_menu, wx.ID_ANY, "Set Bar Text")
- edit_menu.AppendItem(item)
+ edit_menu.Append(item)
self.Bind(wx.EVT_MENU, self.OnSetBarText, item)
- edit_menu.AppendSeparator()
+ edit_menu.AppendSeparator()
submenu = wx.Menu()
-
+
item = wx.MenuItem(submenu, wx.ID_ANY, "BP_ALIGN_LEFT", kind=wx.ITEM_RADIO)
- submenu.AppendItem(item)
+ submenu.Append(item)
item.Check(True)
self.Bind(wx.EVT_MENU, self.OnAlignment, item)
-
+
item = wx.MenuItem(submenu, wx.ID_ANY, "BP_ALIGN_RIGHT", kind=wx.ITEM_RADIO)
- submenu.AppendItem(item)
- self.Bind(wx.EVT_MENU, self.OnAlignment, item)
-
- item = wx.MenuItem(submenu, wx.ID_ANY, "BP_ALIGN_TOP", kind=wx.ITEM_RADIO)
- submenu.AppendItem(item)
- self.Bind(wx.EVT_MENU, self.OnAlignment, item)
-
- item = wx.MenuItem(submenu, wx.ID_ANY, "BP_ALIGN_BOTTOM", kind=wx.ITEM_RADIO)
- submenu.AppendItem(item)
+ submenu.Append(item)
self.Bind(wx.EVT_MENU, self.OnAlignment, item)
- edit_menu.AppendMenu(wx.ID_ANY, "&Alignment", submenu)
-
+ item = wx.MenuItem(submenu, wx.ID_ANY, "BP_ALIGN_TOP", kind=wx.ITEM_RADIO)
+ submenu.Append(item)
+ self.Bind(wx.EVT_MENU, self.OnAlignment, item)
+
+ item = wx.MenuItem(submenu, wx.ID_ANY, "BP_ALIGN_BOTTOM", kind=wx.ITEM_RADIO)
+ submenu.Append(item)
+ self.Bind(wx.EVT_MENU, self.OnAlignment, item)
+
+ edit_menu.Append(wx.ID_ANY, "&Alignment", submenu)
+
submenu = wx.Menu()
item = wx.MenuItem(submenu, wx.ID_ANY, "Default Style", kind=wx.ITEM_RADIO)
- submenu.AppendItem(item)
+ submenu.Append(item)
self.Bind(wx.EVT_MENU, self.OnDefaultStyle, item)
-
+
item = wx.MenuItem(submenu, wx.ID_ANY, "Gradient Style", kind=wx.ITEM_RADIO)
- submenu.AppendItem(item)
+ submenu.Append(item)
item.Check(True)
self.Bind(wx.EVT_MENU, self.OnGradientStyle, item)
-
- edit_menu.AppendMenu(wx.ID_ANY, "&Styles", submenu)
+
+ edit_menu.Append(wx.ID_ANY, "&Styles", submenu)
edit_menu.AppendSeparator()
-
+
item = wx.MenuItem(submenu, wx.ID_ANY, "Settings Panel")
- edit_menu.AppendItem(item)
+ edit_menu.Append(item)
self.Bind(wx.EVT_MENU, self.OnSettingsPanel, item)
demo_menu = wx.Menu()
-
+
item = wx.MenuItem(demo_menu, wx.ID_ANY, "Default Demo", kind=wx.ITEM_RADIO)
- demo_menu.AppendItem(item)
+ demo_menu.Append(item)
self.Bind(wx.EVT_MENU, self.OnDefaultDemo, item)
item = wx.MenuItem(demo_menu, wx.ID_ANY, "Button Only Demo", kind=wx.ITEM_RADIO)
- demo_menu.AppendItem(item)
+ demo_menu.Append(item)
self.Bind(wx.EVT_MENU, self.OnButtonOnly, item)
-
+
help_menu = wx.Menu()
item = wx.MenuItem(help_menu, wx.ID_ANY, "&About...")
- help_menu.AppendItem(item)
+ help_menu.Append(item)
self.Bind(wx.EVT_MENU, self.OnAbout, item)
-
+
mb.Append(file_menu, "&File")
mb.Append(edit_menu, "&Edit")
mb.Append(demo_menu, "&Demo")
mb.Append(help_menu, "&Help")
-
+
self.SetMenuBar(mb)
@@ -588,30 +588,30 @@ class ButtonPanelDemo(wx.Frame):
self.titleBar = bp.ButtonPanel(self.mainPanel, -1, "A Simple Test & Demo",
agwStyle=self.agwStyle, alignment=self.alignment)
self.SetProperties()
-
+
self.indices = []
-
+
for count, png in enumerate(self.pngs):
shortHelp = "Button %d"%(count+1)
-
+
if count < 2:
# First 2 buttons are togglebuttons
kind = wx.ITEM_CHECK
longHelp = "ButtonPanel Toggle Button No %d"%(count+1)
else:
kind = wx.ITEM_NORMAL
- longHelp = "Simple Button without label No %d"%(count+1)
+ longHelp = "Simple Button without label No %d"%(count+1)
btn = bp.ButtonInfo(self.titleBar, wx.NewId(),
png[0], kind=kind,
shortHelp=shortHelp, longHelp=longHelp)
-
+
self.titleBar.AddButton(btn)
self.Bind(wx.EVT_BUTTON, self.OnButton, id=btn.GetId())
-
+
self.indices.append(btn.GetId())
-
+
if count < 2:
# First 2 buttons have also a text
btn.SetText(png[1])
@@ -619,30 +619,30 @@ class ButtonPanelDemo(wx.Frame):
if count == 2:
# Append a separator after the second button
self.titleBar.AddSeparator()
-
+
if count == 1:
# Add a wx.TextCtrl to ButtonPanel
self.titleBar.AddControl(wx.TextCtrl(self.titleBar, -1, "Hello wxPython!"))
btn.SetTextAlignment(bp.BP_BUTTONTEXT_ALIGN_RIGHT)
- # Add a wx.Choice to ButtonPanel
+ # Add a wx.Choice to ButtonPanel
self.titleBar.AddControl(wx.Choice(self.titleBar, -1,
choices=["Hello", "From", "wxPython!"]))
-
+
self.strings = ["First", "Second", "Third", "Fourth"]
- self.ChangeLayout()
+ self.ChangeLayout()
self.Thaw()
self.titleBar.DoLayout()
self.created = True
-
+
def ButtonOnly(self):
-
+
# Here we (re)create the buttons for the button-only demo
self.Freeze()
-
+
if self.created:
sizer = self.mainPanel.GetSizer()
sizer.Detach(0)
@@ -654,15 +654,15 @@ class ButtonPanelDemo(wx.Frame):
# Buttons are created completely random, with random images, toggle behavior
# and text
-
+
self.indices = []
-
+
for count in xrange(8):
itemImage = random.randint(0, 3)
hasText = random.randint(0, 1)
itemKind = random.randint(0, 1)
-
+
btn = bp.ButtonInfo(self.titleBar, wx.NewId(), self.pngs[itemImage][0],
kind=itemKind)
@@ -674,30 +674,30 @@ class ButtonPanelDemo(wx.Frame):
self.titleBar.AddButton(btn)
self.Bind(wx.EVT_BUTTON, self.OnButton, id=btn.GetId())
-
+
self.indices.append(btn.GetId())
if count in [0, 3, 5]:
self.titleBar.AddSeparator()
-
+
self.strings = ["First", "Second", "Third", "Fourth", "Fifth", "Sixth", "Seventh", "Eighth"]
- self.ChangeLayout()
+ self.ChangeLayout()
self.Thaw()
self.titleBar.DoLayout()
-
+
def ChangeLayout(self):
-
+
# Change the layout after a switch in ButtonPanel alignment
self.Freeze()
-
+
if self.alignment in [bp.BP_ALIGN_LEFT, bp.BP_ALIGN_RIGHT]:
vSizer = wx.BoxSizer(wx.VERTICAL)
else:
vSizer = wx.BoxSizer(wx.HORIZONTAL)
-
- self.mainPanel.SetSizer(vSizer)
+
+ self.mainPanel.SetSizer(vSizer)
vSizer.Add(self.titleBar, 0, wx.EXPAND)
vSizer.Add((20, 20))
@@ -706,18 +706,18 @@ class ButtonPanelDemo(wx.Frame):
vSizer.Layout()
self.mainPanel.Layout()
self.Thaw()
-
+
def SetProperties(self):
# No resetting if the user is using the Settings Panel
if self.useredited:
return
-
+
# Sets the colours for the two demos: called only if the user didn't
# modify the colours and sizes using the Settings Panel
bpArt = self.titleBar.GetBPArt()
-
+
if self.agwStyle & bp.BP_USE_GRADIENT:
# set the colour the text is drawn with
bpArt.SetColour(bp.BP_TEXT_COLOUR, wx.WHITE)
@@ -733,11 +733,11 @@ class ButtonPanelDemo(wx.Frame):
bpArt.SetColour(bp.BP_SEPARATOR_COLOUR,
bp.BrightenColour(wx.Colour(60, 11, 112), 0.85))
bpArt.SetColour(bp.BP_SELECTION_BRUSH_COLOUR, wx.Colour(225, 225, 255))
- bpArt.SetColour(bp.BP_SELECTION_PEN_COLOUR, wx.SystemSettings_GetColour(wx.SYS_COLOUR_ACTIVECAPTION))
+ bpArt.SetColour(bp.BP_SELECTION_PEN_COLOUR, wx.SystemSettings.GetColour(wx.SYS_COLOUR_ACTIVECAPTION))
else:
- background = self.titleBar.GetBackgroundColour()
+ background = self.titleBar.GetBackgroundColour()
bpArt.SetColour(bp.BP_TEXT_COLOUR, wx.BLUE)
bpArt.SetColour(bp.BP_BORDER_COLOUR,
bp.BrightenColour(background, 0.85))
@@ -748,30 +748,30 @@ class ButtonPanelDemo(wx.Frame):
bpArt.SetColour(bp.BP_SELECTION_PEN_COLOUR, wx.Colour(206, 206, 195))
self.titleBar.SetStyle(self.agwStyle)
-
-
+
+
def OnAlignment(self, event):
-
+
# Here we change the alignment property of ButtonPanel
current = event.GetId()
item = self.GetMenuBar().FindItemById(current)
alignment = getattr(bp, item.GetLabel())
self.alignment = alignment
- self.ChangeLayout()
+ self.ChangeLayout()
self.titleBar.SetAlignment(alignment)
self.mainPanel.Layout()
-
+
event.Skip()
def OnDefaultStyle(self, event):
-
+
# Restore the ButtonPanel default style (no gradient)
self.agwStyle = bp.BP_DEFAULT_STYLE
self.SetProperties()
- event.Skip()
+ event.Skip()
def OnGradientStyle(self, event):
@@ -780,11 +780,11 @@ class ButtonPanelDemo(wx.Frame):
self.agwStyle = bp.BP_USE_GRADIENT
self.SetProperties()
- event.Skip()
+ event.Skip()
def OnDefaultDemo(self, event):
-
+
# Reload the default startup demo
self.CreateButtons()
event.Skip()
@@ -795,13 +795,13 @@ class ButtonPanelDemo(wx.Frame):
# Reload the button-only demo
self.ButtonOnly()
event.Skip()
-
-
+
+
def OnButton(self, event):
btn = event.GetId()
indx = self.indices.index(btn)
-
+
self.logtext.AppendText("Event Fired From " + self.strings[indx] + " Button\n")
event.Skip()
@@ -810,9 +810,9 @@ class ButtonPanelDemo(wx.Frame):
dlg = wx.TextEntryDialog(self, "Enter The Text You Wish To Display On The Bar (Clear If No Text):",
"Set Text", self.titleBar.GetBarText())
-
+
if dlg.ShowModal() == wx.ID_OK:
-
+
val = dlg.GetValue()
self.titleBar.SetBarText(val)
self.titleBar.DoLayout()
@@ -831,7 +831,7 @@ class ButtonPanelDemo(wx.Frame):
def OnClose(self, event):
-
+
self.Destroy()
event.Skip()
@@ -845,11 +845,11 @@ class ButtonPanelDemo(wx.Frame):
"andrea.gavana@gmail.com\n" + "andrea.gavana@maerskoil.com\n\n" + \
"Based On Eran C++ Implementation (wxWidgets Forum).\n\n" + \
"Welcome To wxPython " + wx.VERSION_STRING + "!!"
-
+
dlg = wx.MessageDialog(self, msg, "ButtonPanel wxPython Demo",
wx.OK | wx.ICON_INFORMATION)
dlg.ShowModal()
- dlg.Destroy()
+ dlg.Destroy()
#----------------------------------------------------------------------
@@ -877,15 +877,12 @@ def runTest(frame, nb, log):
#----------------------------------------------------------------------
-
overview = bp.__doc__
-
if __name__ == '__main__':
import sys,os
import run
run.main(['', os.path.basename(sys.argv[0])] + sys.argv[1:])
-
diff --git a/demo/agw/FlatMenu.py b/demo/agw/FlatMenu.py
index e3d044a5..fde6812f 100644
--- a/demo/agw/FlatMenu.py
+++ b/demo/agw/FlatMenu.py
@@ -27,7 +27,7 @@ except ImportError: # if it's not there locally, try the wxPython lib.
import images
if wx.VERSION >= (2,7,0,0):
- import wx.aui as AUI
+ import wx.lib.agw.aui as AUI
AuiPaneInfo = AUI.AuiPaneInfo
AuiManager = AUI.AuiManager
_hasAUI = True
@@ -76,14 +76,14 @@ def switchRGBtoBGR(colour):
def CreateBackgroundBitmap():
mem_dc = wx.MemoryDC()
- bmp = wx.EmptyBitmap(200, 300)
+ bmp = wx.Bitmap(200, 300)
mem_dc.SelectObject(bmp)
mem_dc.Clear()
-
+
# colour the menu face with background colour
- top = wx.NamedColour("blue")
- bottom = wx.NamedColour("light blue")
+ top = wx.Colour("blue")
+ bottom = wx.Colour("light blue")
filRect = wx.Rect(0, 0, 200, 300)
mem_dc.GradientFillConcentric(filRect, top, bottom, wx.Point(100, 150))
@@ -96,7 +96,7 @@ def CreateBackgroundBitmap():
class FM_MyRenderer(FM.FMRenderer):
""" My custom style. """
-
+
def __init__(self):
FM.FMRenderer.__init__(self)
@@ -104,13 +104,13 @@ class FM_MyRenderer(FM.FMRenderer):
def DrawMenuButton(self, dc, rect, state):
"""Draws the highlight on a FlatMenu"""
-
+
self.DrawButton(dc, rect, state)
-
-
+
+
def DrawMenuBarButton(self, dc, rect, state):
"""Draws the highlight on a FlatMenuBar"""
-
+
self.DrawButton(dc, rect, state)
@@ -172,17 +172,17 @@ class FlatMenuDemo(wx.Frame):
wx.NO_FULL_REPAINT_ON_RESIZE)
self.SetIcon(images.Mondrian.GetIcon())
- wx.SystemOptions_SetOption("msw.remap", "0")
+ wx.SystemOptions.SetOption("msw.remap", "0")
self.SetTitle("FlatMenu wxPython Demo ;-D")
if _hasAUI:
self._mgr = AuiManager()
self._mgr.SetManagedWindow(self)
-
+
self._popUpMenu = None
mainSizer = wx.BoxSizer(wx.VERTICAL)
-
+
# Create a main panel and place some controls on it
mainPanel = wx.Panel(self, wx.ID_ANY)
@@ -198,7 +198,7 @@ class FlatMenuDemo(wx.Frame):
# Add log window
self.log = log
-
+
hs = wx.BoxSizer(wx.HORIZONTAL)
btn = wx.Button(mainPanel, wx.ID_ANY, "Press me for pop up menu!")
hs.Add(btn, 0, wx.ALL, 5)
@@ -210,11 +210,11 @@ class FlatMenuDemo(wx.Frame):
hs.Add(btn, 0, wx.ALL, 5)
panelSizer.Add(hs, 0, wx.ALL, 5)
-
+
# Connect a button
btn.Bind(wx.EVT_BUTTON, self.OnLongButtonClicked)
- statusbar = self.CreateStatusBar(2, wx.ST_SIZEGRIP)
+ statusbar = self.CreateStatusBar(2)
statusbar.SetStatusWidths([-2, -1])
# statusbar fields
statusbar_fields = [("FlatMenu wxPython Demo, Andrea Gavana @ 01 Nov 2006"),
@@ -222,7 +222,7 @@ class FlatMenuDemo(wx.Frame):
for i in range(len(statusbar_fields)):
statusbar.SetStatusText(statusbar_fields[i], i)
-
+
self.CreateMenu()
self.ConnectEvents()
@@ -235,14 +235,14 @@ class FlatMenuDemo(wx.Frame):
# AUI support
self._mgr.AddPane(mainPanel, AuiPaneInfo().Name("main_panel").
CenterPane())
-
+
self._mgr.AddPane(minibarPanel, AuiPaneInfo().Name("minibar_panel").
Caption("Minibar Preview").Right().
MinSize(wx.Size(150, 200)))
-
+
self._mb.PositionAUI(self._mgr)
self._mgr.Update()
-
+
ArtManager.Get().SetMBVerticalGradient(True)
ArtManager.Get().SetRaiseToolbar(False)
@@ -250,8 +250,8 @@ class FlatMenuDemo(wx.Frame):
self._mtb.Refresh()
self.CenterOnScreen()
-
-
+
+
def CreateMinibar(self, parent):
# create mini toolbar
self._mtb = FM.FlatMenuBar(parent, wx.ID_ANY, 16, 6, options = FM_OPT_SHOW_TOOLBAR|FM_OPT_MINIBAR)
@@ -270,7 +270,7 @@ class FlatMenuDemo(wx.Frame):
self._mtb.AddRadioTool(wx.ID_ANY, "Zoom In", viewMagZoomBmp)
self._mtb.AddRadioTool(wx.ID_ANY, "Zoom Out", viewMagZoomOutBmp)
-
+
def CreateMenu(self):
# Create the menubar
@@ -302,7 +302,7 @@ class FlatMenuDemo(wx.Frame):
view2Bmp = wx.Bitmap(os.path.join(bitmapDir, "view_detailed.png"), wx.BITMAP_TYPE_PNG)
view3Bmp = wx.Bitmap(os.path.join(bitmapDir, "view_icon.png"), wx.BITMAP_TYPE_PNG)
view4Bmp = wx.Bitmap(os.path.join(bitmapDir, "view_multicolumn.png"), wx.BITMAP_TYPE_PNG)
-
+
# Set an icon to the exit/help/transparency menu item
exitImg = wx.Bitmap(os.path.join(bitmapDir, "exit-16.png"), wx.BITMAP_TYPE_PNG)
helpImg = wx.Bitmap(os.path.join(bitmapDir, "help-16.png"), wx.BITMAP_TYPE_PNG)
@@ -324,26 +324,26 @@ class FlatMenuDemo(wx.Frame):
item = FM.FlatMenuItem(fileMenu, MENU_SAVE, "&Save File\tCtrl+S", "Save File", wx.ITEM_NORMAL)
fileMenu.AppendItem(item)
self._mb.AddTool(MENU_SAVE, "Save File", save_bmp)
-
+
item = FM.FlatMenuItem(fileMenu, MENU_OPEN_FILE, "&Open File\tCtrl+O", "Open File", wx.ITEM_NORMAL)
fileMenu.AppendItem(item)
self._mb.AddTool(MENU_OPEN_FILE, "Open File", open_folder_bmp)
self._mb.AddSeparator() # Toolbar separator
-
+
item = FM.FlatMenuItem(fileMenu, MENU_NEW_FOLDER, "N&ew Folder\tCtrl+E", "New Folder", wx.ITEM_NORMAL)
fileMenu.AppendItem(item)
self._mb.AddTool(MENU_NEW_FOLDER, "New Folder",new_folder_bmp)
self._mb.AddSeparator() # Toobar separator
-
+
item = FM.FlatMenuItem(fileMenu, MENU_COPY, "&Copy\tCtrl+C", "Copy", wx.ITEM_NORMAL)
fileMenu.AppendItem(item)
self._mb.AddTool(MENU_COPY, "Copy", copy_bmp)
-
+
item = FM.FlatMenuItem(fileMenu, MENU_CUT, "Cut\tCtrl+X", "Cut", wx.ITEM_NORMAL)
fileMenu.AppendItem(item)
self._mb.AddTool(MENU_CUT, "Cut", cut_bmp)
-
+
item = FM.FlatMenuItem(fileMenu, MENU_PASTE, "Paste\tCtrl+V", "Paste", wx.ITEM_NORMAL, subMenuExit)
fileMenu.AppendItem(item)
self._mb.AddTool(MENU_PASTE, "Paste", paste_bmp)
@@ -353,14 +353,14 @@ class FlatMenuDemo(wx.Frame):
# Add a wx.ComboBox to FlatToolbar
combo = wx.ComboBox(self._mb, -1, choices=["Hello", "World", "wxPython"])
self._mb.AddControl(combo)
-
+
self._mb.AddSeparator() # Separator
-
+
stext = wx.StaticText(self._mb, -1, "Hello")
#stext.SetBackgroundStyle(wx.BG_STYLE_CUSTOM )
-
+
self._mb.AddControl(stext)
-
+
self._mb.AddSeparator() # Separator
# Add another couple of bitmaps
@@ -368,7 +368,7 @@ class FlatMenuDemo(wx.Frame):
self._mb.AddRadioTool(wx.ID_ANY, "View Icons", view2Bmp)
self._mb.AddRadioTool(wx.ID_ANY, "View Details", view3Bmp)
self._mb.AddRadioTool(wx.ID_ANY, "View Multicolumn", view4Bmp)
-
+
# Add non-toolbar item
item = FM.FlatMenuItem(subMenuExit, wx.ID_EXIT, "E&xit\tAlt+X", "Exit demo", wx.ITEM_NORMAL, None, exitImg)
subMenuExit.AppendItem(item)
@@ -380,11 +380,11 @@ class FlatMenuDemo(wx.Frame):
item = FM.FlatMenuItem(styleMenu, MENU_STYLE_DEFAULT, "Menu style Default\tAlt+N", "Menu style Default", wx.ITEM_RADIO)
styleMenu.AppendItem(item)
item.Check(True)
-
+
item = FM.FlatMenuItem(styleMenu, MENU_STYLE_MY, "Menu style Custom \tAlt+C", "Menu style Custom", wx.ITEM_RADIO)
styleMenu.AppendItem(item)
- item = FM.FlatMenuItem(styleMenu, MENU_STYLE_XP, "Menu style XP\tAlt+P", "Menu style XP", wx.ITEM_RADIO)
+ item = FM.FlatMenuItem(styleMenu, MENU_STYLE_XP, "Menu style XP\tAlt+P", "Menu style XP", wx.ITEM_RADIO)
styleMenu.AppendItem(item)
item = FM.FlatMenuItem(styleMenu, MENU_STYLE_2007, "Menu style 2007\tAlt+O", "Menu style 2007", wx.ITEM_RADIO)
@@ -399,21 +399,21 @@ class FlatMenuDemo(wx.Frame):
# Demonstrate how to set custom font and text colour to a FlatMenuItem
item.SetFont(wx.Font(10, wx.SWISS, wx.ITALIC, wx.BOLD, False, "Courier New"))
item.SetTextColour(wx.RED)
-
+
item.Check(True)
styleMenu.AppendItem(item)
-
+
styleMenu.AppendSeparator()
item = FM.FlatMenuItem(styleMenu, MENU_LCD_MONITOR, "Use LCD monitors option", "Instructs FlatMenu to use LCD drawings", wx.ITEM_CHECK)
styleMenu.AppendItem(item)
-
+
# Add some radio items
styleMenu.AppendSeparator()
# Add sub-menu to main menu
item = FM.FlatMenuItem(styleMenu, wx.ID_ANY, "Sub-&menu radio items", "", wx.ITEM_NORMAL, subMenu1)
styleMenu.AppendItem(item)
item.SetContextMenu(context_menu)
-
+
item = FM.FlatMenuItem(subMenu1, wx.ID_ANY, "Radio Item 1", "Radio Item 1", wx.ITEM_RADIO)
subMenu1.AppendItem(item)
@@ -431,10 +431,10 @@ class FlatMenuDemo(wx.Frame):
editMenu.AppendItem(item)
editMenu.AppendSeparator()
-
+
item = FM.FlatMenuItem(editMenu, MENU_TRANSPARENCY, "Set FlatMenu transparency...", "Sets the FlatMenu transparency",
wx.ITEM_NORMAL, None, ghostBmp)
-
+
editMenu.AppendItem(item)
# Add some dummy entries to the sub menu
@@ -442,7 +442,7 @@ class FlatMenuDemo(wx.Frame):
item = FM.FlatMenuItem(editMenu, 9001, "Sub-&menu items", "", wx.ITEM_NORMAL, subMenu)
editMenu.AppendItem(item)
- # Create the submenu items and add them
+ # Create the submenu items and add them
item = FM.FlatMenuItem(subMenu, 9002, "&Sub-menu Item 1", "", wx.ITEM_NORMAL)
subMenu.AppendItem(item)
@@ -471,7 +471,7 @@ class FlatMenuDemo(wx.Frame):
col = random.randint(0, 2)
item.SetFont(fnt)
item.SetTextColour(colours[col])
-
+
multipleMenu.AppendItem(item)
multipleMenu.SetNumberColumns(2)
@@ -487,7 +487,7 @@ class FlatMenuDemo(wx.Frame):
helpMenu.AppendItem(item)
fileMenu.SetBackgroundBitmap(CreateBackgroundBitmap())
-
+
# Add menu to the menu bar
self._mb.Append(fileMenu, "&File")
self._mb.Append(styleMenu, "&Style")
@@ -513,25 +513,25 @@ class FlatMenuDemo(wx.Frame):
self.Bind(FM.EVT_FLAT_MENU_ITEM_MOUSE_OVER, self.OnMouseOver, id=MENU_NEW_FILE)
self.Bind(FM.EVT_FLAT_MENU_ITEM_MOUSE_OUT, self.OnMouseOut, id=MENU_NEW_FILE)
-
+
self.Bind(wx.EVT_UPDATE_UI, self.OnFlatMenuCmdUI, id=20001, id2=20013)
if "__WXMAC__" in wx.Platform:
self.Bind(wx.EVT_SIZE, self.OnSize)
self.Bind(FM.EVT_FLAT_MENU_RANGE, self.OnFileHistory, id=wx.ID_FILE1, id2=wx.ID_FILE9+1)
-
-
+
+
def OnSize(self, event):
-
+
self._mgr.Update()
self.Layout()
-
+
def OnQuit(self, event):
if _hasAUI:
self._mgr.UnInit()
-
+
self.Destroy()
@@ -548,19 +548,19 @@ class FlatMenuDemo(wx.Frame):
btnSize = btn.GetSize()
btnPt = btn.GetPosition()
- # Since the btnPt (button position) is in client coordinates,
+ # Since the btnPt (button position) is in client coordinates,
# and the menu coordinates is relative to screen we convert
# the coords
btnPt = btn.GetParent().ClientToScreen(btnPt)
- # A nice feature with the Popup menu, is the ability to provide an
+ # A nice feature with the Popup menu, is the ability to provide an
# object that we wish to handle the menu events, in this case we
# pass 'self'
# if we wish the menu to appear under the button, we provide its height
self._popUpMenu.SetOwnerHeight(btnSize.y)
self._popUpMenu.Popup(wx.Point(btnPt.x, btnPt.y), self)
-
+
def OnLongButtonClicked(self, event):
# Demonstrate using the wxFlatMenu without a menu bar
@@ -573,20 +573,20 @@ class FlatMenuDemo(wx.Frame):
# The menu should be positioned at the bottom left corner of the button.
btnSize = btn.GetSize()
- # btnPt is returned relative to its parent
- # so, we need to convert it to screen
+ # btnPt is returned relative to its parent
+ # so, we need to convert it to screen
btnPt = btn.GetPosition()
btnPt = btn.GetParent().ClientToScreen(btnPt)
# if we wish the menu to appear under the button, we provide its height
self._longPopUpMenu.SetOwnerHeight(btnSize.y)
self._longPopUpMenu.Popup(wx.Point(btnPt.x, btnPt.y), self)
-
+
def CreatePopupMenu(self):
if not self._popUpMenu:
-
+
self._popUpMenu = FM.FlatMenu()
#-----------------------------------------------
# Flat Menu test
@@ -616,10 +616,10 @@ class FlatMenuDemo(wx.Frame):
menuItem = FM.FlatMenuItem(self._popUpMenu, 20004, "Sub-&menu item", "", wx.ITEM_NORMAL, subMenu)
self._popUpMenu.AppendItem(menuItem)
- # Create the submenu items and add them
+ # Create the submenu items and add them
menuItem = FM.FlatMenuItem(subMenu, 20005, "&Sub-menu Item 1", "", wx.ITEM_NORMAL)
subMenu.AppendItem(menuItem)
-
+
menuItem = FM.FlatMenuItem(subMenu, 20006, "Su&b-menu Item 2", "", wx.ITEM_NORMAL)
subMenu.AppendItem(menuItem)
@@ -629,10 +629,10 @@ class FlatMenuDemo(wx.Frame):
menuItem = FM.FlatMenuItem(subMenu, 20008, "Sub-menu Item 4", "", wx.ITEM_NORMAL)
subMenu.AppendItem(menuItem)
- # Create the submenu items and add them
+ # Create the submenu items and add them
menuItem = FM.FlatMenuItem(subSubMenu, 20009, "Sub-menu Item 1", "", wx.ITEM_NORMAL)
subSubMenu.AppendItem(menuItem)
-
+
menuItem = FM.FlatMenuItem(subSubMenu, 20010, "Sub-menu Item 2", "", wx.ITEM_NORMAL)
subSubMenu.AppendItem(menuItem)
@@ -654,11 +654,11 @@ class FlatMenuDemo(wx.Frame):
self._longPopUpMenu = FM.FlatMenu()
sub = FM.FlatMenu()
-
+
#-----------------------------------------------
# Flat Menu test
#-----------------------------------------------
-
+
for ii in xrange(30):
if ii == 0:
menuItem = FM.FlatMenuItem(self._longPopUpMenu, wx.ID_ANY, "Menu Item #%ld"%(ii+1), "", wx.ITEM_NORMAL, sub)
@@ -673,7 +673,7 @@ class FlatMenuDemo(wx.Frame):
menuItem = FM.FlatMenuItem(self._longPopUpMenu, wx.ID_ANY, "Menu Item #%ld"%(ii+1))
self._longPopUpMenu.AppendItem(menuItem)
-
+
# ------------------------------------------
# Event handlers
# ------------------------------------------
@@ -681,7 +681,7 @@ class FlatMenuDemo(wx.Frame):
def OnStyle(self, event):
eventId = event.GetId()
-
+
if eventId == MENU_STYLE_DEFAULT:
self._mb.GetRendererManager().SetTheme(FM.StyleDefault)
elif eventId == MENU_STYLE_2007:
@@ -698,17 +698,17 @@ class FlatMenuDemo(wx.Frame):
self._mb.Refresh()
self._mtb.Refresh()
self.Update()
-
+
def OnShowCustom(self, event):
self._mb.ShowCustomize(event.IsChecked())
-
+
def OnLCDMonitor(self, event):
self._mb.SetLCDMonitor(event.IsChecked())
-
+
def OnTransparency(self, event):
@@ -722,7 +722,7 @@ class FlatMenuDemo(wx.Frame):
value = dlg.GetValue()
dlg.Destroy()
-
+
try:
value = int(value)
except:
@@ -736,20 +736,20 @@ class FlatMenuDemo(wx.Frame):
wx.OK | wx.ICON_ERROR)
dlg.ShowModal()
dlg.Destroy()
-
+
ArtManager.Get().SetTransparency(value)
-
+
def OnMouseOver(self, event):
self.log.write("Received Flat menu mouse enter ID: %d\n"%(event.GetId()))
-
+
def OnMouseOut(self, event):
-
+
self.log.write("Received Flat menu mouse leave ID: %d\n"%(event.GetId()))
-
-
+
+
def OnFlatMenuCmd(self, event):
self.log.write("Received Flat menu command event ID: %d\n"%(event.GetId()))
@@ -767,9 +767,9 @@ class FlatMenuDemo(wx.Frame):
userString = ""
if dlg.ShowModal() == wx.ID_OK:
userString = dlg.GetValue()
-
+
dlg.Destroy()
-
+
return userString
@@ -798,12 +798,12 @@ class FlatMenuDemo(wx.Frame):
def OnEdit(self, event):
-
+
if event.GetId() == MENU_REMOVE_MENU:
idxStr = self.GetStringFromUser("Insert menu index to remove:")
if idxStr.strip() != "":
-
+
idx = int(idxStr)
self._mb.Remove(idx)
@@ -826,7 +826,7 @@ class FlatMenuDemo(wx.Frame):
"to Andrea Gavana at the following email addresses:\n\n" + \
"andrea.gavana@gmail.com\nandrea.gavana@maerskoil.com\n\n" + \
"Welcome to wxPython " + wx.VERSION_STRING + "!!"
-
+
dlg = wx.MessageDialog(self, msg, "FlatMenu wxPython Demo",
wx.OK | wx.ICON_INFORMATION)
dlg.ShowModal()
diff --git a/demo/agw/FlatNotebook.py b/demo/agw/FlatNotebook.py
index 8ce497f7..a33fd7de 100644
--- a/demo/agw/FlatNotebook.py
+++ b/demo/agw/FlatNotebook.py
@@ -85,7 +85,7 @@ class FlatNotebookDemo(wx.Frame):
self._ImageList.Add(images._book_green.GetBitmap())
self._ImageList.Add(images._book_blue.GetBitmap())
- self.statusbar = self.CreateStatusBar(2, wx.ST_SIZEGRIP)
+ self.statusbar = self.CreateStatusBar(2)
self.statusbar.SetStatusWidths([-2, -1])
# statusbar fields
statusbar_fields = [("FlatNotebook wxPython Demo, Andrea Gavana @ 02 Oct 2006"),
@@ -104,7 +104,7 @@ class FlatNotebookDemo(wx.Frame):
self.Bind(FNB.EVT_FLATNOTEBOOK_PAGE_CLOSING, self.OnPageClosing)
self.Bind(FNB.EVT_FLATNOTEBOOK_PAGE_DROPPED_FOREIGN, self.OnForeignDrop)
self.Bind(FNB.EVT_FLATNOTEBOOK_PAGE_DROPPED, self.OnDrop)
-
+
self.Bind(wx.EVT_UPDATE_UI, self.OnDropDownArrowUI, id=MENU_USE_DROP_ARROW_BUTTON)
self.Bind(wx.EVT_UPDATE_UI, self.OnHideNavigationButtonsUI, id=MENU_HIDE_NAV_BUTTONS)
self.Bind(wx.EVT_UPDATE_UI, self.OnAllowForeignDndUI, id=MENU_ALLOW_FOREIGN_DND)
@@ -119,139 +119,139 @@ class FlatNotebookDemo(wx.Frame):
item = wx.MenuItem(self._fileMenu, wx.ID_ANY, "&Close\tCtrl-Q", "Close demo window")
self.Bind(wx.EVT_MENU, self.OnQuit, item)
- self._fileMenu.AppendItem(item)
+ self._fileMenu.Append(item)
item = wx.MenuItem(self._editMenu, MENU_EDIT_ADD_PAGE, "New Page\tCtrl+N", "Add New Page")
self.Bind(wx.EVT_MENU, self.OnAddPage, item)
- self._editMenu.AppendItem(item)
+ self._editMenu.Append(item)
item = wx.MenuItem(self._editMenu, MENU_EDIT_DELETE_PAGE, "Delete Page\tCtrl+F4", "Delete Page")
self.Bind(wx.EVT_MENU, self.OnDeletePage, item)
- self._editMenu.AppendItem(item)
+ self._editMenu.Append(item)
item = wx.MenuItem(self._editMenu, MENU_EDIT_DELETE_ALL, "Delete All Pages", "Delete All Pages")
self.Bind(wx.EVT_MENU, self.OnDeleteAll, item)
- self._editMenu.AppendItem(item)
+ self._editMenu.Append(item)
item = wx.MenuItem(self._editMenu, MENU_EDIT_SET_SELECTION, "Set Selection", "Set Selection")
self.Bind(wx.EVT_MENU, self.OnSetSelection, item)
- self._editMenu.AppendItem(item)
+ self._editMenu.Append(item)
item = wx.MenuItem(self._editMenu, MENU_EDIT_ADVANCE_SELECTION_FWD, "Advance Selection Forward",
"Advance Selection Forward")
self.Bind(wx.EVT_MENU, self.OnAdvanceSelectionFwd, item)
- self._editMenu.AppendItem(item)
+ self._editMenu.Append(item)
item = wx.MenuItem(self._editMenu, MENU_EDIT_ADVANCE_SELECTION_BACK, "Advance Selection Backward",
"Advance Selection Backward")
self.Bind(wx.EVT_MENU, self.OnAdvanceSelectionBack, item)
- self._editMenu.AppendItem(item)
+ self._editMenu.Append(item)
item = wx.MenuItem(self._editMenu, MENU_SET_ALL_TABS_SHAPE_ANGLE, "Set an inclination of tab header borders",
"Set the shape of tab header")
self.Bind(wx.EVT_MENU, self.OnSetAllPagesShapeAngle, item)
- self._visualMenu.AppendItem(item)
+ self._visualMenu.Append(item)
item = wx.MenuItem(self._editMenu, MENU_SET_PAGE_IMAGE_INDEX, "Set image index of selected page",
"Set image index")
self.Bind(wx.EVT_MENU, self.OnSetPageImage, item)
- self._editMenu.AppendItem(item)
+ self._editMenu.Append(item)
item = wx.MenuItem(self._editMenu, MENU_SHOW_IMAGES, "Show Images", "Show Images", wx.ITEM_CHECK)
self.Bind(wx.EVT_MENU, self.OnShowImages, item)
- self._editMenu.AppendItem(item)
+ self._editMenu.Append(item)
styleMenu = wx.Menu()
item = wx.MenuItem(styleMenu, MENU_USE_DEFAULT_STYLE, "Use Default Style", "Use VC71 Style", wx.ITEM_RADIO)
self.Bind(wx.EVT_MENU, self.OnDefaultStyle, item)
- styleMenu.AppendItem(item)
+ styleMenu.Append(item)
item = wx.MenuItem(styleMenu, MENU_USE_VC71_STYLE, "Use VC71 Style", "Use VC71 Style", wx.ITEM_RADIO)
self.Bind(wx.EVT_MENU, self.OnVC71Style, item)
- styleMenu.AppendItem(item)
+ styleMenu.Append(item)
item = wx.MenuItem(styleMenu, MENU_USE_VC8_STYLE, "Use VC8 Style", "Use VC8 Style", wx.ITEM_RADIO)
self.Bind(wx.EVT_MENU, self.OnVC8Style, item)
- styleMenu.AppendItem(item)
+ styleMenu.Append(item)
item = wx.MenuItem(styleMenu, MENU_USE_FANCY_STYLE, "Use Fancy Style", "Use Fancy Style", wx.ITEM_RADIO)
self.Bind(wx.EVT_MENU, self.OnFancyStyle, item)
- styleMenu.AppendItem(item)
+ styleMenu.Append(item)
item = wx.MenuItem(styleMenu, MENU_USE_FF2_STYLE, "Use Firefox 2 Style", "Use Firefox 2 Style", wx.ITEM_RADIO)
self.Bind(wx.EVT_MENU, self.OnFF2Style, item)
- styleMenu.AppendItem(item)
-
+ styleMenu.Append(item)
+
item = wx.MenuItem(styleMenu, MENU_USE_RIBBON_STYLE, "Use Ribbon Style", "Use Ribbon Style", wx.ITEM_RADIO)
self.Bind(wx.EVT_MENU, self.OnRibbonStyle, item)
- styleMenu.AppendItem(item)
+ styleMenu.Append(item)
- self._visualMenu.AppendMenu(wx.ID_ANY, "Tabs Style", styleMenu)
+ self._visualMenu.Append(wx.ID_ANY, "Tabs Style", styleMenu)
item = wx.MenuItem(self._visualMenu, MENU_SELECT_GRADIENT_COLOUR_FROM, "Select fancy tab style 'from' colour",
"Select fancy tab style 'from' colour")
- self._visualMenu.AppendItem(item)
+ self._visualMenu.Append(item)
item = wx.MenuItem(self._visualMenu, MENU_SELECT_GRADIENT_COLOUR_TO, "Select fancy tab style 'to' colour",
"Select fancy tab style 'to' colour")
- self._visualMenu.AppendItem(item)
+ self._visualMenu.Append(item)
item = wx.MenuItem(self._visualMenu, MENU_SELECT_GRADIENT_COLOUR_BORDER, "Select fancy tab style 'border' colour",
"Select fancy tab style 'border' colour")
- self._visualMenu.AppendItem(item)
+ self._visualMenu.Append(item)
- self._editMenu.AppendSeparator()
+ self._editMenu.AppendSeparator()
self.Bind(wx.EVT_MENU_RANGE, self.OnSelectColour, id=MENU_SELECT_GRADIENT_COLOUR_FROM,
- id2=MENU_SELECT_GRADIENT_COLOUR_BORDER)
+ id2=MENU_SELECT_GRADIENT_COLOUR_BORDER)
item = wx.MenuItem(self._editMenu, MENU_HIDE_ON_SINGLE_TAB, "Hide Page Container when only one Tab",
"Hide Page Container when only one Tab", wx.ITEM_CHECK)
self.Bind(wx.EVT_MENU, self.OnStyle, item)
- self._editMenu.AppendItem(item)
-
+ self._editMenu.Append(item)
+
item = wx.MenuItem(self._editMenu, MENU_HIDE_TABS, "Hide Tabs",
"Hide Page Container allowing only keyboard navigation", wx.ITEM_CHECK)
self.Bind(wx.EVT_MENU, self.OnStyle, item)
- self._editMenu.AppendItem(item)
+ self._editMenu.Append(item)
item = wx.MenuItem(self._editMenu, MENU_NO_TABS_FOCUS, "No focus on notebook tabs",
"No focus on notebook tabs, only pages", wx.ITEM_CHECK)
self.Bind(wx.EVT_MENU, self.OnStyle, item)
- self._editMenu.AppendItem(item)
+ self._editMenu.Append(item)
item = wx.MenuItem(self._editMenu, MENU_HIDE_NAV_BUTTONS, "Hide Navigation Buttons",
"Hide Navigation Buttons", wx.ITEM_CHECK)
- self._editMenu.AppendItem(item)
+ self._editMenu.Append(item)
item = wx.MenuItem(self._editMenu, MENU_HIDE_X, "Hide X Button", "Hide X Button", wx.ITEM_CHECK)
- self._editMenu.AppendItem(item)
+ self._editMenu.Append(item)
item = wx.MenuItem(self._editMenu, MENU_SMART_TABS, "Smart tabbing", "Smart tabbing", wx.ITEM_CHECK)
- self._editMenu.AppendItem(item)
+ self._editMenu.Append(item)
self.Bind(wx.EVT_MENU, self.OnSmartTabs, item)
item.Check(False)
item = wx.MenuItem(self._editMenu, MENU_USE_DROP_ARROW_BUTTON, "Use drop down button for tab navigation",
"Use drop down arrow for quick tab navigation", wx.ITEM_CHECK)
- self._editMenu.AppendItem(item)
+ self._editMenu.Append(item)
self.Bind(wx.EVT_MENU, self.OnDropDownArrow, item)
item.Check(False)
self._editMenu.AppendSeparator()
item = wx.MenuItem(self._editMenu, MENU_TILE_HORIZONTALLY, "Tile pages horizontally",
"Tile all the panels in an horizontal sizer", wx.ITEM_RADIO)
- self._editMenu.AppendItem(item)
+ self._editMenu.Append(item)
self.Bind(wx.EVT_MENU, self.OnTile, item)
-
+
item = wx.MenuItem(self._editMenu, MENU_TILE_VERTICALLY, "Tile pages vertically",
"Tile all the panels in a vertical sizer", wx.ITEM_RADIO)
- self._editMenu.AppendItem(item)
+ self._editMenu.Append(item)
self.Bind(wx.EVT_MENU, self.OnTile, item)
item = wx.MenuItem(self._editMenu, MENU_TILE_NONE, "No tiling",
"No tiling, standard FlatNotebook behaviour", wx.ITEM_RADIO)
- self._editMenu.AppendItem(item)
+ self._editMenu.Append(item)
self.Bind(wx.EVT_MENU, self.OnTile, item)
item.Check(True)
@@ -260,95 +260,95 @@ class FlatNotebookDemo(wx.Frame):
item = wx.MenuItem(self._editMenu, wx.ID_ANY, "Use custom page",
"Shows a custom page when the main notebook has no pages left", wx.ITEM_CHECK)
- self._editMenu.AppendItem(item)
+ self._editMenu.Append(item)
self.Bind(wx.EVT_MENU, self.OnCustomPanel, item)
self._editMenu.AppendSeparator()
-
+
item = wx.MenuItem(self._editMenu, MENU_USE_MOUSE_MIDDLE_BTN, "Use Mouse Middle Button as 'X' button",
"Use Mouse Middle Button as 'X' button", wx.ITEM_CHECK)
- self._editMenu.AppendItem(item)
+ self._editMenu.Append(item)
item = wx.MenuItem(self._editMenu, MENU_DCLICK_CLOSES_TAB, "Mouse double click closes tab",
"Mouse double click closes tab", wx.ITEM_CHECK)
self.Bind(wx.EVT_MENU, self.OnDClickCloseTab, item)
- self._editMenu.AppendItem(item)
+ self._editMenu.Append(item)
item.Check(False)
self._editMenu.AppendSeparator()
item = wx.MenuItem(self._editMenu, MENU_USE_BOTTOM_TABS, "Use Bottoms Tabs", "Use Bottoms Tabs",
wx.ITEM_CHECK)
- self._editMenu.AppendItem(item)
+ self._editMenu.Append(item)
self.Bind(wx.EVT_MENU_RANGE, self.OnStyle, id=MENU_HIDE_X, id2=MENU_USE_BOTTOM_TABS)
item = wx.MenuItem(self._editMenu, MENU_ENABLE_TAB, "Enable Tab", "Enable Tab")
self.Bind(wx.EVT_MENU, self.OnEnableTab, item)
- self._editMenu.AppendItem(item)
+ self._editMenu.Append(item)
item = wx.MenuItem(self._editMenu, MENU_DISABLE_TAB, "Disable Tab", "Disable Tab")
self.Bind(wx.EVT_MENU, self.OnDisableTab, item)
- self._editMenu.AppendItem(item)
+ self._editMenu.Append(item)
item = wx.MenuItem(self._editMenu, MENU_ENABLE_DRAG_N_DROP, "Enable Drag And Drop of Tabs",
"Enable Drag And Drop of Tabs", wx.ITEM_CHECK)
- self.Bind(wx.EVT_MENU, self.OnEnableDrag, item)
- self._editMenu.AppendItem(item)
+ self.Bind(wx.EVT_MENU, self.OnEnableDrag, item)
+ self._editMenu.Append(item)
item.Check(False)
item = wx.MenuItem(self._editMenu, MENU_ALLOW_FOREIGN_DND, "Enable Drag And Drop of Tabs from foreign notebooks",
"Enable Drag And Drop of Tabs from foreign notebooks", wx.ITEM_CHECK)
self.Bind(wx.EVT_MENU, self.OnAllowForeignDnd, item)
- self._editMenu.AppendItem(item)
- item.Check(False);
+ self._editMenu.Append(item)
+ item.Check(False);
item = wx.MenuItem(self._visualMenu, MENU_DRAW_BORDER, "Draw Border around tab area",
"Draw Border around tab area", wx.ITEM_CHECK)
self.Bind(wx.EVT_MENU, self.OnStyle, item)
- self._visualMenu.AppendItem(item)
+ self._visualMenu.Append(item)
item.Check(True)
item = wx.MenuItem(self._visualMenu, MENU_DRAW_TAB_X, "Draw X button On Active Tab",
"Draw X button On Active Tab", wx.ITEM_CHECK)
self.Bind(wx.EVT_MENU, self.OnDrawTabX, item)
- self._visualMenu.AppendItem(item)
+ self._visualMenu.Append(item)
item = wx.MenuItem(self._visualMenu, MENU_SET_ACTIVE_TAB_COLOUR, "Select Active Tab Colour",
"Select Active Tab Colour")
self.Bind(wx.EVT_MENU, self.OnSelectColour, item)
- self._visualMenu.AppendItem(item)
+ self._visualMenu.Append(item)
item = wx.MenuItem(self._visualMenu, MENU_SET_TAB_AREA_COLOUR, "Select Tab Area Colour",
"Select Tab Area Colour")
self.Bind(wx.EVT_MENU, self.OnSelectColour, item)
- self._visualMenu.AppendItem(item)
+ self._visualMenu.Append(item)
item = wx.MenuItem(self._visualMenu, MENU_SET_ACTIVE_TEXT_COLOUR, "Select active tab text colour",
"Select active tab text colour")
self.Bind(wx.EVT_MENU, self.OnSelectColour, item)
- self._visualMenu.AppendItem(item)
+ self._visualMenu.Append(item)
item = wx.MenuItem(self._visualMenu, MENU_SELECT_NONACTIVE_TEXT_COLOUR,
"Select NON-active tab text colour", "Select NON-active tab text colour")
self.Bind(wx.EVT_MENU, self.OnSelectColour, item)
- self._visualMenu.AppendItem(item)
+ self._visualMenu.Append(item)
item = wx.MenuItem(self._visualMenu, MENU_GRADIENT_BACKGROUND, "Use Gradient Colouring for tab area",
"Use Gradient Colouring for tab area", wx.ITEM_CHECK)
self.Bind(wx.EVT_MENU, self.OnGradientBack, item)
- self._visualMenu.AppendItem(item)
+ self._visualMenu.Append(item)
item.Check(False)
item = wx.MenuItem(self._visualMenu, MENU_COLOURFUL_TABS, "Colourful tabs", "Colourful tabs", wx.ITEM_CHECK)
self.Bind(wx.EVT_MENU, self.OnColourfulTabs, item)
- self._visualMenu.AppendItem(item)
+ self._visualMenu.Append(item)
item.Check(False)
help_menu = wx.Menu()
item = wx.MenuItem(help_menu, wx.ID_ANY, "About...", "Shows The About Dialog")
self.Bind(wx.EVT_MENU, self.OnAbout, item)
- help_menu.AppendItem(item)
+ help_menu.Append(item)
self._menuBar.Append(self._fileMenu, "&File")
self._menuBar.Append(self._editMenu, "&Edit")
@@ -363,7 +363,7 @@ class FlatNotebookDemo(wx.Frame):
self._rmenu = wx.Menu()
item = wx.MenuItem(self._rmenu, MENU_EDIT_DELETE_PAGE, "Close Tab\tCtrl+F4", "Close Tab")
- self._rmenu.AppendItem(item)
+ self._rmenu.Append(item)
def LayoutItems(self):
@@ -376,19 +376,19 @@ class FlatNotebookDemo(wx.Frame):
self.book = FNB.FlatNotebook(self, wx.ID_ANY, agwStyle=bookStyle)
bookStyle &= ~(FNB.FNB_NODRAG)
- bookStyle |= FNB.FNB_ALLOW_FOREIGN_DND
+ bookStyle |= FNB.FNB_ALLOW_FOREIGN_DND
self.secondBook = FNB.FlatNotebook(self, wx.ID_ANY, agwStyle=bookStyle)
# Set right click menu to the notebook
self.book.SetRightClickMenu(self._rmenu)
- # Set the image list
+ # Set the image list
self.book.SetImageList(self._ImageList)
mainSizer.Add(self.book, 6, wx.EXPAND)
# Add spacer between the books
spacer = wx.Panel(self, -1)
- spacer.SetBackgroundColour(wx.SystemSettings_GetColour(wx.SYS_COLOUR_3DFACE))
+ spacer.SetBackgroundColour(wx.SystemSettings.GetColour(wx.SYS_COLOUR_3DFACE))
mainSizer.Add(spacer, 0, wx.ALL | wx.EXPAND)
mainSizer.Add(self.secondBook, 2, wx.EXPAND)
@@ -396,13 +396,13 @@ class FlatNotebookDemo(wx.Frame):
# Add some pages to the second notebook
self.Freeze()
- text = wx.TextCtrl(self.secondBook, -1, "Second Book Page 1\n", style=wx.TE_MULTILINE|wx.TE_READONLY)
+ text = wx.TextCtrl(self.secondBook, -1, "Second Book Page 1\n", style=wx.TE_MULTILINE|wx.TE_READONLY)
self.secondBook.AddPage(text, "Second Book Page 1")
text = wx.TextCtrl(self.secondBook, -1, "Second Book Page 2\n", style=wx.TE_MULTILINE|wx.TE_READONLY)
self.secondBook.AddPage(text, "Second Book Page 2")
- self.Thaw()
+ self.Thaw()
mainSizer.Layout()
self.SendSizeEvent()
@@ -414,7 +414,7 @@ class FlatNotebookDemo(wx.Frame):
eventid = event.GetId()
if eventid == MENU_HIDE_NAV_BUTTONS:
- if event.IsChecked():
+ if event.IsChecked():
# Hide the navigation buttons
style |= FNB.FNB_NO_NAV_BUTTONS
else:
@@ -429,9 +429,9 @@ class FlatNotebookDemo(wx.Frame):
style |= FNB.FNB_HIDE_ON_SINGLE_TAB
else:
style &= ~(FNB.FNB_HIDE_ON_SINGLE_TAB)
-
+
self.book.SetAGWWindowStyleFlag(style)
-
+
elif eventid == MENU_HIDE_TABS:
if event.IsChecked():
# Hide the tabs
@@ -462,7 +462,7 @@ class FlatNotebookDemo(wx.Frame):
elif eventid == MENU_USE_MOUSE_MIDDLE_BTN:
if event.IsChecked():
- style |= FNB.FNB_MOUSE_MIDDLE_CLOSES_TABS
+ style |= FNB.FNB_MOUSE_MIDDLE_CLOSES_TABS
else:
if style & FNB.FNB_MOUSE_MIDDLE_CLOSES_TABS:
style ^= FNB.FNB_MOUSE_MIDDLE_CLOSES_TABS
@@ -509,7 +509,7 @@ class FlatNotebookDemo(wx.Frame):
self.log.write('Foreign drop received\n')
self.log.write('new NB: %s || old NB: %s\n' % (event.GetNotebook(), event.GetOldNotebook()))
self.log.write('new tab: %s || old tab: %s\n' % (event.GetSelection(), event.GetOldSelection()))
-
+
def OnDrop(self, event):
@@ -555,7 +555,7 @@ class FlatNotebookDemo(wx.Frame):
style |= FNB.FNB_VC8
self.book.SetAGWWindowStyleFlag(style)
-
+
def OnRibbonStyle(self, event):
style = self.book.GetAGWWindowStyleFlag()
@@ -591,7 +591,7 @@ class FlatNotebookDemo(wx.Frame):
style |= FNB.FNB_FANCY_TABS
self.book.SetAGWWindowStyleFlag(style)
-
+
def OnSelectColour(self, event):
@@ -667,7 +667,7 @@ class FlatNotebookDemo(wx.Frame):
if dlg.ShowModal() == wx.ID_OK:
val = dlg.GetValue()
- self.book.EnableTab(int(val))
+ self.book.EnableTab(int(val))
def OnDisableTab(self, event):
@@ -677,7 +677,7 @@ class FlatNotebookDemo(wx.Frame):
if dlg.ShowModal() == wx.ID_OK:
val = dlg.GetValue()
- self.book.EnableTab(int(val), False)
+ self.book.EnableTab(int(val), False)
def OnEnableDrag(self, event):
@@ -685,7 +685,7 @@ class FlatNotebookDemo(wx.Frame):
style = self.book.GetAGWWindowStyleFlag()
style2 = self.secondBook.GetAGWWindowStyleFlag()
- if event.IsChecked():
+ if event.IsChecked():
if style & FNB.FNB_NODRAG:
style ^= FNB.FNB_NODRAG
if style2 & FNB.FNB_NODRAG:
@@ -698,16 +698,16 @@ class FlatNotebookDemo(wx.Frame):
self.secondBook.SetAGWWindowStyleFlag(style2)
- def OnAllowForeignDnd(self, event):
+ def OnAllowForeignDnd(self, event):
style = self.book.GetAGWWindowStyleFlag()
if event.IsChecked():
- style |= FNB.FNB_ALLOW_FOREIGN_DND
+ style |= FNB.FNB_ALLOW_FOREIGN_DND
else:
style &= ~(FNB.FNB_ALLOW_FOREIGN_DND)
self.book.SetAGWWindowStyleFlag(style)
- self.book.Refresh()
+ self.book.Refresh()
def OnSetAllPagesShapeAngle(self, event):
@@ -763,7 +763,7 @@ class FlatNotebookDemo(wx.Frame):
style |= FNB.FNB_X_ON_TAB
else:
if style & FNB.FNB_X_ON_TAB:
- style ^= FNB.FNB_X_ON_TAB
+ style ^= FNB.FNB_X_ON_TAB
self.book.SetAGWWindowStyleFlag(style)
@@ -771,10 +771,10 @@ class FlatNotebookDemo(wx.Frame):
def OnDClickCloseTab(self, event):
style = self.book.GetAGWWindowStyleFlag()
- if event.IsChecked():
+ if event.IsChecked():
style |= FNB.FNB_DCLICK_CLOSES_TABS
else:
- style &= ~(FNB.FNB_DCLICK_CLOSES_TABS)
+ style &= ~(FNB.FNB_DCLICK_CLOSES_TABS)
self.book.SetAGWWindowStyleFlag(style)
@@ -842,7 +842,7 @@ class FlatNotebookDemo(wx.Frame):
self.book.Tile(wx.VERTICAL)
else:
self.book.Tile(None)
-
+
def OnCustomPanel(self, event):
@@ -865,7 +865,7 @@ class FlatNotebookDemo(wx.Frame):
event.Check((style & FNB.FNB_DROPDOWN_TABS_LIST and [True] or [False])[0])
- def OnAllowForeignDndUI(self, event):
+ def OnAllowForeignDndUI(self, event):
style = self.book.GetAGWWindowStyleFlag()
event.Enable((style & FNB.FNB_NODRAG and [False] or [True])[0])
@@ -884,7 +884,7 @@ class FlatNotebookDemo(wx.Frame):
dlg = wx.MessageDialog(self, msg, "FlatNotebook wxPython Demo",
wx.OK | wx.ICON_INFORMATION)
dlg.ShowModal()
- dlg.Destroy()
+ dlg.Destroy()
class LogoPanel(wx.Panel):
@@ -901,7 +901,7 @@ class LogoPanel(wx.Panel):
self.normalfont = wx.Font(14, wx.SWISS, wx.NORMAL, wx.BOLD, True)
self.SetBackgroundStyle(wx.BG_STYLE_CUSTOM)
-
+
self.Bind(wx.EVT_PAINT, self.OnPaint)
self.Bind(wx.EVT_SIZE, self.OnSize)
@@ -910,38 +910,38 @@ class LogoPanel(wx.Panel):
event.Skip()
self.Refresh()
-
+
def OnPaint(self, event):
-
+
dc = wx.AutoBufferedPaintDC(self)
- self.DoDrawing(dc)
-
+ self.DoDrawing(dc)
+
def DoDrawing(self, dc):
dc.SetBackground(wx.WHITE_BRUSH)
dc.Clear()
-
+
w, h = self.GetClientSize()
bmpW, bmpH = self.bmp.GetWidth(), self.bmp.GetHeight()
xpos, ypos = int((w - bmpW)/2), int((h - bmpH)/2)
-
+
dc.DrawBitmap(self.bmp, xpos, ypos, True)
dc.SetFont(self.bigfont)
dc.SetTextForeground(wx.BLUE)
dc.SetBrush(wx.TRANSPARENT_BRUSH)
dc.SetPen(wx.Pen(wx.BLUE, 2))
-
+
tw, th = dc.GetTextExtent("FlatNotebook")
xpos = int((w - tw)/2)
ypos = int(h/3)
dc.DrawRoundedRectangle(xpos-5, ypos-3, tw+10, th+6, 3)
dc.DrawText("FlatNotebook", xpos, ypos)
-
+
dc.SetFont(self.normalfont)
dc.SetTextForeground(wx.RED)
tw, th = dc.GetTextExtent("Andrea Gavana")
@@ -952,9 +952,9 @@ class LogoPanel(wx.Panel):
xpos = int((w - tw)/2)
ypos = int(2*h/3 + 3*th/2)
-
+
dc.DrawText("02 Oct 2006", xpos, ypos)
-
+
#---------------------------------------------------------------------------
diff --git a/demo/agw/FloatSpin.py b/demo/agw/FloatSpin.py
index eac6ff0e..b4a6f20c 100644
--- a/demo/agw/FloatSpin.py
+++ b/demo/agw/FloatSpin.py
@@ -22,7 +22,7 @@ except ImportError: # if it's not there locally, try the wxPython lib.
class FloatSpinDemo(wx.Panel):
def __init__(self, parent, log):
-
+
wx.Panel.__init__(self, parent)
self.log = log
@@ -32,12 +32,12 @@ class FloatSpinDemo(wx.Panel):
self.sizer_8_staticbox = wx.StaticBox(self.mainpanel, -1, "Example 4")
self.sizer_4_staticbox = wx.StaticBox(self.mainpanel, -1, "Example 1")
self.helptext = wx.StaticText(self.mainpanel, -1, "Welcome to the FloatSpin Demo")
-
+
self.floatspin1 = FS.FloatSpin(self.mainpanel, -1, min_val=0, max_val=1,
increment=0.01, value=0.1, agwStyle=FS.FS_LEFT)
self.floatspin1.SetFormat("%f")
self.floatspin1.SetDigits(2)
-
+
self.setvalue1 = wx.Button(self.mainpanel, -1, "Set Value")
self.textctrlvalue1 = wx.TextCtrl(self.mainpanel, -1, "0.0")
self.setdigits1 = wx.Button(self.mainpanel, -1, "Set Digits")
@@ -53,7 +53,7 @@ class FloatSpinDemo(wx.Panel):
increment=0.1, agwStyle=FS.FS_RIGHT)
self.floatspin2.SetFormat("%e")
self.floatspin2.SetDigits(4)
-
+
self.setvalue2 = wx.Button(self.mainpanel, -1, "Set Value")
self.textctrlvalue2 = wx.TextCtrl(self.mainpanel, -1, "0.0")
self.setdigits2 = wx.Button(self.mainpanel, -1, "Set Digits")
@@ -69,7 +69,7 @@ class FloatSpinDemo(wx.Panel):
increment=0.0001, agwStyle=FS.FS_CENTRE)
self.floatspin3.SetFormat("%f")
self.floatspin3.SetDigits(5)
-
+
self.setvalue3 = wx.Button(self.mainpanel, -1, "Set Value")
self.textctrlvalue3 = wx.TextCtrl(self.mainpanel, -1, "0.01")
self.setdigits3 = wx.Button(self.mainpanel, -1, "Set Digits")
@@ -85,7 +85,7 @@ class FloatSpinDemo(wx.Panel):
increment=0.1, agwStyle=FS.FS_READONLY)
self.floatspin4.SetFormat("%G")
self.floatspin4.SetDigits(3)
-
+
self.setvalue4 = wx.Button(self.mainpanel, -1, "Set Value")
self.textctrlvalue4 = wx.TextCtrl(self.mainpanel, -1, "0.0")
self.setdigits4 = wx.Button(self.mainpanel, -1, "Set Digits")
@@ -118,19 +118,19 @@ class FloatSpinDemo(wx.Panel):
self.SetProperties()
self.DoLayout()
self.BindEvents()
-
+
def SetProperties(self):
-
+
self.helptext.SetFont(wx.Font(10, wx.MODERN, wx.NORMAL, wx.BOLD, 0, "Verdana"))
self.radioformat1.SetSelection(0)
self.radioformat2.SetSelection(2)
self.radioformat3.SetSelection(0)
self.radioformat4.SetSelection(5)
-
+
def DoLayout(self):
-
+
mainsizer = wx.BoxSizer(wx.VERTICAL)
panelsizer = wx.BoxSizer(wx.VERTICAL)
sizer_6 = wx.BoxSizer(wx.HORIZONTAL)
@@ -185,7 +185,7 @@ class FloatSpinDemo(wx.Panel):
wx.ALIGN_CENTER_VERTICAL|wx.ADJUST_MINSIZE, 0)
subright13.Add(self.textctrlincr1, 1, wx.LEFT|wx.RIGHT|wx.ALIGN_CENTER_HORIZONTAL|
wx.ALIGN_CENTER_VERTICAL|wx.ADJUST_MINSIZE, 3)
- right1.Add(subright13, 0, wx.EXPAND, 0)
+ right1.Add(subright13, 0, wx.EXPAND, 0)
right1.Add((0, 5), 0, wx.ADJUST_MINSIZE, 0)
right1.Add(self.setfont1, 0, wx.LEFT|wx.TOP|wx.BOTTOM|wx.ADJUST_MINSIZE, 3)
right1.Add((0,1), 1, wx.EXPAND)
@@ -217,7 +217,7 @@ class FloatSpinDemo(wx.Panel):
wx.ALIGN_CENTER_VERTICAL|wx.ADJUST_MINSIZE, 0)
subright23.Add(self.textctrlincr2, 1, wx.LEFT|wx.RIGHT|wx.ALIGN_CENTER_HORIZONTAL|
wx.ALIGN_CENTER_VERTICAL|wx.ADJUST_MINSIZE, 3)
- right2.Add(subright23, 0, wx.EXPAND, 0)
+ right2.Add(subright23, 0, wx.EXPAND, 0)
right2.Add((0, 5), 0, wx.ADJUST_MINSIZE, 0)
right2.Add(self.setfont2, 0, wx.LEFT|wx.TOP|wx.BOTTOM|wx.ADJUST_MINSIZE, 3)
right2.Add((0,1), 1, wx.EXPAND)
@@ -250,7 +250,7 @@ class FloatSpinDemo(wx.Panel):
wx.ALIGN_CENTER_VERTICAL|wx.ADJUST_MINSIZE, 0)
subright33.Add(self.textctrlincr3, 1, wx.LEFT|wx.RIGHT|wx.ALIGN_CENTER_HORIZONTAL|
wx.ALIGN_CENTER_VERTICAL|wx.ADJUST_MINSIZE, 3)
- right3.Add(subright33, 0, wx.EXPAND, 0)
+ right3.Add(subright33, 0, wx.EXPAND, 0)
right3.Add((0, 5), 0, wx.ADJUST_MINSIZE, 0)
right3.Add(self.setfont3, 0, wx.LEFT|wx.TOP|wx.BOTTOM|wx.ADJUST_MINSIZE, 3)
right3.Add((0,1), 1, wx.EXPAND)
@@ -282,7 +282,7 @@ class FloatSpinDemo(wx.Panel):
wx.ALIGN_CENTER_VERTICAL|wx.ADJUST_MINSIZE, 0)
subright43.Add(self.textctrlincr4, 1, wx.LEFT|wx.RIGHT|wx.ALIGN_CENTER_HORIZONTAL|
wx.ALIGN_CENTER_VERTICAL|wx.ADJUST_MINSIZE, 3)
- right4.Add(subright43, 0, wx.EXPAND, 0)
+ right4.Add(subright43, 0, wx.EXPAND, 0)
right4.Add((0, 5), 0, wx.ADJUST_MINSIZE, 0)
right4.Add(self.setfont4, 0, wx.LEFT|wx.TOP|wx.BOTTOM|wx.ADJUST_MINSIZE, 3)
right4.Add((0,1), 1, wx.EXPAND)
@@ -296,7 +296,7 @@ class FloatSpinDemo(wx.Panel):
mainsizer.Add(self.mainpanel, 1, wx.EXPAND, 0)
self.SetSizer(mainsizer)
mainsizer.Layout()
-
+
def BindEvents(self):
@@ -325,7 +325,7 @@ class FloatSpinDemo(wx.Panel):
self.floatspin2.Bind(FS.EVT_FLOATSPIN, self.OnFloatSpin)
self.floatspin3.Bind(FS.EVT_FLOATSPIN, self.OnFloatSpin)
self.floatspin4.Bind(FS.EVT_FLOATSPIN, self.OnFloatSpin)
-
+
def OnSetValue(self, event):
@@ -345,9 +345,9 @@ class FloatSpinDemo(wx.Panel):
return
floatspin.SetValue(value)
-
+
event.Skip()
-
+
def OnSetDigits(self, event):
@@ -367,9 +367,9 @@ class FloatSpinDemo(wx.Panel):
return
floatspin.SetDigits(value)
-
+
event.Skip()
-
+
def OnChangeFormat(self, event):
@@ -379,9 +379,9 @@ class FloatSpinDemo(wx.Panel):
fmt = radio.GetStringSelection()
floatspin.SetFormat(fmt)
-
+
event.Skip()
-
+
def OnSetIncrement(self, event):
@@ -410,7 +410,7 @@ class FloatSpinDemo(wx.Panel):
dlg.ShowModal()
dlg.Destroy()
return
-
+
event.Skip()
@@ -419,13 +419,13 @@ class FloatSpinDemo(wx.Panel):
btn = event.GetEventObject()
indx = self.fontbuttons.index(btn)
floatspin = self.floatspins[indx]
-
+
data = wx.FontData()
data.EnableEffects(True)
data.SetInitialFont(floatspin.GetFont())
dlg = wx.FontDialog(self, data)
-
+
if dlg.ShowModal() == wx.ID_OK:
data = dlg.GetFontData()
font = data.GetChosenFont()
@@ -433,17 +433,17 @@ class FloatSpinDemo(wx.Panel):
floatspin.SetFont(font)
floatspin.GetTextCtrl().SetForegroundColour(colour)
floatspin.Refresh()
-
+
# Don't destroy the dialog until you get everything you need from the
# dialog!
dlg.Destroy()
-
+
def OnFloatSpin(self, event):
floatspin = event.GetEventObject()
self.log.write("FloatSpin event: Value = %s\n"%floatspin.GetValue())
-
+
indx = self.floatspins.index(floatspin)
fmt = floatspin.GetFormat()
@@ -451,10 +451,10 @@ class FloatSpinDemo(wx.Panel):
currenttext = self.textvalues[indx]
strs = ("%100." + str(dgt) + fmt[1])%floatspin.GetValue()
-
+
currenttext.SetValue(strs.strip())
currenttext.Refresh()
-
+
#----------------------------------------------------------------------
diff --git a/demo/agw/FoldPanelBar.py b/demo/agw/FoldPanelBar.py
index 28377965..fd91ffbf 100644
--- a/demo/agw/FoldPanelBar.py
+++ b/demo/agw/FoldPanelBar.py
@@ -1,5 +1,5 @@
import wx
-
+import wx.adv
import os
import sys
@@ -51,12 +51,12 @@ zzW\xcff&\xb8,\x89\xa8@Q\xd6\xaaf\xdfRm,\xee\xb1BDxr#\xae\xf5|\xddo\xd6\xe2H\
\x00\x00\x00IEND\xaeB`\x82'
def GetCollapsedIconBitmap():
- return wx.BitmapFromImage(GetCollapsedIconImage())
+ return wx.Bitmap(GetCollapsedIconImage())
def GetCollapsedIconImage():
import cStringIO
stream = cStringIO.StringIO(GetCollapsedIconData())
- return wx.ImageFromStream(stream)
+ return wx.Image(stream)
#----------------------------------------------------------------------
def GetExpandedIconData():
@@ -83,12 +83,12 @@ def GetExpandedIconData():
`\x82'
def GetExpandedIconBitmap():
- return wx.BitmapFromImage(GetExpandedIconImage())
+ return wx.Bitmap(GetExpandedIconImage())
def GetExpandedIconImage():
import cStringIO
stream = cStringIO.StringIO(GetExpandedIconData())
- return wx.ImageFromStream(stream)
+ return wx.Image(stream)
#----------------------------------------------------------------------
def GetMondrianData():
@@ -102,15 +102,15 @@ o\xda\x84pB2\x1f\x81Fa\x8c\x9c\x08\x04Z{\xcf\xa72\xbcv\xfa\xc5\x08 \x80r\x80\
\x04\x10@\xf9X\xbe\x00\xc9 \x14K\xc1<={\x00\x00\x00\x00IEND\xaeB`\x82'
def GetMondrianBitmap():
- return wx.BitmapFromImage(GetMondrianImage())
+ return wx.Bitmap(GetMondrianImage())
def GetMondrianImage():
import cStringIO
stream = cStringIO.StringIO(GetMondrianData())
- return wx.ImageFromStream(stream)
+ return wx.Image(stream)
def GetMondrianIcon():
- icon = wx.EmptyIcon()
+ icon = wx.Icon()
icon.CopyFromBitmap(GetMondrianBitmap())
return icon
@@ -130,19 +130,19 @@ class Extended(wx.Frame):
self.SetIcon(GetMondrianIcon())
self.SetMenuBar(self.CreateMenuBar())
- self.statusbar = self.CreateStatusBar(2, wx.ST_SIZEGRIP)
+ self.statusbar = self.CreateStatusBar(2)
self.statusbar.SetStatusWidths([-4, -3])
self.statusbar.SetStatusText("Andrea Gavana @ 23 Mar 2005", 0)
self.statusbar.SetStatusText("Welcome to wxPython!", 1)
- self._leftWindow1 = wx.SashLayoutWindow(self, 101, wx.DefaultPosition,
+ self._leftWindow1 = wx.adv.SashLayoutWindow(self, 101, wx.DefaultPosition,
wx.Size(200, 1000), wx.NO_BORDER |
- wx.SW_3D | wx.CLIP_CHILDREN)
+ wx.adv.SW_3D | wx.CLIP_CHILDREN)
self._leftWindow1.SetDefaultSize(wx.Size(220, 1000))
- self._leftWindow1.SetOrientation(wx.LAYOUT_VERTICAL)
- self._leftWindow1.SetAlignment(wx.LAYOUT_LEFT)
- self._leftWindow1.SetSashVisible(wx.SASH_RIGHT, True)
+ self._leftWindow1.SetOrientation(wx.adv.LAYOUT_VERTICAL)
+ self._leftWindow1.SetAlignment(wx.adv.LAYOUT_LEFT)
+ self._leftWindow1.SetSashVisible(wx.adv.SASH_RIGHT, True)
self._leftWindow1.SetExtraBorderSize(10)
self._pnl = 0
@@ -158,7 +158,7 @@ class Extended(wx.Frame):
self.ID_WINDOW_RIGHT1 = 102
self.ID_WINDOW_BOTTOM = 103
- self._leftWindow1.Bind(wx.EVT_SASH_DRAGGED_RANGE, self.OnFoldPanelBarDrag,
+ self._leftWindow1.Bind(wx.adv.EVT_SASH_DRAGGED_RANGE, self.OnFoldPanelBarDrag,
id=100, id2=103)
self.Bind(wx.EVT_SIZE, self.OnSize)
self.Bind(wx.EVT_SCROLL, self.OnSlideColour)
@@ -168,7 +168,7 @@ class Extended(wx.Frame):
def OnSize(self, event):
- wx.LayoutAlgorithm().LayoutWindow(self, self.remainingSpace)
+ wx.adv.LayoutAlgorithm().LayoutWindow(self, self.remainingSpace)
event.Skip()
@@ -646,7 +646,7 @@ class Collapsed(wx.Frame):
self.SetIcon(GetMondrianIcon())
self.SetMenuBar(self.CreateMenuBar())
- self.statusbar = self.CreateStatusBar(2, wx.ST_SIZEGRIP)
+ self.statusbar = self.CreateStatusBar(2)
self.statusbar.SetStatusWidths([-4, -3])
self.statusbar.SetStatusText("Andrea Gavana @ 23 Mar 2005", 0)
self.statusbar.SetStatusText("Welcome to wxPython!", 1)
@@ -715,7 +715,7 @@ class Collapsed(wx.Frame):
self.pnl = bar
size = self.GetClientSize()
- self.pnl.SetDimensions(0, 0, size.GetWidth(), size.GetHeight())
+ self.pnl.SetSize(0, 0, size.GetWidth(), size.GetHeight())
def CreateMenuBar(self):
@@ -793,7 +793,7 @@ class NotCollapsed(wx.Frame):
self.SetIcon(GetMondrianIcon())
self.SetMenuBar(self.CreateMenuBar())
- self.statusbar = self.CreateStatusBar(2, wx.ST_SIZEGRIP)
+ self.statusbar = self.CreateStatusBar(2)
self.statusbar.SetStatusWidths([-4, -3])
self.statusbar.SetStatusText("Andrea Gavana @ 23 Mar 2005", 0)
self.statusbar.SetStatusText("Welcome to wxPython!", 1)
diff --git a/demo/agw/FourWaySplitter.py b/demo/agw/FourWaySplitter.py
index b80d1696..bfa1206d 100644
--- a/demo/agw/FourWaySplitter.py
+++ b/demo/agw/FourWaySplitter.py
@@ -53,7 +53,7 @@ class ControlPane(wx.Panel):
style=wx.CB_READONLY|wx.CB_DROPDOWN)
combo.SetStringSelection("None")
- self.Bind(wx.EVT_COMBOBOX, self.OnExpandWindow)
+ self.Bind(wx.EVT_COMBOBOX, self.OnExpandWindow)
sizer = wx.BoxSizer(wx.VERTICAL)
sizer.Add(luCheck, 0, wx.TOP, 5)
@@ -148,7 +148,7 @@ class FWSPanel(wx.Panel):
def OnChanging(self, event):
- idx = self.GetSashIdx(event)
+ idx = self.GetSashIdx(event)
self.log.write("Changing sash: %s %s\n" %(idx, event.GetSashPosition()))
# This is one way to control the sash limits
@@ -160,7 +160,7 @@ class FWSPanel(wx.Panel):
def OnChanged(self, event):
- idx = self.GetSashIdx(event)
+ idx = self.GetSashIdx(event)
self.log.write("Changed sash: %s %s\n" %(idx, event.GetSashPosition()))
event.Skip()
@@ -185,7 +185,7 @@ class FWSPanel(wx.Panel):
win1 = self.splitter.GetWindow(0)
win3 = self.splitter.GetWindow(2)
- self.splitter.ExchangeWindows(win1, win3)
+ self.splitter.ExchangeWindows(win1, win3)
def ExpandWindow(self, selection):
@@ -203,12 +203,12 @@ class FourWaySplitterDemo(wx.Frame):
self.log = log
panel = FWSPanel(self, log)
- sizer = wx.BoxSizer(wx.VERTICAL)
+ sizer = wx.BoxSizer(wx.VERTICAL)
sizer.Add(panel, 1, wx.EXPAND)
self.SetSizer(sizer)
sizer.Layout()
- statusbar = self.CreateStatusBar(2, wx.ST_SIZEGRIP)
+ statusbar = self.CreateStatusBar(2)
statusbar.SetStatusWidths([-2, -1])
# statusbar fields
statusbar_fields = [("FourWaySplitter wxPython Demo, Andrea Gavana @ 03 Nov 2006"),
@@ -219,7 +219,7 @@ class FourWaySplitterDemo(wx.Frame):
self.CreateMenu()
- self.SetIcon(images.Mondrian.GetIcon())
+ self.SetIcon(images.Mondrian.GetIcon())
self.CenterOnScreen()
@@ -231,11 +231,11 @@ class FourWaySplitterDemo(wx.Frame):
item = wx.MenuItem(fileMenu, wx.ID_ANY, "E&xit")
self.Bind(wx.EVT_MENU, self.OnQuit, item)
- fileMenu.AppendItem(item)
+ fileMenu.Append(item)
item = wx.MenuItem(helpMenu, wx.ID_ANY, "About")
self.Bind(wx.EVT_MENU, self.OnAbout, item)
- helpMenu.AppendItem(item)
+ helpMenu.Append(item)
menuBar.Append(fileMenu, "&File")
menuBar.Append(helpMenu, "&Help")
diff --git a/demo/agw/GradientButton.py b/demo/agw/GradientButton.py
index 2d65df01..fbbed219 100644
--- a/demo/agw/GradientButton.py
+++ b/demo/agw/GradientButton.py
@@ -33,19 +33,19 @@ class GradientButtonDemo(wx.Panel):
bitmap = wx.Bitmap(os.path.normpath(bitmapDir+"gradientbutton.png"), wx.BITMAP_TYPE_PNG)
self.btn2 = GB.GradientButton(self.mainPanel, -1, bitmap, "GradientButton")
- self.topStartColour = wx.ColourPickerCtrl(self.mainPanel, col=self.btn2.GetTopStartColour(),
+ self.topStartColour = wx.ColourPickerCtrl(self.mainPanel, colour=self.btn2.GetTopStartColour(),
name="Top Start")
- self.topEndColour = wx.ColourPickerCtrl(self.mainPanel, col=self.btn2.GetTopEndColour(),
+ self.topEndColour = wx.ColourPickerCtrl(self.mainPanel, colour=self.btn2.GetTopEndColour(),
name="Top End")
- self.bottomStartColour = wx.ColourPickerCtrl(self.mainPanel, col=self.btn2.GetBottomStartColour(),
+ self.bottomStartColour = wx.ColourPickerCtrl(self.mainPanel, colour=self.btn2.GetBottomStartColour(),
name="Bottom Start")
- self.bottomEndColour = wx.ColourPickerCtrl(self.mainPanel, col=self.btn2.GetBottomEndColour(),
+ self.bottomEndColour = wx.ColourPickerCtrl(self.mainPanel, colour=self.btn2.GetBottomEndColour(),
name="Bottom End")
- self.pressedTopColour = wx.ColourPickerCtrl(self.mainPanel, col=self.btn2.GetPressedTopColour(),
+ self.pressedTopColour = wx.ColourPickerCtrl(self.mainPanel, colour=self.btn2.GetPressedTopColour(),
name="Pressed Top")
- self.pressedBottomColour = wx.ColourPickerCtrl(self.mainPanel, col=self.btn2.GetPressedBottomColour(),
+ self.pressedBottomColour = wx.ColourPickerCtrl(self.mainPanel, colour=self.btn2.GetPressedBottomColour(),
name="Pressed Bottom")
- self.textColour = wx.ColourPickerCtrl(self.mainPanel, col=self.btn2.GetForegroundColour(),
+ self.textColour = wx.ColourPickerCtrl(self.mainPanel, colour=self.btn2.GetForegroundColour(),
name="Text Colour")
self.DoLayout()
@@ -85,14 +85,14 @@ class GradientButtonDemo(wx.Panel):
btnSizer.Add((10, 0))
mainSizer.Add(btnSizer, 0, wx.EXPAND|wx.ALL, 10)
- boldFont = wx.SystemSettings_GetFont(wx.SYS_DEFAULT_GUI_FONT)
+ boldFont = wx.SystemSettings.GetFont(wx.SYS_DEFAULT_GUI_FONT)
boldFont.SetWeight(wx.BOLD)
for child in self.mainPanel.GetChildren():
if isinstance(child, wx.StaticText):
child.SetFont(boldFont)
- buttonFont = wx.SystemSettings_GetFont(wx.SYS_DEFAULT_GUI_FONT)
+ buttonFont = wx.SystemSettings.GetFont(wx.SYS_DEFAULT_GUI_FONT)
buttonFont.SetWeight(wx.BOLD)
try:
buttonFont.SetFaceName("Tahoma")
diff --git a/demo/agw/LabelBook.py b/demo/agw/LabelBook.py
index 3148576d..ae148766 100644
--- a/demo/agw/LabelBook.py
+++ b/demo/agw/LabelBook.py
@@ -127,7 +127,7 @@ class LabelBookDemo(wx.Frame):
self.Bind(LB.EVT_IMAGENOTEBOOK_PAGE_CLOSED, self.OnPageClosed)
- statusbar = self.CreateStatusBar(2, wx.ST_SIZEGRIP)
+ statusbar = self.CreateStatusBar(2)
statusbar.SetStatusWidths([-2, -1])
# statusbar fields
statusbar_fields = [("LabelBook & FlatImageBook wxPython Demo, Andrea Gavana @ 03 Nov 2006"),
@@ -483,25 +483,25 @@ class LabelBookDemo(wx.Frame):
item = wx.MenuItem(fileMenu, wx.ID_ANY, "E&xit")
self.Bind(wx.EVT_MENU, self.OnQuit, item)
- fileMenu.AppendItem(item)
+ fileMenu.Append(item)
item = wx.MenuItem(editMenu, wx.ID_ANY, "Add Page")
self.Bind(wx.EVT_MENU, self.OnAddPage, item)
- editMenu.AppendItem(item)
+ editMenu.Append(item)
editMenu.AppendSeparator()
item = wx.MenuItem(editMenu, wx.ID_ANY, "Delete Page")
self.Bind(wx.EVT_MENU, self.OnDeletePage, item)
- editMenu.AppendItem(item)
+ editMenu.Append(item)
item = wx.MenuItem(editMenu, wx.ID_ANY, "Delete All Pages")
self.Bind(wx.EVT_MENU, self.OnDeleteAllPages, item)
- editMenu.AppendItem(item)
+ editMenu.Append(item)
item = wx.MenuItem(helpMenu, wx.ID_ANY, "About")
self.Bind(wx.EVT_MENU, self.OnAbout, item)
- helpMenu.AppendItem(item)
+ helpMenu.Append(item)
menuBar.Append(fileMenu, "&File")
menuBar.Append(editMenu, "&Edit")
diff --git a/demo/agw/MacLargeDemo.py b/demo/agw/MacLargeDemo.py
index 5903a21a..1a3a4d56 100644
--- a/demo/agw/MacLargeDemo.py
+++ b/demo/agw/MacLargeDemo.py
@@ -110,27 +110,27 @@ class MacRenderer(object):
DONE_BITMAP = None
REMAINING_BITMAP = None
-
+
def __init__(self, parent):
self.progressValue = random.randint(1, 99)
-
+
def DrawSubItem(self, dc, rect, line, highlighted, enabled):
"""Draw a custom progress bar using double buffering to prevent flicker"""
- canvas = wx.EmptyBitmap(rect.width, rect.height)
+ canvas = wx.Bitmap(rect.width, rect.height)
mdc = wx.MemoryDC()
mdc.SelectObject(canvas)
if highlighted:
- mdc.SetBackground(wx.Brush(wx.SystemSettings_GetColour(wx.SYS_COLOUR_HIGHLIGHT)))
+ mdc.SetBackground(wx.Brush(wx.SystemSettings.GetColour(wx.SYS_COLOUR_HIGHLIGHT)))
mdc.SetTextForeground(wx.WHITE)
else:
- mdc.SetBackground(wx.Brush(wx.SystemSettings_GetColour(wx.SYS_COLOUR_WINDOW)))
+ mdc.SetBackground(wx.Brush(wx.SystemSettings.GetColour(wx.SYS_COLOUR_WINDOW)))
mdc.Clear()
- mdc.SetFont(wx.Font(9, wx.SWISS, wx.NORMAL, wx.BOLD, False))
+ mdc.SetFont(wx.Font(9, wx.FONTFAMILY_SWISS, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_BOLD, False))
if line == 0:
text1 = "Apple Ads"
@@ -147,7 +147,7 @@ class MacRenderer(object):
xtext, ytext = mdc.GetTextExtent(text1)
mdc.DrawText(text1, 0, ypos)
ypos += ytext + 5
-
+
mdc.SetFont(wx.Font(7, wx.SWISS, wx.NORMAL, wx.NORMAL, False))
xtext, ytext = mdc.GetTextExtent(text2)
@@ -155,35 +155,35 @@ class MacRenderer(object):
ypos += ytext + 5
self.DrawProgressBar(mdc, 0, ypos, rect.width, 20, progress)
-
+
mdc.SetFont(wx.Font(7, wx.SWISS, wx.NORMAL, wx.NORMAL, False))
ypos += 25
mdc.DrawText(text3, 0, ypos)
dc.Blit(rect.x+3, rect.y, rect.width-6, rect.height, mdc, 0, 0)
-
+
def GetLineHeight(self):
dc = wx.MemoryDC()
- dc.SelectObject(wx.EmptyBitmap(1, 1))
- dc.SetFont(wx.Font(9, wx.SWISS, wx.NORMAL, wx.BOLD, False))
+ dc.SelectObject(wx.Bitmap(1, 1))
+ dc.SetFont(wx.Font(9, wx.FONTFAMILY_SWISS, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_BOLD, False))
dummy, ytext1 = dc.GetTextExtent("Agw")
- dc.SetFont(wx.Font(7, wx.SWISS, wx.NORMAL, wx.NORMAL, False))
+ dc.SetFont(wx.Font(7, wx.FONTFAMILY_SWISS, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False))
dummy, ytext2 = dc.GetTextExtent("Agw")
dc.SelectObject(wx.NullBitmap)
return ytext1 + 2*ytext2 + 40
-
+
def GetSubItemWidth(self):
return 250
-
+
def DrawHorizontalPipe(self, dc, x, y, w, colour):
"""Draws a horizontal 3D-looking pipe."""
-
+
for r in range(PIPE_HEIGHT):
red = int(colour.Red() * math.sin((math.pi/PIPE_HEIGHT)*r))
green = int(colour.Green() * math.sin((math.pi/PIPE_HEIGHT)*r))
@@ -194,26 +194,26 @@ class MacRenderer(object):
def DrawProgressBar(self, dc, x, y, w, h, percent):
"""
- Draws a progress bar in the (x,y,w,h) box that represents a progress of
- 'percent'. The progress bar is only horizontal and it's height is constant
- (PIPE_HEIGHT). The 'h' parameter is used to vertically center the progress
+ Draws a progress bar in the (x,y,w,h) box that represents a progress of
+ 'percent'. The progress bar is only horizontal and it's height is constant
+ (PIPE_HEIGHT). The 'h' parameter is used to vertically center the progress
bar in the allotted space.
-
+
The drawing is speed-optimized. Two bitmaps are created the first time this
function runs - one for the done (green) part of the progress bar and one for
the remaining (white) part. During normal operation the function just cuts
the necessary part of the two bitmaps and draws them.
"""
-
+
# Create two pipes
if self.DONE_BITMAP is None:
- self.DONE_BITMAP = wx.EmptyBitmap(PIPE_WIDTH, PIPE_HEIGHT)
+ self.DONE_BITMAP = wx.Bitmap(PIPE_WIDTH, PIPE_HEIGHT)
mdc = wx.MemoryDC()
mdc.SelectObject(self.DONE_BITMAP)
self.DrawHorizontalPipe(mdc, 0, 0, PIPE_WIDTH, wx.GREEN)
mdc.SelectObject(wx.NullBitmap)
- self.REMAINING_BITMAP = wx.EmptyBitmap(PIPE_WIDTH, PIPE_HEIGHT)
+ self.REMAINING_BITMAP = wx.Bitmap(PIPE_WIDTH, PIPE_HEIGHT)
mdc = wx.MemoryDC()
mdc.SelectObject(self.REMAINING_BITMAP)
self.DrawHorizontalPipe(mdc, 0, 0, PIPE_WIDTH, wx.RED)
@@ -221,7 +221,7 @@ class MacRenderer(object):
mdc.SelectObject(wx.NullBitmap)
# Center the progress bar vertically in the box supplied
- y = y + (h - PIPE_HEIGHT)/2
+ y = y + (h - PIPE_HEIGHT)/2
if percent == 0:
middle = 0
@@ -230,7 +230,7 @@ class MacRenderer(object):
if w < 1:
return
-
+
if middle == 0: # not started
bitmap = self.REMAINING_BITMAP.GetSubBitmap((1, 0, w, PIPE_HEIGHT))
dc.DrawBitmap(bitmap, x, y, False)
@@ -242,30 +242,30 @@ class MacRenderer(object):
dc.DrawBitmap(doneBitmap, x, y, False)
remainingBitmap = self.REMAINING_BITMAP.GetSubBitmap((0, 0, w - middle, PIPE_HEIGHT))
dc.DrawBitmap(remainingBitmap, x + middle, y, False)
-
+
class TestUltimateListCtrl(ULC.UltimateListCtrl, listmix.ListCtrlAutoWidthMixin):
-
+
def __init__(self, parent, id=wx.ID_ANY, pos=wx.DefaultPosition, size=wx.DefaultSize, style=0, agwStyle=0):
-
+
ULC.UltimateListCtrl.__init__(self, parent, id, pos, size, style, agwStyle)
listmix.ListCtrlAutoWidthMixin.__init__(self)
-
-
+
+
class UltimateListCtrlPanel(wx.Panel):
-
+
def __init__(self, parent, log):
wx.Panel.__init__(self, parent, -1, style=wx.WANTS_CHARS)
sizer = wx.BoxSizer(wx.VERTICAL)
- self.log = log
+ self.log = log
self.il = wx.ImageList(32, 32)
self.il.Add(folder.GetBitmap())
self.il.Add(movie.GetBitmap())
-
+
self.list = TestUltimateListCtrl(self, -1,
agwStyle=wx.LC_REPORT
| wx.BORDER_SUNKEN
@@ -276,7 +276,7 @@ class UltimateListCtrlPanel(wx.Panel):
| wx.LC_HRULES
#| wx.LC_SINGLE_SEL
| ULC.ULC_HAS_VARIABLE_ROW_HEIGHT)
-
+
self.list.SetImageList(self.il, wx.IMAGE_LIST_SMALL)
sizer.Add(self.list, 1, wx.EXPAND)
@@ -285,25 +285,25 @@ class UltimateListCtrlPanel(wx.Panel):
self.SetAutoLayout(True)
self.Bind(wx.EVT_LIST_COL_BEGIN_DRAG, self.OnColBeginDrag, self.list)
-
+
def PopulateList(self):
self.list.Freeze()
info = ULC.UltimateListItem()
- info._mask = wx.LIST_MASK_TEXT | wx.LIST_MASK_FORMAT
- info._format = 0
- info._text = ""
-
+ info.Mask = wx.LIST_MASK_TEXT | wx.LIST_MASK_FORMAT
+ info.Align = 0
+ info.Text = ""
+
self.list.InsertColumnInfo(0, info)
info = ULC.UltimateListItem()
- info._format = wx.LIST_FORMAT_LEFT
- info._mask = wx.LIST_MASK_TEXT | wx.LIST_MASK_FORMAT
- info._image = []
- info._text = "Some useful info here"
-
+ info.Align = wx.LIST_FORMAT_LEFT
+ info.Mask = wx.LIST_MASK_TEXT | wx.LIST_MASK_FORMAT
+ info.Image = []
+ info.Text = "Some useful info here"
+
self.list.InsertColumnInfo(1, info)
for i in xrange(2):
@@ -325,7 +325,7 @@ class UltimateListCtrlPanel(wx.Panel):
return
event.Skip()
-
+
#---------------------------------------------------------------------------
@@ -338,11 +338,11 @@ class TestFrame(wx.Frame):
self.log = log
# Create the CustomTreeCtrl, using a derived class defined below
self.ulc = UltimateListCtrlPanel(self, self.log)
-
+
self.SetIcon(images.Mondrian.GetIcon())
self.CenterOnScreen()
self.Show()
-
+
#---------------------------------------------------------------------------
if __name__ == '__main__':
diff --git a/demo/agw/PeakMeter.py b/demo/agw/PeakMeter.py
index 8a974d5b..0f1ec951 100644
--- a/demo/agw/PeakMeter.py
+++ b/demo/agw/PeakMeter.py
@@ -25,7 +25,7 @@ class PeakMeterCtrlDemo(wx.Panel):
self.log = log
self.mainPanel = wx.Panel(self)
-
+
# Initialize Peak Meter control 1
self.vertPeak = PM.PeakMeterCtrl(self.mainPanel, -1, style=wx.SIMPLE_BORDER, agwStyle=PM.PM_VERTICAL)
# Initialize Peak Meter control 2
@@ -39,19 +39,19 @@ class PeakMeterCtrlDemo(wx.Panel):
self.falloffCheck = wx.CheckBox(self.mainPanel, -1, "Show Falloff Effect")
colour = self.mainPanel.GetBackgroundColour()
- self.backColour = wx.ColourPickerCtrl(self.mainPanel, col=colour)
- self.lowColour = wx.ColourPickerCtrl(self.mainPanel, col=wx.GREEN)
- self.mediumColour = wx.ColourPickerCtrl(self.mainPanel, col=wx.NamedColour("yellow"))
- self.highColour = wx.ColourPickerCtrl(self.mainPanel, col=wx.RED)
-
+ self.backColour = wx.ColourPickerCtrl(self.mainPanel, colour=colour)
+ self.lowColour = wx.ColourPickerCtrl(self.mainPanel, colour=wx.GREEN)
+ self.mediumColour = wx.ColourPickerCtrl(self.mainPanel, colour=wx.YELLOW)
+ self.highColour = wx.ColourPickerCtrl(self.mainPanel, colour=wx.RED)
+
self.timer = wx.Timer(self)
self.SetProperties()
self.DoLayout()
self.BindEvents()
-
- def SetProperties(self):
+
+ def SetProperties(self):
self.vertPeak.SetMeterBands(10, 15)
self.horzPeak.SetMeterBands(10, 15)
@@ -78,7 +78,7 @@ class PeakMeterCtrlDemo(wx.Panel):
mainSizer.Add(horzSizer, 0, wx.EXPAND)
mainSizer.Add(self.staticLine, 0, wx.EXPAND|wx.ALL, 5)
-
+
checkSizer.Add(self.gridCheck, 0, wx.EXPAND|wx.ALL, 5)
checkSizer.Add(self.falloffCheck, 0, wx.EXPAND|wx.LEFT|wx.BOTTOM, 5)
@@ -102,7 +102,7 @@ class PeakMeterCtrlDemo(wx.Panel):
bottomSizer.Add(colourSizer, 0, wx.EXPAND|wx.ALL, 5)
bottomSizer.Add((0, 5))
mainSizer.Add(bottomSizer, 0, wx.EXPAND|wx.BOTTOM|wx.RIGHT, 5)
-
+
self.mainPanel.SetSizer(mainSizer)
mainSizer.Layout()
frameSizer.Add(self.mainPanel, 1, wx.EXPAND)
@@ -126,7 +126,7 @@ class PeakMeterCtrlDemo(wx.Panel):
# generate 15 random number and set them as data for the meter
nElements = 15
arrayData = []
-
+
for i in xrange(nElements):
nRandom = random.randint(0, 100)
arrayData.append(nRandom)
@@ -158,7 +158,7 @@ class PeakMeterCtrlDemo(wx.Panel):
self.timer.Stop()
self.vertPeak.Stop()
self.horzPeak.Stop()
-
+
def OnPickColour(self, event):
@@ -172,7 +172,7 @@ class PeakMeterCtrlDemo(wx.Panel):
high = self.highColour.GetColour()
self.horzPeak.SetBandsColour(low, med, high)
-
+
#----------------------------------------------------------------------
def runTest(frame, nb, log):
diff --git a/demo/agw/PersistentControls.py b/demo/agw/PersistentControls.py
index 1387732d..e03cc89d 100644
--- a/demo/agw/PersistentControls.py
+++ b/demo/agw/PersistentControls.py
@@ -35,7 +35,7 @@ _sampleText2 = "wx.Frame, wx.SplitterWindow, wx.TreeCtrl, wx.Notebook, " \
_sampleList = ['zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight']
_sampleList2 = _sampleList + ['nine', 'ten', 'eleven', 'twelve', 'thirteen', 'fourteen']
-
+
_title = "PersistentControls for wxPython :-D "
_configFile1 = os.path.join(dirName, "Example1")
_configFile2 = os.path.join(dirName, "Example2")
@@ -52,7 +52,7 @@ class PersistentPanel(wx.Panel):
mainSizer = wx.BoxSizer(wx.VERTICAL)
sizer = wx.FlexGridSizer(3, 2, 10, 10)
-
+
btn1 = wx.Button(self, -1, "Example 1")
text1 = ExpandoTextCtrl(self, -1, _sampleText1, size=(300,-1), style=wx.TE_READONLY)
@@ -61,7 +61,7 @@ class PersistentPanel(wx.Panel):
sizer.Add(btn1, 0, wx.ALIGN_CENTER)
sizer.Add(text1, 1, wx.EXPAND)
-
+
sizer.Add(btn2, 0, wx.ALIGN_CENTER)
sizer.Add(text2, 1, wx.EXPAND)
@@ -69,7 +69,7 @@ class PersistentPanel(wx.Panel):
mainSizer.Add(sizer, 1, wx.EXPAND|wx.ALL, 20)
self.SetSizer(mainSizer)
mainSizer.Layout()
-
+
btn1.Bind(wx.EVT_BUTTON, self.OnExample1)
btn2.Bind(wx.EVT_BUTTON, self.OnExample2)
@@ -82,14 +82,14 @@ class PersistentPanel(wx.Panel):
def OnExample2(self, event):
frame = PersistentFrame2(self, _title + "- Example 2", (700, 500))
-
+
class PersistentFrame1(wx.Frame):
def __init__(self, parent, title, size):
wx.Frame.__init__(self, parent, -1, title, size=size, name="Example1")
-
+
self._auiMgr = AUI.AuiManager()
self._auiMgr.SetManagedWindow(self)
@@ -105,10 +105,10 @@ class PersistentFrame1(wx.Frame):
self.CenterOnParent()
self.Show()
- self.Bind(wx.EVT_CLOSE, self.OnClose)
+ self.Bind(wx.EVT_CLOSE, self.OnClose)
wx.CallAfter(self.RegisterControls)
-
-
+
+
def CreateMenuBar(self):
# Prepare the menu bar
@@ -121,7 +121,7 @@ class PersistentFrame1(wx.Frame):
menu1.Append(102, "wx.F&ontDialog")
menu1.AppendSeparator()
menu1.Append(103, "wx.&TextEntryDialog")
- menu1.AppendSeparator()
+ menu1.AppendSeparator()
menu1.Append(105, "&Close", "Close this frame")
# Add menu to the menu bar
menuBar.Append(menu1, "&Dialogs")
@@ -154,7 +154,7 @@ class PersistentFrame1(wx.Frame):
tb3 = AUI.AuiToolBar(self, -1, wx.DefaultPosition, wx.DefaultSize, AUI.AUI_TB_DEFAULT_STYLE)
tb3.SetName("AuiToolBar")
tb3.SetToolBitmapSize(wx.Size(16, 16))
-
+
tb3_bmp1 = wx.ArtProvider.GetBitmap(wx.ART_FOLDER, wx.ART_OTHER, wx.Size(16, 16))
tb3.AddSimpleTool(ID_AuiToolBar, "Check 1", tb3_bmp1, "Check 1", AUI.ITEM_CHECK)
tb3.AddSimpleTool(ID_AuiToolBar+1, "Check 2", tb3_bmp1, "Check 2", AUI.ITEM_CHECK)
@@ -203,7 +203,7 @@ class PersistentFrame1(wx.Frame):
box1.Add(fgs, 1, wx.EXPAND|wx.ALL, 5)
pickerPanel.SetSizer(box1)
box1.Layout()
-
+
otherPanel = wx.Panel(self)
box2 = wx.BoxSizer(wx.VERTICAL)
@@ -214,7 +214,7 @@ class PersistentFrame1(wx.Frame):
name="ComboBox1")
boldFont = wx.Font(8, wx.DEFAULT, wx.NORMAL, wx.BOLD, 0, "")
-
+
box2 = wx.BoxSizer(wx.HORIZONTAL)
box2.Add((0, 0), 1)
box2.Add(radiobox, 0, wx.ALL|wx.ALIGN_CENTER, 5)
@@ -232,11 +232,11 @@ class PersistentFrame1(wx.Frame):
box2.Add(sizer_1, 1, wx.EXPAND|wx.ALIGN_CENTER, 0)
box2.Add((0, 0), 1, 1)
- otherPanel.SetSizer(box2)
+ otherPanel.SetSizer(box2)
otherPanel2 = wx.Panel(self)
box3 = wx.BoxSizer(wx.VERTICAL)
-
+
gs1 = wx.FlexGridSizer(2, 3, 5, 10)
slider = wx.Slider(otherPanel2, -1, 3, 0, 10, style=wx.SL_HORIZONTAL|wx.SL_LABELS,
@@ -280,14 +280,14 @@ class PersistentFrame1(wx.Frame):
def Register(self, children=None):
-
+
if children is None:
self._persistMgr.RegisterAndRestore(self)
self._persistMgr.RegisterAndRestore(self.GetMenuBar())
children = self.GetChildren()
-
+
for child in children:
-
+
name = child.GetName()
if name not in PM.BAD_DEFAULT_NAMES and "widget" not in name and \
@@ -297,7 +297,7 @@ class PersistentFrame1(wx.Frame):
if child.GetChildren():
self.Register(child.GetChildren())
-
+
def CloseWindow(self, event):
@@ -308,7 +308,7 @@ class PersistentFrame1(wx.Frame):
self._persistMgr.SaveAndUnregister()
event.Skip()
-
+
def OnDialogs(self, event):
@@ -319,7 +319,7 @@ class PersistentFrame1(wx.Frame):
data = wx.ColourData()
dlg = wx.ColourDialog(self, data)
dlg.SetName("ColourDialog1")
-
+
elif evId == 102:
# wx.FontDialog
data = wx.FontData()
@@ -340,7 +340,7 @@ class PersistentFrame1(wx.Frame):
self._persistMgr.Unregister(dlg)
dlg.Destroy()
-
+
# The wx.HtmlListBox derives from wx.VListBox, but draws each item
# itself as a wx.HtmlCell.
@@ -354,7 +354,7 @@ class MyHtmlListBox(wx.HtmlListBox):
class PersistentFrame2(wx.Frame):
-
+
def __init__(self, parent, title, size):
wx.Frame.__init__(self, parent, -1, title, size=size, name="Example2")
@@ -365,11 +365,11 @@ class PersistentFrame2(wx.Frame):
self.split1 = wx.SplitterWindow(self, -1, style=wx.SP_3D|wx.SP_BORDER, name="Splitter1")
self.treectrl = self.CreateTreeListCtrl(False)
-
+
self.split2 = wx.SplitterWindow(self.split1, -1, style=wx.SP_3D|wx.SP_BORDER, name="Splitter2")
self.notebook = wx.Notebook(self.split2, name="Notebook1")
dummyPanel = wx.Panel(self.split2)
-
+
text = "Hello world!\nI am a simple wx.TextCtrl" \
"I will remember my value if you change it!"
@@ -385,14 +385,14 @@ class PersistentFrame2(wx.Frame):
self.DoLayout(dummyPanel)
self.SetIcon(images.Mondrian.Icon)
-
- self.Bind(wx.EVT_CLOSE, self.OnClose)
+
+ self.Bind(wx.EVT_CLOSE, self.OnClose)
wx.CallAfter(self.RegisterControls)
self.CenterOnParent()
self.Show()
-
+
def DoLayout(self, dummyPanel):
sizer_5 = wx.BoxSizer(wx.HORIZONTAL)
@@ -441,7 +441,7 @@ class PersistentFrame2(wx.Frame):
il = wx.ImageList(16, 16)
il.Add(images.Smiles.GetBitmap())
-
+
listCtrl = wx.ListCtrl(self.notebook, -1, style=wx.LC_REPORT|wx.SUNKEN_BORDER, name="ListCtrl1")
for col in xrange(6):
listCtrl.InsertColumn(col, "Column %d"%col)
@@ -453,7 +453,7 @@ class PersistentFrame2(wx.Frame):
idx = listCtrl.InsertImageStringItem(sys.maxint, text%(row+1, 1), 0)
else:
idx = listCtrl.InsertStringItem(sys.maxint, text%(row+1, 1))
-
+
for col in xrange(1, 6):
listCtrl.SetStringItem(idx, col, text%(row+1, col+1), random.randint(0, 1)-1)
@@ -525,9 +525,9 @@ class PersistentFrame2(wx.Frame):
hlb.SetItemCount(300)
hlb.SetSelection(0)
- return hlb
+ return hlb
+
-
def OnClose(self, event):
self._persistMgr.SaveAndUnregister()
@@ -546,11 +546,11 @@ class PersistentFrame2(wx.Frame):
if children is None:
self._persistMgr.RegisterAndRestore(self)
children = self.GetChildren()
-
+
for child in children:
-
+
name = child.GetName()
-
+
if name not in PM.BAD_DEFAULT_NAMES and "wxtreelist" not in name and \
"AuiTabCtrl" not in name:
self._persistMgr.RegisterAndRestore(child)
@@ -558,7 +558,7 @@ class PersistentFrame2(wx.Frame):
if child.GetChildren():
self.Register(child.GetChildren())
-
+
#----------------------------------------------------------------------
def runTest(frame, nb, log):
@@ -570,7 +570,7 @@ def runTest(frame, nb, log):
overview = PM.__doc__
-if __name__ == '__main__':
+if __name__ == '__main__':
import sys,os
import run
run.main(['', os.path.basename(sys.argv[0])] + sys.argv[1:])
diff --git a/demo/agw/PieCtrl.py b/demo/agw/PieCtrl.py
index e242c97c..bc1f161d 100644
--- a/demo/agw/PieCtrl.py
+++ b/demo/agw/PieCtrl.py
@@ -62,7 +62,7 @@ class PieCtrlDemo(wx.Panel):
self._incr = 1
self._hiddenlegend = False
- panel.SetBackgroundColour(wx.SystemSettings_GetColour(wx.SYS_COLOUR_BTNFACE))
+ panel.SetBackgroundColour(wx.SystemSettings.GetColour(wx.SYS_COLOUR_BTNFACE))
# Create A Simple PieCtrl With 3 Sectors
self._pie = PieCtrl(panel, -1, wx.DefaultPosition, wx.Size(180,270))
diff --git a/demo/agw/PyGauge.py b/demo/agw/PyGauge.py
index a98833a1..81d790d9 100644
--- a/demo/agw/PyGauge.py
+++ b/demo/agw/PyGauge.py
@@ -17,7 +17,7 @@ except ImportError: # if it's not there locally, try the wxPython lib.
except:
raise Exception("This demo requires wxPython version greater than 2.9.0.0")
-
+
class PyGaugeDemo(wx.Panel):
def __init__(self, parent, log):
@@ -27,53 +27,51 @@ class PyGaugeDemo(wx.Panel):
self.mainPanel = wx.Panel(self)
self.mainPanel.SetBackgroundColour(wx.WHITE)
-
+
self.gauge1 = PG.PyGauge(self.mainPanel, -1, size=(100,25),style=wx.GA_HORIZONTAL)
self.gauge1.SetValue(80)
self.gauge1.SetBackgroundColour(wx.WHITE)
self.gauge1.SetBorderColor(wx.BLACK)
-
+
self.gauge2 = PG.PyGauge(self.mainPanel, -1, size=(100,25),style=wx.GA_HORIZONTAL)
self.gauge2.SetValue([20,80])
self.gauge2.SetBarColor([wx.Colour(162,255,178),wx.Colour(159,176,255)])
self.gauge2.SetBackgroundColour(wx.WHITE)
self.gauge2.SetBorderColor(wx.BLACK)
self.gauge2.SetBorderPadding(2)
- self.gauge2.SetDrawValue(draw=True, drawPercent=True, font=wx.SMALL_FONT, colour=wx.BLUE)
-
self.gauge2.Update([30,0],2000)
-
+
self.gauge3 = PG.PyGauge(self.mainPanel, -1, size=(100,25),style=wx.GA_HORIZONTAL)
self.gauge3.SetValue(50)
self.gauge3.SetBarColor(wx.GREEN)
self.gauge3.SetBackgroundColour(wx.WHITE)
self.gauge3.SetBorderColor(wx.BLACK)
- self.backColour = wx.ColourPickerCtrl(self.mainPanel, col=self.gauge3.GetBackgroundColour())
- self.borderColour = wx.ColourPickerCtrl(self.mainPanel, col=self.gauge3.GetBorderColour())
- self.barColour = wx.ColourPickerCtrl(self.mainPanel, col=self.gauge3.GetBarColour())
+ self.backColour = wx.ColourPickerCtrl(self.mainPanel, colour=self.gauge3.GetBackgroundColour())
+ self.borderColour = wx.ColourPickerCtrl(self.mainPanel, colour=self.gauge3.GetBorderColour())
+ self.barColour = wx.ColourPickerCtrl(self.mainPanel, colour=self.gauge3.GetBarColour())
self.gaugeValue = wx.TextCtrl(self.mainPanel, -1, str(self.gauge3.GetValue()), style=wx.TE_PROCESS_ENTER)
self.gaugeRange = wx.TextCtrl(self.mainPanel, -1, str(self.gauge3.GetRange()), style=wx.TE_PROCESS_ENTER)
self.gaugePadding = wx.TextCtrl(self.mainPanel, -1, str(self.gauge3.GetBorderPadding()), style=wx.TE_PROCESS_ENTER)
self.DoLayout()
self.BindEvents()
-
+
def DoLayout(self):
frameSizer = wx.BoxSizer(wx.VERTICAL)
- mainSizer = wx.BoxSizer(wx.VERTICAL)
+ mainSizer = wx.BoxSizer(wx.VERTICAL)
colourSizer = wx.FlexGridSizer(2, 6, 1, 10)
-
+
label1 = wx.StaticText(self.mainPanel, -1, "Welcome to the PyGauge demo for wxPython!")
mainSizer.Add(label1, 0, wx.EXPAND|wx.LEFT|wx.RIGHT|wx.TOP, 10)
mainSizer.Add(self.gauge1, 0, wx.ALIGN_CENTER_VERTICAL|wx.ALL, 20)
mainSizer.Add(self.gauge2, 0, wx.ALIGN_CENTER_VERTICAL|wx.ALL, 20)
mainSizer.Add(self.gauge3, 0, wx.ALIGN_CENTER_VERTICAL|wx.ALL, 20)
-
+
labelBack = wx.StaticText(self.mainPanel, -1, "Background Colour")
labelHover = wx.StaticText(self.mainPanel, -1, "Border Colour")
labelText = wx.StaticText(self.mainPanel, -1, "Bar Colour")
@@ -96,15 +94,15 @@ class PyGaugeDemo(wx.Panel):
colourSizer.Add(self.gaugePadding, 0, wx.EXPAND)
mainSizer.Add(colourSizer, 0, wx.EXPAND|wx.ALIGN_CENTER_VERTICAL|wx.LEFT|wx.RIGHT, 10)
-
- boldFont = wx.SystemSettings_GetFont(wx.SYS_DEFAULT_GUI_FONT)
+
+ boldFont = wx.SystemSettings.GetFont(wx.SYS_DEFAULT_GUI_FONT)
boldFont.SetWeight(wx.BOLD)
-
+
for child in self.mainPanel.GetChildren():
if isinstance(child, wx.StaticText):
child.SetFont(boldFont)
-
+
self.mainPanel.SetSizer(mainSizer)
mainSizer.Layout()
frameSizer.Add(self.mainPanel, 1, wx.EXPAND)
@@ -118,7 +116,7 @@ class PyGaugeDemo(wx.Panel):
self.Bind(wx.EVT_TEXT_ENTER, self.OnEnter, self.gaugeValue)
self.Bind(wx.EVT_TEXT_ENTER, self.OnEnter, self.gaugeRange)
self.Bind(wx.EVT_TEXT_ENTER, self.OnEnter, self.gaugePadding)
-
+
def OnEnter(self,event):
obj = event.GetEventObject()
if obj == self.gaugeValue:
@@ -128,7 +126,7 @@ class PyGaugeDemo(wx.Panel):
if obj == self.gaugePadding:
self.gauge3.SetBorderPadding(int(self.gaugePadding.GetValue()))
self.gauge3.Refresh()
-
+
def OnPickColour(self, event):
@@ -140,10 +138,10 @@ class PyGaugeDemo(wx.Panel):
self.gauge3.SetBorderColour(colour)
else:
self.gauge3.SetBarColour(colour)
-
+
self.gauge3.Refresh()
-
+
#----------------------------------------------------------------------
def runTest(frame, nb, log):
diff --git a/demo/agw/PyProgress.py b/demo/agw/PyProgress.py
index 1a87b5fb..93bcf036 100644
--- a/demo/agw/PyProgress.py
+++ b/demo/agw/PyProgress.py
@@ -45,13 +45,13 @@ class PyProgressDemo(wx.Panel):
static1 = wx.StaticText(self.panel, -1, "Gauge Proportion (%): ")
self.slider1 = wx.Slider(self.panel, -1, 20, 1, 99, style=wx.SL_HORIZONTAL|
wx.SL_AUTOTICKS|wx.SL_LABELS)
- self.slider1.SetTickFreq(10, 1)
+ self.slider1.SetTickFreq(10)
self.slider1.SetValue(20)
static2 = wx.StaticText(self.panel, -1, "Gauge Steps: ")
self.slider2 = wx.Slider(self.panel, -1, 50, 2, 100, style=wx.SL_HORIZONTAL|
wx.SL_AUTOTICKS|wx.SL_LABELS)
- self.slider2.SetTickFreq(10, 1)
+ self.slider2.SetTickFreq(10)
self.slider2.SetValue(50)
static3 = wx.StaticText(self.panel, -1, "Gauge Background Colour: ")
diff --git a/demo/agw/RibbonBar.py b/demo/agw/RibbonBar.py
index 4135a6db..75c29a9d 100644
--- a/demo/agw/RibbonBar.py
+++ b/demo/agw/RibbonBar.py
@@ -12,10 +12,10 @@ except:
sys.path.append(os.path.split(dirName)[0])
-##try:
-from agw import ribbon as RB
-##except ImportError: # if it's not there locally, try the wxPython lib.
-## import wx.lib.agw.ribbon as RB
+try:
+ from agw import ribbon as RB
+except ImportError: # if it's not there locally, try the wxPython lib.
+ import wx.lib.agw.ribbon as RB
from wx.lib.embeddedimage import PyEmbeddedImage
@@ -230,7 +230,7 @@ triangle = PyEmbeddedImage(
def CreateBitmap(xpm):
bmp = eval(xpm).Bitmap
-
+
return bmp
@@ -239,7 +239,7 @@ def CreateBitmap(xpm):
class ColourClientData(object):
def __init__(self, name, colour):
-
+
self._name = name
self._colour = colour
@@ -248,7 +248,7 @@ class ColourClientData(object):
return self._name
-
+
def GetColour(self):
return self._colour
@@ -264,16 +264,16 @@ class RibbonFrame(wx.Frame):
wx.Frame.__init__(self, parent, id, title, pos, size, style)
panel = wx.Panel(self)
-
+
self._ribbon = RB.RibbonBar(panel, wx.ID_ANY, agwStyle=RB.RIBBON_BAR_DEFAULT_STYLE|RB.RIBBON_BAR_SHOW_PANEL_EXT_BUTTONS)
self._bitmap_creation_dc = wx.MemoryDC()
self._colour_data = wx.ColourData()
-
+
home = RB.RibbonPage(self._ribbon, wx.ID_ANY, "Examples", CreateBitmap("ribbon"))
toolbar_panel = RB.RibbonPanel(home, wx.ID_ANY, "Toolbar", wx.NullBitmap, wx.DefaultPosition,
wx.DefaultSize, agwStyle=RB.RIBBON_PANEL_NO_AUTO_MINIMISE|RB.RIBBON_PANEL_EXT_BUTTON)
-
+
toolbar = RB.RibbonToolBar(toolbar_panel, ID_MAIN_TOOLBAR)
toolbar.AddTool(wx.ID_ANY, CreateBitmap("align_left"))
toolbar.AddTool(wx.ID_ANY, CreateBitmap("align_center"))
@@ -338,7 +338,7 @@ class RibbonFrame(wx.Frame):
sizer_panelsizer.Add(sizer_panelcombo2, 0, wx.ALL|wx.EXPAND, 2)
sizer_panelsizer.AddStretchSpacer(1)
sizer_panel.SetSizer(sizer_panelsizer)
-
+
label_font = wx.Font(8, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_LIGHT)
self._bitmap_creation_dc.SetFont(label_font)
@@ -352,13 +352,13 @@ class RibbonFrame(wx.Frame):
wx.ArtProvider.GetBitmap(wx.ART_QUESTION, wx.ART_OTHER, wx.Size(32, 32)), "")
provider_bar.AddSimpleButton(ID_AUI_PROVIDER, "AUI Provider", CreateBitmap("aui_style"), "")
provider_bar.AddSimpleButton(ID_MSW_PROVIDER, "MSW Provider", CreateBitmap("msw_style"), "")
-
+
primary_panel = RB.RibbonPanel(scheme, wx.ID_ANY, "Primary Colour", CreateBitmap("colours"))
self._primary_gallery = self.PopulateColoursPanel(primary_panel, self._default_primary, ID_PRIMARY_COLOUR)
secondary_panel = RB.RibbonPanel(scheme, wx.ID_ANY, "Secondary Colour", CreateBitmap("colours"))
self._secondary_gallery = self.PopulateColoursPanel(secondary_panel, self._default_secondary, ID_SECONDARY_COLOUR)
-
+
dummy_2 = RB.RibbonPage(self._ribbon, wx.ID_ANY, "Empty Page", CreateBitmap("empty"))
dummy_3 = RB.RibbonPage(self._ribbon, wx.ID_ANY, "Another Page", CreateBitmap("empty"))
@@ -369,7 +369,7 @@ class RibbonFrame(wx.Frame):
self._togglePanels = wx.ToggleButton(panel, ID_TOGGLE_PANELS, "&Toggle panels")
self._togglePanels.SetValue(True)
-
+
s = wx.BoxSizer(wx.VERTICAL)
s.Add(self._ribbon, 0, wx.EXPAND)
@@ -384,12 +384,12 @@ class RibbonFrame(wx.Frame):
self.SetIcon(images.Mondrian.Icon)
self.CenterOnScreen()
self.Show()
-
+
def BindEvents(self, bars):
selection, shapes, provider_bar, toolbar_panel = bars
-
+
provider_bar.Bind(RB.EVT_RIBBONBUTTONBAR_CLICKED, self.OnDefaultProvider, id=ID_DEFAULT_PROVIDER)
provider_bar.Bind(RB.EVT_RIBBONBUTTONBAR_CLICKED, self.OnAUIProvider, id=ID_AUI_PROVIDER)
provider_bar.Bind(RB.EVT_RIBBONBUTTONBAR_CLICKED, self.OnMSWProvider, id=ID_MSW_PROVIDER)
@@ -428,48 +428,48 @@ class RibbonFrame(wx.Frame):
self.Bind(wx.EVT_MENU, self.OnPositionTopBoth, id=ID_POSITION_TOP_BOTH)
self._togglePanels.Bind(wx.EVT_TOGGLEBUTTON, self.OnTogglePanels, id=ID_TOGGLE_PANELS)
-
+
def SetBarStyle(self, agwStyle):
self._ribbon.Freeze()
self._ribbon.SetAGWWindowStyleFlag(agwStyle)
-
+
pTopSize = self.panel.GetSizer()
pToolbar = wx.FindWindowById(ID_MAIN_TOOLBAR)
if agwStyle & RB.RIBBON_BAR_FLOW_VERTICAL:
-
+
self._ribbon.SetTabCtrlMargins(10, 10)
pTopSize.SetOrientation(wx.HORIZONTAL)
if pToolbar:
pToolbar.SetRows(3, 5)
-
+
else:
-
+
self._ribbon.SetTabCtrlMargins(50, 20)
pTopSize.SetOrientation(wx.VERTICAL)
if pToolbar:
pToolbar.SetRows(2, 3)
-
+
self._ribbon.Realize()
self._ribbon.Thaw()
self.panel.Layout()
-
+
def PopulateColoursPanel(self, panel, defc, gallery_id):
gallery = wx.FindWindowById(gallery_id, panel)
-
+
if gallery:
gallery.Clear()
else:
gallery = RB.RibbonGallery(panel, gallery_id)
-
+
dc = self._bitmap_creation_dc
def_item = self.AddColourToGallery(gallery, "Default", dc, defc)
gallery.SetSelection(def_item)
-
+
self.AddColourToGallery(gallery, "BLUE", dc)
self.AddColourToGallery(gallery, "BLUE VIOLET", dc)
self.AddColourToGallery(gallery, "BROWN", dc)
@@ -514,10 +514,10 @@ class RibbonFrame(wx.Frame):
def GetGalleryColour(self, gallery, item, name=None):
data = gallery.GetItemClientData(item)
-
+
if name != None:
name = data.GetName()
-
+
return data.GetColour(), name
@@ -529,19 +529,19 @@ class RibbonFrame(wx.Frame):
gallery = event.GetGallery()
provider = gallery.GetArtProvider()
- if event.GetGalleryItem() != None:
+ if event.GetGalleryItem() != None:
if provider == self._ribbon.GetArtProvider():
provider = provider.Clone()
gallery.SetArtProvider(provider)
-
+
provider.SetColour(RB.RIBBON_ART_GALLERY_HOVER_BACKGROUND_COLOUR,
self.GetGalleryColour(event.GetGallery(), event.GetGalleryItem(), None)[0])
-
- else:
- if provider != self._ribbon.GetArtProvider():
+
+ else:
+ if provider != self._ribbon.GetArtProvider():
gallery.SetArtProvider(self._ribbon.GetArtProvider())
del provider
-
+
def OnPrimaryColourSelect(self, event):
@@ -558,7 +558,7 @@ class RibbonFrame(wx.Frame):
colour, name = self.GetGalleryColour(event.GetGallery(), event.GetGalleryItem(), "")
self.AddText("Colour %s selected as secondary."%name)
-
+
primary, dummy, tertiary = self._ribbon.GetArtProvider().GetColourScheme(1, None, 1)
self._ribbon.GetArtProvider().SetColourScheme(primary, colour, tertiary)
self.ResetGalleryArtProviders()
@@ -569,10 +569,10 @@ class RibbonFrame(wx.Frame):
if self._primary_gallery.GetArtProvider() != self._ribbon.GetArtProvider():
self._primary_gallery.SetArtProvider(self._ribbon.GetArtProvider())
-
- if self._secondary_gallery.GetArtProvider() != self._ribbon.GetArtProvider():
+
+ if self._secondary_gallery.GetArtProvider() != self._ribbon.GetArtProvider():
self._secondary_gallery.SetArtProvider(self._ribbon.GetArtProvider())
-
+
def OnSelectionExpandHButton(self, event):
@@ -595,7 +595,7 @@ class RibbonFrame(wx.Frame):
def OnCrossButton(self, event):
-
+
self.AddText("Cross button clicked.")
@@ -751,8 +751,8 @@ class RibbonFrame(wx.Frame):
def OnExtButton(self, event):
wx.MessageBox("Extended button activated")
-
-
+
+
def AddText(self, msg):
self._logwindow.AppendText(msg)
@@ -765,17 +765,17 @@ class RibbonFrame(wx.Frame):
item = None
if colour != "Default":
- c = wx.NamedColour(colour)
-
+ c = wx.Colour(colour)
+
if value is not None:
c = value
-
+
if c.IsOk():
-
+
iWidth = 64
iHeight = 40
- bitmap = wx.EmptyBitmap(iWidth, iHeight)
+ bitmap = wx.Bitmap(iWidth, iHeight)
dc.SelectObject(bitmap)
b = wx.Brush(c)
dc.SetPen(wx.BLACK_PEN)
@@ -789,20 +789,20 @@ class RibbonFrame(wx.Frame):
notcblue = min(abs(~c.Blue()), 255)
foreground = wx.Colour(notcred, notcgreen, notcblue)
-
+
if abs(foreground.Red() - c.Red()) + abs(foreground.Blue() - c.Blue()) + abs(foreground.Green() - c.Green()) < 64:
# Foreground too similar to background - use a different
# strategy to find a contrasting colour
foreground = wx.Colour((c.Red() + 64) % 256, 255 - c.Green(),
(c.Blue() + 192) % 256)
-
+
dc.SetTextForeground(foreground)
dc.DrawText(colour, (iWidth - size.GetWidth() + 1) / 2, (iHeight - size.GetHeight()) / 2)
dc.SelectObjectAsSource(wx.NullBitmap)
item = gallery.Append(bitmap, wx.ID_ANY)
gallery.SetItemClientData(item, ColourClientData(colour, c))
-
+
return item
@@ -815,11 +815,11 @@ class RibbonFrame(wx.Frame):
self._ribbon.DismissExpandedPanel()
if gallery.GetSelection():
self._colour_data.SetColour(self.GetGalleryColour(gallery, gallery.GetSelection(), None)[0])
-
+
dlg = wx.ColourDialog(self, self._colour_data)
-
+
if dlg.ShowModal() == wx.ID_OK:
-
+
self._colour_data = dlg.GetColourData()
clr = self._colour_data.GetColour()
@@ -831,13 +831,13 @@ class RibbonFrame(wx.Frame):
break
else:
item = None
-
+
# Colour not in gallery - add it
- if item == None:
+ if item == None:
item = self.AddColourToGallery(gallery, clr.GetAsString(wx.C2S_HTML_SYNTAX), self._bitmap_creation_dc,
clr)
gallery.Realize()
-
+
# Set selection
gallery.EnsureVisible(item)
gallery.SetSelection(item)
@@ -848,7 +848,7 @@ class RibbonFrame(wx.Frame):
dummy.SetGallery(gallery)
dummy.SetGalleryItem(item)
self.GetEventHandler().ProcessEvent(dummy)
-
+
def OnDefaultProvider(self, event):
@@ -915,7 +915,7 @@ def runTest(frame, nb, log):
overview = RB.__doc__
-if __name__ == '__main__':
+if __name__ == '__main__':
import sys,os
import run
run.main(['', os.path.basename(sys.argv[0])] + sys.argv[1:])
diff --git a/demo/agw/RulerCtrl.py b/demo/agw/RulerCtrl.py
index 8c11057b..b797bd90 100644
--- a/demo/agw/RulerCtrl.py
+++ b/demo/agw/RulerCtrl.py
@@ -82,7 +82,7 @@ class PythonSTC(stc.StyledTextCtrl):
self.StyleSetSpec(stc.STC_STYLE_BRACEBAD, "fore:#000000,back:#FF0000,bold")
# Python styles
- # Default
+ # Default
self.StyleSetSpec(stc.STC_P_DEFAULT, "fore:#000000,face:%(helv)s,size:%(size)d" % faces)
# Comments
self.StyleSetSpec(stc.STC_P_COMMENTLINE, "fore:#007F00,face:%(other)s,size:%(size)d" % faces)
@@ -116,8 +116,8 @@ class PythonSTC(stc.StyledTextCtrl):
# Some methods to make it compatible with how the wxTextCtrl is used
def SetValue(self, value):
- if wx.USE_UNICODE:
- value = value.decode('iso8859_1')
+ # if wx.USE_UNICODE:
+ # value = value.decode('iso8859_1')
self.SetReadOnly(False)
self.SetText(value)
@@ -131,7 +131,7 @@ class RulerCtrlDemo(wx.Frame):
wx.Frame.__init__(self, parent)
self.panel = wx.Panel(self, -1)
- statusbar = self.CreateStatusBar(2, wx.ST_SIZEGRIP)
+ statusbar = self.CreateStatusBar(2)
statusbar.SetStatusWidths([-2, -1])
# statusbar fields
statusbar_fields = [("RulerCtrl wxPython Demo, Andrea Gavana @ 03 Nov 2006"),
@@ -144,8 +144,8 @@ class RulerCtrlDemo(wx.Frame):
self.LayoutItems()
self.SetIcon(images.Mondrian.GetIcon())
- sizex = wx.SystemSettings_GetMetric(wx.SYS_SCREEN_X)
- sizey = wx.SystemSettings_GetMetric(wx.SYS_SCREEN_Y)
+ sizex = wx.SystemSettings.GetMetric(wx.SYS_SCREEN_X)
+ sizey = wx.SystemSettings.GetMetric(wx.SYS_SCREEN_Y)
self.SetSize((3*sizex/4, 3*sizey/4))
self.SendSizeEvent()
@@ -312,7 +312,7 @@ class RulerCtrlDemo(wx.Frame):
event.Skip()
- # Try to emulate the rulers inside a text editor
+ # Try to emulate the rulers inside a text editor
wx.CallAfter(self.SizeRulers)
@@ -323,9 +323,9 @@ class RulerCtrlDemo(wx.Frame):
def SizeRulers(self):
- dc = wx.MemoryDC()
+ dc = wx.MemoryDC()
width, height = self.stc.GetSize()
- dc.SelectObject(wx.EmptyBitmap(width, height))
+ dc.SelectObject(wx.Bitmap(width, height))
widthMM, heightMM = dc.GetSizeMM()
dc.SelectObject(wx.NullBitmap)
@@ -351,7 +351,7 @@ class RulerCtrlDemo(wx.Frame):
event.Skip()
- def OnLabelMinor(self, event):
+ def OnLabelMinor(self, event):
self.ruler3.LabelMinor(event.IsChecked())
event.Skip()
@@ -370,12 +370,12 @@ class RulerCtrlDemo(wx.Frame):
def OnTickColour(self, event):
- self.ruler3.SetTickPenColour(event.GetValue())
+ self.ruler3.SetTickPenColour(event.GetValue())
def OnLabelColour(self, event):
- self.ruler3.SetLabelColour(event.GetValue())
+ self.ruler3.SetLabelColour(event.GetValue())
def CreateMenu(self):
@@ -386,11 +386,11 @@ class RulerCtrlDemo(wx.Frame):
item = wx.MenuItem(fileMenu, wx.ID_ANY, "E&xit")
self.Bind(wx.EVT_MENU, self.OnQuit, item)
- fileMenu.AppendItem(item)
+ fileMenu.Append(item)
item = wx.MenuItem(helpMenu, wx.ID_ANY, "About")
self.Bind(wx.EVT_MENU, self.OnAbout, item)
- helpMenu.AppendItem(item)
+ helpMenu.Append(item)
menuBar.Append(fileMenu, "&File")
menuBar.Append(helpMenu, "&Help")
diff --git a/demo/agw/ShapedButton.py b/demo/agw/ShapedButton.py
index 78ec7906..21fb09ef 100644
--- a/demo/agw/ShapedButton.py
+++ b/demo/agw/ShapedButton.py
@@ -36,31 +36,31 @@ class ShapedButtonDemo(wx.Frame):
wx.Frame.__init__(self, parent, title="ShapedButton wxPython Demo ;-)")
# Create Some Maquillage For The Demo: Icon, StatusBar, MenuBar...
-
+
self.SetIcon(images.Mondrian.GetIcon())
- self.statusbar = self.CreateStatusBar(2, wx.ST_SIZEGRIP)
+ self.statusbar = self.CreateStatusBar(2)
self.statusbar.SetStatusWidths([-2, -1])
-
+
statusbar_fields = [("wxPython ShapedButton Demo, Andrea Gavana @ 18 Oct 2005"),
("Welcome To wxPython!")]
-
+
for i in range(len(statusbar_fields)):
self.statusbar.SetStatusText(statusbar_fields[i], i)
-
+
self.SetMenuBar(self.CreateMenuBar())
-
+
framesizer = wx.BoxSizer(wx.VERTICAL)
self.panel = wx.Panel(self, -1)
mainsizer = wx.BoxSizer(wx.VERTICAL)
hsizer0 = wx.BoxSizer(wx.HORIZONTAL)
-
- sb0 = wx.StaticBox(self.panel, -1)
+
+ sb0 = wx.StaticBox(self.panel, -1)
recordsizer = wx.StaticBoxSizer(sb0, wx.HORIZONTAL)
# Make A ToolBar-Like Audio Control With Round Buttons/Toggles
self.BuildAudioToolBar()
-
+
recordsizer.Add(self.rewind, 0, wx.LEFT, 3)
recordsizer.Add(self.play, 0, wx.LEFT, 3)
recordsizer.Add(self.record, 0, wx.LEFT, 3)
@@ -82,42 +82,42 @@ class ShapedButtonDemo(wx.Frame):
smallsizer.Add((0, 1), 1, wx.EXPAND)
smallsizer.Add(self.eventtext, 1, wx.EXPAND)
smallsizer.Add((0, 1), 1, wx.EXPAND)
-
+
hsizer0.Add(recordsizer, 1, wx.EXPAND)
hsizer0.Add(smallsizer, 1, wx.EXPAND | wx.LEFT | wx.RIGHT, 5)
mainsizer.Add(hsizer0, 0, wx.BOTTOM, 5)
mainsizer.Add((0, 10), 0, wx.EXPAND)
hsizer = wx.BoxSizer(wx.HORIZONTAL)
-
+
# Make 9 SBitmapButtons With Text Rotation And Different Colours
sb1 = wx.StaticBox(self.panel, -1, "Some Buttons")
vsizer1 = wx.StaticBoxSizer(sb1, wx.VERTICAL)
bsizer = self.BuildNineButtons()
- vsizer1.Add((0, 10), 0)
+ vsizer1.Add((0, 10), 0)
vsizer1.Add(bsizer, 1, wx.EXPAND)
vsizer1.Add((0, 10), 0)
- hsizer.Add(vsizer1, 3, wx.EXPAND)
+ hsizer.Add(vsizer1, 3, wx.EXPAND)
# Make Some Mixed SButton/SToggle With Bitmap And Text Rotation
- sb2 = wx.StaticBox(self.panel, -1, "Other Buttons")
+ sb2 = wx.StaticBox(self.panel, -1, "Other Buttons")
vsizer2 = wx.StaticBoxSizer(sb2, wx.VERTICAL)
btsizer = self.BuildMixedButtons()
- vsizer2.Add((0, 10), 0)
+ vsizer2.Add((0, 10), 0)
vsizer2.Add(btsizer, 1, wx.EXPAND)
vsizer2.Add((0, 10), 0)
hsizer.Add(vsizer2, 2, wx.EXPAND)
# Build Buttons With Elliptic Shape
- sb3 = wx.StaticBox(self.panel, -1, "Elliptic Buttons")
+ sb3 = wx.StaticBox(self.panel, -1, "Elliptic Buttons")
vsizer3 = wx.StaticBoxSizer(sb3, wx.VERTICAL)
esizer = self.BuildEllipticButtons()
- vsizer3.Add((0, 10), 0)
+ vsizer3.Add((0, 10), 0)
vsizer3.Add(esizer, 1, wx.EXPAND)
vsizer3.Add((0, 10), 0)
hsizer.Add(vsizer3, 2, wx.EXPAND)
-
+
mainsizer.Add(hsizer, 1, wx.EXPAND | wx.ALL, 5)
self.panel.SetSizer(mainsizer)
@@ -130,7 +130,7 @@ class ShapedButtonDemo(wx.Frame):
self.Layout()
self.CenterOnParent()
-
+
def BuildAudioToolBar(self):
@@ -141,8 +141,8 @@ class ShapedButtonDemo(wx.Frame):
self.rewind.SetUseFocusIndicator(False)
self.rewind.SetBitmapDisabled(disbmp)
- self.rewind.Bind(wx.EVT_BUTTON, self.OnRewind)
-
+ self.rewind.Bind(wx.EVT_BUTTON, self.OnRewind)
+
# The Play Button Is A Toggle Bitmap Button (SBitmapToggleButton)
upbmp = wx.Bitmap(os.path.join(bitmapDir, "play.png"), wx.BITMAP_TYPE_PNG)
disbmp = wx.Bitmap(os.path.join(bitmapDir, "playdisabled.png"), wx.BITMAP_TYPE_PNG)
@@ -150,7 +150,7 @@ class ShapedButtonDemo(wx.Frame):
self.play.SetUseFocusIndicator(False)
self.play.SetBitmapDisabled(disbmp)
- self.play.Bind(wx.EVT_BUTTON, self.OnPlay)
+ self.play.Bind(wx.EVT_BUTTON, self.OnPlay)
# The Record Button Is A Toggle Bitmap Button (SBitmapToggleButton)
upbmp = wx.Bitmap(os.path.join(bitmapDir, "record.png"), wx.BITMAP_TYPE_PNG)
@@ -159,7 +159,7 @@ class ShapedButtonDemo(wx.Frame):
self.record.SetUseFocusIndicator(False)
self.record.SetBitmapDisabled(disbmp)
- self.record.Bind(wx.EVT_BUTTON, self.OnRecord)
+ self.record.Bind(wx.EVT_BUTTON, self.OnRecord)
# The Pause Button Is A Toggle Bitmap Button (SBitmapToggleButton)
upbmp = wx.Bitmap(os.path.join(bitmapDir, "pause.png"), wx.BITMAP_TYPE_PNG)
@@ -179,7 +179,7 @@ class ShapedButtonDemo(wx.Frame):
self.stop.SetBitmapDisabled(disbmp)
self.stop.Enable(False)
- self.stop.Bind(wx.EVT_BUTTON, self.OnStop)
+ self.stop.Bind(wx.EVT_BUTTON, self.OnStop)
# The FFWD Button Is A Simple Bitmap Button (SBitmapButton)
upbmp = wx.Bitmap(os.path.join(bitmapDir, "ffwd.png"), wx.BITMAP_TYPE_PNG)
@@ -188,22 +188,22 @@ class ShapedButtonDemo(wx.Frame):
self.ffwd.SetUseFocusIndicator(False)
self.ffwd.SetBitmapDisabled(disbmp)
- self.ffwd.Bind(wx.EVT_BUTTON, self.OnFFWD)
+ self.ffwd.Bind(wx.EVT_BUTTON, self.OnFFWD)
def BuildNineButtons(self):
# We Build 9 Buttons With Different Colours And A Nice Text Rotation
- colours = [None, wx.BLUE, wx.RED, wx.GREEN, wx.NamedColour("Gold"),
- wx.NamedColour("Cyan"), wx.NamedColour("Yellow"),
- wx.NamedColour("Orange"), wx.NamedColour("Magenta")]
+ colours = [None, wx.BLUE, wx.RED, wx.GREEN, wx.Colour("Gold"),
+ wx.CYAN, wx.YELLOW,
+ wx.Colour("Orange"), wx.Colour("Magenta")]
labels = ["These", "Are", "Some", "Nice", "Text", "Appended",
"To Different", "Buttons", "Nice Eh?"]
fnt = self.GetFont()
-
+
fonts = [fnt, wx.Font(8, wx.SWISS, wx.NORMAL, wx.BOLD),
wx.Font(10, wx.TELETYPE, wx.NORMAL, wx.NORMAL),
wx.Font(8, wx.SWISS, wx.NORMAL, wx.NORMAL, True),
@@ -211,14 +211,14 @@ class ShapedButtonDemo(wx.Frame):
wx.Font(8, wx.SWISS, wx.NORMAL, wx.NORMAL, False, "Tahoma"),
fnt, wx.Font(8, wx.SWISS, wx.NORMAL, wx.NORMAL, True, "Verdana")]
- lcolours = [None, wx.WHITE, wx.NamedColour("Yellow"), wx.WHITE,
+ lcolours = [None, wx.WHITE, wx.Colour("Yellow"), wx.WHITE,
None, None, wx.BLUE, wx.WHITE, wx.WHITE]
bsizer = wx.FlexGridSizer(3, 3, 5, 5)
rotation = []
for ii in xrange(9):
-
+
btn = SButton(self.panel, -1, labels[ii])
btn.SetButtonColour(colours[ii])
btn.SetFont(fonts[ii])
@@ -239,8 +239,8 @@ class ShapedButtonDemo(wx.Frame):
self.buttonlabels = labels
self.buttonrotation = rotation
-
- return bsizer
+
+ return bsizer
def BuildMixedButtons(self):
@@ -248,28 +248,28 @@ class ShapedButtonDemo(wx.Frame):
# Here We Build Some Buttons/Toggles With Different Properties
# Notice That We Put Some Images Also For The "Selected" State
# For A Button
-
+
btsizer = wx.FlexGridSizer(2, 2, 5, 5)
- bmp = wx.Bitmap(os.path.join(bitmapDir, "italy.gif"), wx.BITMAP_TYPE_GIF)
+ bmp = wx.Bitmap(os.path.join(bitmapDir, "italy.gif"), wx.BITMAP_TYPE_GIF)
btn1 = SBitmapButton(self.panel, -1, bmp)
- bmp = wx.Bitmap(os.path.join(bitmapDir, "canada.gif"), wx.BITMAP_TYPE_GIF)
+ bmp = wx.Bitmap(os.path.join(bitmapDir, "canada.gif"), wx.BITMAP_TYPE_GIF)
btn1.SetBitmapSelected(bmp)
- btn1.Bind(wx.EVT_BUTTON, self.OnItalyCanada)
+ btn1.Bind(wx.EVT_BUTTON, self.OnItalyCanada)
- bmp = wx.Bitmap(os.path.join(bitmapDir, "stop.png"), wx.BITMAP_TYPE_PNG)
+ bmp = wx.Bitmap(os.path.join(bitmapDir, "stop.png"), wx.BITMAP_TYPE_PNG)
btn2 = SBitmapTextToggleButton(self.panel, -1, bmp, "Toggle!")
- bmp = wx.Bitmap(os.path.join(bitmapDir, "play.png"), wx.BITMAP_TYPE_PNG)
+ bmp = wx.Bitmap(os.path.join(bitmapDir, "play.png"), wx.BITMAP_TYPE_PNG)
btn2.SetBitmapSelected(bmp)
btn2.Bind(wx.EVT_BUTTON, self.OnTogglePlayStop)
btn3 = SButton(self.panel, -1, "Rotated")
- btn3.SetButtonColour(wx.NamedColour("Cyan"))
+ btn3.SetButtonColour(wx.Colour("Cyan"))
btn3.SetLabelColour(wx.WHITE)
btn3.SetFont(wx.Font(8, wx.SWISS, wx.NORMAL, wx.BOLD, False))
btn3.SetAngleOfRotation(90)
btn3.Bind(wx.EVT_BUTTON, self.OnRotated1)
-
+
btn4 = SButton(self.panel, -1, "Button!")
btn4.SetAngleOfRotation(45)
btn4.Bind(wx.EVT_BUTTON, self.OnRotated1)
@@ -285,14 +285,14 @@ class ShapedButtonDemo(wx.Frame):
btsizer.AddGrowableCol(1)
return btsizer
-
+
def BuildEllipticButtons(self):
# Here We Build Elliptic Buttons. Elliptic Buttons Are Somewhat
# More Hostiles To Handle, Probably Because My Implementation
# Is Lacking Somewhere, But They Look Nice However.
-
+
esizer = wx.FlexGridSizer(2, 2, 5, 5)
btn1 = SButton(self.panel, -1, "Ellipse 1")
@@ -309,18 +309,18 @@ class ShapedButtonDemo(wx.Frame):
btn2.SetFont(wx.Font(8, wx.SWISS, wx.NORMAL, wx.BOLD, True))
btn2.Bind(wx.EVT_BUTTON, self.OnEllipse)
- bmp = wx.Bitmap(os.path.join(bitmapDir, "ffwd.png"), wx.BITMAP_TYPE_PNG)
+ bmp = wx.Bitmap(os.path.join(bitmapDir, "ffwd.png"), wx.BITMAP_TYPE_PNG)
btn3 = SBitmapTextToggleButton(self.panel, -1, bmp, "FFWD")
bmp = wx.Bitmap(os.path.join(bitmapDir, "rewind.png"), wx.BITMAP_TYPE_PNG)
btn3.SetBitmapSelected(bmp)
btn3.SetEllipseAxis(1.4, 1)
btn3.Bind(wx.EVT_BUTTON, self.OnFFWDRewind)
- bmp = wx.Bitmap(os.path.join(bitmapDir, "round.png"), wx.BITMAP_TYPE_PNG)
+ bmp = wx.Bitmap(os.path.join(bitmapDir, "round.png"), wx.BITMAP_TYPE_PNG)
btn4 = SBitmapButton(self.panel, -1, bmp)
btn4.SetEllipseAxis(1, 1.4)
btn4.Bind(wx.EVT_BUTTON, self.OnRound)
-
+
esizer.Add(btn1, 1, wx.EXPAND | wx.ALL, 5)
esizer.Add(btn2, 1, wx.EXPAND | wx.ALL, 5)
esizer.Add(btn3, 1, wx.EXPAND | wx.ALL, 5)
@@ -332,32 +332,32 @@ class ShapedButtonDemo(wx.Frame):
esizer.AddGrowableCol(1)
return esizer
-
+
def CreateMenuBar(self):
file_menu = wx.Menu()
-
- AS_EXIT = wx.NewId()
+
+ AS_EXIT = wx.NewId()
file_menu.Append(AS_EXIT, "&Exit")
self.Bind(wx.EVT_MENU, self.OnClose, id=AS_EXIT)
help_menu = wx.Menu()
- AS_ABOUT = wx.NewId()
+ AS_ABOUT = wx.NewId()
help_menu.Append(AS_ABOUT, "&About...")
self.Bind(wx.EVT_MENU, self.OnAbout, id=AS_ABOUT)
menu_bar = wx.MenuBar()
menu_bar.Append(file_menu, "&File")
- menu_bar.Append(help_menu, "&Help")
+ menu_bar.Append(help_menu, "&Help")
- return menu_bar
+ return menu_bar
def OnClose(self, event):
-
+
self.Destroy()
@@ -369,19 +369,19 @@ class ShapedButtonDemo(wx.Frame):
"To Me At The Following Adresses:\n\n" + \
"andrea.gavana@agip.it\n" + "andrea_gavana@tin.it\n\n" + \
"Welcome To wxPython " + wx.VERSION_STRING + "!!"
-
+
dlg = wx.MessageDialog(self, msg, "ShapedButton Demo",
wx.OK | wx.ICON_INFORMATION)
-
+
dlg.ShowModal()
dlg.Destroy()
-
+
def OnRewind(self, event):
self.eventtext.SetLabel("Rewind Button!")
self.eventtext.Refresh()
-
+
event.Skip()
@@ -401,7 +401,7 @@ class ShapedButtonDemo(wx.Frame):
self.rewind.Enable(False)
self.ffwd.Enable(False)
self.record.Enable(False)
-
+
event.Skip()
@@ -418,7 +418,7 @@ class ShapedButtonDemo(wx.Frame):
event.Skip()
return
-
+
self.eventtext.SetLabel("What Are You Recording? ;-)")
self.eventtext.Refresh()
self.stop.Enable(True)
@@ -426,7 +426,7 @@ class ShapedButtonDemo(wx.Frame):
self.rewind.Enable(False)
self.ffwd.Enable(False)
self.play.Enable(False)
-
+
event.Skip()
@@ -436,9 +436,9 @@ class ShapedButtonDemo(wx.Frame):
self.eventtext.SetLabel("Pausing Play Or Recording...")
else:
self.eventtext.SetLabel("Playing After A Pause...")
-
+
self.eventtext.Refresh()
-
+
event.Skip()
@@ -446,7 +446,7 @@ class ShapedButtonDemo(wx.Frame):
self.eventtext.SetLabel("Everything Stopped")
self.eventtext.Refresh()
-
+
self.stop.Enable(False)
self.pause.Enable(False)
self.rewind.Enable(True)
@@ -456,7 +456,7 @@ class ShapedButtonDemo(wx.Frame):
self.play.SetToggle(False)
self.pause.SetToggle(False)
self.record.SetToggle(False)
-
+
event.Skip()
@@ -464,10 +464,10 @@ class ShapedButtonDemo(wx.Frame):
self.eventtext.SetLabel("Fast Forward Button!")
self.eventtext.Refresh()
-
+
event.Skip()
-
-
+
+
def OnNineButtons(self, event):
btn = event.GetEventObject()
@@ -475,10 +475,10 @@ class ShapedButtonDemo(wx.Frame):
mystr = "Button: " + label + ", Rotation: " + \
str(int(btn.GetAngleOfRotation())) + " Degrees"
-
+
self.eventtext.SetLabel(mystr)
self.eventtext.Refresh()
-
+
event.Skip()
@@ -486,7 +486,7 @@ class ShapedButtonDemo(wx.Frame):
self.eventtext.SetLabel("Italy VS Canada ;-)")
self.eventtext.Refresh()
-
+
event.Skip()
@@ -500,7 +500,7 @@ class ShapedButtonDemo(wx.Frame):
self.eventtext.SetLabel(label)
self.eventtext.Refresh()
- event.Skip()
+ event.Skip()
def OnRotated1(self, event):
@@ -513,10 +513,10 @@ class ShapedButtonDemo(wx.Frame):
self.eventtext.SetLabel(mystr)
self.eventtext.Refresh()
- btn.SetAngleOfRotation(random.randint(0, 359))
-
+ btn.SetAngleOfRotation(random.randint(0, 359))
+
event.Skip()
-
+
def OnEllipse(self, event):
@@ -529,12 +529,12 @@ class ShapedButtonDemo(wx.Frame):
self.eventtext.Refresh()
event.Skip()
-
+
def OnFFWDRewind(self, event):
btn = event.GetEventObject()
-
+
if event.GetIsDown():
label = "Let's Rewind Everything"
btn.SetLabel("REW")
@@ -544,7 +544,7 @@ class ShapedButtonDemo(wx.Frame):
self.eventtext.SetLabel(label)
self.eventtext.Refresh()
-
+
event.Skip()
@@ -594,7 +594,7 @@ def runTest(frame, nb, log):
overview = docs
-if __name__ == '__main__':
+if __name__ == '__main__':
import sys,os
import run
run.main(['', os.path.basename(sys.argv[0])] + sys.argv[1:])
diff --git a/demo/agw/ShortcutEditor.py b/demo/agw/ShortcutEditor.py
index b8a9ccb5..f6619eb8 100644
--- a/demo/agw/ShortcutEditor.py
+++ b/demo/agw/ShortcutEditor.py
@@ -260,7 +260,7 @@ class ShortcutEditorDemo(wx.Frame):
recursive = ''
- top_menu.AppendItem(sub_menu)
+ top_menu.Append(sub_menu)
if random.randint(0, 1) == 1 and index < num_menus - 1:
# Append a separator
diff --git a/demo/agw/SpeedMeter.py b/demo/agw/SpeedMeter.py
index 2f955510..e0cf5e6b 100644
--- a/demo/agw/SpeedMeter.py
+++ b/demo/agw/SpeedMeter.py
@@ -24,23 +24,23 @@ except ImportError: # if it's not there locally, try the wxPython lib.
#----------------------------------------------------------------------
class SpeedMeterDemo(wx.Panel):
-
+
def __init__(self, parent, log):
wx.Panel.__init__(self, parent, style=wx.TAB_TRAVERSAL|wx.NO_FULL_REPAINT_ON_RESIZE)
-
+
panel = wx.Panel(self, -1)
sizer = wx.FlexGridSizer(2, 3, 2, 5)
# 6 Panels To Hold The SpeedMeters ;-)
-
+
panel1 = wx.Panel(panel, -1, style=wx.SUNKEN_BORDER)
panel2 = wx.Panel(panel, -1, style=wx.RAISED_BORDER)
panel3 = wx.Panel(panel, -1, style=wx.SUNKEN_BORDER)
panel4 = wx.Panel(panel, -1, style=wx.RAISED_BORDER)
panel5 = wx.Panel(panel, -1, style=wx.SUNKEN_BORDER)
panel6 = wx.Panel(panel, -1, style=wx.RAISED_BORDER)
-
+
# First SpeedMeter: We Use The Following Styles:
#
# SM_DRAW_HAND: We Want To Draw The Hand (Arrow) Indicator
@@ -59,7 +59,7 @@ class SpeedMeterDemo(wx.Panel):
# Set The Region Of Existence Of SpeedMeter (Always In Radians!!!!)
self.SpeedWindow1.SetAngleRange(-pi/6, 7*pi/6)
- # Create The Intervals That Will Divide Our SpeedMeter In Sectors
+ # Create The Intervals That Will Divide Our SpeedMeter In Sectors
intervals = range(0, 201, 20)
self.SpeedWindow1.SetIntervals(intervals)
@@ -78,7 +78,7 @@ class SpeedMeterDemo(wx.Panel):
# Set The Font For The Ticks Markers
self.SpeedWindow1.SetTicksFont(wx.Font(7, wx.SWISS, wx.NORMAL, wx.NORMAL))
-
+
# Set The Text In The Center Of SpeedMeter
self.SpeedWindow1.SetMiddleText("Km/h")
# Assign The Colour To The Center Text
@@ -92,12 +92,12 @@ class SpeedMeterDemo(wx.Panel):
# Do Not Draw The External (Container) Arc. Drawing The External Arc May
# Sometimes Create Uglier Controls. Try To Comment This Line And See It
# For Yourself!
- self.SpeedWindow1.DrawExternalArc(False)
+ self.SpeedWindow1.DrawExternalArc(False)
# Set The Current Value For The SpeedMeter
self.SpeedWindow1.SetSpeedValue(44)
-
+
# Second SpeedMeter: We Use The Following Styles:
#
# SM_DRAW_HAND: We Want To Draw The Hand (Arrow) Indicator
@@ -108,7 +108,7 @@ class SpeedMeterDemo(wx.Panel):
# SM_DRAW_PARTIAL_FILLER: The Region Passed By The Hand Indicator Is Highlighted
# With A Different Filling Colour
# SM_DRAW_SHADOW: A Shadow For The Hand Indicator Is Drawn
-
+
self.SpeedWindow2 = SM.SpeedMeter(panel2,
agwStyle=SM.SM_DRAW_HAND |
SM.SM_DRAW_SECTORS |
@@ -124,7 +124,7 @@ class SpeedMeterDemo(wx.Panel):
intervals = range(0, 13)
self.SpeedWindow2.SetIntervals(intervals)
- colours = [wx.SystemSettings_GetColour(0)]*12
+ colours = [wx.SystemSettings.GetColour(0)]*12
self.SpeedWindow2.SetIntervalColours(colours)
ticks = [str(interval) for interval in intervals]
@@ -135,7 +135,7 @@ class SpeedMeterDemo(wx.Panel):
self.SpeedWindow2.SetTicksFont(wx.Font(11, wx.SCRIPT, wx.NORMAL, wx.BOLD, True))
self.SpeedWindow2.SetNumberOfSecondaryTicks(4)
- # Set The Colour For The External Arc
+ # Set The Colour For The External Arc
self.SpeedWindow2.SetArcColour(wx.BLUE)
self.SpeedWindow2.SetHandColour(wx.BLACK)
@@ -147,7 +147,7 @@ class SpeedMeterDemo(wx.Panel):
self.SpeedWindow2.SetSpeedBackground(wx.WHITE)
# Set The Colour For The Shadow
- self.SpeedWindow2.SetShadowColour(wx.Colour(128, 128, 128))
+ self.SpeedWindow2.SetShadowColour(wx.Colour(128, 128, 128))
self.SpeedWindow2.SetSpeedValue(0.0)
@@ -157,7 +157,7 @@ class SpeedMeterDemo(wx.Panel):
# SM_DRAW_HAND: We Want To Draw The Hand (Arrow) Indicator
# SM_DRAW_PARTIAL_SECTORS: Partial Sectors Will Be Drawn, To Indicate Different Intervals
# SM_DRAW_MIDDLE_ICON: We Draw An Icon In The Center Of SpeedMeter
-
+
self.SpeedWindow3 = SM.SpeedMeter(panel3,
agwStyle=SM.SM_DRAW_HAND |
SM.SM_DRAW_PARTIAL_SECTORS |
@@ -177,7 +177,7 @@ class SpeedMeterDemo(wx.Panel):
ticks = ["F", "", "", "", "E"]
self.SpeedWindow3.SetTicks(ticks)
self.SpeedWindow3.SetTicksColour(wx.WHITE)
-
+
self.SpeedWindow3.SetHandColour(wx.Colour(255, 255, 0))
# Define The Icon We Want
@@ -185,16 +185,16 @@ class SpeedMeterDemo(wx.Panel):
icon.SetWidth(24)
icon.SetHeight(24)
- # Draw The Icon In The Center Of SpeedMeter
- self.SpeedWindow3.SetMiddleIcon(icon)
+ # Draw The Icon In The Center Of SpeedMeter
+ self.SpeedWindow3.SetMiddleIcon(icon)
- self.SpeedWindow3.SetSpeedBackground(wx.BLACK)
+ self.SpeedWindow3.SetSpeedBackground(wx.BLACK)
self.SpeedWindow3.SetArcColour(wx.WHITE)
-
+
self.SpeedWindow3.SetSpeedValue(0.7)
-
+
# Fourth SpeedMeter: We Use The Following Styles:
#
# SM_DRAW_HAND: We Want To Draw The Hand (Arrow) Indicator
@@ -205,7 +205,7 @@ class SpeedMeterDemo(wx.Panel):
# NOTE: We Use The Mouse Style mousestyle=SM_MOUSE_TRACK. In This Way, Mouse
# Events Are Catched (Mainly Left Clicks/Drags) And You Can Change The Speed
# Value Using The Mouse
-
+
self.SpeedWindow4 = SM.SpeedMeter(panel4,
agwStyle=SM.SM_DRAW_HAND |
SM.SM_DRAW_SECTORS |
@@ -229,15 +229,15 @@ class SpeedMeterDemo(wx.Panel):
self.SpeedWindow4.SetTicks(ticks)
self.SpeedWindow4.SetTicksColour(wx.BLACK)
self.SpeedWindow4.SetTicksFont(wx.Font(7, wx.TELETYPE, wx.NORMAL, wx.BOLD))
-
+
self.SpeedWindow4.SetHandColour(wx.Colour(0, 0, 255))
- self.SpeedWindow4.SetSpeedBackground(wx.SystemSettings_GetColour(0))
+ self.SpeedWindow4.SetSpeedBackground(wx.SystemSettings.GetColour(0))
self.SpeedWindow4.DrawExternalArc(False)
self.SpeedWindow4.SetHandColour(wx.GREEN)
- self.SpeedWindow4.SetShadowColour(wx.Colour(50, 50, 50))
+ self.SpeedWindow4.SetShadowColour(wx.Colour(50, 50, 50))
# We Want A Simple Arrow As Indicator, Not The More Scenic Hand ;-)
self.SpeedWindow4.SetHandStyle("Arrow")
@@ -247,10 +247,10 @@ class SpeedMeterDemo(wx.Panel):
icon.SetWidth(16)
icon.SetHeight(16)
- # Draw The Icon In The Center Of SpeedMeter
- self.SpeedWindow4.SetMiddleIcon(icon)
+ # Draw The Icon In The Center Of SpeedMeter
+ self.SpeedWindow4.SetMiddleIcon(icon)
- # Quite An High Fever!!!
+ # Quite An High Fever!!!
self.SpeedWindow4.SetSpeedValue(41.4)
@@ -262,7 +262,7 @@ class SpeedMeterDemo(wx.Panel):
# The Main Ticks (Intervals)
# SM_DRAW_MIDDLE_TEXT: We Draw Some Text In The Center Of SpeedMeter
# SM_ROTATE_TEXT: The Ticks Texts Are Rotated Accordingly To Their Angle
-
+
self.SpeedWindow5 = SM.SpeedMeter(panel5,
agwStyle=SM.SM_DRAW_HAND |
SM.SM_DRAW_PARTIAL_SECTORS |
@@ -289,7 +289,7 @@ class SpeedMeterDemo(wx.Panel):
self.SpeedWindow5.SetHandColour(wx.Colour(255, 50, 0))
- self.SpeedWindow5.SetSpeedBackground(wx.SystemSettings_GetColour(0))
+ self.SpeedWindow5.SetSpeedBackground(wx.SystemSettings.GetColour(0))
self.SpeedWindow5.DrawExternalArc(False)
@@ -298,10 +298,10 @@ class SpeedMeterDemo(wx.Panel):
self.SpeedWindow5.SetMiddleText("rpm")
self.SpeedWindow5.SetMiddleTextColour(wx.WHITE)
self.SpeedWindow5.SetMiddleTextFont(wx.Font(8, wx.SWISS, wx.NORMAL, wx.BOLD))
- self.SpeedWindow5.SetSpeedBackground(wx.Colour(160, 160, 160))
-
+ self.SpeedWindow5.SetSpeedBackground(wx.Colour(160, 160, 160))
+
self.SpeedWindow5.SetSpeedValue(5.6)
-
+
# Sixth SpeedMeter: That Is Complete And Complex Example.
# We Use The Following Styles:
@@ -314,7 +314,7 @@ class SpeedMeterDemo(wx.Panel):
# Give Some Kind Of Scenic Effect
# SM_DRAW_FANCY_TICKS: We Use wx.lib.
# SM_DRAW_SHADOW: A Shadow For The Hand Indicator Is Drawn
-
+
self.SpeedWindow6 = SM.SpeedMeter(panel6,
agwStyle=SM.SM_DRAW_HAND |
SM.SM_DRAW_PARTIAL_FILLER |
@@ -340,13 +340,13 @@ class SpeedMeterDemo(wx.Panel):
self.SpeedWindow6.DrawExternalArc(False)
- self.SpeedWindow6.SetFillerColour(wx.Colour(145, 220, 200))
+ self.SpeedWindow6.SetFillerColour(wx.Colour(145, 220, 200))
self.SpeedWindow6.SetShadowColour(wx.BLACK)
- self.SpeedWindow6.SetDirection("Reverse")
+ self.SpeedWindow6.SetDirection("Reverse")
- self.SpeedWindow6.SetSpeedBackground(wx.SystemSettings_GetColour(0))
+ self.SpeedWindow6.SetSpeedBackground(wx.SystemSettings.GetColour(0))
# Set The First Gradient Colour, Which Is The Colour Near The External Arc
self.SpeedWindow6.SetFirstGradientColour(wx.RED)
@@ -356,22 +356,22 @@ class SpeedMeterDemo(wx.Panel):
icon = wx.Icon(os.path.normpath(os.path.join(bitmapDir, "smpi.ico")), wx.BITMAP_TYPE_ICO)
icon.SetHeight(12)
icon.SetWidth(12)
- self.SpeedWindow6.SetMiddleIcon(icon)
-
+ self.SpeedWindow6.SetMiddleIcon(icon)
+
self.SpeedWindow6.SetSpeedValue(pi/3)
# End Of SpeedMeter Controls Construction. Add Some Functionality
self.isalive = 0
-
+
# These Are Cosmetics For The First SpeedMeter Control
bsizer1 = wx.BoxSizer(wx.VERTICAL)
- hsizer1 = wx.BoxSizer(wx.HORIZONTAL)
- slider = wx.Slider(panel1, -1, 44, 0, 200, size=(-1, 40),
+ hsizer1 = wx.BoxSizer(wx.HORIZONTAL)
+ slider = wx.Slider(panel1, -1, 44, 0, 200, size=(-1, 40),
style=wx.SL_HORIZONTAL | wx.SL_AUTOTICKS | wx.SL_LABELS )
- slider.SetTickFreq(5, 1)
+ slider.SetTickFreq(5)
slider.Bind(wx.EVT_SCROLL, self.OnSliderScroll)
slider.SetToolTip(wx.ToolTip("Drag The Slider To Change The Speed!"))
@@ -383,14 +383,14 @@ class SpeedMeterDemo(wx.Panel):
# These Are Cosmetics For The Second SpeedMeter Control
-
+
# Create The Timer For The Clock
self.timer = wx.PyTimer(self.ClockTimer)
self.currvalue = 0
bsizer2 = wx.BoxSizer(wx.VERTICAL)
- hsizer2 = wx.BoxSizer(wx.HORIZONTAL)
+ hsizer2 = wx.BoxSizer(wx.HORIZONTAL)
stattext2 = wx.StaticText(panel2, -1, "A Simple Clock", style=wx.ALIGN_CENTER)
button2 = wx.Button(panel2, -1, "Stop")
@@ -400,27 +400,27 @@ class SpeedMeterDemo(wx.Panel):
hsizer2.Add(button2, 0, wx.LEFT, 5)
hsizer2.Add(stattext2, 1, wx.EXPAND)
-
- bsizer2.Add(self.SpeedWindow2, 1, wx.EXPAND)
- bsizer2.Add(hsizer2, 0, wx.EXPAND)
+
+ bsizer2.Add(self.SpeedWindow2, 1, wx.EXPAND)
+ bsizer2.Add(hsizer2, 0, wx.EXPAND)
panel2.SetSizer(bsizer2)
-
+
# These Are Cosmetics For The Third SpeedMeter Control
self.timer3 = wx.PyTimer(self.OilTimer)
bsizer3 = wx.BoxSizer(wx.VERTICAL)
-
+
hsizer3 = wx.BoxSizer(wx.HORIZONTAL)
sc = wx.SpinCtrl(panel3, -1, size=(60,20))
sc.SetRange(1, 250)
sc.SetValue(50)
self.spinctrl = sc
-
+
strs = "Change The Speed And See How Much Fuel You Loose"
self.spinctrl.SetToolTip(wx.ToolTip(strs))
-
+
button3 = wx.Button(panel3, -1, "Refill!", size=(60,20))
button3.SetToolTip(wx.ToolTip("Click Here To Refill!"))
button3.Bind(wx.EVT_BUTTON, self.OnRefill)
@@ -441,7 +441,7 @@ class SpeedMeterDemo(wx.Panel):
stattext4 = wx.StaticText(panel4, -1, "Use The Mouse ;-)")
hsizer4.Add(stattext4, 1, wx.EXPAND | wx.LEFT, 5)
-
+
bsizer4.Add(self.SpeedWindow4, 1, wx.EXPAND)
bsizer4.Add(hsizer4, 0, wx.EXPAND)
panel4.SetSizer(bsizer4)
@@ -451,14 +451,14 @@ class SpeedMeterDemo(wx.Panel):
bsizer5 = wx.BoxSizer(wx.VERTICAL)
hsizer5 = wx.BoxSizer(wx.HORIZONTAL)
-
+
button5 = wx.Button(panel5, -1, "Simulate")
button5.SetToolTip(wx.ToolTip("Start A Car Acceleration Simulation"))
button5.Bind(wx.EVT_BUTTON, self.OnSimulate)
hsizer5.Add(button5, 0, wx.EXPAND | wx.LEFT, 5)
hsizer5.Add((1,0), 1, wx.EXPAND)
-
+
bsizer5.Add(self.SpeedWindow5, 1, wx.EXPAND)
bsizer5.Add(hsizer5, 0, wx.EXPAND)
panel5.SetSizer(bsizer5)
@@ -467,46 +467,46 @@ class SpeedMeterDemo(wx.Panel):
# These Are Cosmetics For The Sixth SpeedMeter Control
bsizer6 = wx.BoxSizer(wx.VERTICAL)
hsizer6 = wx.BoxSizer(wx.HORIZONTAL)
-
+
txtctrl6 = wx.TextCtrl(panel6, -1, "60", size=(60, 20))
txtctrl6.SetToolTip(wx.ToolTip("Insert An Angle In DEGREES"))
- self.txtctrl = txtctrl6
-
+ self.txtctrl = txtctrl6
+
button6 = wx.Button(panel6, -1, "Go!")
button6.SetToolTip(wx.ToolTip("Calculate The Equivalent In Radians And Display It"))
hsizer6.Add(txtctrl6, 0, wx.EXPAND | wx.LEFT, 5)
hsizer6.Add(button6, 0, wx.EXPAND | wx.LEFT, 5)
hsizer6.Add((1,0), 1, wx.EXPAND)
-
+
button6.Bind(wx.EVT_BUTTON, self.OnCalculate)
bsizer6.Add(self.SpeedWindow6, 1, wx.EXPAND)
bsizer6.Add(hsizer6, 0, wx.EXPAND)
panel6.SetSizer(bsizer6)
-
+
bsizer1.Layout()
bsizer2.Layout()
bsizer3.Layout()
bsizer4.Layout()
bsizer5.Layout()
bsizer6.Layout()
-
+
sizer.Add(panel1, 1, wx.EXPAND)
sizer.Add(panel2, 1, wx.EXPAND)
sizer.Add(panel3, 1, wx.EXPAND)
-
+
sizer.Add(panel4, 1, wx.EXPAND)
sizer.Add(panel5, 1, wx.EXPAND)
sizer.Add(panel6, 1, wx.EXPAND)
sizer.AddGrowableRow(0)
sizer.AddGrowableRow(1)
-
+
sizer.AddGrowableCol(0)
sizer.AddGrowableCol(1)
sizer.AddGrowableCol(2)
-
+
panel.SetSizer(sizer)
mainSizer = wx.BoxSizer(wx.VERTICAL)
@@ -516,7 +516,7 @@ class SpeedMeterDemo(wx.Panel):
self.timer.Start(1000)
self.timer3.Start(500)
-
+
def OnSliderScroll(self, event):
@@ -532,14 +532,14 @@ class SpeedMeterDemo(wx.Panel):
else:
self.currvalue = self.currvalue + 1
- self.SpeedWindow2.SetMiddleText(str(self.currvalue) + " s")
+ self.SpeedWindow2.SetMiddleText(str(self.currvalue) + " s")
self.SpeedWindow2.SetSpeedValue(self.currvalue/5.0)
def OnStopClock(self, event):
btn = event.GetEventObject()
-
+
if self.stopped == 0:
self.stopped = 1
self.timer.Stop()
@@ -548,12 +548,12 @@ class SpeedMeterDemo(wx.Panel):
self.stopped = 0
self.timer.Start()
btn.SetLabel("Stop")
-
-
+
+
def OilTimer(self):
val = self.spinctrl.GetValue()
-
+
if val > 250:
return
@@ -562,7 +562,7 @@ class SpeedMeterDemo(wx.Panel):
if new > 4.0:
return
-
+
self.SpeedWindow3.SetSpeedValue(new)
@@ -572,7 +572,7 @@ class SpeedMeterDemo(wx.Panel):
def OnSimulate(self, event):
-
+
for ii in range(50):
self.SpeedWindow5.SetSpeedValue(ii/10.0)
wx.MilliSleep(10)
@@ -585,12 +585,12 @@ class SpeedMeterDemo(wx.Panel):
wx.MilliSleep(50)
current = self.SpeedWindow5.GetSpeedValue()
-
+
for ii in range(59):
current = current + 1.0/10.0
self.SpeedWindow5.SetSpeedValue(current)
- wx.MilliSleep(10)
-
+ wx.MilliSleep(10)
+
event.Skip()
@@ -615,7 +615,7 @@ class SpeedMeterDemo(wx.Panel):
end = anglerange[1]
error = 0
-
+
if newval < start:
msg = "ERROR: Value Entered In The TextCtrl:\n\n" + myval + "\n\n"
msg = msg + "Is Smaller Than Minimum Value."
@@ -634,7 +634,7 @@ class SpeedMeterDemo(wx.Panel):
return
self.SpeedWindow6.SetSpeedValue(newval)
-
+
#----------------------------------------------------------------------
diff --git a/demo/agw/SuperToolTip.py b/demo/agw/SuperToolTip.py
index 75730ee3..d351e31d 100644
--- a/demo/agw/SuperToolTip.py
+++ b/demo/agw/SuperToolTip.py
@@ -38,11 +38,11 @@ class SuperToolTipDemo(wx.Frame):
self.stylesCombo = wx.ComboBox(self.mainPanel, -1, choices=STT.GetStyleKeys(),
style=wx.CB_DROPDOWN|wx.CB_READONLY)
self.customStyles = wx.RadioButton(self.mainPanel, -1, "Custom ")
- self.topColourPicker = wx.ColourPickerCtrl(self.mainPanel, col=wx.WHITE)
- system = wx.SystemSettings_GetColour(wx.SYS_COLOUR_ACTIVECAPTION)
- r, g, b = system
- self.middleColourPicker = wx.ColourPickerCtrl(self.mainPanel, col=wx.Colour((255-r)/2, (255-g)/2, (255-b)/2))
- self.bottomColourPicker = wx.ColourPickerCtrl(self.mainPanel, col=system)
+ self.topColourPicker = wx.ColourPickerCtrl(self.mainPanel, colour=wx.WHITE)
+ system = wx.SystemSettings.GetColour(wx.SYS_COLOUR_ACTIVECAPTION)
+ r, g, b, a = system
+ self.middleColourPicker = wx.ColourPickerCtrl(self.mainPanel, colour=wx.Colour((255-r)/2, (255-g)/2, (255-b)/2))
+ self.bottomColourPicker = wx.ColourPickerCtrl(self.mainPanel, colour=system)
self.headerCheck = wx.CheckBox(self.mainPanel, -1, "Show Header")
self.headerText = wx.TextCtrl(self.mainPanel, -1, "Merge And Center")
self.headerBitmap = wx.StaticBitmap(self.mainPanel, -1,
@@ -55,7 +55,7 @@ class SuperToolTipDemo(wx.Frame):
wx.Bitmap(os.path.normpath(os.path.join(bitmapDir, "sttfont.png")),
wx.BITMAP_TYPE_PNG))
msg = "A Bold Title\n\nJoins the selected cells into one larger cell\nand centers the contents in the new cell.\n" \
- "This is often used to create labels that span\nmultiple columns.\n\n
draw a horizontal line - text on same line will be ignored\n\nI am a link{http://xoomer.alice.it/infinity77}"
+ "This is often used to create labels that span\nmultiple columns.\n\nI am a link{http://xoomer.alice.it/infinity77}"
self.bodyText = wx.TextCtrl(self.mainPanel, -1, msg, style=wx.TE_MULTILINE)
self.includeCheck = wx.CheckBox(self.mainPanel, -1, "Include Body Image")
self.footerCheck = wx.CheckBox(self.mainPanel, -1, "Show Footer")
@@ -69,7 +69,7 @@ class SuperToolTipDemo(wx.Frame):
self.dropShadow = wx.CheckBox(self.mainPanel, -1, "Rounded Corners And Drop Shadow (Windows XP Only)")
self.useFade = wx.CheckBox(self.mainPanel, -1, "Fade In/Fade Out Effects (Windows XP Only)")
self.endTimer = wx.SpinCtrl(self.mainPanel, -1, "5")
-
+
btnBmp = wx.Bitmap(os.path.normpath(os.path.join(bitmapDir,"sttbutton.png")), wx.BITMAP_TYPE_PNG)
self.toolTipButton = buttons.ThemedGenBitmapTextButton(self.mainPanel, -1, btnBmp, " Big Test Button ",
size=(-1, 130))
@@ -87,7 +87,7 @@ class SuperToolTipDemo(wx.Frame):
self.generateTip.Bind(wx.EVT_BUTTON, self.OnGenerateTip)
self.Bind(wx.EVT_FILEPICKER_CHANGED, self.OnPickBitmap, self.headerFilePicker)
self.Bind(wx.EVT_FILEPICKER_CHANGED, self.OnPickBitmap, self.footerFilePicker)
-
+
self.enableWidgets = {}
self.enableWidgets[self.headerCheck] = [self.headerBitmap, self.headerFilePicker,
@@ -109,15 +109,15 @@ class SuperToolTipDemo(wx.Frame):
menuBar = wx.MenuBar(wx.MB_DOCKABLE)
fileMenu = wx.Menu()
helpMenu = wx.Menu()
-
+
item = wx.MenuItem(fileMenu, wx.ID_ANY, "E&xit", "Exit demo")
self.Bind(wx.EVT_MENU, self.OnClose, item)
- fileMenu.AppendItem(item)
+ fileMenu.Append(item)
item = wx.MenuItem(helpMenu, wx.ID_ANY, "About...", "Shows The About Dialog")
self.Bind(wx.EVT_MENU, self.OnAbout, item)
- helpMenu.AppendItem(item)
-
+ helpMenu.Append(item)
+
menuBar.Append(fileMenu, "&File")
menuBar.Append(helpMenu, "&Help")
@@ -149,7 +149,7 @@ class SuperToolTipDemo(wx.Frame):
mainSizer = wx.BoxSizer(wx.VERTICAL)
topSizer = wx.BoxSizer(wx.HORIZONTAL)
- otherSizer = wx.StaticBoxSizer(self.otherSizer_staticbox, wx.VERTICAL)
+ otherSizer = wx.StaticBoxSizer(self.otherSizer_staticbox, wx.VERTICAL)
toolTipSizer = wx.StaticBoxSizer(self.toolTipSizer_staticbox, wx.HORIZONTAL)
toolTipSizer_1 = wx.BoxSizer(wx.VERTICAL)
footerSizer = wx.StaticBoxSizer(self.footerSizer_staticbox, wx.VERTICAL)
@@ -172,13 +172,13 @@ class SuperToolTipDemo(wx.Frame):
colourSizer_2.Add(self.topColourPicker, 0, wx.RIGHT|wx.ALIGN_CENTER_VERTICAL, 5)
label_2 = wx.StaticText(self.mainPanel, -1, "Middle:")
colourSizer_2.Add(label_2, 0, wx.RIGHT|wx.ALIGN_CENTER_VERTICAL, 3)
- colourSizer_2.Add(self.middleColourPicker, 0, wx.RIGHT|wx.ALIGN_CENTER_VERTICAL, 5)
+ colourSizer_2.Add(self.middleColourPicker, 0, wx.RIGHT|wx.ALIGN_CENTER_VERTICAL, 5)
label_3 = wx.StaticText(self.mainPanel, -1, "Bottom:")
colourSizer_2.Add(label_3, 0, wx.RIGHT|wx.ALIGN_CENTER_VERTICAL, 3)
colourSizer_2.Add(self.bottomColourPicker, 0, wx.RIGHT|wx.ALIGN_CENTER_VERTICAL, 5)
colourSizer.Add(colourSizer_2, 1, wx.EXPAND, 0)
mainSizer.Add(colourSizer, 0, wx.ALL|wx.EXPAND, 5)
-
+
headerSizer.Add(self.headerCheck, 0, wx.ALL, 5)
label_4 = wx.StaticText(self.mainPanel, -1, "Header Text:")
headerSizer_1.Add(label_4, 0, wx.RIGHT|wx.ALIGN_CENTER_VERTICAL, 5)
@@ -206,7 +206,7 @@ class SuperToolTipDemo(wx.Frame):
topSizer.Add(headerSizer, 1, wx.EXPAND|wx.ALL, 5)
topSizer.Add(footerSizer, 1, wx.EXPAND|wx.ALL, 5)
mainSizer.Add(topSizer, 0, wx.TOP|wx.BOTTOM|wx.EXPAND, 5)
-
+
bodySizer.Add(self.bodyBitmap, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5)
bodySizer_2.Add(self.bodyText, 1, wx.EXPAND, 0)
bodySizer_2.Add(self.includeCheck, 0, wx.RIGHT|wx.TOP, 5)
@@ -221,7 +221,7 @@ class SuperToolTipDemo(wx.Frame):
otherSizer.Add((0, 2))
otherSizer.Add(self.endTimer, 0, wx.LEFT|wx.RIGHT|wx.BOTTOM, 5)
mainSizer.Add(otherSizer, 0, wx.ALL|wx.EXPAND, 5)
-
+
toolTipSizer.Add(self.toolTipButton, 1, wx.ALL|wx.EXPAND, 5)
toolTipSizer_1.Add(self.generateTip, 0, wx.ALL, 5)
toolTipSizer.Add(toolTipSizer_1, 0, wx.EXPAND, 0)
@@ -234,7 +234,7 @@ class SuperToolTipDemo(wx.Frame):
frameSizer.Fit(self)
self.Layout()
- wx.CallAfter(mainSizer.Layout)
+ wx.CallAfter(mainSizer.Layout)
def OnRadioColours(self, event):
@@ -278,7 +278,7 @@ class SuperToolTipDemo(wx.Frame):
else:
self.footerBitmap.SetBitmap(bmp)
self.footerBitmap.Refresh()
-
+
def OnGenerateTip(self, event):
@@ -302,7 +302,7 @@ class SuperToolTipDemo(wx.Frame):
bodyImage = self.bodyBitmap.GetBitmap()
else:
bodyImage = wx.NullBitmap
-
+
if self.footerCheck.GetValue() == 0:
footerText, footerBmp, drawFLine = "", wx.NullBitmap, False
else:
@@ -310,7 +310,7 @@ class SuperToolTipDemo(wx.Frame):
footerBmp = self.footerBitmap.GetBitmap()
drawFLine = self.footerLineCheck.GetValue()
- if not hasattr(self, "tip"):
+ if not hasattr(self, "tip"):
self.tip = STT.SuperToolTip(message)
else:
self.tip.SetMessage(message)
@@ -320,7 +320,7 @@ class SuperToolTipDemo(wx.Frame):
self.tip.SetHeaderBitmap(headerBmp)
self.tip.SetFooter(footerText)
self.tip.SetFooterBitmap(footerBmp)
-
+
self.tip.SetTarget(self.toolTipButton)
self.tip.SetDrawHeaderLine(drawHLine)
self.tip.SetDrawFooterLine(drawFLine)
@@ -328,7 +328,7 @@ class SuperToolTipDemo(wx.Frame):
self.tip.SetDropShadow(self.dropShadow.GetValue())
self.tip.SetUseFade(self.useFade.GetValue())
self.tip.SetEndDelay(self.endTimer.GetValue())
-
+
if self.stylesRadio.GetValue():
self.tip.ApplyStyle(styleKey)
else:
@@ -339,7 +339,7 @@ class SuperToolTipDemo(wx.Frame):
def OnClose(self, event):
wx.CallAfter(self.Destroy)
-
+
def OnAbout(self, event):
@@ -349,17 +349,17 @@ class SuperToolTipDemo(wx.Frame):
"to me at the following addresses:\n\n" + \
"andrea.gavana@gmail.com\n" + "andrea.gavana@maerskoil.com\n\n" + \
"Welcome to wxPython " + wx.VERSION_STRING + "!!"
-
+
dlg = wx.MessageDialog(self, msg, "SuperToolTip wxPython Demo",
wx.OK | wx.ICON_INFORMATION)
dlg.ShowModal()
- dlg.Destroy()
-
+ dlg.Destroy()
+
class TestPanel(wx.Panel):
def __init__(self, parent, log):
-
+
self.log = log
wx.Panel.__init__(self, parent, -1)
diff --git a/demo/agw/ThumbnailCtrl.py b/demo/agw/ThumbnailCtrl.py
index 55637df5..dd5d2296 100644
--- a/demo/agw/ThumbnailCtrl.py
+++ b/demo/agw/ThumbnailCtrl.py
@@ -27,7 +27,7 @@ class ThumbnailCtrlDemo(wx.Frame):
self.SetIcon(images.Mondrian.GetIcon())
self.SetTitle("ThumbnailCtrl wxPython Demo ;-)")
- self.statusbar = self.CreateStatusBar(2, wx.ST_SIZEGRIP)
+ self.statusbar = self.CreateStatusBar(2)
self.statusbar.SetStatusWidths([-2, -1])
# statusbar fields
statusbar_fields = [("ThumbnailCtrl Demo, Andrea Gavana @ 10 Dec 2005"),
@@ -37,14 +37,14 @@ class ThumbnailCtrlDemo(wx.Frame):
self.statusbar.SetStatusText(statusbar_fields[i], i)
self.SetMenuBar(self.CreateMenuBar())
-
+
splitter = wx.SplitterWindow(self, -1, style=wx.CLIP_CHILDREN |
wx.SP_3D | wx.WANTS_CHARS | wx.SP_LIVE_UPDATE)
self.panel = wx.Panel(splitter, -1)
sizer = wx.BoxSizer(wx.HORIZONTAL)
scroll = TC.ThumbnailCtrl(splitter, -1, imagehandler=TC.NativeImageHandler)
-
+
scroll.ShowFileNames()
if os.path.isdir("../bitmaps"):
scroll.ShowDir(os.path.normpath(os.getcwd() + "/../bitmaps"))
@@ -53,7 +53,7 @@ class ThumbnailCtrlDemo(wx.Frame):
self.TC = scroll
self.log = log
-
+
self.thumbsizer_staticbox = wx.StaticBox(self.panel, -1, "Thumb Style")
self.customsizer_staticbox = wx.StaticBox(self.panel, -1, "Thumb Customization")
self.optionsizer_staticbox = wx.StaticBox(self.panel, -1, "More Options")
@@ -79,13 +79,13 @@ class ThumbnailCtrlDemo(wx.Frame):
self.radiostyle4]
self.thumbstyles = ["THUMB_OUTLINE_NONE", "THUMB_OUTLINE_FULL", "THUMB_OUTLINE_RECT",
"THUMB_OUTLINE_IMAGE"]
-
+
self.SetProperties()
self.DoLayout()
self.panel.SetSizer(sizer)
sizer.Layout()
-
+
self.Bind(wx.EVT_RADIOBUTTON, self.OnChangeOutline, self.radiostyle1)
self.Bind(wx.EVT_RADIOBUTTON, self.OnChangeOutline, self.radiostyle2)
self.Bind(wx.EVT_RADIOBUTTON, self.OnChangeOutline, self.radiostyle3)
@@ -105,14 +105,14 @@ class ThumbnailCtrlDemo(wx.Frame):
self.TC.Bind(TC.EVT_THUMBNAILS_SEL_CHANGED, self.OnSelChanged)
self.TC.Bind(TC.EVT_THUMBNAILS_POINTED, self.OnPointed)
self.TC.Bind(TC.EVT_THUMBNAILS_DCLICK, self.OnDClick)
-
+
splitter.SplitVertically(scroll, self.panel, 180)
- splitter.SetMinimumPaneSize(140)
+ splitter.SetMinimumPaneSize(140)
self.SetMinSize((700, 590))
self.CenterOnScreen()
-
+
def SetProperties(self):
self.radiostyle4.SetValue(1)
@@ -125,7 +125,7 @@ class ThumbnailCtrlDemo(wx.Frame):
def DoLayout(self):
-
+
splitsizer = wx.BoxSizer(wx.VERTICAL)
optionsizer = wx.StaticBoxSizer(self.optionsizer_staticbox, wx.VERTICAL)
zoomsizer = wx.BoxSizer(wx.HORIZONTAL)
@@ -158,32 +158,32 @@ class ThumbnailCtrlDemo(wx.Frame):
self.panel.SetAutoLayout(True)
self.panel.SetSizer(splitsizer)
splitsizer.Fit(self.panel)
-
+
def CreateMenuBar(self):
file_menu = wx.Menu()
-
- AS_EXIT = wx.NewId()
+
+ AS_EXIT = wx.NewId()
file_menu.Append(AS_EXIT, "&Exit")
self.Bind(wx.EVT_MENU, self.OnClose, id=AS_EXIT)
help_menu = wx.Menu()
- AS_ABOUT = wx.NewId()
+ AS_ABOUT = wx.NewId()
help_menu.Append(AS_ABOUT, "&About...")
self.Bind(wx.EVT_MENU, self.OnAbout, id=AS_ABOUT)
menu_bar = wx.MenuBar()
menu_bar.Append(file_menu, "&File")
- menu_bar.Append(help_menu, "&Help")
+ menu_bar.Append(help_menu, "&Help")
- return menu_bar
+ return menu_bar
def OnClose(self, event):
-
+
self.Destroy()
@@ -195,10 +195,10 @@ class ThumbnailCtrlDemo(wx.Frame):
"To Me At The Following Adresses:\n\n" + \
"andrea.gavana@agip.it\n" + "andrea_gavana@tin.it\n\n" + \
"Welcome To wxPython " + wx.VERSION_STRING + "!!"
-
+
dlg = wx.MessageDialog(self, msg, "ThumbnailCtrl Demo",
wx.OK | wx.ICON_INFORMATION)
-
+
dlg.SetFont(wx.Font(8, wx.NORMAL, wx.NORMAL, wx.NORMAL, False))
dlg.ShowModal()
dlg.Destroy()
@@ -212,15 +212,15 @@ class ThumbnailCtrlDemo(wx.Frame):
# If the user selects OK, then we process the dialog's data.
# This is done by getting the path data from the dialog - BEFORE
- # we destroy it.
+ # we destroy it.
if dlg.ShowModal() == wx.ID_OK:
self.TC.ShowDir(dlg.GetPath())
self.log.write("OnSetDirectory: directory changed to: %s\n"%dlg.GetPath())
# Only destroy a dialog after you're done with it.
dlg.Destroy()
-
-
+
+
def OnChangeOutline(self, event): # wxGlade: MyFrame.
radio = event.GetEventObject()
@@ -236,7 +236,7 @@ class ThumbnailCtrlDemo(wx.Frame):
self.TC.SetThumbOutline(TC.THUMB_OUTLINE_IMAGE)
self.TC.Refresh()
-
+
self.log.write("OnChangeOutline: Outline changed to: %s\n"%self.thumbstyles[pos])
event.Skip()
@@ -249,7 +249,7 @@ class ThumbnailCtrlDemo(wx.Frame):
else:
self.TC.SetHighlightPointed(False)
self.log.write("OnHighlight: Don't Highlight thumbs on pointing\n")
-
+
event.Skip()
@@ -263,7 +263,7 @@ class ThumbnailCtrlDemo(wx.Frame):
self.log.write("OnShowFiles: Thumbs file names not shown\n")
self.TC.Refresh()
-
+
event.Skip()
@@ -277,9 +277,9 @@ class ThumbnailCtrlDemo(wx.Frame):
self.log.write("OnEnableDragging: Thumbs drag and drop disabled\n")
self.TC.Refresh()
-
+
event.Skip()
-
+
def OnSetPopup(self, event): # wxGlade: MyFrame.
@@ -290,7 +290,7 @@ class ThumbnailCtrlDemo(wx.Frame):
else:
self.TC.SetPopupMenu(None)
self.log.write("OnSetPopup: Popups disabled on thumbs\n")
-
+
event.Skip()
@@ -303,7 +303,7 @@ class ThumbnailCtrlDemo(wx.Frame):
else:
self.TC.SetGlobalPopupMenu(None)
self.log.write("OnSetGlobalPopup: Popups disabled globally (no selection needed)\n")
-
+
event.Skip()
@@ -329,8 +329,8 @@ class ThumbnailCtrlDemo(wx.Frame):
self.TC.EnableToolTips(False)
event.Skip()
-
-
+
+
def OnSetZoom(self, event): # wxGlade: MyFrame.
val = self.textzoom.GetValue().strip()
@@ -357,7 +357,7 @@ class ThumbnailCtrlDemo(wx.Frame):
return
self.TC.SetZoomFactor(val)
-
+
event.Skip()
@@ -377,7 +377,7 @@ class ThumbnailCtrlDemo(wx.Frame):
self.log.write("OnDClick: Thumb double-clicked: %s\n"%self.TC.GetSelection())
event.Skip()
-
+
def OnSetFont(self, event): # wxGlade: MyFrame.
@@ -386,17 +386,17 @@ class ThumbnailCtrlDemo(wx.Frame):
data.SetInitialFont(self.TC.GetCaptionFont())
dlg = wx.FontDialog(self, data)
-
+
if dlg.ShowModal() == wx.ID_OK:
data = dlg.GetFontData()
font = data.GetChosenFont()
self.TC.SetCaptionFont(font)
self.TC.Refresh()
self.log.write("OnSetFont: Caption font changed\n")
-
+
# Don't destroy the dialog until you get everything you need from the
# dialog!
- dlg.Destroy()
+ dlg.Destroy()
event.Skip()
@@ -404,7 +404,7 @@ class ThumbnailCtrlDemo(wx.Frame):
dlg = wx.ColourDialog(self)
- # Ensure the full colour dialog is displayed,
+ # Ensure the full colour dialog is displayed,
# not the abbreviated version.
dlg.GetColourData().SetChooseFull(True)
@@ -424,7 +424,7 @@ class ThumbnailCtrlDemo(wx.Frame):
# Once the dialog is destroyed, Mr. wx.ColourData is no longer your
# friend. Don't use it again!
dlg.Destroy()
-
+
def CreatePopups(self):
@@ -451,15 +451,15 @@ class ThumbnailCtrlDemo(wx.Frame):
self.Bind(wx.EVT_MENU, self.OnPopupSeven, id=self.popupID7)
self.Bind(wx.EVT_MENU, self.OnPopupEight, id=self.popupID8)
self.Bind(wx.EVT_MENU, self.OnPopupNine, id=self.popupID9)
-
+
menu = wx.Menu()
item = wx.MenuItem(menu, self.popupID1, "One")
img = images.Mondrian.GetImage()
img.Rescale(16, 16)
bmp = img.ConvertToBitmap()
item.SetBitmap(bmp)
- menu.AppendItem(item)
-
+ menu.Append(item)
+
# add some other items
menu.Append(self.popupID2, "Two")
menu.Append(self.popupID3, "Three")
@@ -470,7 +470,7 @@ class ThumbnailCtrlDemo(wx.Frame):
sm = wx.Menu()
sm.Append(self.popupID8, "Sub Item 1")
sm.Append(self.popupID9, "Sub Item 1")
- menu.AppendMenu(self.popupID7, "Test Submenu", sm)
+ menu.Append(self.popupID7, "Test Submenu", sm)
return menu
@@ -485,10 +485,10 @@ class ThumbnailCtrlDemo(wx.Frame):
self.Bind(wx.EVT_MENU, self.OnPopupTen, id=self.popupID10)
self.Bind(wx.EVT_MENU, self.OnPopupEleven, id=self.popupID11)
self.Bind(wx.EVT_MENU, self.OnPopupTwelve, id=self.popupID12)
-
+
menu = wx.Menu()
item = wx.MenuItem(menu, self.popupID10, "Select all")
- menu.AppendItem(item)
+ menu.Append(item)
menu.AppendSeparator()
item = wx.MenuItem(menu, self.popupID11, "Say Hello!")
@@ -496,13 +496,13 @@ class ThumbnailCtrlDemo(wx.Frame):
img.Rescale(16, 16)
bmp = img.ConvertToBitmap()
item.SetBitmap(bmp)
- menu.AppendItem(item)
+ menu.Append(item)
menu.AppendSeparator()
-
+
menu.Append(self.popupID12, "Get thumbs count")
return menu
-
+
def OnPopupOne(self, event):
self.log.write("OnPopupMenu: Popup One\n")
@@ -538,7 +538,7 @@ class ThumbnailCtrlDemo(wx.Frame):
def OnPopupNine(self, event):
self.log.write("OnPopupMenu: Popup Nine\n")
-
+
def OnPopupTen(self, event):
@@ -548,14 +548,14 @@ class ThumbnailCtrlDemo(wx.Frame):
self.TC.SetSelection(ii)
self.log.write("OnGlobalPopupMenu: all thumbs selected\n")
-
+
event.Skip()
def OnPopupEleven(self, event):
self.log.write("OnGlobalPopupMenu: say hello message...\n")
-
+
msgstr = "Info: let's say hello to wxPython! "
dlg = wx.MessageDialog(self, msgstr, "ThumbnailCtrlDemo Info",
wx.OK | wx.ICON_INFORMATION)
@@ -569,7 +569,7 @@ class ThumbnailCtrlDemo(wx.Frame):
items = self.TC.GetItemCount()
self.log.write("OnGlobalPopupMenu: number of thumbs: %d\n"%items)
-
+
msgstr = "Info: number of thumbs: %d"%items
dlg = wx.MessageDialog(self, msgstr, "ThumbnailCtrlDemo Info",
wx.OK | wx.ICON_INFORMATION)
@@ -577,8 +577,8 @@ class ThumbnailCtrlDemo(wx.Frame):
dlg.Destroy()
event.Skip()
-
-
+
+
#---------------------------------------------------------------------------
diff --git a/demo/agw/ToasterBox.py b/demo/agw/ToasterBox.py
index f613fc31..f5974c02 100644
--- a/demo/agw/ToasterBox.py
+++ b/demo/agw/ToasterBox.py
@@ -23,7 +23,7 @@ except ImportError: # if it's not there locally, try the wxPython lib.
# In case of TB_COMPLEX style, create a panel that contains an image, some
# text, an hyperlink and a ticker.
-import wx.lib.hyperlink as hyperlink
+from wx.adv import HyperlinkCtrl as hyperlink
from wx.lib.ticker import Ticker
# ------------------------------------------------------------------------------ #
@@ -327,7 +327,7 @@ class ToasterBoxDemo(scrolled.ScrolledPanel):
if os.path.isfile(bmp):
dummybmp = wx.Bitmap(bmp)
- if dummybmp.Ok():
+ if dummybmp.IsOk():
tb.SetPopupBitmap(bmp)
else:
tb.SetPopupBitmap()
diff --git a/demo/agw/UltimateListCtrl.py b/demo/agw/UltimateListCtrl.py
index 9322370c..3920e970 100644
--- a/demo/agw/UltimateListCtrl.py
+++ b/demo/agw/UltimateListCtrl.py
@@ -45,14 +45,14 @@ class ButtonPanel(wx.Panel):
self.SetSizer(box)
box.Fit(self)
-
+
def OnButton(self, event):
-
+
event.Skip()
wx.BeginBusyCursor()
-
+
modName = buttonDefs[event.GetId()][0]
module = __import__(modName)
frame = module.TestFrame(None, self.log)
diff --git a/demo/agw/UltimateReportDemo.py b/demo/agw/UltimateReportDemo.py
index cbacfb0b..a39dad82 100644
--- a/demo/agw/UltimateReportDemo.py
+++ b/demo/agw/UltimateReportDemo.py
@@ -194,21 +194,21 @@ class UltimateRenderer_1(object):
def __init__(self, parent):
self.progressValue = random.randint(1, 99)
-
+
def DrawSubItem(self, dc, rect, line, highlighted, enabled):
"""Draw a custom progress bar using double buffering to prevent flicker"""
- canvas = wx.EmptyBitmap(rect.width, rect.height)
+ canvas = wx.Bitmap(rect.width, rect.height)
mdc = wx.MemoryDC()
mdc.SelectObject(canvas)
if highlighted:
- mdc.SetBackground(wx.Brush(wx.SystemSettings_GetColour(wx.SYS_COLOUR_HIGHLIGHT)))
+ mdc.SetBackground(wx.Brush(wx.SystemSettings.GetColour(wx.SYS_COLOUR_HIGHLIGHT)))
else:
- mdc.SetBackground(wx.Brush(wx.SystemSettings_GetColour(wx.SYS_COLOUR_WINDOW)))
+ mdc.SetBackground(wx.Brush(wx.SystemSettings.GetColour(wx.SYS_COLOUR_WINDOW)))
mdc.Clear()
-
+
self.DrawProgressBar(mdc, 0, 0, rect.width, rect.height, self.progressValue)
mdc.SetFont(wx.Font(8, wx.SWISS, wx.NORMAL, wx.BOLD))
@@ -218,17 +218,17 @@ class UltimateRenderer_1(object):
dc.SetClippingRegion(rect.x, rect.y, rect.width, rect.height)
dc.Blit(rect.x+3, rect.y, rect.width-6, rect.height, mdc, 0, 0)
dc.DestroyClippingRegion()
-
+
def GetLineHeight(self):
return PIPE_HEIGHT + 6
-
+
def GetSubItemWidth(self):
return 130
-
+
def UpdateValue(self):
@@ -239,7 +239,7 @@ class UltimateRenderer_1(object):
def DrawHorizontalPipe(self, dc, x, y, w, colour):
"""Draws a horizontal 3D-looking pipe."""
-
+
for r in range(PIPE_HEIGHT):
red = int(colour.Red() * math.sin((math.pi/PIPE_HEIGHT)*r))
green = int(colour.Green() * math.sin((math.pi/PIPE_HEIGHT)*r))
@@ -250,26 +250,26 @@ class UltimateRenderer_1(object):
def DrawProgressBar(self, dc, x, y, w, h, percent):
"""
- Draws a progress bar in the (x,y,w,h) box that represents a progress of
- 'percent'. The progress bar is only horizontal and it's height is constant
- (PIPE_HEIGHT). The 'h' parameter is used to vertically center the progress
+ Draws a progress bar in the (x,y,w,h) box that represents a progress of
+ 'percent'. The progress bar is only horizontal and it's height is constant
+ (PIPE_HEIGHT). The 'h' parameter is used to vertically center the progress
bar in the allotted space.
-
+
The drawing is speed-optimized. Two bitmaps are created the first time this
function runs - one for the done (green) part of the progress bar and one for
the remaining (white) part. During normal operation the function just cuts
the necessary part of the two bitmaps and draws them.
"""
-
+
# Create two pipes
if self.DONE_BITMAP is None:
- self.DONE_BITMAP = wx.EmptyBitmap(PIPE_WIDTH, PIPE_HEIGHT)
+ self.DONE_BITMAP = wx.Bitmap(PIPE_WIDTH, PIPE_HEIGHT)
mdc = wx.MemoryDC()
mdc.SelectObject(self.DONE_BITMAP)
self.DrawHorizontalPipe(mdc, 0, 0, PIPE_WIDTH, wx.GREEN)
mdc.SelectObject(wx.NullBitmap)
- self.REMAINING_BITMAP = wx.EmptyBitmap(PIPE_WIDTH, PIPE_HEIGHT)
+ self.REMAINING_BITMAP = wx.Bitmap(PIPE_WIDTH, PIPE_HEIGHT)
mdc = wx.MemoryDC()
mdc.SelectObject(self.REMAINING_BITMAP)
self.DrawHorizontalPipe(mdc, 0, 0, PIPE_WIDTH, wx.RED)
@@ -277,7 +277,7 @@ class UltimateRenderer_1(object):
mdc.SelectObject(wx.NullBitmap)
# Center the progress bar vertically in the box supplied
- y = y + (h - PIPE_HEIGHT)/2
+ y = y + (h - PIPE_HEIGHT)/2
if percent == 0:
middle = 0
@@ -300,7 +300,7 @@ class UltimateRenderer_1(object):
class UltimateRenderer_2(object):
def __init__(self, parent):
-
+
e = wx.FontEnumerator()
e.EnumerateFacenames()
fontList = e.GetFacenames()
@@ -318,19 +318,19 @@ class UltimateRenderer_2(object):
self.width, self.height, descent, el = dc.GetFullTextExtent(self.text)
self.height += descent
-
+
def DrawSubItem(self, dc, rect, line, highlighted, enabled):
-
+
dc.SetBackgroundMode(wx.SOLID)
dc.SetBrush(wx.Brush(wx.BLACK, wx.SOLID))
dc.SetPen(wx.TRANSPARENT_PEN)
- dc.DrawRectangleRect(rect)
+ dc.DrawRectangle(rect)
- dc.SetBackgroundMode(wx.TRANSPARENT)
+ dc.SetBackgroundMode(wx.TRANSPARENT)
dc.SetFont(self.randomFont)
- colours = [wx.RED, wx.WHITE, wx.GREEN, wx.NamedColour("SKY BLUE")]
+ colours = [wx.RED, wx.WHITE, wx.GREEN, wx.Colour("SKY BLUE")]
w, h = dc.GetTextExtent("Hg")
x = rect.x + 1
y = rect.y + rect.height/2 - h/2
@@ -347,7 +347,7 @@ class UltimateRenderer_2(object):
def GetLineHeight(self):
return self.height + 5
-
+
def GetSubItemWidth(self):
@@ -363,13 +363,13 @@ class UltimateRenderer_3(object):
lenCDB = len(colourList)
colourIndex = random.randint(0, lenCDB-1)
self.colour = colourList[colourIndex]
-
+
def DrawSubItem(self, dc, rect, line, highlighted, enabled):
centerX, centerY = rect.width/2, rect.height/2
dc.GradientFillConcentric(rect, self.colour, wx.WHITE, (centerX, centerY))
-
+
def GetLineHeight(self):
@@ -379,59 +379,59 @@ class UltimateRenderer_3(object):
def GetSubItemWidth(self):
return 40
-
-
+
+
class UltimateHeaderRenderer(object):
def __init__(self, parent):
self._hover = False
self._pressed = False
-
+
def DrawHeaderButton(self, dc, rect, flags):
-
+
self._hover = False
self._pressed = False
-
+
color = wx.Colour(150,150,150)
if flags & wx.CONTROL_DISABLED:
color = wx.Colour(wx.WHITE)
elif flags & wx.CONTROL_SELECTED:
color = wx.Colour(wx.BLUE)
-
+
if flags & wx.CONTROL_PRESSED:
self._pressed = True
color = cutils.AdjustColour(color,-50)
elif flags & wx.CONTROL_CURRENT:
self._hover = True
color = cutils.AdjustColour(color,50)
-
+
dc.SetBrush(wx.Brush(color, wx.SOLID))
dc.SetBackgroundMode(wx.SOLID)
dc.SetPen(wx.TRANSPARENT_PEN)
- dc.DrawRectangleRect(rect)
+ dc.DrawRectangle(rect)
- dc.SetBackgroundMode(wx.TRANSPARENT)
+ dc.SetBackgroundMode(wx.TRANSPARENT)
def GetForegroundColour(self):
-
+
if self._hover:
return wx.Colour(30,30,30)
else:
return wx.Colour(230,230,230)
-
-
+
+
class TestUltimateListCtrl(ULC.UltimateListCtrl):
-
+
def __init__(self, parent, id=wx.ID_ANY, pos=wx.DefaultPosition, size=wx.DefaultSize, style=0, agwStyle=0):
-
+
ULC.UltimateListCtrl.__init__(self, parent, id, pos, size, style, agwStyle)
## listmix.TextEditMixin.__init__(self)
-
+
class UltimateListCtrlPanel(wx.Panel, listmix.ColumnSorterMixin):
-
+
def __init__(self, parent, log):
wx.Panel.__init__(self, parent, -1, style=wx.WANTS_CHARS|wx.SUNKEN_BORDER)
@@ -442,7 +442,7 @@ class UltimateListCtrlPanel(wx.Panel, listmix.ColumnSorterMixin):
self.colourList = cdb.getColourList()
self.count = 0
self.log = log
-
+
self.il = ULC.PyImageList(16, 16)
self.idx1 = self.il.Add(images.Smiles.GetBitmap())
@@ -454,7 +454,7 @@ class UltimateListCtrlPanel(wx.Panel, listmix.ColumnSorterMixin):
self.il.Add(images.expansion.GetBitmap())
self.il.Add(decryptedBitmap.GetBitmap())
self.il.Add(coloursBitmap.GetBitmap())
-
+
self.list = TestUltimateListCtrl(self, -1,
agwStyle=wx.LC_REPORT
#| wx.BORDER_SUNKEN
@@ -466,7 +466,7 @@ class UltimateListCtrlPanel(wx.Panel, listmix.ColumnSorterMixin):
| wx.LC_HRULES
#| wx.LC_SINGLE_SEL
| ULC.ULC_HAS_VARIABLE_ROW_HEIGHT)
-
+
self.list.SetImageList(self.il, wx.IMAGE_LIST_SMALL)
sizer.Add(self.list, 1, wx.EXPAND)
@@ -503,25 +503,25 @@ class UltimateListCtrlPanel(wx.Panel, listmix.ColumnSorterMixin):
self.Bind(wx.EVT_IDLE, self.OnIdle)
self.Bind(wx.EVT_TIMER, self.OnTimer)
-
+
def PopulateList(self):
self.list.Freeze()
- font = wx.SystemSettings_GetFont(wx.SYS_DEFAULT_GUI_FONT)
- boldfont = wx.SystemSettings_GetFont(wx.SYS_DEFAULT_GUI_FONT)
+ font = wx.SystemSettings.GetFont(wx.SYS_DEFAULT_GUI_FONT)
+ boldfont = wx.SystemSettings.GetFont(wx.SYS_DEFAULT_GUI_FONT)
boldfont.SetWeight(wx.BOLD)
boldfont.SetPointSize(12)
boldfont.SetUnderlined(True)
-
+
info = ULC.UltimateListItem()
info._mask = wx.LIST_MASK_TEXT | wx.LIST_MASK_IMAGE | wx.LIST_MASK_FORMAT | ULC.ULC_MASK_CHECK
info._image = [1, 2]
info._format = 0
info._kind = 1
info._text = "Artist\nName"
-
+
self.list.InsertColumnInfo(0, info)
info = ULC.UltimateListItem()
@@ -530,7 +530,7 @@ class UltimateListCtrlPanel(wx.Panel, listmix.ColumnSorterMixin):
info._image = []
info._text = "Title"
info._font = boldfont
-
+
self.list.InsertColumnInfo(1, info)
info = ULC.UltimateListItem()
@@ -546,18 +546,18 @@ class UltimateListCtrlPanel(wx.Panel, listmix.ColumnSorterMixin):
info._format = 0
info._text = "Custom Renderer"
info._colour = wx.RED
-
+
# Add our custom renderer for the header of column 3, we can also use
# SetHeaderCustomRenderer to set the renderer for all the columns.
klass = UltimateHeaderRenderer(self)
- info.SetCustomRenderer(klass)
-
+ info.SetCustomRenderer(klass)
+
self.list.InsertColumnInfo(3, info)
-
+
# The custom renderer can also be set for all columns on the header and/or footer
# self.list.SetHeaderCustomRenderer(klass)
-
- # We must first have a footer in order to set its custom renderer:
+
+ # We must first have a footer in order to set its custom renderer:
# style = self.list.GetAGWWindowStyleFlag() | ULC.ULC_FOOTER
# if self.list.GetAGWWindowStyleFlag() != style:
# self.list.SetAGWWindowStyleFlag(style)
@@ -565,7 +565,7 @@ class UltimateListCtrlPanel(wx.Panel, listmix.ColumnSorterMixin):
items = musicdata.items()
renderers = {}
-
+
for key, data in items:
if key == 3:
index = self.list.InsertImageStringItem(sys.maxint, data[0], [3, 4, 7], it_kind=1)
@@ -589,7 +589,7 @@ class UltimateListCtrlPanel(wx.Panel, listmix.ColumnSorterMixin):
if random.randint(0, 2) == 2:
# set some radiobutton-like item on the 3rd column
it_kind = 2
-
+
self.list.SetStringItem(index, 2, data[2], it_kind=it_kind)
self.list.SetStringItem(index, 3, data[3])
@@ -605,7 +605,7 @@ class UltimateListCtrlPanel(wx.Panel, listmix.ColumnSorterMixin):
else:
klass = UltimateRenderer_3()
self.list.SetItemCustomRenderer(index, 3, klass)
-
+
self.list.SetItemData(index, key)
self.renderers = renderers
@@ -618,7 +618,7 @@ class UltimateListCtrlPanel(wx.Panel, listmix.ColumnSorterMixin):
item.SetTextColour(wx.BLUE)
pyData = datetime.date(2009, 1, 1)
item.SetPyData(pyData)
-
+
self.list.SetItem(item)
item = self.list.GetItem(4)
item.SetTextColour(wx.RED)
@@ -647,48 +647,48 @@ class UltimateListCtrlPanel(wx.Panel, listmix.ColumnSorterMixin):
item = self.list.GetItem(11, 0)
textctrl = wx.TextCtrl(self.list, -1, "I Am A Simple\nMultiline wx.TexCtrl", style=wx.TE_MULTILINE)
item.SetWindow(textctrl)
- self.list.SetItem(item)
+ self.list.SetItem(item)
# Put an item with overflow
self.list.SetItemOverFlow(10, 0, True)
-
+
self.currentItem = 0
fontMask = ULC.ULC_MASK_FONTCOLOUR|ULC.ULC_MASK_FONT
fullMask = fontMask|ULC.ULC_MASK_BACKCOLOUR
- customRow, customCol, colours = [0, 3], [2, 1], [wx.RED, wx.NamedColour("Yellow")]
-
+ customRow, customCol, colours = [0, 3], [2, 1], [wx.RED, wx.Colour("Yellow")]
+
for row, col, colour in zip(customRow, customCol, colours):
item = self.list.GetItem(row, col)
item.SetMask(fullMask)
item.SetTextColour(wx.GREEN)
- font = wx.SystemSettings_GetFont(wx.SYS_DEFAULT_GUI_FONT)
+ font = wx.SystemSettings.GetFont(wx.SYS_DEFAULT_GUI_FONT)
font.SetWeight(wx.BOLD)
item.SetFont(font)
item.SetBackgroundColour(colour)
self.list.SetItem(item)
- standardFont = wx.SystemSettings_GetFont(wx.SYS_DEFAULT_GUI_FONT)
- italicFont = wx.SystemSettings_GetFont(wx.SYS_DEFAULT_GUI_FONT)
+ standardFont = wx.SystemSettings.GetFont(wx.SYS_DEFAULT_GUI_FONT)
+ italicFont = wx.SystemSettings.GetFont(wx.SYS_DEFAULT_GUI_FONT)
italicFont.SetStyle(wx.FONTSTYLE_ITALIC)
- boldFont = wx.SystemSettings_GetFont(wx.SYS_DEFAULT_GUI_FONT)
+ boldFont = wx.SystemSettings.GetFont(wx.SYS_DEFAULT_GUI_FONT)
boldFont.SetWeight(wx.BOLD)
lenCDB = len(self.colourList)
-
+
for indx in xrange(11, 20):
for col in xrange(self.list.GetColumnCount()):
result = random.randint(0, 2)
colourIndex = random.randint(0, lenCDB-1)
-
+
if result == 0:
fnt = standardFont
elif result == 1:
fnt = boldFont
else:
fnt = italicFont
-
+
item = self.list.GetItem(indx, col)
item.SetMask(fontMask)
item.SetFont(fnt)
@@ -718,10 +718,10 @@ class UltimateListCtrlPanel(wx.Panel, listmix.ColumnSorterMixin):
for check in checks:
if check.GetValue() == 1:
style = style | eval("ULC." + check.GetLabel())
-
+
if self.list.GetAGWWindowStyleFlag() != style:
self.list.SetAGWWindowStyleFlag(style)
-
+
# Used by the ColumnSorterMixin, see wx/lib/mixins/listctrl.py
def GetListCtrl(self):
@@ -737,8 +737,8 @@ class UltimateListCtrlPanel(wx.Panel, listmix.ColumnSorterMixin):
for key, renderer in self.renderers.items():
renderer.UpdateValue()
self.list.RefreshItem(key)
-
-
+
+
def OnIdle(self, event):
if self.gauge:
@@ -762,7 +762,7 @@ class UltimateListCtrlPanel(wx.Panel, listmix.ColumnSorterMixin):
y = event.GetY()
self.log.write("x, y = %s\n" % str((x, y)))
-
+
item, flags = self.list.HitTest((x, y))
if item != wx.NOT_FOUND and flags & wx.LIST_HITTEST_ONITEM:
@@ -837,11 +837,11 @@ class UltimateListCtrlPanel(wx.Panel, listmix.ColumnSorterMixin):
def OnColEndDrag(self, event):
self.log.write("OnColEndDrag\n")
- def OnBeginDrag(self, event):
+ def OnBeginDrag(self, event):
self.log.write("OnBeginDrag\n")
-
- def OnEndDrag(self, event):
+
+ def OnEndDrag(self, event):
self.log.write("OnEndDrag\n")
def OnDoubleClick(self, event):
@@ -902,7 +902,7 @@ class UltimateListCtrlPanel(wx.Panel, listmix.ColumnSorterMixin):
self.log.write("Popup three")
self.list.ClearAll()
wx.CallAfter(self.PopulateList)
-
+
def OnPopupFour(self, event):
self.list.DeleteAllItems()
@@ -932,21 +932,21 @@ class TestFrame(wx.Frame):
self.leftpanel = wx.ScrolledWindow(splitter, -1, style=wx.SUNKEN_BORDER)
self.leftpanel.SetScrollRate(20, 20)
width = self.PopulateLeftPanel()
-
+
# add the windows to the splitter and split it.
splitter.SplitVertically(self.leftpanel, self.ulc, width+5)
splitter.SetMinimumPaneSize(width+5)
-
+
sizer = wx.BoxSizer()
sizer.Add(splitter, 1, wx.EXPAND)
self.SetSizer(sizer)
self.SetIcon(images.Mondrian.GetIcon())
self.CenterOnScreen()
self.Show()
-
+
def PopulateLeftPanel(self):
-
+
pnl = wx.Panel(self.leftpanel)
mainsizer = wx.BoxSizer(wx.VERTICAL)
@@ -963,16 +963,16 @@ class TestFrame(wx.Frame):
sorted_styles.sort(key=operator.itemgetter(1))
- count = 0
+ count = 0
for styleName, styleVal in sorted_styles:
if styleName in ["ULC_VIRTUAL", "ULC_TILE", "ULC_LIST", "ULC_ICON",
"ULC_SMALL_ICON", "ULC_AUTOARRANGE"]:
continue
-
+
if "SORT" in styleName or "ALIGN" in styleName or "VIEWS" in styleName:
continue
-
+
if count == 0:
tags = wx.ALL
else:
@@ -980,12 +980,12 @@ class TestFrame(wx.Frame):
check = wx.CheckBox(pnl, -1, styleName)
stylesizer.Add(check, 0, tags, 3)
-
+
if self.ulc.list.HasAGWFlag(styleVal):
check.SetValue(1)
else:
check.SetValue(0)
-
+
if styleName in ["ULC_HAS_VARIABLE_ROW_HEIGHT", "ULC_REPORT"]:
check.SetValue(1)
check.Enable(False)
@@ -998,7 +998,7 @@ class TestFrame(wx.Frame):
self.checknormal = wx.CheckBox(pnl, -1, "Standard Colours")
self.checknormal.Bind(wx.EVT_CHECKBOX, self.OnCheckNormal)
sizera.Add(self.checknormal, 0, wx.ALL, 3)
-
+
sizerb = wx.BoxSizer(wx.VERTICAL)
self.checkgradient = wx.CheckBox(pnl, -1, "Gradient Theme")
self.checkgradient.Bind(wx.EVT_CHECKBOX, self.OnCheckGradient)
@@ -1028,7 +1028,7 @@ class TestFrame(wx.Frame):
self.checkvista = wx.CheckBox(pnl, -1, "Windows Vista Theme")
self.checkvista.Bind(wx.EVT_CHECKBOX, self.OnVista)
-
+
themessizer.Add(sizera, 0, wx.EXPAND)
themessizer.Add(sizerb, 0, wx.EXPAND)
themessizer.Add((0, 5))
@@ -1053,7 +1053,7 @@ class TestFrame(wx.Frame):
self.secondcolour.Enable(False)
return mainsizer.CalcMin().width + wx.SystemSettings.GetMetric(wx.SYS_VSCROLL_X)
-
+
def OnCheckStyle(self, event):
@@ -1085,10 +1085,10 @@ class TestFrame(wx.Frame):
self.ulc.list.SetGradientStyle(self.radiovertical.GetValue())
self.ulc.list.EnableSelectionVista(False)
self.ulc.list.EnableSelectionGradient(True)
-
+
event.Skip()
-
-
+
+
def OnHorizontal(self, event):
self.ulc.list.SetGradientStyle(self.radiovertical.GetValue())
@@ -1103,14 +1103,14 @@ class TestFrame(wx.Frame):
def OnFirstColour(self, event):
- col1 = event.GetValue()
+ col1 = event.GetValue()
self.ulc.list.SetFirstGradientColour(wx.Colour(col1[0], col1[1], col1[2]))
event.Skip()
def OnSecondColour(self, event):
- col1 = event.GetValue()
+ col1 = event.GetValue()
self.ulc.list.SetSecondGradientColour(wx.Colour(col1[0], col1[1], col1[2]))
event.Skip()
@@ -1125,7 +1125,7 @@ class TestFrame(wx.Frame):
self.checkgradient.SetValue(0)
self.ulc.list.EnableSelectionGradient(False)
self.ulc.list.EnableSelectionVista(True)
-
+
event.Skip()
diff --git a/demo/agw/UltimateVirtualDemo.py b/demo/agw/UltimateVirtualDemo.py
index d1ac7d47..85c21081 100644
--- a/demo/agw/UltimateVirtualDemo.py
+++ b/demo/agw/UltimateVirtualDemo.py
@@ -25,12 +25,12 @@ def GenerateRandomList(imgList):
numImages = random.randint(1, 3)
listSize = imgList.GetImageCount()
-
+
for i in xrange(numImages):
rList.append(random.randint(0, listSize-1))
- return rList
-
+ return rList
+
class TestUltimateListCtrl(ULC.UltimateListCtrl):
@@ -40,7 +40,7 @@ class TestUltimateListCtrl(ULC.UltimateListCtrl):
agwStyle=wx.LC_REPORT|wx.LC_VIRTUAL|wx.LC_HRULES|wx.LC_VRULES|ULC.ULC_SHOW_TOOLTIPS)
self.log = log
-
+
self.il = wx.ImageList(16, 16)
self.il.Add(images.Smiles.GetBitmap())
self.il.Add(images.core.GetBitmap())
@@ -60,28 +60,28 @@ class TestUltimateListCtrl(ULC.UltimateListCtrl):
self.SetColumnToolTip(1,"Second Column Tooltip!")
self.SetColumnToolTip(2,"Third Column Tooltip!")
- # After setting the column width you can specify that
+ # After setting the column width you can specify that
# this column expands to fill the window. Only one
# column may be specified.
self.SetColumnWidth(2, ULC.ULC_AUTOSIZE_FILL)
self.SetItemCount(1000000)
-
+
self.attr1 = ULC.UltimateListItemAttr()
- self.attr1.SetBackgroundColour(wx.NamedColour("yellow"))
+ self.attr1.SetBackgroundColour(wx.Colour("yellow"))
self.attr2 = ULC.UltimateListItemAttr()
- self.attr2.SetBackgroundColour(wx.NamedColour("light blue"))
+ self.attr2.SetBackgroundColour(wx.Colour("light blue"))
self.Bind(wx.EVT_LIST_ITEM_SELECTED, self.OnItemSelected)
self.Bind(wx.EVT_LIST_ITEM_ACTIVATED, self.OnItemActivated)
self.Bind(wx.EVT_LIST_ITEM_DESELECTED, self.OnItemDeselected)
- self.randomLists = [GenerateRandomList(self.il) for i in xrange(5)]
+ self.randomLists = [GenerateRandomList(self.il) for i in xrange(5)]
def OnItemSelected(self, event):
-
+
self.currentItem = event.m_itemIndex
self.log.write("OnItemSelected: %s, %s, %s, %s\n" %(self.currentItem,
self.GetItemText(self.currentItem),
@@ -93,7 +93,7 @@ class TestUltimateListCtrl(ULC.UltimateListCtrl):
self.log.write("OnItemActivated: %s\nTopItem: %s\n" %(self.GetItemText(self.currentItem), self.GetTopItem()))
def getColumnText(self, index, col):
-
+
item = self.GetItem(index, col)
return item.GetText()
@@ -107,10 +107,10 @@ class TestUltimateListCtrl(ULC.UltimateListCtrl):
# determine the text, attributes and/or image based
# on values from some external data source, but for
# this demo we'll just calculate them
-
+
def OnGetItemText(self, item, col):
return "Item %d, column %d" % (item, col)
-
+
def OnGetItemToolTip(self, item, col):
if item == 0:
return "Tooltip: Item %d, column %d" % (item, col)
@@ -130,12 +130,12 @@ class TestUltimateListCtrl(ULC.UltimateListCtrl):
def OnGetItemColumnImage(self, item, column):
return self.randomLists[item%5]
-
+
def OnGetItemImage(self, item):
return self.randomLists[item%5]
-
+
def OnGetItemAttr(self, item):
if item % 3 == 1:
@@ -169,7 +169,7 @@ class TestUltimateListCtrl(ULC.UltimateListCtrl):
elif item%3 == 1:
return 1
- return 0
+ return 0
#---------------------------------------------------------------------------
diff --git a/demo/agw/Windows7Explorer_Contents.py b/demo/agw/Windows7Explorer_Contents.py
index 24e88fab..09c9ef12 100644
--- a/demo/agw/Windows7Explorer_Contents.py
+++ b/demo/agw/Windows7Explorer_Contents.py
@@ -32,7 +32,7 @@ if 'unicode' in wx.PlatformInfo:
def FormatFileSize(size):
-
+
for x in ['bytes', 'KB', 'MB', 'GB', 'TB', 'PB']:
if size < 1024.0:
@@ -49,7 +49,7 @@ class FirstColumnRenderer(object):
self.fileName = fileName
self.normalFont = wx.SystemSettings.GetFont(wx.SYS_DEFAULT_GUI_FONT)
- self.normalFont.SetPointSize(self.normalFont.GetPointSize() + 1)
+ self.normalFont.SetPointSize(self.normalFont.GetPointSize() + 1)
self.smallerFont = wx.SystemSettings.GetFont(wx.SYS_DEFAULT_GUI_FONT)
self.greyColour = wx.SystemSettings.GetColour(wx.SYS_COLOUR_GRAYTEXT)
@@ -57,32 +57,32 @@ class FirstColumnRenderer(object):
if os.path.isdir(fileName):
self.text = fileName
bitmap = wx.Bitmap(os.path.join(bitmapDir, "folder.png"), wx.BITMAP_TYPE_PNG)
- self.icon = wx.IconFromBitmap(bitmap)
+ self.icon = wx.Icon(bitmap)
self.description = ""
return
-
+
self.text = os.path.split(fileName)[1]
extension = os.path.splitext(fileName)[1]
if not extension:
self.text = fileName
bitmap = wx.Bitmap(os.path.join(bitmapDir, "empty_icon.png"), wx.BITMAP_TYPE_PNG)
- self.icon = wx.IconFromBitmap(bitmap)
+ self.icon = wx.Icon(bitmap)
self.description = "File"
return
-
+
fileType = wx.TheMimeTypesManager.GetFileTypeFromExtension(extension)
bmp = wx.Bitmap(os.path.join(bitmapDir, "empty_icon.png"), wx.BITMAP_TYPE_PNG)
- bmp = wx.IconFromBitmap(bmp)
-
+ bmp = wx.Icon(bmp)
+
if not fileType:
- icon = wx.IconFromLocation(wx.IconLocation(fileName))
+ icon = wx.Icon(wx.IconLocation(fileName))
if not icon.IsOk():
self.icon = bmp
else:
self.icon = icon
-
+
self.description = "%s File"%extension[1:].upper()
return
@@ -98,7 +98,7 @@ class FirstColumnRenderer(object):
icon = None
if icon is None:
- icon = wx.IconFromLocation(wx.IconLocation(fileName))
+ icon = wx.Icon(wx.IconLocation(fileName))
if icon.IsOk():
bmp = icon
else:
@@ -108,32 +108,32 @@ class FirstColumnRenderer(object):
if " -" in command:
command = command[0:command.index(" -")]
- icon = wx.IconFromLocation(wx.IconLocation(command))
+ icon = wx.Icon(wx.IconLocation(command))
if icon.IsOk():
bmp = icon
self.icon = bmp
self.description = convert(fileType.GetDescription())
- if not self.description:
+ if not self.description:
self.description = "%s File"%extension[1:].upper()
-
+
def DrawSubItem(self, dc, rect, line, highlighted, enabled):
"""Draw a custom progress bar using double buffering to prevent flicker"""
- bmpWidth, bmpHeight = self.icon.GetWidth(), self.icon.GetHeight()
+ bmpWidth, bmpHeight = self.icon.GetWidth(), self.icon.GetHeight()
dc.DrawIcon(self.icon, rect.x+5, rect.y+(rect.height-bmpHeight)/2)
dc.SetFont(self.normalFont)
-
+
textWidth, textHeight = dc.GetTextExtent(self.text)
dc.SetTextForeground(wx.SystemSettings.GetColour(wx.SYS_COLOUR_BTNTEXT))
dc.DrawText(self.text, rect.x+bmpWidth+10, rect.y+(rect.height - textHeight)/4)
if not self.description:
return
-
+
dc.SetFont(self.smallerFont)
dummy1, dummy2= dc.GetTextExtent("Type: ")
@@ -144,16 +144,16 @@ class FirstColumnRenderer(object):
dc.SetTextForeground(wx.BLACK)
dc.DrawText(self.description, rect.x+bmpWidth+dummy1+10, rect.y+3*(rect.height - textHeight)/4)
-
+
def GetLineHeight(self):
dc = wx.MemoryDC()
- dc.SelectObject(wx.EmptyBitmap(100, 20))
+ dc.SelectObject(wx.Bitmap(100, 20))
bmpWidth, bmpHeight = self.icon.GetWidth(), self.icon.GetHeight()
dc.SetFont(self.normalFont)
-
+
textWidth, textHeight = dc.GetTextExtent(self.text)
dc.SetFont(self.smallerFont)
@@ -161,14 +161,14 @@ class FirstColumnRenderer(object):
textWidth, textHeight = dc.GetTextExtent("Type: " + self.description)
dc.SelectObject(wx.NullBitmap)
-
+
return max(2*textHeight, bmpHeight) + 20
-
+
def GetSubItemWidth(self):
return 250
-
+
class SecondColumnRenderer(object):
@@ -191,7 +191,7 @@ class SecondColumnRenderer(object):
s = os.path.getsize(fileName)
self.size = FormatFileSize(s)
-
+
def DrawSubItem(self, dc, rect, line, highlighted, enabled):
"""Draw a custom progress bar using double buffering to prevent flicker"""
@@ -210,7 +210,7 @@ class SecondColumnRenderer(object):
if not self.size:
return
-
+
dummy1, dummy2= dc.GetTextExtent("Size: ")
dc.SetTextForeground(self.greyColour)
@@ -218,23 +218,23 @@ class SecondColumnRenderer(object):
dc.SetTextForeground(wx.BLACK)
dc.DrawText(self.size, rect.x+dummy1+5, rect.y+3*(rect.height - textHeight)/4)
-
+
def GetLineHeight(self):
dc = wx.MemoryDC()
- dc.SelectObject(wx.EmptyBitmap(100, 20))
+ dc.SelectObject(wx.Bitmap(100, 20))
textWidth, textHeight, d1, d2 = dc.GetFullTextExtent("Date modified: %s"%self.date,
self.smallerFont)
dc.SelectObject(wx.NullBitmap)
return 2*textHeight + 20
-
+
def GetSubItemWidth(self):
dc = wx.MemoryDC()
- dc.SelectObject(wx.EmptyBitmap(100, 20))
+ dc.SelectObject(wx.Bitmap(100, 20))
textWidth, textHeight, d1, d2 = dc.GetFullTextExtent("Date modified: %s"%self.date,
self.smallerFont)
@@ -242,10 +242,10 @@ class SecondColumnRenderer(object):
dc.SelectObject(wx.NullBitmap)
return textWidth+10
-
-
+
+
class Windows7Explorer(ULC.UltimateListCtrl):
-
+
def __init__(self, parent, log):
ULC.UltimateListCtrl.__init__(self, parent, -1, style=wx.BORDER_THEME,
@@ -260,13 +260,13 @@ class Windows7Explorer(ULC.UltimateListCtrl):
self.ClearAll()
- self.InsertColumn(0, "Column 1")
- self.InsertColumn(1, "Column 2")
+ self.InsertColumn(0, "Column 1")
+ self.InsertColumn(1, "Column 2")
if not path.strip():
path = os.getcwd()
- os.chdir(path)
+ os.chdir(path)
files1 = os.listdir(path)
files1.sort()
@@ -278,13 +278,13 @@ class Windows7Explorer(ULC.UltimateListCtrl):
files = sorted(files, key=operator.itemgetter(0, 2))
dummy_log = wx.LogNull()
-
+
for kind, file, lower in files:
index = self.InsertStringItem(sys.maxint, "")
klass = FirstColumnRenderer(self, file)
self.SetItemCustomRenderer(index, 0, klass)
-
+
self.SetStringItem(index, 1, "")
klass = SecondColumnRenderer(self, file)
self.SetItemCustomRenderer(index, 1, klass)
@@ -312,11 +312,11 @@ class TestFrame(wx.Frame):
static = wx.StaticText(panel, -1, "Choose a folder to display:")
static.SetFont(font)
panelSizer.Add(static, 0, wx.EXPAND|wx.LEFT|wx.RIGHT|wx.TOP, 10)
-
+
dp1 = wx.DirPickerCtrl(panel, path=os.getcwd(), style=wx.DIRP_USE_TEXTCTRL)
dp1.SetTextCtrlProportion(2)
panelSizer.Add(dp1, 0, wx.EXPAND|wx.LEFT|wx.RIGHT, 10)
-
+
# Create the CustomTreeCtrl, using a derived class defined below
self.ulc = Windows7Explorer(panel, self.log)
@@ -325,7 +325,7 @@ class TestFrame(wx.Frame):
self.Bind(wx.EVT_DIRPICKER_CHANGED, self.OnPickDir, dp1)
- self.ulc.SetFocus()
+ self.ulc.SetFocus()
self.SetIcon(images.Mondrian.GetIcon())
self.CenterOnScreen()
self.Show()
@@ -351,7 +351,7 @@ class TestFrame(wx.Frame):
self.ulc.DoLayout()
wx.EndBusyCursor()
-
+
#---------------------------------------------------------------------------
diff --git a/demo/agw/XLSGrid.py b/demo/agw/XLSGrid.py
index caa6a169..58bc02dd 100644
--- a/demo/agw/XLSGrid.py
+++ b/demo/agw/XLSGrid.py
@@ -13,11 +13,11 @@ _isStandalone = False
try:
from agw import xlsgrid as XG
+ dataDir = os.path.join(dirName, "data")
_isStandalone = True
except ImportError: # if it's not there locally, try the wxPython lib.
import wx.lib.agw.xlsgrid as XG
-
-dataDir = os.path.join(dirName, "data")
+ dataDir = os.path.join(dirName, "agw", "data")
_hasXLRD = True
diff --git a/demo/agw/ZoomBar.py b/demo/agw/ZoomBar.py
index 1b9fdaf9..b04ec1a7 100644
--- a/demo/agw/ZoomBar.py
+++ b/demo/agw/ZoomBar.py
@@ -30,10 +30,10 @@ _buttonStatus = {True: "Disable First Button",
class TestPanel(wx.Panel):
def __init__(self, parent, log):
-
+
self.log = log
self.enabled = True
-
+
wx.Panel.__init__(self, parent, -1)
self.sizer_1_staticbox = wx.StaticBox(self, -1, "ZoomBar Options")
@@ -42,12 +42,12 @@ class TestPanel(wx.Panel):
self.colourzoom = csel.ColourSelect(self, colour=wx.Colour(97, 97, 97))
self.buttonSize = masked.NumCtrl(self, value=32, allowNegative=False,
min=32, max=72)
-
+
self.centerZoom = wx.CheckBox(self, -1, "Center Zoom")
self.showReflections = wx.CheckBox(self, -1, "Show Reflections")
self.showLabels = wx.CheckBox(self, -1, "Show Labels")
self.enableButton = wx.Button(self, -1, "Disable First Button")
-
+
self.zbp = ZB.ZoomBar(self, -1)
standard = glob.glob(bitmapDir + "/*96.png")
@@ -56,17 +56,17 @@ class TestPanel(wx.Panel):
separatorImage = bitmapDir + "/separator.gif"
separatorReflection = bitmapDir + "/separatorFlip.png"
count = 0
-
+
for std, ref in zip(standard, reflections):
if random.randint(0, 1) == 1 and count > 0:
sep1 = wx.Bitmap(separatorImage, wx.BITMAP_TYPE_GIF)
sep2 = wx.Bitmap(separatorReflection, wx.BITMAP_TYPE_PNG)
self.zbp.AddSeparator(sep1, sep2)
-
+
bname = os.path.split(std)[1][0:-6]
self.zbp.AddButton(wx.Bitmap(std, wx.BITMAP_TYPE_PNG), wx.Bitmap(ref, wx.BITMAP_TYPE_PNG), bname)
count += 1
-
+
self.zbp.ResetSize()
self.SetProperties()
@@ -77,11 +77,11 @@ class TestPanel(wx.Panel):
self.Bind(wx.EVT_CHECKBOX, self.OnShowReflections, self.showReflections)
self.Bind(wx.EVT_CHECKBOX, self.OnShowLabels, self.showLabels)
self.Bind(wx.EVT_BUTTON, self.OnEnable, self.enableButton)
-
+
self.Bind(masked.EVT_NUM, self.OnButtonSize, self.buttonSize)
self.colourzoom.Bind(csel.EVT_COLOURSELECT, self.OnZoomColour)
-
+
self.Bind(ZB.EVT_ZOOMBAR, self.OnZoomBar)
@@ -121,7 +121,7 @@ class TestPanel(wx.Panel):
sizer_3.Add(self.buttonSize, 0, wx.ALIGN_CENTER_VERTICAL, 0)
sizer_2.Add(sizer_3, 0, wx.EXPAND|wx.ALL, 5)
-
+
sizer_2.Add(self.centerZoom, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5)
sizer_2.Add(self.showReflections, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5)
sizer_2.Add(self.showLabels, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5)
@@ -139,27 +139,27 @@ class TestPanel(wx.Panel):
def OnZoomBar(self, event):
self.log.write("Selected button index and label: %d, %s\n"%(event.GetSelection(), event.GetLabel()))
-
+
def OnZoomFactor(self, event):
value = event.GetInt()
self.zbp.SetZoomFactor(value)
-
+
event.Skip()
def OnZoomColour(self, event):
- colour = event.GetValue()
+ colour = event.GetValue()
self.zbp.SetBarColour(colour)
-
+
def OnCenterZoom(self, event):
self.zbp.SetCenterZoom(event.IsChecked())
wx.CallAfter(self.ReLayout)
-
+
def OnShowReflections(self, event):
@@ -171,7 +171,7 @@ class TestPanel(wx.Panel):
else:
self.centerZoom.Enable(True)
self.zbp.SetShowReflections(False)
-
+
wx.CallAfter(self.ReLayout)
@@ -189,8 +189,8 @@ class TestPanel(wx.Panel):
obj = event.GetEventObject()
obj.SetLabel(_buttonStatus[self.enabled])
obj.Refresh()
-
-
+
+
def OnButtonSize(self, event):
value = event.GetValue()
@@ -198,17 +198,17 @@ class TestPanel(wx.Panel):
if value < 32 or value > 72:
return
-
+
self.zbp.SetButtonSize(value)
wx.CallAfter(self.ReLayout)
-
+
def ReLayout(self):
self.Layout()
self.Refresh()
self.Update()
-
+
#----------------------------------------------------------------------
diff --git a/demo/bitmaps/phoenix_title.png b/demo/bitmaps/phoenix_title.png
new file mode 100644
index 0000000000000000000000000000000000000000..5bf83d85cfa8f0fea11a236a0eab7d2c91772c9a
GIT binary patch
literal 5702
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
literal 0
HcmV?d00001
diff --git a/demo/bitmaps/phoenix_top.png b/demo/bitmaps/phoenix_top.png
new file mode 100644
index 0000000000000000000000000000000000000000..5faccd0d8eacb4f2fae3bbc46e42ae75fb240bdf
GIT binary patch
literal 90998
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