From 90ee034d74ee033796814760ff1c739bcd273bb5 Mon Sep 17 00:00:00 2001 From: Robin Dunn Date: Sat, 19 Apr 2014 21:26:03 +0000 Subject: [PATCH] PR #76: a few wx.lib things for Py33 git-svn-id: https://svn.wxwidgets.org/svn/wx/wxPython/Phoenix/trunk@76375 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- demo/agw/MacLargeDemo.py | 4 +- demo/agw/ShortcutEditor.py | 12 +- demo/agw/UltimateListCtrl.py | 2 +- demo/agw/UltimateListIconDemo.py | 4 +- demo/agw/UltimateListListDemo.py | 2 +- demo/agw/UltimateReportDemo.py | 10 +- demo/agw/UltimateVirtualDemo.py | 4 +- demo/agw/Windows7Explorer_Contents.py | 8 +- demo/agw/XLSGrid.py | 10 +- unittests/test_lib_agw_shortcuteditor.py | 22 +++ unittests/test_lib_agw_supertooltip.py | 18 +++ unittests/test_lib_agw_thumbnailctrl.py | 24 +++ unittests/test_lib_agw_toasterbox.py | 37 +++++ unittests/test_lib_agw_ultimatelistctrl.py | 95 +++++++++++ unittests/test_lib_agw_xlsgrid.py | 22 +++ unittests/test_lib_agw_zoombar.py | 21 +++ unittests/test_lib_fancytext.py | 32 ++++ unittests/test_lib_masked.py | 9 +- wx/lib/agw/shortcuteditor.py | 1 + wx/lib/agw/supertooltip.py | 1 + wx/lib/agw/thumbnailctrl.py | 174 ++++++++++----------- wx/lib/agw/toasterbox.py | 5 +- wx/lib/agw/ultimatelistctrl.py | 9 +- wx/lib/agw/xlsgrid.py | 15 +- wx/lib/agw/zoombar.py | 19 +++ wx/lib/fancytext.py | 9 +- wx/lib/masked/maskededit.py | 12 +- 27 files changed, 439 insertions(+), 142 deletions(-) create mode 100644 unittests/test_lib_agw_shortcuteditor.py create mode 100644 unittests/test_lib_agw_supertooltip.py create mode 100644 unittests/test_lib_agw_thumbnailctrl.py create mode 100644 unittests/test_lib_agw_toasterbox.py create mode 100644 unittests/test_lib_agw_ultimatelistctrl.py create mode 100644 unittests/test_lib_agw_xlsgrid.py create mode 100644 unittests/test_lib_agw_zoombar.py create mode 100644 unittests/test_lib_fancytext.py diff --git a/demo/agw/MacLargeDemo.py b/demo/agw/MacLargeDemo.py index 7cc69ce8..4d967a54 100644 --- a/demo/agw/MacLargeDemo.py +++ b/demo/agw/MacLargeDemo.py @@ -308,8 +308,8 @@ class UltimateListCtrlPanel(wx.Panel): self.list.InsertColumnInfo(1, info) - for i in xrange(2): - index = self.list.InsertImageStringItem(sys.maxint, "", [i]) + for i in range(2): + index = self.list.InsertImageStringItem(sys.maxsize, "", [i]) self.list.SetStringItem(index, 1, "") klass = MacRenderer(self) self.list.SetItemCustomRenderer(index, 1, klass) diff --git a/demo/agw/ShortcutEditor.py b/demo/agw/ShortcutEditor.py index 933269e2..be268fd4 100644 --- a/demo/agw/ShortcutEditor.py +++ b/demo/agw/ShortcutEditor.py @@ -31,9 +31,9 @@ HTML_HELP = os.path.join(SE_DIR, 'data', 'default_help_text.html') TOP_MENUS = ['File', 'Edit', 'View', 'Options', 'Window', 'Help'] COMBINATIONS = string.ascii_uppercase + string.digits -COMBINATIONS = [c for c in COMBINATIONS] + SE.KEYMAP.values() +COMBINATIONS = [c for c in COMBINATIONS] + list(SE.KEYMAP.values()) -ACCEL_IDS = [wx.NewId() for i in xrange(6)] +ACCEL_IDS = [wx.NewId() for i in range(6)] _ = wx.GetTranslation @@ -202,9 +202,9 @@ class ShortcutEditorDemo(wx.Frame): table = [] saved_table = [] - for i in xrange(6): + for i in range(6): name = 'Accelerator %d'%(i+1) - choice = random.choice(SE.ACCELERATORS.keys()) + choice = random.choice(list(SE.ACCELERATORS.keys())) if choice == wx.ACCEL_ALT: letter = random.choice(COMBINATIONS) @@ -216,7 +216,7 @@ class ShortcutEditorDemo(wx.Frame): wxk = ord(letter) else: - wxk = random.choice(SE.KEYMAP.keys()) + wxk = random.choice(list(SE.KEYMAP.keys())) accel = (choice, wxk, ACCEL_IDS[i]) saved_accel = (name, choice, wxk, ACCEL_IDS[i]) @@ -234,7 +234,7 @@ class ShortcutEditorDemo(wx.Frame): num_menus = random.randint(2, 7) - for index in xrange(num_menus): + for index in range(num_menus): shortcut = self.CreateShortcut() sub_menu = wx.MenuItem(top_menu, -1, '%s%sItem %d%s'%(recursive, title, index+1, shortcut), diff --git a/demo/agw/UltimateListCtrl.py b/demo/agw/UltimateListCtrl.py index 6b6b1820..60e963a5 100644 --- a/demo/agw/UltimateListCtrl.py +++ b/demo/agw/UltimateListCtrl.py @@ -37,7 +37,7 @@ class ButtonPanel(wx.Panel): box = wx.BoxSizer(wx.VERTICAL) box.Add((20, 20)) - keys = buttonDefs.keys() + keys = list(buttonDefs.keys()) keys.sort() for k in keys: diff --git a/demo/agw/UltimateListIconDemo.py b/demo/agw/UltimateListIconDemo.py index cafaf979..cc2dcd6c 100644 --- a/demo/agw/UltimateListIconDemo.py +++ b/demo/agw/UltimateListIconDemo.py @@ -850,7 +850,7 @@ class TestFrame(wx.Frame): # load some images into an image list il = wx.ImageList(64, 64, True) - imgs = catalog.keys() + imgs = list(catalog.keys()) imgs.sort() for img in imgs: @@ -886,7 +886,7 @@ class TestFrame(wx.Frame): self.list.InsertColumnInfo(2, info) - for i in xrange(3): + for i in range(3): self.list.SetColumnWidth(i, 130) # create some items for the list diff --git a/demo/agw/UltimateListListDemo.py b/demo/agw/UltimateListListDemo.py index eca057d6..af78622b 100644 --- a/demo/agw/UltimateListListDemo.py +++ b/demo/agw/UltimateListListDemo.py @@ -89,7 +89,7 @@ class TestFrame(wx.Frame): # load some images into an image list il = wx.ImageList(16, 16, True) - imgs = catalog.keys() + imgs = list(catalog.keys()) imgs.sort() for img in imgs: diff --git a/demo/agw/UltimateReportDemo.py b/demo/agw/UltimateReportDemo.py index 332f6d07..2b08ca19 100644 --- a/demo/agw/UltimateReportDemo.py +++ b/demo/agw/UltimateReportDemo.py @@ -570,12 +570,12 @@ class UltimateListCtrlPanel(wx.Panel, listmix.ColumnSorterMixin): for key, data in items: if key == 3: - index = self.list.InsertImageStringItem(sys.maxint, data[0], [3, 4, 7], it_kind=1) + index = self.list.InsertImageStringItem(sys.maxsize, data[0], [3, 4, 7], it_kind=1) elif key == 4: dt = "\n".join(data[0].split()) - index = self.list.InsertImageStringItem(sys.maxint, dt, [self.idx1, 8, 7]) + index = self.list.InsertImageStringItem(sys.maxsize, dt, [self.idx1, 8, 7]) else: - index = self.list.InsertImageStringItem(sys.maxint, data[0], self.idx1) + index = self.list.InsertImageStringItem(sys.maxsize, data[0], self.idx1) if key == 6: self.list.SetStringItem(index, 1, data[1], it_kind=1) @@ -679,8 +679,8 @@ class UltimateListCtrlPanel(wx.Panel, listmix.ColumnSorterMixin): lenCDB = len(self.colourList) - for indx in xrange(11, 20): - for col in xrange(self.list.GetColumnCount()): + for indx in range(11, 20): + for col in range(self.list.GetColumnCount()): result = random.randint(0, 2) colourIndex = random.randint(0, lenCDB-1) diff --git a/demo/agw/UltimateVirtualDemo.py b/demo/agw/UltimateVirtualDemo.py index a8424db1..1918b37a 100644 --- a/demo/agw/UltimateVirtualDemo.py +++ b/demo/agw/UltimateVirtualDemo.py @@ -28,7 +28,7 @@ def GenerateRandomList(imgList): numImages = random.randint(1, 3) listSize = imgList.GetImageCount() - for i in xrange(numImages): + for i in range(numImages): rList.append(random.randint(0, listSize-1)) return rList @@ -79,7 +79,7 @@ class TestUltimateListCtrl(ULC.UltimateListCtrl): 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 range(5)] def OnItemSelected(self, event): diff --git a/demo/agw/Windows7Explorer_Contents.py b/demo/agw/Windows7Explorer_Contents.py index 8e707f8e..e742e113 100644 --- a/demo/agw/Windows7Explorer_Contents.py +++ b/demo/agw/Windows7Explorer_Contents.py @@ -3,6 +3,7 @@ import sys import os import wx +import wx.lib.six as six import time import datetime import operator @@ -29,8 +30,9 @@ sys.path.append(os.path.split(dirName)[0]) # 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 +if six.PY2: + if 'unicode' in wx.PlatformInfo: + convert = unicode def FormatFileSize(size): @@ -282,7 +284,7 @@ class Windows7Explorer(ULC.UltimateListCtrl): dummy_log = wx.LogNull() for kind, file, lower in files: - index = self.InsertStringItem(sys.maxint, "") + index = self.InsertStringItem(sys.maxsize, "") klass = FirstColumnRenderer(self, file) self.SetItemCustomRenderer(index, 0, klass) diff --git a/demo/agw/XLSGrid.py b/demo/agw/XLSGrid.py index c909d8b6..365c2258 100644 --- a/demo/agw/XLSGrid.py +++ b/demo/agw/XLSGrid.py @@ -19,7 +19,7 @@ try: _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, "agw", "data") + dataDir = os.path.join(dirName, "data") _hasXLRD = True @@ -81,24 +81,24 @@ class XLSGridFrame(wx.Frame): item = wx.MenuItem(fileMenu, wx.ID_ANY, "E&xit", "Exit XLSGrid 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") self.SetMenuBar(menuBar) - statusbar = self.CreateStatusBar(2, wx.ST_SIZEGRIP) + statusbar = self.CreateStatusBar(2, wx.STB_SIZEGRIP) statusbar.SetStatusWidths([-2, -1]) statusbar_fields = [("wxPython XLSGrid Demo, Andrea Gavana @ 08 Aug 2011"), ("Welcome To wxPython!")] - for i in xrange(len(statusbar_fields)): + for i in range(len(statusbar_fields)): statusbar.SetStatusText(statusbar_fields[i], i) diff --git a/unittests/test_lib_agw_shortcuteditor.py b/unittests/test_lib_agw_shortcuteditor.py new file mode 100644 index 00000000..7db2ecef --- /dev/null +++ b/unittests/test_lib_agw_shortcuteditor.py @@ -0,0 +1,22 @@ +import imp_unittest, unittest +import wtc +import wx +import os + +import wx.lib.agw.shortcuteditor as SE +#--------------------------------------------------------------------------- + +class lib_agw_shortcuteditor_Tests(wtc.WidgetTestCase): + + def test_lib_agw_rulerctrlCtor(self): + dlg = SE.ShortcutEditor(self.frame) + + def test_lib_agw_shortcuteditorEvents(self): + SE.EVT_SHORTCUT_CHANGING + SE.EVT_SHORTCUT_CHANGED + +#--------------------------------------------------------------------------- + + +if __name__ == '__main__': + unittest.main() \ No newline at end of file diff --git a/unittests/test_lib_agw_supertooltip.py b/unittests/test_lib_agw_supertooltip.py new file mode 100644 index 00000000..6995d44b --- /dev/null +++ b/unittests/test_lib_agw_supertooltip.py @@ -0,0 +1,18 @@ +import imp_unittest, unittest +import wtc +import wx + +import wx.lib.agw.supertooltip as STT + +#--------------------------------------------------------------------------- + +class lib_agw_supertooltip_Tests(wtc.WidgetTestCase): + + def test_lib_agw_supertooltipCtor(self): + STT.SuperToolTip("a simple test message") + + +#--------------------------------------------------------------------------- + +if __name__ == '__main__': + unittest.main() diff --git a/unittests/test_lib_agw_thumbnailctrl.py b/unittests/test_lib_agw_thumbnailctrl.py new file mode 100644 index 00000000..2abdf296 --- /dev/null +++ b/unittests/test_lib_agw_thumbnailctrl.py @@ -0,0 +1,24 @@ +import imp_unittest, unittest +import wtc +import wx + +import wx.lib.agw.thumbnailctrl as TNC + +#--------------------------------------------------------------------------- + +class lib_agw_thumbnailctrl_Tests(wtc.WidgetTestCase): + + def test_lib_agw_thumbnailctrlCtor(self): + tnc = TNC.ThumbnailCtrl(self.frame, -1, imagehandler=TNC.NativeImageHandler) + + def test_lib_agw_thumbnailctrlEvents(self): + TNC.EVT_THUMBNAILS_CAPTION_CHANGED + TNC.EVT_THUMBNAILS_DCLICK + TNC.EVT_THUMBNAILS_POINTED + TNC.EVT_THUMBNAILS_SEL_CHANGED + TNC.EVT_THUMBNAILS_THUMB_CHANGED + +#--------------------------------------------------------------------------- + +if __name__ == '__main__': + unittest.main() diff --git a/unittests/test_lib_agw_toasterbox.py b/unittests/test_lib_agw_toasterbox.py new file mode 100644 index 00000000..d842ba12 --- /dev/null +++ b/unittests/test_lib_agw_toasterbox.py @@ -0,0 +1,37 @@ +import imp_unittest, unittest +import wtc +import wx + +import wx.lib.agw.toasterbox as TB + +#--------------------------------------------------------------------------- + +class lib_agw_toasterbox_Tests(wtc.WidgetTestCase): + + def test_lib_agw_toasterboxCtor(self): + windowstyle = TB.TB_CAPTION + tbstyle = TB.TB_COMPLEX + closingstyle = TB.TB_ONCLICK + + tb = TB.ToasterBox(self.frame, tbstyle, windowstyle, closingstyle, + scrollType=TB.TB_SCR_TYPE_FADE) + tb.Play() + + + def test_lib_agw_thumbnailctrlStyles(self): + TB.TB_SIMPLE + TB.TB_COMPLEX + TB.TB_ONTIME + TB.TB_ONCLICK + TB.TB_DEFAULT_STYLE + TB.TB_CAPTION + TB.TB_SCR_TYPE_UD + TB.TB_SCR_TYPE_DU + TB.TB_SCR_TYPE_FADE + + + +#--------------------------------------------------------------------------- + +if __name__ == '__main__': + unittest.main() diff --git a/unittests/test_lib_agw_ultimatelistctrl.py b/unittests/test_lib_agw_ultimatelistctrl.py new file mode 100644 index 00000000..5448bf2b --- /dev/null +++ b/unittests/test_lib_agw_ultimatelistctrl.py @@ -0,0 +1,95 @@ +import imp_unittest, unittest +import wtc +import wx + +import wx.lib.agw.ultimatelistctrl as ULC + +#--------------------------------------------------------------------------- + +class lib_agw_ultimatelistctrl_Tests(wtc.WidgetTestCase): + + def test_lib_agw_ultimatelistctrlCtorReport(self): + ulc = ULC.UltimateListCtrl(self.frame, agwStyle=wx.LC_REPORT) + + def test_lib_agw_ultimatelistctrlCtorIcon(self): + ulc = ULC.UltimateListCtrl(self.frame, agwStyle=wx.LC_ICON) + + def test_lib_agw_ultimatelistctrlCtorList(self): + ulc = ULC.UltimateListCtrl(self.frame, agwStyle=wx.LC_LIST) + + def test_lib_agw_ultimatelistctrlCtorVirtual(self): + ulc = ULC.UltimateListCtrl(self.frame, agwStyle=wx.LC_REPORT|wx.LC_VIRTUAL) + + def test_lib_agw_thumbnailctrlStyles(self): + ULC.ULC_VRULES + ULC.ULC_HRULES + ULC.ULC_ICON + ULC.ULC_SMALL_ICON + ULC.ULC_LIST + ULC.ULC_REPORT + ULC.ULC_ALIGN_TOP + ULC.ULC_ALIGN_LEFT + ULC.ULC_AUTOARRANGE + ULC.ULC_VIRTUAL + ULC.ULC_EDIT_LABELS + ULC.ULC_NO_HEADER + ULC.ULC_NO_SORT_HEADER + ULC.ULC_SINGLE_SEL + ULC.ULC_SORT_ASCENDING + ULC.ULC_SORT_DESCENDING + ULC.ULC_TILE + ULC.ULC_NO_HIGHLIGHT + ULC.ULC_STICKY_HIGHLIGHT + ULC.ULC_STICKY_NOSELEVENT + ULC.ULC_SEND_LEFTCLICK + ULC.ULC_HAS_VARIABLE_ROW_HEIGHT + ULC.ULC_AUTO_CHECK_CHILD + ULC.ULC_AUTO_TOGGLE_CHILD + ULC.ULC_AUTO_CHECK_PARENT + ULC.ULC_SHOW_TOOLTIPS + ULC.ULC_HOT_TRACKING + ULC.ULC_BORDER_SELECT + ULC.ULC_TRACK_SELECT + ULC.ULC_HEADER_IN_ALL_VIEWS + ULC.ULC_NO_FULL_ROW_SELECT + ULC.ULC_FOOTER + ULC.ULC_USER_ROW_HEIGHT + + def test_lib_agw_ultimatelistctrlEvents(self): + wx.EVT_LIST_BEGIN_DRAG + wx.EVT_LIST_BEGIN_RDRAG + wx.EVT_LIST_BEGIN_LABEL_EDIT + wx.EVT_LIST_END_LABEL_EDIT + wx.EVT_LIST_DELETE_ITEM + wx.EVT_LIST_DELETE_ALL_ITEMS + wx.EVT_LIST_KEY_DOWN + wx.EVT_LIST_INSERT_ITEM + wx.EVT_LIST_COL_CLICK + wx.EVT_LIST_COL_RIGHT_CLICK + wx.EVT_LIST_COL_BEGIN_DRAG + wx.EVT_LIST_COL_END_DRAG + wx.EVT_LIST_COL_DRAGGING + wx.EVT_LIST_ITEM_SELECTED + wx.EVT_LIST_ITEM_DESELECTED + wx.EVT_LIST_ITEM_RIGHT_CLICK + wx.EVT_LIST_ITEM_MIDDLE_CLICK + wx.EVT_LIST_ITEM_ACTIVATED + wx.EVT_LIST_ITEM_FOCUSED + wx.EVT_LIST_CACHE_HINT + # in doc but does not exist??? + #wx.EVT_LIST_ITEM_CHECKING + #wx.EVT_LIST_ITEM_CHECKED + #wx.EVT_LIST_COL_CHECKING + #wx.EVT_LIST_COL_CHECKED + #wx.EVT_LIST_FOOTER_CHECKING + #wx.EVT_LIST_FOOTER_CHECKED + #wx.EVT_LIST_ITEM_HYPERLINK + #wx.EVT_LIST_FOOTER_CLICK + #wx.EVT_LIST_FOOTER_RIGHT_CLICK + #wx.EVT_LIST_ITEM_LEFT_CLICK + #wx.EVT_LIST_END_DRAG + +#--------------------------------------------------------------------------- + +if __name__ == '__main__': + unittest.main() diff --git a/unittests/test_lib_agw_xlsgrid.py b/unittests/test_lib_agw_xlsgrid.py new file mode 100644 index 00000000..728041fb --- /dev/null +++ b/unittests/test_lib_agw_xlsgrid.py @@ -0,0 +1,22 @@ +import imp_unittest, unittest +import wtc +import wx + +try: + import wx.lib.agw.xlsgrid as XG + skipIt = False +except: + skipIt = False + +#--------------------------------------------------------------------------- + +class lib_agw_xlsgrid_Tests(wtc.WidgetTestCase): + + @unittest.skipIf(skipIt, 'Requires xlrd') + def test_lib_agw_xlsgridCtor(self): + xg = XG.XLSGrid(self.frame) + +#--------------------------------------------------------------------------- + +if __name__ == '__main__': + unittest.main() diff --git a/unittests/test_lib_agw_zoombar.py b/unittests/test_lib_agw_zoombar.py new file mode 100644 index 00000000..f9c68852 --- /dev/null +++ b/unittests/test_lib_agw_zoombar.py @@ -0,0 +1,21 @@ +import imp_unittest, unittest +import wtc +import wx + +import wx.lib.agw.zoombar as ZB + +#--------------------------------------------------------------------------- + +class lib_agw_zoombar_Tests(wtc.WidgetTestCase): + + def test_lib_agw_zoombarCtor(self): + zb = ZB.ZoomBar(self.frame) + + def test_lib_agw_thumbnailctrlEvents(self): + ZB.EVT_ZOOMBAR + + +#--------------------------------------------------------------------------- + +if __name__ == '__main__': + unittest.main() diff --git a/unittests/test_lib_fancytext.py b/unittests/test_lib_fancytext.py new file mode 100644 index 00000000..3f38521f --- /dev/null +++ b/unittests/test_lib_fancytext.py @@ -0,0 +1,32 @@ +import imp_unittest, unittest +import wtc +import wx + +import wx.lib.fancytext as FT + +#--------------------------------------------------------------------------- +test_str = ('' + 'some |23 textwith subscript' + ' some other text') + + +class lib_fancytext_Tests(wtc.WidgetTestCase): + + def test_lib_fancytext_DateCtor(self): + sft = FT.StaticFancyText(self.frame, -1, "text to test", wx.Brush("light grey", wx.BRUSHSTYLE_SOLID)) + + def test_lib_fancytext_Methods(self): + self.frame.Bind(wx.EVT_PAINT, self.OnPaint) + + FT.RenderToBitmap(test_str, background=None, enclose=True) + + def OnPaint(self, evt): + dc = wx.PaintDC(self.frame) + FT.GetExtent(test_str, dc=dc, enclose=True) + FT.GetFullExtent(test_str, dc=dc, enclose=True) + FT.RenderToDC(test_str, dc, 0, 10, enclose=True) + +#--------------------------------------------------------------------------- + +if __name__ == '__main__': + unittest.main() diff --git a/unittests/test_lib_masked.py b/unittests/test_lib_masked.py index 81f31480..a8b3d452 100644 --- a/unittests/test_lib_masked.py +++ b/unittests/test_lib_masked.py @@ -56,10 +56,11 @@ class MaskedTextCtrlTests(wtc.WidgetTestCase): class MaskedNumCtrlTests(wtc.WidgetTestCase): def test_numctrlCtor(self): - t = m.NumCtrl(self.frame) - t = m.NumCtrl(self.frame, -1, "10") - t = m.NumCtrl(self.frame, style=wx.TE_READONLY) - + t1 = m.NumCtrl(self.frame) + t2 = m.NumCtrl(self.frame, -1, "10") + t3 = m.NumCtrl(self.frame, value='32',style=wx.TE_READONLY, min=32, max=72) + t3.ChangeValue("16") + self.assertTrue(not t3.IsValid()) #def test_numctrlDefaultCtor(self): #t = m.TextCtrl() diff --git a/wx/lib/agw/shortcuteditor.py b/wx/lib/agw/shortcuteditor.py index 64699042..6c512090 100644 --- a/wx/lib/agw/shortcuteditor.py +++ b/wx/lib/agw/shortcuteditor.py @@ -22,6 +22,7 @@ # # Or, Obviously, To The wxPython Mailing List!!! # +# Tags: phoenix-port, unittest, documented, py3-port # # End Of Comments # --------------------------------------------------------------------------------- # diff --git a/wx/lib/agw/supertooltip.py b/wx/lib/agw/supertooltip.py index 48fec3a5..6a9ae7f4 100644 --- a/wx/lib/agw/supertooltip.py +++ b/wx/lib/agw/supertooltip.py @@ -24,6 +24,7 @@ # # Or, obviously, to the wxPython mailing list!!! # +# Tags: phoenix-port, documented, unittest, py3-port # # End Of Comments # --------------------------------------------------------------------------------- # diff --git a/wx/lib/agw/thumbnailctrl.py b/wx/lib/agw/thumbnailctrl.py index 7938dfb0..3e8d43c6 100644 --- a/wx/lib/agw/thumbnailctrl.py +++ b/wx/lib/agw/thumbnailctrl.py @@ -26,7 +26,7 @@ # # Or, Obviously, To The wxPython Mailing List!!! # -# Tags: phoenix-port +# Tags: phoenix-port, documented, unittest, py3-port # # End Of Comments # --------------------------------------------------------------------------- # @@ -183,7 +183,7 @@ else: def GetMondrianData(): """ Returns a default image placeholder as a decompressed stream of characters. """ 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\ @@ -207,78 +207,78 @@ def GetMondrianImage(): #---------------------------------------------------------------------- file_broken = PyEmbeddedImage( - "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" - "nA3/D+/OyD/Ur3BPAAAAAElFTkSuQmCC") + b"iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAABGdBTUEAAK/INwWK6QAADU9J" + b"REFUeJzNWn1QE2cefja7yRI+lAKiAgKCVIqegUYMFMsM4kfvzk7nmFrnvHGcOT3bq3P/OJ1p" + b"b+zYf+r0HGxt6VVFqpYqWq9TW23RVnp6R7FXiq0UPAGhyFeQSCQJISHZ7Mf9gZuGkE02IeA9" + b"M5k3u/vuu+/z/H7v7/297y4BPzh//vxfSJIsIgjC5a/eTIPn+UnHgiDIqisIAsUwTNfmzZtf" + b"A8D7qk/5e3B0dPS6wsLCp/09MFTIbdO7ntR9vs5HRESgvr6+E0AlAD2AKZX8CsDzvEKtVsvq" + b"aKjw7LggCO7jcJQqlQoMw6gBpAIYRAgCECGxCgDPTsohEopI4n+e5xXww1MRHkry4d1Zf9fk" + b"uv90MOsCeMKfGN51pO6ZrmizKsBsWt976EjhoQ+BYMQItpSDWRNAjptPZ4xLCfl/PQTCaX2p" + b"+wNhVgSYbet7tumdRXpj1ofAbFhfqn1fmHEBHpb1AYAgAudxMy4AQRB+LReuSB/MGsETMyqA" + b"2WyG1WqVZQl/CDUZeuge0NvbKwwODk7bC7zryYFI/qF6QGNj42BnZ6dZ6rocQtNNhQNhxgQw" + b"Go24fPnyDy0tLTcFQfDpBZ7/w2198RcIMyZAW1vb+KVLlxoGBwfr7927B4Vi8qO8CfnqbCjW" + b"D4Y8MEMCCIKA77777me73d7a1tb25dDQkNXzmud/giDgdDrBsqzkuA1l7CuVSgCA0+n0y3FG" + b"BBgYGMCVK1eub926dRFN04aBgYH/el73JKRUKjE4OIi+vj5QFDWtaVG0fGRkJHiex7lz5xyn" + b"T59uBMBI9TWsAoidaW1tNTc1Nd1cv379zuzs7F91dHT8x+l0TooDnuju7h779ttvjdOdLlUq" + b"FaKjo9HV1YX9+/d379q16+QXX3xxFsAAMHU7DAgggNw1tQiCIOByuXDt2rWbK1asUOfk5KxM" + b"SUlZW19f39LX18eTJDmpbbG8cePGndra2mtDQ0NQKpUhJUPR0dHgeR6ffvqpbdeuXV+9/vrr" + b"R4eGhs4A+ArA3ZAECAXd3d24dOnSD2VlZavy8vKQmppaUFdXN2gwGO561yVJEmazGR0dHV3n" + b"z5//+NatW0MU5XebcgooikJMTAy6urqwb9++zp07d1ZfvXq1GsAn8+bNa6qsrEyGxJY4EGBT" + b"lCAIhVR0ZhgGTqcTTqcTDocDDocDgiDgm2++0Y+MjNxbuXLl7wmCQFpaWtbcuXMje3p6fly9" + b"enWyeL8gCCBJEj09PUJLS0s7z/PXWlpavigoKNhBURRYlnU/S6qMjIwEwzD47LPPbIcOHWq4" + b"cuXKPwF8D+DHF154QV1cXFxpsVjiAGwGYIUPL/ArgNFoNNbV1dmtVqvdarW6LBaLY2xszOFw" + b"OBiLxWKz2WxOs9lsHx0ddZhMJpvZbB7v7u7+effu3elZWVmJAJCUlBS1bt26nNbW1kaj0fj0" + b"I4884iYHAHfu3Lnf2dnZDWC4oaHhH08++eRWrVZLe9bxJk9RFNRqNTo6OvDhhx92Hj16tG5k" + b"ZKQBwHUAneXl5cVarfaQVqtddurUqesAUgC0BysAsWfPngOjo6ONY2NjUQzDOACMA7ADcGAi" + b"sjoBuB6U4jFTWlp6Kj4+HjzPIzExEbm5uSuPHz9+csuWLfaEhIRIl8sFgiDA8zxu3rz585Yt" + b"W3SpqanX9u7d+93GjRuv5eXlrRGvT+oQQUCtVsPhcODcuXO2w4cPi1ZvAnADgP3EiRN7NBrN" + b"ntzcXDXHcXA6nREAJF9u+BNA6OnpuQ1gGAD5gCjrUXIPFOUflAIA7siRI8Xp6ekaYOI1lVKp" + b"RGZmpqatre2QXq/v1mg0y4EJKxoMBrS1tQ2UlJQ8abPZjAD23Lhx46Pi4uI1aWlp7mEl1qdp" + b"Grdu3UJNTU1nVVVV3cjIyDUAPwJof+WVVzJ0Ol1NQUHBbxMTEyHOOoEQKOKMP/jJxoIFC/6Q" + b"mZlJidYTBAHp6emp2dnZCV1dXY0MwywnCAIkSUKv1zu7u7uNu3fvTh8aGtoE4Pj7779/ec2a" + b"NZ0ZGRlZwC9Wt9vt+Pzzz22VlZUNV69eFa3+EwDTkSNHynJyct5ZtWpVikKhgMPhgEKhkJx2" + b"gxFgSv1t27ZRUVFRFMuyZGZmZmJcXNwcpVIZT9N0tMvlWpiSklKmVConBbGkpCRq3bp1Kxsb" + b"G69v3Lhxe3p6OgRBQHt7u2Hx4sVRycnJ9Ny5czO3bdv2VHV19XvNzc2frF69+pXY2FgoFAop" + b"q3ds2rQp6plnnnkzLy9v99KlS8EwDDiOC2r5LSnAiRMnIubNm/dHkiSzaZqOIUkygabpGIqi" + b"4iiKmkuSZDRJkiqVSkWRJKmkaZqMiIhAZGQkOI5zk+c4DnFxccjOztZWVVV9+eKLLw5nZGTM" + b"YxgGzc3Ndx577LGF8fHxiI2NhU6n+111dfWZixcvnispKfmzTqebe+HCBW+rtwK4/8Ybb+Rp" + b"NJojBQUFq2JiYuB0OgH8kgqLpdiXoAVobW2NfvbZZ/cWFhbOly3ngwf6yvczMzNzWJZV9Pb2" + b"/lRUVLR2cHAQt2/fvrt9+3YtSZJQKBRYtmxZYXFx8ar6+vqrTU1NF7/++mtdZWXll0ajsQET" + b"Qa4TE3HmBY1Gsz8/P3+Oy+Vyj3dP8nK9QFKA/v5+Cn7GfzBZmiAISE5OTiwqKsq4fft2k91u" + b"X9vf3283GAyWtLS0ZNFTsrOzI0pKSsrq6+v//c477/xNr9evwMRr7ZsAhl966aUFOp3uzfz8" + b"/C2LFi3C+Pj4JMLeAsjJYiUFYFk2oIRyReA4DikpKSgqKlpZW1t7saysjOvo6NAvXbo0NjEx" + b"MZLneXAchzlz5kCj0TwVGxu7RK/Xt2Mihx8DwBw4cGBDbm5uRWFh4aNKpRJ2u30S8VCsD8hY" + b"CwRzXqouz/OIiopCVlaWtrm5+X57e/tAS0uLPicnJzEhIcE9TnmeR05OTvJzzz33a0xMtyNa" + b"rVY4fvz4a6WlpRdKSkoeFZfPYpSXIi93SyzYWWASMTmlZ/2MjIys+Pj4mI6Ojoa+vj5h/fr1" + b"xaKrikIlJyfj8ccfLwNw7NVXX43TarV/LyoqWhsXF4fx8XF3TPFF2Pv/tPIAu93ul7g/+BJD" + b"EAQsXLgwqrS0NLexsfE8RVHLFi1atNn7PpVKhdzc3OUvv/zyvg0bNvwmPz8/WeyPt8sHEkLO" + b"anZaQyCYDUmO47BgwQIsX758VW1t7bc6nU5ISkpSeuYLHMeBYRhkZWWpd+zY8afCwsJklmXB" + b"MMwUlw9EXjwOhIDL4dHRUQwMDMBms4Hn+YCuJSUKz/NQqVRYsmTJcgDzlixZsnzOnDlu1xfj" + b"AMdxoGkaqampsNvtEATBvZ8olzxBEO57whIDxsbGMD4+DrVajaioKERGRoKiKMmdXn9IT09P" + b"Li4ufiIxMVEHACzLThGW47gp54IhHwz8CiCSEt3P4XDA6XTCYrGApmnQNA2VSuUWwzvyescA" + b"l8uF+fPnK59//vm/zp8/f6FoebF98VlSBOWS99WXkATwfrhnw+JmiEKhgEKhAEmSEDM6KTEI" + b"gkBcXBwRExOTkpCQAJfLNSPkg4EsD/Algncs4Hl+ktv6+onjOS0tDTRNT1q4hJN8MCKE5AFS" + b"nQx0DQAYhkFqaqpbrJkmH5YPJMJFXqFQTBmTM0E+LB5gt9slXTpU8t4E5JKXSnsDkfV+HReU" + b"AJ6YLnlf1pNLXhAEmM1msCw7KSZ598/7PEEQ4DgOLMv6VSHQt8JhIS/HG/y5vV6vh9FohFqt" + b"ducN3r8pxCgKJpMJvb29o/hlzzI4AUSEk7yUtfyJwTAMMjMzsXjxYr/zuuf7wbt376K8vLz/" + b"7NmzlzCxpA5NgHCTl1vHFzkAPjNE774aDAaUl5f3V1RU1HAc9y9MbKr4RMA8QIr4TJP3LEU3" + b"5zjOnTtItWUwGLB//36R/CVMbKXZQhbAV2dnk7zYD3G1KI537/oURbndvqKi4hTHcV9iYvd4" + b"zB/HkFPh6ZL3JurvHIBJXuB9XfzG4MCBA/3vvvtujVzysgTwR2I65KVmAl/3iUtmlmUnDQGR" + b"/P3793H48GH9A/Ki2wckH1AAzxjgS4yZJO/dD899A7EORVEYGRlBVVWV8b333vs4GMvLEsAT" + b"oQ4Ff+Q92/YniGcMEAUQ5/ljx44Nv/XWWx9ZrdaLAJqDIR9QAO/9gHCTlxsERRFEAZRKJUwm" + b"E6qrq4cPHjx4xmq11mLi1bglGPIBBfBF8mGQFyHmACaTCSdPnhx+++23z4yOjtZi4pWZKVjy" + b"sgTwFiIU8v7GuVzyIsxmM06fPj188ODBjx5Y/nsAkl+jBoLsPECEryDl7ziQMHLJkyQJi8WC" + b"mpqa4YqKCtHtmzAN8oCM9wJKpRIRERGyyAQi6CvwyeokRcFsNqOurm64oqLijMVimZbbT2pb" + b"6gJN04TNZlNZLBYwDOOeEgNtMsqpF+y1sbEx1NbWDn/wwQdhJQ8AkmZYsWJFVEZGxtZ79+49" + b"wbIsDa/VlBQJqS0of6QD3UMQBHp7e++YTKYrCIPbe8KfHyoALACwGIAqXA8MEQImPnO7A2Ak" + b"nA3/D+/OyD/Ur3BPAAAAAElFTkSuQmCC") def getDataSH(): """ Return the first part of the shadow dropped behind thumbnails. """ return zlib.decompress( -'x\xda\xeb\x0c\xf0s\xe7\xe5\x92\xe2b``\xe0\xf5\xf4p\t\x02\xd2_A\x98\x83\rHvl\ +b'x\xda\xeb\x0c\xf0s\xe7\xe5\x92\xe2b``\xe0\xf5\xf4p\t\x02\xd2_A\x98\x83\rHvl\ \xdc\x9c\n\xa4X\x8a\x9d\x00)\xce\x02\x8f\xc8b\x06\x06na\x10fd\x985G\x02(\xd8W\xe2\x1aQ\ \xe2\x9c\x9f\x9b\x9b\x9aW\xc2\x90\xec\x11\xe4\xab\x90\x9cQ\x9a\x97\x9d\x93\ \x9a\xa7`l\xa4\x90\x99\x9e\x97_\x94\x9a\xc2\xeb\x18\xec\xec\xe9i\xa5\xa0\xa7\ @@ -654,7 +655,7 @@ def GetdragcursorBitmap(): def GetdragcursorImage(): """ Returns the drag and drop cursor image as a :class:`Image`. """ - stream = six.StringIO(GetdragcursorData()) + stream = six.BytesIO(GetdragcursorData()) return wx.Image(stream) @@ -7493,7 +7494,7 @@ class UltimateListMainWindow(wx.ScrolledWindow): if self.InReportView(): if not self.HasAGWFlag(ULC_HAS_VARIABLE_ROW_HEIGHT): - current = y/self.GetLineHeight() + current = y // self.GetLineHeight() if current < count: newItem, hitResult = self.HitTestLine(current, x, y) else: @@ -9662,7 +9663,7 @@ class UltimateListMainWindow(wx.ScrolledWindow): if entireHeight > self.GetClientSize()[1]: decrement = SCROLL_UNIT_X - self._linesPerPage = clientHeight/lineHeight + self._linesPerPage = clientHeight//lineHeight self.SetScrollbars(SCROLL_UNIT_X, lineHeight, (self.GetHeaderWidth()-decrement)/SCROLL_UNIT_X, diff --git a/wx/lib/agw/xlsgrid.py b/wx/lib/agw/xlsgrid.py index 6077c33f..89c600e6 100644 --- a/wx/lib/agw/xlsgrid.py +++ b/wx/lib/agw/xlsgrid.py @@ -30,6 +30,7 @@ # # Or, obviously, to the wxPython mailing list!!! # +# Tags: phoenix-port, documented, unittest, py3-port # # End of comments # --------------------------------------------------------------------------------- # @@ -670,7 +671,7 @@ class XLSText(object): name = font.name size = int(font.height/20.0) - if font.escapement_type > 0: + if font.escapement > 0: # subscript/superscript size = int(size*0.7) @@ -1049,7 +1050,7 @@ class XLSRichText(XLSText): text_colour = book.colour_map[font.colour_index] colour = self.CreateTextColour(text_colour) - ffont.escapement = font.escapement_type + ffont.escapement = font.escapement attributes.append([chunk, ffont, colour]) self.attributes = attributes @@ -1183,7 +1184,7 @@ class XLSBackground(object): if fill_pattern <= 0: return - r, g, b = pattern_colour + r, g, b, a = pattern_colour fill_image = eval("_xls_background_%02d.GetImage()"%fill_pattern) fill_image.Replace(0, 0, 0, r, g, b) @@ -1662,7 +1663,7 @@ class XLSCell(object): return self.comment -class XLSRenderer(gridlib.PyGridCellRenderer): +class XLSRenderer(gridlib.GridCellRenderer): """ This class is responsible for actually drawing the cell in the grid. @@ -1675,7 +1676,7 @@ class XLSRenderer(gridlib.PyGridCellRenderer): :param `cell`: an instance of :class:`XLSCell`. """ - gridlib.PyGridCellRenderer.__init__(self) + gridlib.GridCellRenderer.__init__(self) self.cell = cell @@ -1721,7 +1722,7 @@ class XLSRenderer(gridlib.PyGridCellRenderer): gdc.DrawRectangle(rect) -class XLSTable(gridlib.PyGridTableBase): +class XLSTable(gridlib.GridTableBase): """ The almost abstract base class for grid tables. @@ -1742,7 +1743,7 @@ class XLSTable(gridlib.PyGridTableBase): """ # The base class must be initialized *first* - gridlib.PyGridTableBase.__init__(self) + gridlib.GridTableBase.__init__(self) self.cells = cells self.dimens = (rows, cols) diff --git a/wx/lib/agw/zoombar.py b/wx/lib/agw/zoombar.py index ed3a01f0..8a68b1a9 100644 --- a/wx/lib/agw/zoombar.py +++ b/wx/lib/agw/zoombar.py @@ -1,3 +1,22 @@ +# --------------------------------------------------------------------------------- # +# ZoomBar wxPython IMPLEMENTATION +# +# Andrea Gavana @ 19 Dec 2012, 21.00 GMT +# +# +# For all kind of problems, requests of enhancements and bug reports, please write +# to me at: +# +# andrea.gavana@gmail.com +# andrea.gavana@maerskoil.com +# +# Or, obviously, to the wxPython mailing list!!! +# +# Tags: phoenix-port, documented, unittest, py3-port +# +# End of comments +# --------------------------------------------------------------------------------- # + """ :class:`ZoomBar` is a class that *appoximatively* mimics the behaviour of the Mac Dock, inside a :class:`Panel`. diff --git a/wx/lib/fancytext.py b/wx/lib/fancytext.py index 339ea604..46a6e279 100644 --- a/wx/lib/fancytext.py +++ b/wx/lib/fancytext.py @@ -8,7 +8,7 @@ # Version: # Date: # Licence: -# Tags: phoenix-port +# Tags: phoenix-port, py3-port #---------------------------------------------------------------------------- # 12/02/2003 - Jeff Grimmett (grimmtooth@softhome.net) # @@ -58,6 +58,8 @@ import math import sys import wx +import wx.lib.six as six + import xml.parsers.expat __all__ = "GetExtent", "GetFullExtent", "RenderToBitmap", "RenderToDC", "StaticFancyText" @@ -336,7 +338,8 @@ def RenderToRenderer(str, renderer, enclose=True): if enclose: str = '%s' % str p = xml.parsers.expat.ParserCreate() - p.returns_unicode = 0 + if six.PY2: + p.returns_unicode = 0 p.StartElementHandler = renderer.startElement p.EndElementHandler = renderer.endElement p.CharacterDataHandler = renderer.characterData @@ -379,7 +382,7 @@ def RenderToBitmap(str, background=None, enclose=1): RenderToRenderer(str, renderer, enclose) dc.SelectObject(wx.NullBitmap) if background is None: - img = wx.ImageFromBitmap(bmp) + img = bmp.ConvertToImage() bg = dc.GetBackground().GetColour() img.SetMaskColour(bg.Red(), bg.Green(), bg.Blue()) bmp = img.ConvertToBitmap() diff --git a/wx/lib/masked/maskededit.py b/wx/lib/masked/maskededit.py index ad5d0b91..ebd554ee 100644 --- a/wx/lib/masked/maskededit.py +++ b/wx/lib/masked/maskededit.py @@ -50,6 +50,8 @@ # o wxIpAddrCtrl -> IpAddrCtrl # o wxTimeCtrl -> TimeCtrl # +# Tags: phoenix-port, unittest, documented, py3-port +# __doc__ = r"""\ contains MaskedEditMixin class that drives all the other masked controls. @@ -3066,9 +3068,15 @@ class MaskedEditMixin: excludes = six.text_type() if not isinstance(field._excludeChars, six.text_type): - excludes += field._excludeChars.decode(self._defaultEncoding) + if six.PY3: + excludes += field._excludeChars + else: + excludes += field._excludeChars.decode(self._defaultEncoding) if not isinstance(self._ctrl_constraints, six.text_type): - excludes += self._ctrl_constraints._excludeChars.decode(self._defaultEncoding) + if six.PY3: + excludes += field._excludeChars + else: + excludes += self._ctrl_constraints._excludeChars.decode(self._defaultEncoding) else: excludes += self._ctrl_constraints._excludeChars