diff --git a/demo/AUI_DockingWindowMgr.py b/demo/AUI_DockingWindowMgr.py index c1f8dafd..dfc2caaa 100644 --- a/demo/AUI_DockingWindowMgr.py +++ b/demo/AUI_DockingWindowMgr.py @@ -5,7 +5,7 @@ import wx.grid import wx.html import wx.aui -import cStringIO +from wx.lib.six import BytesIO ID_CreateTree = wx.NewId() ID_CreateGrid = wx.NewId() @@ -42,47 +42,47 @@ ID_FirstPerspective = ID_CreatePerspective+1000 #---------------------------------------------------------------------- def GetMondrianData(): return \ -'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00 \x00\x00\x00 \x08\x06\x00\ +b'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00 \x00\x00\x00 \x08\x06\x00\ \x00\x00szz\xf4\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\x00\x00qID\ ATX\x85\xed\xd6;\n\x800\x10E\xd1{\xc5\x8d\xb9r\x97\x16\x0b\xad$\x8a\x82:\x16\ o\xda\x84pB2\x1f\x81Fa\x8c\x9c\x08\x04Z{\xcf\xa72\xbcv\xfa\xc5\x08 \x80r\x80\ \xfc\xa2\x0e\x1c\xe4\xba\xfaX\x1d\xd0\xde]S\x07\x02\xd8>\xe1wa-`\x9fQ\xe9\ \x86\x01\x04\x10\x00\\(Dk\x1b-\x04\xdc\x1d\x07\x14\x98;\x0bS\x7f\x7f\xf9\x13\ -\x04\x10@\xf9X\xbe\x00\xc9 \x14K\xc1<={\x00\x00\x00\x00IEND\xaeB`\x82' +\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(): - stream = cStringIO.StringIO(GetMondrianData()) - return wx.ImageFromStream(stream) + stream = BytesIO(GetMondrianData()) + return wx.Image(stream) def GetMondrianIcon(): - icon = wx.EmptyIcon() + icon = wx.Icon() icon.CopyFromBitmap(GetMondrianBitmap()) return icon class PyAUIFrame(wx.Frame): - + def __init__(self, parent, id=-1, title="", pos=wx.DefaultPosition, size=wx.DefaultSize, style=wx.DEFAULT_FRAME_STYLE | wx.SUNKEN_BORDER | wx.CLIP_CHILDREN): wx.Frame.__init__(self, parent, id, title, pos, size, style) - - # tell FrameManager to manage this frame + + # tell FrameManager to manage this frame self._mgr = wx.aui.AuiManager() self._mgr.SetManagedWindow(self) - + self._perspectives = [] self.n = 0 self.x = 0 - + self.SetIcon(GetMondrianIcon()) # create menu @@ -102,8 +102,8 @@ class PyAUIFrame(wx.Frame): view_menu.Append(ID_TextContent, "Use a Text Control for the Content Pane") view_menu.Append(ID_HTMLContent, "Use an HTML Control for the Content Pane") view_menu.Append(ID_TreeContent, "Use a Tree Control for the Content Pane") - view_menu.Append(ID_SizeReportContent, "Use a Size Reporter for the Content Pane") - + view_menu.Append(ID_SizeReportContent, "Use a Size Reporter for the Content Pane") + options_menu = wx.Menu() options_menu.AppendRadioItem(ID_TransparentHint, "Transparent Hint") options_menu.AppendRadioItem(ID_VenetianBlindsHint, "Venetian Blinds Hint") @@ -132,13 +132,13 @@ class PyAUIFrame(wx.Frame): help_menu = wx.Menu() help_menu.Append(ID_About, "About...") - + mb.Append(file_menu, "File") mb.Append(view_menu, "View") mb.Append(self._perspectives_menu, "Perspectives") mb.Append(options_menu, "Options") mb.Append(help_menu, "Help") - + self.SetMenuBar(mb) self.statusbar = self.CreateStatusBar(2, wx.ST_SIZEGRIP) @@ -180,7 +180,7 @@ class PyAUIFrame(wx.Frame): tb2.AddLabelTool(101, "Test", tb2_bmp1) tb2.AddLabelTool(101, "Test", tb2_bmp1) tb2.Realize() - + tb3 = wx.ToolBar(self, -1, wx.DefaultPosition, wx.DefaultSize, wx.TB_FLAT | wx.TB_NODIVIDER) tb3.SetToolBitmapSize(wx.Size(16,16)) @@ -212,7 +212,7 @@ class PyAUIFrame(wx.Frame): tb5 = wx.ToolBar(self, -1, wx.DefaultPosition, wx.DefaultSize, wx.TB_FLAT | wx.TB_NODIVIDER | wx.TB_VERTICAL) tb5.SetToolBitmapSize(wx.Size(48, 48)) - tb5.AddLabelTool(101, "Test", wx.ArtProvider.GetBitmap(wx.ART_ERROR)) + tb5.AddLabelTool(101, "Test", wx.ArtProvider_GetBitmap(wx.ART_ERROR)) tb5.AddSeparator() tb5.AddLabelTool(102, "Test", wx.ArtProvider.GetBitmap(wx.ART_QUESTION)) tb5.AddLabelTool(103, "Test", wx.ArtProvider.GetBitmap(wx.ART_INFORMATION)) @@ -232,15 +232,15 @@ class PyAUIFrame(wx.Frame): self._mgr.AddPane(self.CreateSizeReportCtrl(), wx.aui.AuiPaneInfo(). Name("test3").Caption("Client Size Reporter"). Bottom().CloseButton(True).MaximizeButton(True)) - + self._mgr.AddPane(self.CreateSizeReportCtrl(), wx.aui.AuiPaneInfo(). Name("test4").Caption("Pane Caption"). Left().CloseButton(True).MaximizeButton(True)) - + self._mgr.AddPane(self.CreateSizeReportCtrl(), wx.aui.AuiPaneInfo(). Name("test5").Caption("Pane Caption"). Right().CloseButton(True).MaximizeButton(True)) - + self._mgr.AddPane(self.CreateSizeReportCtrl(), wx.aui.AuiPaneInfo(). Name("test6").Caption("Client Size Reporter"). Right().Row(1).CloseButton(True).MaximizeButton(True)) @@ -248,11 +248,11 @@ class PyAUIFrame(wx.Frame): self._mgr.AddPane(self.CreateSizeReportCtrl(), wx.aui.AuiPaneInfo(). Name("test7").Caption("Client Size Reporter"). Left().Layer(1).CloseButton(True).MaximizeButton(True)) - + self._mgr.AddPane(self.CreateTreeCtrl(), wx.aui.AuiPaneInfo(). Name("test8").Caption("Tree Pane"). Left().Layer(1).Position(1).CloseButton(True).MaximizeButton(True)) - + self._mgr.AddPane(self.CreateSizeReportCtrl(), wx.aui.AuiPaneInfo(). Name("test9").Caption("Min Size 200x100"). BestSize(wx.Size(200,100)).MinSize(wx.Size(200,100)). @@ -261,7 +261,7 @@ class PyAUIFrame(wx.Frame): self._mgr.AddPane(self.CreateTextCtrl(), wx.aui.AuiPaneInfo(). Name("test10").Caption("Text Pane"). Bottom().Layer(1).Position(1).CloseButton(True).MaximizeButton(True)) - + self._mgr.AddPane(self.CreateSizeReportCtrl(), wx.aui.AuiPaneInfo(). Name("test11").Caption("Fixed Pane"). Bottom().Layer(1).Position(2).Fixed().CloseButton(True).MaximizeButton(True)) @@ -277,7 +277,7 @@ class PyAUIFrame(wx.Frame): self._mgr.AddPane(self.CreateTreeCtrl(), wx.aui.AuiPaneInfo().Name("tree_content"). CenterPane().Hide()) - + self._mgr.AddPane(self.CreateSizeReportCtrl(), wx.aui.AuiPaneInfo().Name("sizereport_content"). CenterPane().Hide()) @@ -286,9 +286,9 @@ class PyAUIFrame(wx.Frame): self._mgr.AddPane(self.CreateHTMLCtrl(), wx.aui.AuiPaneInfo().Name("html_content"). CenterPane()) - + # add the toolbars to the manager - + self._mgr.AddPane(tb1, wx.aui.AuiPaneInfo(). Name("tb1").Caption("Big Toolbar"). ToolbarPane().Top(). @@ -298,12 +298,12 @@ class PyAUIFrame(wx.Frame): Name("tb2").Caption("Toolbar 2"). ToolbarPane().Top().Row(1). LeftDockable(False).RightDockable(False)) - + self._mgr.AddPane(tb3, wx.aui.AuiPaneInfo(). Name("tb3").Caption("Toolbar 3"). ToolbarPane().Top().Row(1).Position(1). LeftDockable(False).RightDockable(False)) - + self._mgr.AddPane(tb4, wx.aui.AuiPaneInfo(). Name("tb4").Caption("Sample Bookmark Toolbar"). ToolbarPane().Top().Row(2). @@ -313,7 +313,7 @@ class PyAUIFrame(wx.Frame): Name("tbvert").Caption("Sample Vertical Toolbar"). ToolbarPane().Left().GripperTop(). TopDockable(False).BottomDockable(False)) - + self._mgr.AddPane(wx.Button(self, -1, "Test Button"), wx.aui.AuiPaneInfo().Name("tb5"). ToolbarPane().Top().Row(2).Position(1). @@ -322,15 +322,15 @@ class PyAUIFrame(wx.Frame): # make some default perspectives self._mgr.GetPane("tbvert").Hide() - + perspective_all = self._mgr.SavePerspective() - + all_panes = self._mgr.GetAllPanes() - + for ii in xrange(len(all_panes)): if not all_panes[ii].IsToolbar(): all_panes[ii].Hide() - + self._mgr.GetPane("tb1").Hide() self._mgr.GetPane("tb5").Hide() self._mgr.GetPane("test8").Show().Left().Layer(0).Row(0).Position(0) @@ -352,7 +352,7 @@ class PyAUIFrame(wx.Frame): self._mgr.GetPane("html_content").Show() perspective_vert = self._mgr.SavePerspective() - + self._perspectives.append(perspective_default) self._perspectives.append(perspective_all) self._perspectives.append(perspective_vert) @@ -360,7 +360,7 @@ class PyAUIFrame(wx.Frame): self._mgr.GetPane("tbvert").Hide() self._mgr.GetPane("grid_content").Hide() - # "commit" all changes made to FrameManager + # "commit" all changes made to FrameManager self._mgr.Update() self.Bind(wx.EVT_ERASE_BACKGROUND, self.OnEraseBackground) @@ -369,7 +369,7 @@ class PyAUIFrame(wx.Frame): # Show How To Use The Closing Panes Event self.Bind(wx.aui.EVT_AUI_PANE_CLOSE, self.OnPaneClose) - + self.Bind(wx.EVT_MENU, self.OnCreateTree, id=ID_CreateTree) self.Bind(wx.EVT_MENU, self.OnCreateGrid, id=ID_CreateGrid) self.Bind(wx.EVT_MENU, self.OnCreateText, id=ID_CreateText) @@ -387,7 +387,7 @@ class PyAUIFrame(wx.Frame): self.Bind(wx.EVT_MENU, self.OnManagerFlag, id=ID_NoVenetianFade) self.Bind(wx.EVT_MENU, self.OnManagerFlag, id=ID_TransparentDrag) self.Bind(wx.EVT_MENU, self.OnManagerFlag, id=ID_AllowActivePane) - + self.Bind(wx.EVT_MENU, self.OnGradient, id=ID_NoGradient) self.Bind(wx.EVT_MENU, self.OnGradient, id=ID_VerticalGradient) self.Bind(wx.EVT_MENU, self.OnGradient, id=ID_HorizontalGradient) @@ -413,7 +413,7 @@ class PyAUIFrame(wx.Frame): self.Bind(wx.EVT_UPDATE_UI, self.OnUpdateUI, id=ID_VerticalGradient) self.Bind(wx.EVT_UPDATE_UI, self.OnUpdateUI, id=ID_HorizontalGradient) - + self.Bind(wx.EVT_MENU_RANGE, self.OnRestorePerspective, id=ID_FirstPerspective, id2=ID_FirstPerspective+1000) @@ -430,7 +430,7 @@ class PyAUIFrame(wx.Frame): if dlg.ShowModal() in [wx.ID_NO, wx.ID_CANCEL]: event.Veto() dlg.Destroy() - + def OnClose(self, event): self._mgr.UnInit() @@ -449,7 +449,7 @@ class PyAUIFrame(wx.Frame): dlg = wx.MessageDialog(self, msg, "About wx.aui Demo", wx.OK | wx.ICON_INFORMATION) dlg.ShowModal() - dlg.Destroy() + dlg.Destroy() def GetDockArt(self): @@ -526,7 +526,7 @@ class PyAUIFrame(wx.Frame): flag = wx.aui.AUI_MGR_VENETIAN_BLINDS_HINT elif eid == ID_RectangleHint: flag = wx.aui.AUI_MGR_RECTANGLE_HINT - + self._mgr.SetFlags(self._mgr.GetFlags() ^ flag) @@ -534,7 +534,7 @@ class PyAUIFrame(wx.Frame): flags = self._mgr.GetFlags() eid = event.GetId() - + if eid == ID_NoGradient: event.Check(self._mgr.GetArtProvider().GetMetric(wx.aui.AUI_DOCKART_GRADIENT_TYPE) == wx.aui.AUI_GRADIENT_NONE) @@ -570,20 +570,20 @@ class PyAUIFrame(wx.Frame): elif eid == ID_NoVenetianFade: event.Check((flags & wx.aui.AUI_MGR_NO_VENETIAN_BLINDS_FADE) != 0); - + def OnCreatePerspective(self, event): dlg = wx.TextEntryDialog(self, "Enter a name for the new perspective:", "AUI Test") - + dlg.SetValue(("Perspective %d")%(len(self._perspectives)+1)) if dlg.ShowModal() != wx.ID_OK: return - + if len(self._perspectives) == 0: self._perspectives_menu.AppendSeparator() - + self._perspectives_menu.Append(ID_FirstPerspective + len(self._perspectives), dlg.GetValue()) self._perspectives.append(self._mgr.SavePerspective()) @@ -591,12 +591,12 @@ class PyAUIFrame(wx.Frame): def OnCopyPerspective(self, event): s = self._mgr.SavePerspective() - + if wx.TheClipboard.Open(): - + wx.TheClipboard.SetData(wx.TextDataObject(s)) wx.TheClipboard.Close() - + def OnRestorePerspective(self, event): self._mgr.LoadPerspective(self._perspectives[event.GetId() - ID_FirstPerspective]) @@ -607,7 +607,7 @@ class PyAUIFrame(wx.Frame): self.x = self.x + 20 x = self.x pt = self.ClientToScreen(wx.Point(0, 0)) - + return wx.Point(pt.x + x, pt.y + x) @@ -674,7 +674,7 @@ class PyAUIFrame(wx.Frame): grid = wx.grid.Grid(self, -1, wx.Point(0, 0), wx.Size(150, 250), wx.NO_BORDER | wx.WANTS_CHARS) - + grid.CreateGrid(50, 20) return grid @@ -684,7 +684,7 @@ class PyAUIFrame(wx.Frame): tree = wx.TreeCtrl(self, -1, wx.Point(0, 0), wx.Size(160, 250), wx.TR_DEFAULT_STYLE | wx.NO_BORDER) - + root = tree.AddRoot("AUI Project") items = [] @@ -700,14 +700,14 @@ class PyAUIFrame(wx.Frame): items.append(tree.AppendItem(root, "Item 5", 0)) for ii in xrange(len(items)): - + id = items[ii] tree.AppendItem(id, "Subitem 1", 1) tree.AppendItem(id, "Subitem 2", 1) tree.AppendItem(id, "Subitem 3", 1) tree.AppendItem(id, "Subitem 4", 1) tree.AppendItem(id, "Subitem 5", 1) - + tree.Expand(root) return tree @@ -724,7 +724,7 @@ class PyAUIFrame(wx.Frame): ctrl = wx.html.HtmlWindow(self, -1, wx.DefaultPosition, wx.Size(400, 300)) if "gtk2" in wx.PlatformInfo: ctrl.SetStandardFonts() - ctrl.SetPage(self.GetIntroText()) + ctrl.SetPage(self.GetIntroText()) return ctrl @@ -741,7 +741,7 @@ class SizeReportCtrl(wx.PyControl): size=wx.DefaultSize, mgr=None): wx.PyControl.__init__(self, parent, id, pos, size, wx.NO_BORDER) - + self._mgr = mgr self.Bind(wx.EVT_PAINT, self.OnPaint) @@ -752,7 +752,7 @@ class SizeReportCtrl(wx.PyControl): def OnPaint(self, event): dc = wx.PaintDC(self) - + size = self.GetClientSize() s = ("Size: %d x %d")%(size.x, size.y) @@ -766,38 +766,38 @@ class SizeReportCtrl(wx.PyControl): dc.DrawLine(0, 0, size.x, size.y) dc.DrawLine(0, size.y, size.x, 0) dc.DrawText(s, (size.x-w)/2, ((size.y-(height*5))/2)) - + if self._mgr: - + pi = self._mgr.GetPane(self) - + s = ("Layer: %d")%pi.dock_layer w, h = dc.GetTextExtent(s) dc.DrawText(s, (size.x-w)/2, ((size.y-(height*5))/2)+(height*1)) - + s = ("Dock: %d Row: %d")%(pi.dock_direction, pi.dock_row) w, h = dc.GetTextExtent(s) dc.DrawText(s, (size.x-w)/2, ((size.y-(height*5))/2)+(height*2)) - + s = ("Position: %d")%pi.dock_pos w, h = dc.GetTextExtent(s) dc.DrawText(s, (size.x-w)/2, ((size.y-(height*5))/2)+(height*3)) - + s = ("Proportion: %d")%pi.dock_proportion w, h = dc.GetTextExtent(s) dc.DrawText(s, (size.x-w)/2, ((size.y-(height*5))/2)+(height*4)) - + def OnEraseBackground(self, event): # intentionally empty - pass - + pass + def OnSize(self, event): - + self.Refresh() event.Skip() - + ID_PaneBorderSize = wx.ID_HIGHEST + 1 ID_SashSize = ID_PaneBorderSize + 1 @@ -812,16 +812,16 @@ ID_ActiveCaptionGradientColor = ID_PaneBorderSize + 9 ID_ActiveCaptionTextColor = ID_PaneBorderSize + 10 ID_BorderColor = ID_PaneBorderSize + 11 ID_GripperColor = ID_PaneBorderSize + 12 - + class SettingsPanel(wx.Panel): - + def __init__(self, parent, frame): wx.Panel.__init__(self, parent, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize) self._frame = frame - + vert = wx.BoxSizer(wx.VERTICAL) s1 = wx.BoxSizer(wx.HORIZONTAL) @@ -942,7 +942,7 @@ class SettingsPanel(wx.Panel): s13.Add(self._gripper_color) s13.Add((1, 1), 1, wx.EXPAND) s13.SetItemMinSize(1, (180, 20)) - + grid_sizer = wx.GridSizer(cols=2) grid_sizer.SetHGap(5) grid_sizer.Add(s1) @@ -959,7 +959,7 @@ class SettingsPanel(wx.Panel): grid_sizer.Add(s10) grid_sizer.Add(s8) grid_sizer.Add(s11) - + cont_sizer = wx.BoxSizer(wx.VERTICAL) cont_sizer.Add(grid_sizer, 1, wx.EXPAND | wx.ALL, 5) self.SetSizer(cont_sizer) @@ -968,7 +968,7 @@ class SettingsPanel(wx.Panel): self._border_size.SetValue(frame.GetDockArt().GetMetric(wx.aui.AUI_DOCKART_PANE_BORDER_SIZE)) self._sash_size.SetValue(frame.GetDockArt().GetMetric(wx.aui.AUI_DOCKART_SASH_SIZE)) self._caption_size.SetValue(frame.GetDockArt().GetMetric(wx.aui.AUI_DOCKART_CAPTION_SIZE)) - + self.UpdateColors() self.Bind(wx.EVT_SPINCTRL, self.OnPaneBorderSize, id=ID_PaneBorderSize) @@ -984,8 +984,8 @@ class SettingsPanel(wx.Panel): self.Bind(wx.EVT_BUTTON, self.OnSetColor, id=ID_ActiveCaptionTextColor) self.Bind(wx.EVT_BUTTON, self.OnSetColor, id=ID_BorderColor) self.Bind(wx.EVT_BUTTON, self.OnSetColor, id=ID_GripperColor) - - + + def CreateColorBitmap(self, c): image = wx.Image(25, 14) @@ -994,47 +994,47 @@ class SettingsPanel(wx.Panel): 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()) - + return image.ConvertToBitmap() - - + + def UpdateColors(self): - + bk = self._frame.GetDockArt().GetColour(wx.aui.AUI_DOCKART_BACKGROUND_COLOUR) self._background_color.SetBitmapLabel(self.CreateColorBitmap(bk)) - + cap = self._frame.GetDockArt().GetColour(wx.aui.AUI_DOCKART_INACTIVE_CAPTION_COLOUR) self._inactive_caption_color.SetBitmapLabel(self.CreateColorBitmap(cap)) - + capgrad = self._frame.GetDockArt().GetColour(wx.aui.AUI_DOCKART_INACTIVE_CAPTION_GRADIENT_COLOUR) self._inactive_caption_gradient_color.SetBitmapLabel(self.CreateColorBitmap(capgrad)) - + captxt = self._frame.GetDockArt().GetColour(wx.aui.AUI_DOCKART_INACTIVE_CAPTION_TEXT_COLOUR) self._inactive_caption_text_color.SetBitmapLabel(self.CreateColorBitmap(captxt)) - + acap = self._frame.GetDockArt().GetColour(wx.aui.AUI_DOCKART_ACTIVE_CAPTION_COLOUR) self._active_caption_color.SetBitmapLabel(self.CreateColorBitmap(acap)) - + acapgrad = self._frame.GetDockArt().GetColour(wx.aui.AUI_DOCKART_ACTIVE_CAPTION_GRADIENT_COLOUR) self._active_caption_gradient_color.SetBitmapLabel(self.CreateColorBitmap(acapgrad)) - + acaptxt = self._frame.GetDockArt().GetColour(wx.aui.AUI_DOCKART_ACTIVE_CAPTION_TEXT_COLOUR) self._active_caption_text_color.SetBitmapLabel(self.CreateColorBitmap(acaptxt)) - + sash = self._frame.GetDockArt().GetColour(wx.aui.AUI_DOCKART_SASH_COLOUR) self._sash_color.SetBitmapLabel(self.CreateColorBitmap(sash)) - + border = self._frame.GetDockArt().GetColour(wx.aui.AUI_DOCKART_BORDER_COLOUR) self._border_color.SetBitmapLabel(self.CreateColorBitmap(border)) - + gripper = self._frame.GetDockArt().GetColour(wx.aui.AUI_DOCKART_GRIPPER_COLOUR) self._gripper_color.SetBitmapLabel(self.CreateColorBitmap(gripper)) - - + + def OnPaneBorderSize(self, event): - + self._frame.GetDockArt().SetMetric(wx.aui.AUI_DOCKART_PANE_BORDER_SIZE, event.GetInt()) self._frame.DoUpdate() @@ -1045,24 +1045,24 @@ class SettingsPanel(wx.Panel): self._frame.GetDockArt().SetMetric(wx.aui.AUI_DOCKART_SASH_SIZE, event.GetInt()) self._frame.DoUpdate() - + def OnCaptionSize(self, event): - + self._frame.GetDockArt().SetMetric(wx.aui.AUI_DOCKART_CAPTION_SIZE, event.GetInt()) self._frame.DoUpdate() - + def OnSetColor(self, event): - + dlg = wx.ColourDialog(self._frame) - + dlg.SetTitle("Color Picker") - + if dlg.ShowModal() != wx.ID_OK: return - + var = 0 if event.GetId() == ID_BackgroundColor: var = wx.aui.AUI_DOCKART_BACKGROUND_COLOUR @@ -1085,8 +1085,8 @@ class SettingsPanel(wx.Panel): elif event.GetId() == ID_GripperColor: var = wx.aui.AUI_DOCKART_GRIPPER_COLOUR else: - return - + return + self._frame.GetDockArt().SetColor(var, dlg.GetColourData().GetColour()) self._frame.DoUpdate() self.UpdateColors() @@ -1122,8 +1122,8 @@ overview = """\
Overview
-

wx.aui is an Advanced User Interface library for the wxWidgets toolkit -that allows developers to create high-quality, cross-platform user +

wx.aui is an Advanced User Interface library for the wxWidgets toolkit +that allows developers to create high-quality, cross-platform user interfaces quickly and easily.

Features

diff --git a/demo/ArtProvider.py b/demo/ArtProvider.py index 92d065ed..875eee70 100644 --- a/demo/ArtProvider.py +++ b/demo/ArtProvider.py @@ -1,7 +1,9 @@ #!/usr/bin/env python +# Tags: phoenix-port, py3-port -import cStringIO -import wx +from wx.lib.six import BytesIO + +import wx #---------------------------------------------------------------------- @@ -276,7 +278,7 @@ provided by wx.ArtProvider.GetBitmap or wx.ArtProvider.GetIcon methods. def makeBitmap(data): - stream = cStringIO.StringIO(data) + stream = BytesIO(data) return wx.Bitmap(wx.Image(stream)) diff --git a/demo/Cursor.py b/demo/Cursor.py index d598d1c9..812bb8e4 100644 --- a/demo/Cursor.py +++ b/demo/Cursor.py @@ -1,4 +1,5 @@ #!/usr/bin/env python +# Tags: phoenix-port, py3-port import wx import images @@ -48,8 +49,7 @@ class TestPanel(wx.Panel): wx.Panel.__init__(self, parent, -1) # create a list of choices from the dictionary above - choices = cursors.keys() - choices.sort() + choices = sorted(cursors.keys()) # create the controls self.cb = wx.ComboBox(self, -1, "wx.CURSOR_DEFAULT", choices=choices, diff --git a/demo/CustomDragAndDrop.py b/demo/CustomDragAndDrop.py index 0b2e363a..b638ef7f 100644 --- a/demo/CustomDragAndDrop.py +++ b/demo/CustomDragAndDrop.py @@ -1,7 +1,7 @@ #!/usr/bin/env python -import cPickle -import wx +from wx.lib.six.moves import cPickle +import wx #---------------------------------------------------------------------- diff --git a/demo/DVC_CustomRenderer.py b/demo/DVC_CustomRenderer.py index 584e862c..2ce726cc 100644 --- a/demo/DVC_CustomRenderer.py +++ b/demo/DVC_CustomRenderer.py @@ -1,13 +1,14 @@ #!/usr/bin/env python +# Tags: phoenix-port, py3-port import wx import wx.dataview as dv #---------------------------------------------------------------------- -class MyCustomRenderer(dv.PyDataViewCustomRenderer): +class MyCustomRenderer(dv.DataViewCustomRenderer): def __init__(self, log, *args, **kw): - dv.PyDataViewCustomRenderer.__init__(self, *args, **kw) + dv.DataViewCustomRenderer.__init__(self, *args, **kw) self.log = log self.value = None @@ -51,6 +52,7 @@ class MyCustomRenderer(dv.PyDataViewCustomRenderer): state # wxDataViewCellRenderState flags ) + return True # The HasEditorCtrl, CreateEditorCtrl and GetValueFromEditorCtrl # methods need to be implemented if this renderer is going to @@ -154,7 +156,7 @@ def runTest(frame, nb, log): # as the first element of each sublist. import ListCtrl musicdata = ListCtrl.musicdata.items() - musicdata.sort() + musicdata = sorted(musicdata) musicdata = [[str(k)] + list(v) for k,v in musicdata] win = TestPanel(nb, log, data=musicdata) diff --git a/demo/DVC_DataViewModel.py b/demo/DVC_DataViewModel.py index 01714295..dd5f6c10 100644 --- a/demo/DVC_DataViewModel.py +++ b/demo/DVC_DataViewModel.py @@ -71,15 +71,13 @@ class MyTreeListModel(dv.PyDataViewModel): 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. - # If the data nodes are weak-referencable then the objmapper can use a - # WeakValueDictionary instead. Each PyDataViewModel automagically has - # an instance of DataViewItemObjectMapper preassigned. This - # self.objmapper is used by the self.ObjectToItem and - # self.ItemToObject methods used below. - self.objmapper.UseWeakRefs(True) + # The PyDataViewModel derives from both DataViewModel and from + # DataViewItemObjectMapper, which has methods that help associate + # data view items with Python objects. Normally a dictionary is used + # so any Python object can be used as data nodes. If the data nodes + # are weak-referencable then the objmapper can use a + # WeakValueDictionary instead. + self.UseWeakRefs(True) # Report how many columns this model provides data for. @@ -305,8 +303,7 @@ def runTest(frame, nb, log): # Reuse the music data in the ListCtrl sample, and put it in a # hierarchical structure so we can show it as a tree import ListCtrl - musicdata = ListCtrl.musicdata.items() - musicdata.sort() + musicdata = sorted(ListCtrl.musicdata.items()) ## For testing Unicode #musicdata = { diff --git a/demo/DVC_IndexListModel.py b/demo/DVC_IndexListModel.py index bcc379f0..ca6a549b 100644 --- a/demo/DVC_IndexListModel.py +++ b/demo/DVC_IndexListModel.py @@ -1,4 +1,5 @@ #!/usr/bin/env python +# Tags: phoenix-port, py3-port import wx import wx.dataview as dv @@ -222,8 +223,7 @@ def runTest(frame, nb, log): # from a dictionary to a list of lists, including the dictionary key # as the first element of each sublist. import ListCtrl - musicdata = ListCtrl.musicdata.items() - musicdata.sort() + musicdata = sorted(ListCtrl.musicdata.items()) musicdata = [[str(k)] + list(v) for k,v in musicdata] win = TestPanel(nb, log, data=musicdata) diff --git a/demo/FontEnumerator.py b/demo/FontEnumerator.py index 33a25bbd..bfa96059 100644 --- a/demo/FontEnumerator.py +++ b/demo/FontEnumerator.py @@ -1,4 +1,5 @@ #!/usr/bin/env python +# Tags: phoenix-port, py3-port import wx diff --git a/demo/GLCanvas.py b/demo/GLCanvas.py index ba011028..f82506bf 100644 --- a/demo/GLCanvas.py +++ b/demo/GLCanvas.py @@ -33,8 +33,7 @@ class ButtonPanel(wx.Panel): box = wx.BoxSizer(wx.VERTICAL) box.Add((20, 30)) - keys = buttonDefs.keys() - keys.sort() + keys = sorted(buttonDefs.keys()) for k in keys: text = buttonDefs[k][1] btn = wx.Button(self, k, text) diff --git a/demo/Grid.py b/demo/Grid.py index 081494bd..8e5a0d55 100644 --- a/demo/Grid.py +++ b/demo/Grid.py @@ -23,8 +23,7 @@ class ButtonPanel(wx.Panel): box = wx.BoxSizer(wx.VERTICAL) box.Add((20, 20)) - keys = buttonDefs.keys() - keys.sort() + keys = sorted(buttonDefs.keys()) for k in keys: text = buttonDefs[k][1] diff --git a/demo/GridCustTable.py b/demo/GridCustTable.py index 070ea756..b3082993 100644 --- a/demo/GridCustTable.py +++ b/demo/GridCustTable.py @@ -120,7 +120,7 @@ class CustTableGrid(gridlib.Grid): self.SetMargins(0,0) self.AutoSizeColumns(False) - gridlib.EVT_GRID_CELL_LEFT_DCLICK(self, self.OnLeftDClick) + self.Bind(gridlib.EVT_GRID_CELL_LEFT_DCLICK, self.OnLeftDClick) # I do this because I don't like the default behaviour of not starting the diff --git a/demo/GridDragAndDrop.py b/demo/GridDragAndDrop.py index 50de6775..d1b9ba68 100644 --- a/demo/GridDragAndDrop.py +++ b/demo/GridDragAndDrop.py @@ -34,9 +34,9 @@ class GridFileDropTarget(wx.FileDropTarget): -class FooTable(gridlib.PyGridTableBase): +class FooTable(gridlib.GridTableBase): def __init__(self): - gridlib.PyGridTableBase.__init__(self) + gridlib.GridTableBase.__init__(self) self.dropTargets = {(0,0):"Drag", (1,0):"A", (2,0):"File", diff --git a/demo/GridDragable.py b/demo/GridDragable.py index 0e80c118..1a80d6dc 100644 --- a/demo/GridDragable.py +++ b/demo/GridDragable.py @@ -6,9 +6,9 @@ import wx.lib.gridmovers as gridmovers #--------------------------------------------------------------------------- -class CustomDataTable(gridlib.PyGridTableBase): +class CustomDataTable(gridlib.GridTableBase): def __init__(self, log): - gridlib.PyGridTableBase.__init__(self) + gridlib.GridTableBase.__init__(self) self.log = log self.identifiers = ['id','ds','sv','pr','pl','op','fx','ts'] diff --git a/demo/GridHugeTable.py b/demo/GridHugeTable.py index 21aa38d5..2a6bfd60 100644 --- a/demo/GridHugeTable.py +++ b/demo/GridHugeTable.py @@ -5,7 +5,7 @@ import wx.grid as gridlib #--------------------------------------------------------------------------- -class HugeTable(gridlib.PyGridTableBase): +class HugeTable(gridlib.GridTableBase): def __init__(self, log): gridlib.GridTableBase.__init__(self) diff --git a/demo/GridLabelRenderer.py b/demo/GridLabelRenderer.py index 21413f5a..5a93707e 100644 --- a/demo/GridLabelRenderer.py +++ b/demo/GridLabelRenderer.py @@ -19,7 +19,7 @@ class MyRowLabelRenderer(glr.GridLabelRenderer): def Draw(self, grid, dc, rect, row): dc.SetBrush(wx.Brush(self._bgcolor)) dc.SetPen(wx.TRANSPARENT_PEN) - dc.DrawRectangleRect(rect) + dc.DrawRectangle(rect) hAlign, vAlign = grid.GetRowLabelAlignment() text = grid.GetRowLabelValue(row) self.DrawBorder(grid, dc, rect) diff --git a/demo/ImageFromStream.py b/demo/ImageFromStream.py index d4ac350a..a95f802d 100644 --- a/demo/ImageFromStream.py +++ b/demo/ImageFromStream.py @@ -1,6 +1,7 @@ #!/usr/bin/env python +# Tags: phoenix-port, py3-port -import cStringIO +from wx.lib.six import BytesIO import wx @@ -13,7 +14,7 @@ class TestPanel(wx.Panel): wx.Panel.__init__(self, parent, -1) data = open(opj('bitmaps/image.png'), "rb").read() - stream = cStringIO.StringIO(data) + stream = BytesIO(data) bmp = wx.Bitmap(wx.Image(stream)) diff --git a/demo/ListBox.py b/demo/ListBox.py index da6acb20..00538741 100644 --- a/demo/ListBox.py +++ b/demo/ListBox.py @@ -1,4 +1,5 @@ #!/usr/bin/env python +# Tags: phoenix-port, py3-port import wx diff --git a/demo/Main.py b/demo/Main.py index 466a3969..b07c63e1 100644 --- a/demo/Main.py +++ b/demo/Main.py @@ -9,6 +9,7 @@ # RCS-ID: $Id: Main.py 71772 2012-06-14 22:37:10Z RD $ # Copyright: (c) 1999 by Total Control Software # Licence: wxWindows license +# Tags: phoenix-port, py3-port #---------------------------------------------------------------------------- # FIXME List: @@ -615,10 +616,9 @@ def FindImages(text, widgetName): if "src=" in items: possibleImage = items.replace("src=", "").strip() - possibleImage = possibleImage.replace("'", "") + possibleImage = possibleImage.replace('"', "") f = urllib.request.urlopen(_trunkURL + possibleImage) stream = f.read() - elif "alt=" in items: plat = items.replace("alt=", "").replace("'", "").strip() path = os.path.join(imagesDir, plat, widgetName + ".png") @@ -660,7 +660,10 @@ class InternetThread(Thread): url = _docsURL % ReplaceCapitals(self.selectedClass) fid = urllib.request.urlopen(url) - originalText = fid.read() + if six.PY2: + originalText = fid.read() + else: + originalText = fid.read().decode("utf-8") text = RemoveHTMLTags(originalText).split("\n") data = FindWindowStyles(text, originalText, self.selectedClass) @@ -1344,7 +1347,8 @@ class DemoModules(object): if self.name != __name__: source = self.modules[modID][1] description = self.modules[modID][2] - description = description.encode(sys.getfilesystemencoding()) + if six.PY2: + description = description.encode(sys.getfilesystemencoding()) try: code = compile(source, description, "exec") @@ -1438,7 +1442,7 @@ class DemoError(object): self.exception_type = excType.__name__ else: self.exception_type = excType - + # If it's a syntax error, extra information needs # to be added to the traceback if excType is SyntaxError: @@ -2437,9 +2441,9 @@ class wxPythonDemo(wx.Frame): if error: if self.sendDownloadError: - self.log.write("Warning: problems in downloading documentation from the wxWidgets website.\n") - self.log.write("Error message from the documentation downloader was:\n") - self.log.write("\n".join(error)) + self.log.AppendText("Warning: problems in downloading documentation from the wxWidgets website.\n") + self.log.AppendText("Error message from the documentation downloader was:\n") + self.log.AppendText("\n".join(error)) self.sendDownloadError = False self.nb.SetPageImage(0, 0) @@ -2486,7 +2490,8 @@ class wxPythonDemo(wx.Frame): self.pickledData[itemText] = data - if wx.USE_UNICODE: + if six.PY2: + # TODO: verify that this encoding is correct text = text.decode('iso8859_1') self.StopDownload() @@ -2509,7 +2514,7 @@ class wxPythonDemo(wx.Frame): def OnAllowDownload(self, event): - self.allowDocs = event.Checked() + self.allowDocs = event.IsChecked() if self.allowDocs: self.StartDownload() else: diff --git a/demo/MimeTypesManager.py b/demo/MimeTypesManager.py index fa7dd6fd..d6c03895 100644 --- a/demo/MimeTypesManager.py +++ b/demo/MimeTypesManager.py @@ -21,9 +21,8 @@ import images # helper function to make sure we don't convert unicode objects to strings # or vice versa when converting lists and None values to text. -convert = str -if 'unicode' in wx.PlatformInfo: - convert = unicode +import wx.lib.six as six +convert = six.text_type #---------------------------------------------------------------------------- @@ -271,7 +270,7 @@ class MimeTypesDemoPanel(wx.Panel): self.iconoffset.SetValue("") else: icon, file, idx = info - if icon.Ok(): + if icon.IsOk(): self.icon.SetIcon(icon) else: bmp = images.NoIcon.GetBitmap() diff --git a/demo/PropertyGrid.py b/demo/PropertyGrid.py index c9cbdf0e..57e0c750 100644 --- a/demo/PropertyGrid.py +++ b/demo/PropertyGrid.py @@ -7,6 +7,7 @@ import os import os.path import wx +from wx.lib.six import exec_ _ = wx.GetTranslation import wx.propgrid as wxpg @@ -873,7 +874,7 @@ class TestPanel( wx.Panel ): sandbox = {'obj':ValueObject(), 'wx':wx, 'datetime':datetime} - exec dlg.tc.GetValue() in sandbox + exec_(dlg.tc.GetValue(), sandbox) t_start = time.time() #print(sandbox['obj'].__dict__) self.pg.SetPropertyValues(sandbox['obj']) @@ -919,7 +920,7 @@ class TestPanel( wx.Panel ): dlg = MemoDialog(self,"Enter Content for Object Used for AutoFill",default_object_content1) if dlg.ShowModal() == wx.ID_OK: sandbox = {'object':ValueObject(),'wx':wx} - exec dlg.tc.GetValue() in sandbox + exec_(dlg.tc.GetValue(), sandbox) t_start = time.time() self.pg.AutoFill(sandbox['object']) t_end = time.time() diff --git a/demo/RichTextCtrl.py b/demo/RichTextCtrl.py index 5021280a..c260b69f 100644 --- a/demo/RichTextCtrl.py +++ b/demo/RichTextCtrl.py @@ -1,5 +1,7 @@ #!/usr/bin/env python +from wx.lib.six import BytesIO + import wx import wx.richtext as rt import images @@ -314,8 +316,7 @@ class RichTextFrame(wx.Frame): handler.SetFlags(rt.RICHTEXT_HANDLER_SAVE_IMAGES_TO_MEMORY) handler.SetFontSizeMapping([7,9,11,12,14,22,100]) - import cStringIO - stream = cStringIO.StringIO() + stream = BytesIO() if not handler.SaveStream(self.rtc.GetBuffer(), stream): return diff --git a/demo/agw/FoldPanelBar.py b/demo/agw/FoldPanelBar.py index 7973239f..53d11162 100644 --- a/demo/agw/FoldPanelBar.py +++ b/demo/agw/FoldPanelBar.py @@ -1,10 +1,13 @@ #!/usr/bin/env python +# Tags: phoenix-port, py3-port import wx import wx.adv import os import sys +from wx.lib.six import BytesIO + try: dirName = os.path.dirname(os.path.abspath(__file__)) except: @@ -33,7 +36,7 @@ except ImportError: # if it's not there locally, try the wxPython lib. def GetCollapsedIconData(): return \ -'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x10\x00\x00\x00\x10\x08\x06\ +b'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x10\x00\x00\x00\x10\x08\x06\ \x00\x00\x00\x1f\xf3\xffa\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\ \x00\x01\x8eIDAT8\x8d\xa5\x93-n\xe4@\x10\x85?g\x03\n6lh)\xc4\xd2\x12\xc3\x81\ \xd6\xa2I\x90\x154\xb9\x81\x8f1G\xc8\x11\x16\x86\xcd\xa0\x99F\xb3A\x91\xa1\ @@ -56,14 +59,13 @@ def GetCollapsedIconBitmap(): return wx.Bitmap(GetCollapsedIconImage()) def GetCollapsedIconImage(): - import cStringIO - stream = cStringIO.StringIO(GetCollapsedIconData()) + stream = BytesIO(GetCollapsedIconData()) return wx.Image(stream) #---------------------------------------------------------------------- def GetExpandedIconData(): return \ -'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x10\x00\x00\x00\x10\x08\x06\ +b'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x10\x00\x00\x00\x10\x08\x06\ \x00\x00\x00\x1f\xf3\xffa\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\ \x00\x01\x9fIDAT8\x8d\x95\x93\xa1\x8e\xdc0\x14EO\xb2\xc4\xd0\xd2\x12\xb7(mI\ \xa4%V\xd1lQT4[4-\x9a\xfe\xc1\xc2|\xc6\xc2~BY\x83:A3E\xd3\xa0*\xa4\xd2\x90H!\ @@ -88,27 +90,25 @@ def GetExpandedIconBitmap(): return wx.Bitmap(GetExpandedIconImage()) def GetExpandedIconImage(): - import cStringIO - stream = cStringIO.StringIO(GetExpandedIconData()) + stream = BytesIO(GetExpandedIconData()) return wx.Image(stream) #---------------------------------------------------------------------- def GetMondrianData(): return \ -'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00 \x00\x00\x00 \x08\x06\x00\ +b'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00 \x00\x00\x00 \x08\x06\x00\ \x00\x00szz\xf4\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\x00\x00qID\ ATX\x85\xed\xd6;\n\x800\x10E\xd1{\xc5\x8d\xb9r\x97\x16\x0b\xad$\x8a\x82:\x16\ o\xda\x84pB2\x1f\x81Fa\x8c\x9c\x08\x04Z{\xcf\xa72\xbcv\xfa\xc5\x08 \x80r\x80\ \xfc\xa2\x0e\x1c\xe4\xba\xfaX\x1d\xd0\xde]S\x07\x02\xd8>\xe1wa-`\x9fQ\xe9\ \x86\x01\x04\x10\x00\\(Dk\x1b-\x04\xdc\x1d\x07\x14\x98;\x0bS\x7f\x7f\xf9\x13\ -\x04\x10@\xf9X\xbe\x00\xc9 \x14K\xc1<={\x00\x00\x00\x00IEND\xaeB`\x82' +\x04\x10@\xf9X\xbe\x00\xc9 \x14K\xc1<={\x00\x00\x00\x00IEND\xaeB`\x82' def GetMondrianBitmap(): return wx.Bitmap(GetMondrianImage()) def GetMondrianImage(): - import cStringIO - stream = cStringIO.StringIO(GetMondrianData()) + stream = BytesIO(GetMondrianData()) return wx.Image(stream) def GetMondrianIcon(): @@ -191,7 +191,7 @@ class Extended(wx.Frame): dlg = wx.MessageDialog(self, msg, "FoldPanelBar Extended Demo", wx.OK | wx.ICON_INFORMATION) - dlg.SetFont(wx.Font(8, wx.FONTFAMILY_NORMAL, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False, "Verdana")) + dlg.SetFont(wx.Font(8, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False, "Verdana")) dlg.ShowModal() dlg.Destroy() diff --git a/demo/agw/HyperTreeList.py b/demo/agw/HyperTreeList.py index 6dcc32c9..46396181 100644 --- a/demo/agw/HyperTreeList.py +++ b/demo/agw/HyperTreeList.py @@ -1,4 +1,5 @@ #!/usr/bin/env python +# Tags: phoenix-port, py3-port import os import string @@ -10,6 +11,8 @@ import wx.lib.colourutils as cutils import sys +from wx.lib.six import BytesIO + try: dirName = os.path.dirname(os.path.abspath(__file__)) except: @@ -192,8 +195,7 @@ def GetMondrianBitmap(): return wx.Bitmap(GetMondrianImage()) def GetMondrianImage(): - import cStringIO - stream = cStringIO.StringIO(GetMondrianData()) + stream = BytesIO(GetMondrianData()) return wx.Image(stream) def GetMondrianIcon(): @@ -239,8 +241,7 @@ def GetSmilesBitmap(): return wx.Bitmap(GetSmilesImage()) def GetSmilesImage(): - import cStringIO - stream = cStringIO.StringIO(GetSmilesData()) + stream = BytesIO(GetSmilesData()) return wx.Image(stream) @@ -1901,7 +1902,7 @@ class HyperTreeList(HTL.HyperTreeList): items.append(tree.AppendItem(root, "Item 4", 0)) items.append(tree.AppendItem(root, "Item 5", 0)) - for ii in xrange(len(items)): + for ii in range(len(items)): id = items[ii] tree.AppendItem(id, "Subitem 1", 1) diff --git a/demo/agw/ListCtrl.py b/demo/agw/ListCtrl.py index 90b7efcd..977f933b 100644 --- a/demo/agw/ListCtrl.py +++ b/demo/agw/ListCtrl.py @@ -10,9 +10,10 @@ # RCS-ID: $Id: ListCtrl.py 51049 2008-01-06 21:38:01Z RD $ # Copyright: (c) 1998 by Total Control Software # Licence: wxWindows license +# Tags: phoenix-port, py3-port #---------------------------------------------------------------------------- -import sys +import wx.lib.six as six import wx import wx.lib.mixins.listctrl as listmix @@ -173,21 +174,21 @@ class TestListCtrlPanel(wx.Panel, listmix.ColumnSorterMixin): info.Image = -1 info.Align = 0 info.Text = "Artist" - self.list.InsertColumnInfo(0, info) + self.list.InsertColumn(0, info) info.Align = wx.LIST_FORMAT_RIGHT info.Text = "Title" - self.list.InsertColumnInfo(1, info) + self.list.InsertColumn(1, info) info.Align = 0 info.Text = "Genre" - self.list.InsertColumnInfo(2, info) + 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(six.MAXSIZE, 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) @@ -506,7 +507,7 @@ selection is enabled) if __name__ == '__main__': - import sys,os + import sys, os import run run.main(['', os.path.basename(sys.argv[0])] + sys.argv[1:]) diff --git a/wx/lib/analogclock/lib_setup/buttontreectrlpanel.py b/wx/lib/analogclock/lib_setup/buttontreectrlpanel.py index 0b1ba0ee..158f5952 100644 --- a/wx/lib/analogclock/lib_setup/buttontreectrlpanel.py +++ b/wx/lib/analogclock/lib_setup/buttontreectrlpanel.py @@ -29,8 +29,6 @@ please drop me an e-mail. For updates please visit . """ -import cStringIO - import wx from wx.lib.newevent import NewEvent diff --git a/wx/lib/floatcanvas/Resources.py b/wx/lib/floatcanvas/Resources.py index 5842890a..60fa9aa1 100644 --- a/wx/lib/floatcanvas/Resources.py +++ b/wx/lib/floatcanvas/Resources.py @@ -4,12 +4,13 @@ from wx import Image as ImageFromStream from wx import Bitmap as BitmapFromImage -import cStringIO, zlib +from wx.lib.six import BytesIO +import zlib def getMagPlusData(): return zlib.decompress( -'x\xda\x01*\x01\xd5\xfe\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x18\ +b'x\xda\x01*\x01\xd5\xfe\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x18\ \x00\x00\x00\x18\x08\x06\x00\x00\x00\xe0w=\xf8\x00\x00\x00\x04sBIT\x08\x08\ \x08\x08|\x08d\x88\x00\x00\x00\xe1IDATx\x9c\xb5U\xd1\x0e\xc4 \x08\xa3n\xff\ \xff\xc5\xdb\xb8\xa7\xee<\x04\x86gFb\xb2\x88\xb6\x14\x90\x01m\x937m\x8f\x1c\ @@ -26,13 +27,13 @@ def getMagPlusBitmap(): return BitmapFromImage(getMagPlusImage()) def getMagPlusImage(): - stream = cStringIO.StringIO(getMagPlusData()) + stream = BytesIO(getMagPlusData()) return ImageFromStream(stream) #---------------------------------------------------------------------- def getPointerData(): return zlib.decompress( -"x\xda\xeb\x0c\xf0s\xe7\xe5\x92\xe2b``\xe0\xf5\xf4p\t\x02\xd2\x12 \xcc\xc1\ +b"x\xda\xeb\x0c\xf0s\xe7\xe5\x92\xe2b``\xe0\xf5\xf4p\t\x02\xd2\x12 \xcc\xc1\ \x06$\x1f\x94\xdb\xfe\x00R,\xc5N\x9e!\x1c@P\xc3\x91\xd2\x01\xe4o\xf5tq\x0c\ \xa9\x98\xb3\xf5\xdaE\xa1V\x05\x0e\x96\x0bw\xbf\xfc\xdf\xbfc\xd1\xf4\xd9\x87\ \xa7\xa84Mw_n\xa3\xeb&\xbcS\xf4N\xa9\xdcn\x86\x03aZ\x1bWl{\xcet\x92m\xed\x8a\ @@ -48,13 +49,13 @@ def getPointerBitmap(): return BitmapFromImage(getPointerImage()) def getPointerImage(): - stream = cStringIO.StringIO(getPointerData()) + stream = BytesIO(getPointerData()) return ImageFromStream(stream) #---------------------------------------------------------------------- def getMagMinusData(): return zlib.decompress( -'x\xda\xeb\x0c\xf0s\xe7\xe5\x92\xe2b``\xe0\xf5\xf4p\t\x02\xd2\x12 \xcc\xc1\ +b'x\xda\xeb\x0c\xf0s\xe7\xe5\x92\xe2b``\xe0\xf5\xf4p\t\x02\xd2\x12 \xcc\xc1\ \x06$\x1f\x94\xdb\xfe\x00R,\xc5N\x9e!\x1c@P\xc3\x91\xd2\x01\xe4\xdf\xf6tq\ \x0c\xa9\x98\xb354\x9a\xaf\xc5\x80#e\xd5w\xfb\x8d\xa7\xea.\xa6j\x06\xec\xeaU\ Q[vE\xb2m\xba\x83\xf5\x0b_k\xe5\xe3\xc5\xf12?o\x15.\xf2b\xf0ol`V\xe63\xd6\ @@ -71,13 +72,13 @@ def getMagMinusBitmap(): return BitmapFromImage(getMagMinusImage()) def getMagMinusImage(): - stream = cStringIO.StringIO(getMagMinusData()) + stream = BytesIO(getMagMinusData()) return ImageFromStream(stream) #---------------------------------------------------------------------- def getMoveButtonData(): return zlib.decompress( -'x\xda\x01,\x01\xd3\xfe\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x18\ +b'x\xda\x01,\x01\xd3\xfe\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x18\ \x00\x00\x00\x18\x08\x06\x00\x00\x00\xe0w=\xf8\x00\x00\x00\x04sBIT\x08\x08\ \x08\x08|\x08d\x88\x00\x00\x00\xe3IDATx\x9c\xb5\x96\xd1\x16\x84 \x08D\x19\ \xf5\xff\xbf\xb8\x9a}Y[\xc2P\xe8\xb4<\xaa\xcc\x15\x1c-\xa0T\x89\xc6\xb1o\x14\ @@ -95,13 +96,13 @@ def getMoveButtonBitmap(): return BitmapFromImage(getMoveButtonImage()) def getMoveButtonImage(): - stream = cStringIO.StringIO(getMoveButtonData()) + stream = BytesIO(getMoveButtonData()) return ImageFromStream(stream) #---------------------------------------------------------------------- def getMoveCursorData(): return zlib.decompress( -"x\xda\xeb\x0c\xf0s\xe7\xe5\x92\xe2b``\xe0\xf5\xf4p\t\x02\xd2\xc2 \xcc\xc1\ +b"x\xda\xeb\x0c\xf0s\xe7\xe5\x92\xe2b``\xe0\xf5\xf4p\t\x02\xd2\xc2 \xcc\xc1\ \x06$\x8b\x02\xcc\xce\x00)\x96b'\xcf\x10\x0e \xa8\xe1H\xe9\x00\xf2\xd7z\xba8\ \x86T\xccYz\xe5\xa0\xd0a\x05\x0e\x96\x0b\xb1_\xff\xef\xb7\xe0\xb4-)\x98\xb0\ \xe0\xc6\xab\x8b/Ns\xf5\xa5\xac(+y\xdb\xba7\x0e*\x1f\xefL\x97I\xe4b<\ @@ -116,13 +117,13 @@ def getMoveCursorBitmap(): return BitmapFromImage(getMoveCursorImage()) def getMoveCursorImage(): - stream = cStringIO.StringIO(getMoveCursorData()) + stream = BytesIO(getMoveCursorData()) return ImageFromStream(stream) #---------------------------------------------------------------------- def getMoveRLCursorData(): return zlib.decompress( -"x\xda\xeb\x0c\xf0s\xe7\xe5\x92\xe2b``\xe0\xf5\xf4p\t\x02\xd2\xc2 \xcc\xc1\ +b"x\xda\xeb\x0c\xf0s\xe7\xe5\x92\xe2b``\xe0\xf5\xf4p\t\x02\xd2\xc2 \xcc\xc1\ \x06$\x8b\x02\xcc\xce\x00)\x96b'\xcf\x10\x0e \xa8\xe1H\xe9\x00\xf2{<]\x1cC*\ \xe6\x9c\xbd\xe2\xc8\xd7\xa0\xc0\xc3r \xf6\xc1\x7f}\xb6WG\xa5Z\xa75H=\x96\ \x93\xb6Z\xb8\xa4\x91G0_u\x8fZm\xdb\xd5I\xa9K\xdf%mMQ\xbciZU*~\xb9-\xd0\xe6C\ @@ -136,13 +137,13 @@ def getMoveRLCursorBitmap(): return BitmapFromImage(getMoveRLCursorImage()) def getMoveRLCursorImage(): - stream = cStringIO.StringIO(getMoveRLCursorData()) + stream = BytesIO(getMoveRLCursorData()) return ImageFromStream(stream) #---------------------------------------------------------------------- def getMoveUDCursorData(): return zlib.decompress( -'x\xda\xeb\x0c\xf0s\xe7\xe5\x92\xe2b``\xe0\xf5\xf4p\t\x02\xd2\xc2 \xcc\xc1\ +b'x\xda\xeb\x0c\xf0s\xe7\xe5\x92\xe2b``\xe0\xf5\xf4p\t\x02\xd2\xc2 \xcc\xc1\ \x06$\x8b\x02\xcc\xce\x00)\x96b\'\xcf\x10\x0e \xa8\xe1H\xe9\x00\xf2gx\xba8\ \x86T\xccY{\xc5\x91\xef\x88\x02\x07k@\xc0\xfb\xfaG\xdb\xf6\xcf6\x14t\xb1\x9b\ ,\xb9\xedE\xb7\xc2\xaa[\xbb6T\xbc\xe3^\xcb\x9f\xfa:\x8a5(\xb4\xf2\x1d\xb7}\ @@ -157,13 +158,13 @@ def getMoveUDCursorBitmap(): return BitmapFromImage(getMoveUDCursorImage()) def getMoveUDCursorImage(): - stream = cStringIO.StringIO(getMoveUDCursorData()) + stream = BytesIO(getMoveUDCursorData()) return ImageFromStream(stream) #---------------------------------------------------------------------- def getGrabHandData(): return zlib.decompress( -'x\xda\x01Z\x01\xa5\xfe\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x18\ +b'x\xda\x01Z\x01\xa5\xfe\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x18\ \x00\x00\x00\x18\x08\x06\x00\x00\x00\xe0w=\xf8\x00\x00\x00\x04sBIT\x08\x08\ \x08\x08|\x08d\x88\x00\x00\x01\x11IDATx\x9c\xb5U\xd1\x12\x830\x08Kh\xff\xff\ \x8b7\xb3\x97\xd1C\xa4Zw\x93;\x1fJ1\t\x98VJ\x92\xb5N<\x14\x04 I\x00\x80H\xb4\ @@ -182,13 +183,13 @@ def getGrabHandBitmap(): return BitmapFromImage(getGrabHandImage()) def getGrabHandImage(): - stream = cStringIO.StringIO(getGrabHandData()) + stream = BytesIO(getGrabHandData()) return ImageFromStream(stream) #---------------------------------------------------------------------- def getHandData(): return zlib.decompress( -'x\xda\x01Y\x01\xa6\xfe\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x18\ +b'x\xda\x01Y\x01\xa6\xfe\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x18\ \x00\x00\x00\x18\x08\x06\x00\x00\x00\xe0w=\xf8\x00\x00\x00\x04sBIT\x08\x08\ \x08\x08|\x08d\x88\x00\x00\x01\x10IDATx\x9c\xad\x96\xe1\x02\xc2 \x08\x849\ \xf5\xfd\x9fx\xdb\xf5\'\x8c!\xa8\xab\xee\x975\xe5\x83\x0b\\@\xa9\xb2\xab\xeb\ @@ -207,13 +208,13 @@ def getHandBitmap(): return BitmapFromImage(getHandImage()) def getHandImage(): - stream = cStringIO.StringIO(getHandData()) + stream = BytesIO(getHandData()) return ImageFromStream(stream) #---------------------------------------------------------------------- def getGrabHand16Data(): return zlib.decompress( -'x\xda\x01\x0f\x01\xf0\xfe\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\ +b'x\xda\x01\x0f\x01\xf0\xfe\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\ \x10\x00\x00\x00\x10\x08\x06\x00\x00\x00\x1f\xf3\xffa\x00\x00\x00\x04sBIT\ \x08\x08\x08\x08|\x08d\x88\x00\x00\x00\xc6IDATx\x9c\x9d\x92Qn\x031\x08D\x07\ \xd6\xc7\xc0\xf7?\x98}\x8c$\xaf\x1f[,\xaf\xb5n\x9a !\r\x08\x0f\x0c\xd8\x00\ @@ -230,13 +231,13 @@ def getGrabHand16Bitmap(): return BitmapFromImage(getGrabHand16Image()) def getGrabHand16Image(): - stream = cStringIO.StringIO(getGrabHand16Data()) + stream = BytesIO(getGrabHand16Data()) return ImageFromStream(stream) #---------------------------------------------------------------------- def getMondrianData(): return zlib.decompress( -'x\xda\xeb\x0c\xf0s\xe7\xe5\x92\xe2b``\xe0\xf5\xf4p\t\x02\xd2\n \xcc\xc1\x04\ +b'x\xda\xeb\x0c\xf0s\xe7\xe5\x92\xe2b``\xe0\xf5\xf4p\t\x02\xd2\n \xcc\xc1\x04\ $\xffH\xbc]\x0c\xa4\x98\x8b\x9d+9\xc4\xe8\xf3\x1dn\x06\xed\x89\x02\x05F\x06\ @@ -292,13 +293,13 @@ def getMagPlus16Bitmap(): return BitmapFromImage(getMagPlus16Image()) def getMagPlus16Image(): - stream = cStringIO.StringIO(getMagPlus16Data()) + stream = BytesIO(getMagPlus16Data()) return ImageFromStream(stream) #---------------------------------------------------------------------- def getMagMinus16Data(): return zlib.decompress( -"x\xda\xeb\x0c\xf0s\xe7\xe5\x92\xe2b``\xe0\xf5\xf4p\t\x02\xd2\x02 \xcc\xc1\ +b"x\xda\xeb\x0c\xf0s\xe7\xe5\x92\xe2b``\xe0\xf5\xf4p\t\x02\xd2\x02 \xcc\xc1\ \x06$\xe5?\xffO\x04R,\xc5N\x9e!\x1c@P\xc3\x91\xd2\x01\xe4\xaf\xf4tq\x0c\xa9\ \x98\xb36\xd8Q\xa8\xc5\x80C\xf9\x80\xf1\x9b\xff\xf6+\xd3\xf8\xb5\xb75\x87\ \xdc\x9dy\xd6P5\xd3I4`\xb2\xe0\xefmABWdfrW\x881_\x8f\x9c4g\xe6\x1c6E5}\xc6'\ @@ -313,6 +314,6 @@ def getMagMinus16Bitmap(): return BitmapFromImage(getMagMinus16Image()) def getMagMinus16Image(): - stream = cStringIO.StringIO(getMagMinus16Data()) + stream = BytesIO(getMagMinus16Data()) return ImageFromStream(stream) diff --git a/wx/lib/floatcanvas/ScreenShot.py b/wx/lib/floatcanvas/ScreenShot.py index 8d1c9dcc..abd59dac 100644 --- a/wx/lib/floatcanvas/ScreenShot.py +++ b/wx/lib/floatcanvas/ScreenShot.py @@ -4,7 +4,8 @@ from wx import Image as ImageFromStream from wx import BitmapFromImage -import cStringIO, zlib +from wx.lib.six import BytesIO +import zlib def getScreenShotData(): @@ -1782,6 +1783,6 @@ def getScreenShotBitmap(): return BitmapFromImage(getScreenShotImage()) def getScreenShotImage(): - stream = cStringIO.StringIO(getScreenShotData()) + stream = BytesIO(getScreenShotData()) return ImageFromStream(stream) diff --git a/wx/lib/pdfviewer/viewer.py b/wx/lib/pdfviewer/viewer.py index 27d9bab4..eacb7621 100644 --- a/wx/lib/pdfviewer/viewer.py +++ b/wx/lib/pdfviewer/viewer.py @@ -22,8 +22,14 @@ This module provides the :class:`~lib.pdfviewer.viewer.pdfViewer` to view PDF files. """ -import sys, os, time, types -import copy, shutil, cStringIO +import sys +import os +import time +import types +import copy +import shutil + +from wx.lib.six import BytesIO USE_CAIRO = True FONTSCALE = 1.0 @@ -842,7 +848,7 @@ class pdfViewer(wx.ScrolledWindow): if '/Fl' in filters or '/FlateDecode' in filters: data = FlateDecode.decode(data, None) if '/DCT' in filters or '/DCTDecode' in filters: - stream = cStringIO.StringIO(data) + stream = BytesIO(data) image = wx.Image(stream, wx.BITMAP_TYPE_JPEG) bitmap = wx.Bitmap(image) else: diff --git a/wx/lib/rcsizer.py b/wx/lib/rcsizer.py index bb1a4939..aa64af69 100644 --- a/wx/lib/rcsizer.py +++ b/wx/lib/rcsizer.py @@ -34,7 +34,7 @@ encouraged to switch. import operator import wx -import six +import wx.lib.six as six if six.PY3: from functools import reduce as reduce