diff --git a/unittests/test_lib_agw_aquabutton.py b/unittests/test_lib_agw_aquabutton.py new file mode 100644 index 00000000..485c83a5 --- /dev/null +++ b/unittests/test_lib_agw_aquabutton.py @@ -0,0 +1,48 @@ +import imp_unittest, unittest +import wtc +import wx +import os + +import wx.lib.agw.aquabutton as AB + +pngFile = os.path.join(os.path.dirname(__file__), 'toucan.png') + +#--------------------------------------------------------------------------- + +class lib_agw_aquabutton_Tests(wtc.WidgetTestCase): + + def test_lib_agw_aquabuttonCtor(self): + + # Initialize AquaButton 1 (with image) + bitmap = wx.Bitmap(pngFile, wx.BITMAP_TYPE_PNG) + btn1 = AB.AquaButton(self.frame, -1, bitmap, "AquaButton") + # Initialize AquaButton 2 (no image) + btn2 = AB.AquaButton(self.frame, -1, None, "Hello World!") + + btn3 = AB.AquaToggleButton(self.frame, -1, None, 'Toggle') + + + def test_lib_agw_aquabuttonMethods(self): + # Initialize AquaButton 2 (no image) + btn2 = AB.AquaButton(self.frame, -1, None, "Hello World!") + + bitmap = wx.Bitmap(pngFile, wx.BITMAP_TYPE_PNG) + btn2.SetBitmapLabel(bitmap) + + btn2.SetPulseOnFocus(True) + self.assertTrue(btn2.GetPulseOnFocus()) + + btn2.SetShadowColour(wx.Colour('grey')) + btn2.SetRectColour(wx.WHITE) + btn2.SetHoverColour(wx.BLACK) + + btn3 = AB.AquaToggleButton(self.frame, -1, None, 'Toggle') + btn3.SetToggle(True) + self.assertTrue(btn3.GetToggle()) + + +#--------------------------------------------------------------------------- + + +if __name__ == '__main__': + unittest.main() diff --git a/unittests/test_lib_agw_flatnotebook.py b/unittests/test_lib_agw_flatnotebook.py new file mode 100644 index 00000000..feb9b97c --- /dev/null +++ b/unittests/test_lib_agw_flatnotebook.py @@ -0,0 +1,113 @@ +import imp_unittest, unittest +import wtc +import wx + +import wx.lib.agw.flatnotebook as FNB + +#--------------------------------------------------------------------------- + +class lib_agw_flatnotebook_Tests(wtc.WidgetTestCase): + + def test_lib_agw_flatnotebookCtor(self): + book = FNB.FlatNotebook(self.frame) + self.assertEqual(book.GetPageCount(), 0) + + def test_lib_agw_flatnotebookPages(self): + nb = FNB.FlatNotebook(self.frame) + p1 = wx.Panel(nb) + nb.AddPage(p1, "Page1") + p2 = wx.Panel(nb) + nb.AddPage(p2, "Page2") + nb.SetSelection(0) + + self.assertEqual(nb.GetSelection(), 0) + + def test_lib_agw_flatnotebookTabStyles(self): + nb = FNB.FlatNotebook(self.frame) + p1 = wx.Panel(nb) + nb.AddPage(p1, "Page1") + p2 = wx.Panel(nb) + nb.AddPage(p2, "Page2") + + styles = [FNB.FNB_VC71, FNB.FNB_VC8, FNB.FNB_FANCY_TABS, FNB.FNB_FF2, FNB.FNB_RIBBON_TABS] + mirror = ~(FNB.FNB_VC71 | FNB.FNB_VC8 | FNB.FNB_FANCY_TABS | FNB.FNB_FF2 | FNB.FNB_RIBBON_TABS) + + for style in styles: + nbstyle = nb.GetAGWWindowStyleFlag() + nbstyle &= mirror + nbstyle != style + nb.SetAGWWindowStyleFlag(style) + + self.assertTrue(nb.HasAGWFlag(style)) + + def test_lib_agw_flatnotebookDeletePages(self): + nb = FNB.FlatNotebook(self.frame) + p1 = wx.Panel(nb) + nb.AddPage(p1, "Page1") + p2 = wx.Panel(nb) + nb.AddPage(p2, "Page2") + nb.DeleteAllPages() + + self.assertEqual(nb.GetPageCount(), 0) + + nb = FNB.FlatNotebook(self.frame) + p1 = wx.Panel(nb) + nb.AddPage(p1, "Page1") + p2 = wx.Panel(nb) + nb.AddPage(p2, "Page2") + + for index in range(nb.GetPageCount()-1, -1, -1): + nb.DeletePage(index) + + self.assertEqual(nb.GetPageCount(), 0) + + def test_lib_agw_flatnotebookMethods(self): + nb = FNB.FlatNotebook(self.frame) + p1 = wx.Panel(nb) + nb.AddPage(p1, "Page1") + p2 = wx.Panel(nb) + nb.AddPage(p2, "Page2") + + nb.EnableTab(0, False) + self.assertTrue(nb.GetEnabled(0) == False) + + def test_lib_agw_flatnotebookConstantsExist(self): + + FNB.FNB_VC71 + FNB.FNB_FANCY_TABS + FNB.FNB_TABS_BORDER_SIMPLE + FNB.FNB_NO_X_BUTTON + FNB.FNB_NO_NAV_BUTTONS + FNB.FNB_MOUSE_MIDDLE_CLOSES_TABS + FNB.FNB_BOTTOM + FNB.FNB_NODRAG + FNB.FNB_VC8 + FNB.FNB_X_ON_TAB + FNB.FNB_BACKGROUND_GRADIENT + FNB.FNB_COLOURFUL_TABS + FNB.FNB_DCLICK_CLOSES_TABS + FNB.FNB_SMART_TABS + FNB.FNB_DROPDOWN_TABS_LIST + FNB.FNB_ALLOW_FOREIGN_DND + FNB.FNB_HIDE_ON_SINGLE_TAB + FNB.FNB_DEFAULT_STYLE + FNB.FNB_FF2 + FNB.FNB_NO_TAB_FOCUS + FNB.FNB_RIBBON_TABS + FNB.FNB_HIDE_TABS + FNB.FNB_NAV_BUTTONS_WHEN_NEEDED + + def test_lib_agw_flatnotebookEvents(self): + + FNB.EVT_FLATNOTEBOOK_PAGE_CHANGED + FNB.EVT_FLATNOTEBOOK_PAGE_CHANGING + FNB.EVT_FLATNOTEBOOK_PAGE_CLOSED + FNB.EVT_FLATNOTEBOOK_PAGE_CLOSING + FNB.EVT_FLATNOTEBOOK_PAGE_CONTEXT_MENU + FNB.EVT_FLATNOTEBOOK_PAGE_DROPPED + FNB.EVT_FLATNOTEBOOK_PAGE_DROPPED_FOREIGN + +#--------------------------------------------------------------------------- + +if __name__ == '__main__': + unittest.main() diff --git a/unittests/test_lib_agw_gradientbutton.py b/unittests/test_lib_agw_gradientbutton.py new file mode 100644 index 00000000..a58ae2b1 --- /dev/null +++ b/unittests/test_lib_agw_gradientbutton.py @@ -0,0 +1,39 @@ +import imp_unittest, unittest +import wtc +import wx +import os + +import wx.lib.agw.gradientbutton as GB + +pngFile = os.path.join(os.path.dirname(__file__), 'toucan.png') + +#--------------------------------------------------------------------------- + +class lib_agw_gradientbutton_Tests(wtc.WidgetTestCase): + + def test_lib_agw_gradientbuttonCtor(self): + + # Initialize GradientButton 1 (with image) + bitmap = wx.Bitmap(pngFile, wx.BITMAP_TYPE_PNG) + btn1 = GB.GradientButton(self.frame, -1, bitmap, "GradientButton") + # Initialize GradientButton 2 (no image) + btn2 = GB.GradientButton(self.frame, -1, None, "Hello World!") + + + def test_lib_agw_gradientbuttonMethods(self): + # Initialize AquaButton 2 (no image) + btn2 = GB.GradientButton(self.frame, -1, None, "Hello World!") + + bitmap = wx.Bitmap(pngFile, wx.BITMAP_TYPE_PNG) + btn2.SetBitmapLabel(bitmap) + + btn2.SetTopStartColour(wx.Colour('grey')) + btn2.SetBottomStartColour(wx.WHITE) + btn2.SetPressedBottomColour(wx.BLACK) + + +#--------------------------------------------------------------------------- + + +if __name__ == '__main__': + unittest.main() diff --git a/unittests/test_lib_agw_infobar.py b/unittests/test_lib_agw_infobar.py new file mode 100644 index 00000000..5da1fbac --- /dev/null +++ b/unittests/test_lib_agw_infobar.py @@ -0,0 +1,33 @@ +import imp_unittest, unittest +import wtc +import wx + +import wx.lib.agw.infobar as IB + +#--------------------------------------------------------------------------- + +class lib_agw_infobar_Tests(wtc.WidgetTestCase): + + def test_lib_agw_infobarCtor(self): + ib = IB.InfoBar(self.frame) + + def test_lib_agw_infobar1(self): + ib = IB.InfoBar(self.frame) + ib.ShowMessage("hello world") + self.myYield() + ib.Dismiss() + + def test_lib_agw_infobar2(self): + ib = IB.InfoBar(self.frame) + ib.AddButton(1234, "New Button") + ib.AddButton(wx.ID_SAVE) + ib.ShowMessage("hello world") + self.myYield() + ib.RemoveButton(wx.ID_SAVE) + ib.Dismiss() + +#--------------------------------------------------------------------------- + + +if __name__ == '__main__': + unittest.main() \ No newline at end of file diff --git a/wx/lib/agw/__init__.py b/wx/lib/agw/__init__.py index 763b84b5..5bffaa8b 100644 --- a/wx/lib/agw/__init__.py +++ b/wx/lib/agw/__init__.py @@ -125,4 +125,4 @@ Last updated: 26 December 2012, 21.00 GMT """ __version__ = "0.9.7" -__author__ = "Andrea Gavana " +__author__ = "Andrea Gavana " \ No newline at end of file diff --git a/wx/lib/agw/aquabutton.py b/wx/lib/agw/aquabutton.py index ed5aa057..9674aef5 100644 --- a/wx/lib/agw/aquabutton.py +++ b/wx/lib/agw/aquabutton.py @@ -2,7 +2,7 @@ # AQUABUTTON wxPython IMPLEMENTATION # # Andrea Gavana, @ 07 October 2008 -# Latest Revision: 19 Dec 2012, 21.00 GMT +# Latest Revision: 27 Dec 2012, 21.00 GMT # # # TODO List @@ -18,6 +18,7 @@ # # Or, obviously, to the wxPython mailing list!!! # +# Tags: phoenix-port, unittest, documented # # End Of Comments # --------------------------------------------------------------------------------- # @@ -100,7 +101,7 @@ License And Version :class:`AquaButton` control is distributed under the wxPython license. -Latest Revision: Andrea Gavana @ 19 Dec 2012, 21.00 GMT +Latest Revision: Andrea Gavana @ 27 Dec 2012, 21.00 GMT Version 0.4 @@ -870,6 +871,8 @@ class __ToggleMixin(object): A mixin that allows to transform :class:`AquaButton` in the corresponding toggle button. """ + up = True + def SetToggle(self, flag): """ Sets the button as toggled/not toggled. diff --git a/wx/lib/agw/artmanager.py b/wx/lib/agw/artmanager.py index 75d6494e..51e00482 100644 --- a/wx/lib/agw/artmanager.py +++ b/wx/lib/agw/artmanager.py @@ -4,10 +4,11 @@ This module contains drawing routines and customizations for the AGW widgets """ import wx -import cStringIO import random -from fmresources import * +from wx.lib.six import StringIO + +from .fmresources import * # ---------------------------------------------------------------------------- # # Class DCSaver @@ -482,7 +483,7 @@ class RendererMSOffice2007(RendererBase): # Define the rounded rectangle base on the given rect # we need an array of 9 points for it - regPts = [wx.Point() for ii in xrange(9)] + regPts = [wx.Point() for ii in range(9)] radius = 2 regPts[0] = wx.Point(rect.x, rect.y + radius) @@ -506,7 +507,7 @@ class RendererMSOffice2007(RendererBase): rightPt2 = wx.Point(rect.x + rect.width, rect.y + (rect.height / factor)*(factor-1)) # Define the top region - topReg = [wx.Point() for ii in xrange(7)] + topReg = [wx.Point() for ii in range(7)] topReg[0] = regPts[0] topReg[1] = regPts[1] topReg[2] = wx.Point(regPts[2].x+1, regPts[2].y) @@ -702,13 +703,13 @@ class ArtManager(wx.EvtHandler): img = img.ConvertToImage() x, y = img.GetWidth(), img.GetHeight() img.InitAlpha() - for jj in xrange(y): - for ii in xrange(x): + for jj in range(y): + for ii in range(x): img.SetAlpha(ii, jj, alpha[jj*x+ii]) else: - stream = cStringIO.StringIO(xpm) + stream = StringIO(xpm) img = wx.Image(stream) return wx.Bitmap(img) @@ -754,10 +755,7 @@ class ArtManager(wx.EvtHandler): Othewise, :class:`NullBitmap` is returned. """ - if self._bitmaps.has_key(name): - return self._bitmaps[name] - - return wx.NullBitmap + return self._bitmaps.get(name, wx.NullBitmap) def Get(self): @@ -996,7 +994,7 @@ class ArtManager(wx.EvtHandler): bstep = float(col2.Blue() - col1.Blue())/float(size) # draw the upper triangle - for i in xrange(size): + for i in range(size): currCol = wx.Colour(col1.Red() + rf, col1.Green() + gf, col1.Blue() + bf) dc.SetBrush(wx.Brush(currCol, wx.SOLID)) @@ -1032,7 +1030,7 @@ class ArtManager(wx.EvtHandler): bf += bstep/2 # draw the lower triangle - for i in xrange(size): + for i in range(size): currCol = wx.Colour(col1.Red() + rf, col1.Green() + gf, col1.Blue() + bf) dc.SetBrush(wx.Brush(currCol, wx.SOLID)) @@ -1215,7 +1213,7 @@ class ArtManager(wx.EvtHandler): w, h = dc.GetTextExtent(suffix) rectSize -= w - for i in xrange(textLen, -1, -1): + for i in range(textLen, -1, -1): textW, textH = dc.GetTextExtent(tempText) if rectSize >= textW: @@ -2027,7 +2025,7 @@ class ArtManager(wx.EvtHandler): self._menuBarColourScheme = scheme # set default colour - if scheme in self._colourSchemeMap.keys(): + if scheme in self._colourSchemeMap: self._menuBarBgColour = self._colourSchemeMap[scheme] @@ -2065,9 +2063,9 @@ class ArtManager(wx.EvtHandler): """ Initialise the colour map. """ self._colourSchemeMap = {_("Default"): wx.SystemSettings.GetColour(wx.SYS_COLOUR_3DFACE), - _("Dark"): wx.BLACK, - _("Dark Olive Green"): wx.Colour("DARK OLIVE GREEN"), - _("Generic"): wx.SystemSettings.GetColour(wx.SYS_COLOUR_ACTIVECAPTION)} + _("Dark"): wx.BLACK, + _("Dark Olive Green"): wx.Colour("DARK OLIVE GREEN"), + _("Generic"): wx.SystemSettings.GetColour(wx.SYS_COLOUR_ACTIVECAPTION)} def GetColourSchemes(self): @@ -2077,7 +2075,7 @@ class ArtManager(wx.EvtHandler): :return: A list of strings representing the available colour schemes. """ - return self._colourSchemeMap.keys() + return list(self._colourSchemeMap.keys()) def CreateGreyBitmap(self, bmp): diff --git a/wx/lib/agw/aui/__init__.py b/wx/lib/agw/aui/__init__.py index 545cbd48..de520381 100644 --- a/wx/lib/agw/aui/__init__.py +++ b/wx/lib/agw/aui/__init__.py @@ -278,7 +278,7 @@ License And Version AUI library is distributed under the wxPython license. -Latest Revision: Andrea Gavana @ 19 Dec 2012, 21.00 GMT +Latest Revision: Andrea Gavana @ 27 Dec 2012, 21.00 GMT Version 1.3. @@ -288,11 +288,11 @@ __author__ = "Andrea Gavana " __date__ = "31 March 2009" -from aui_constants import * -from aui_utilities import * -from auibar import * -from auibook import * -from tabart import * -from dockart import * -from framemanager import * -from tabmdi import * +from .aui_constants import * +from .aui_utilities import * +from .auibar import * +from .auibook import * +from .tabart import * +from .dockart import * +from .framemanager import * +from .tabmdi import * diff --git a/wx/lib/agw/aui/aui_switcherdialog.py b/wx/lib/agw/aui/aui_switcherdialog.py index 5f85b86d..71ae8f64 100644 --- a/wx/lib/agw/aui/aui_switcherdialog.py +++ b/wx/lib/agw/aui/aui_switcherdialog.py @@ -73,7 +73,7 @@ Event handler:: # Add the main windows and toolbars, in two separate columns # We'll use the item 'id' to store the notebook selection, or -1 if not a page - for k in xrange(2): + for k in range(2): if k == 0: items.AddGroup(_("Main Windows"), "mainwindows") else: @@ -94,7 +94,7 @@ Event handler:: for pane in self._mgr.GetAllPanes(): nb = pane.window if isinstance(nb, aui.AuiNotebook): - for j in xrange(nb.GetPageCount()): + for j in range(nb.GetPageCount()): name = nb.GetPageText(j) win = nb.GetPage(j) @@ -147,9 +147,9 @@ Event handler:: import wx -import auibook -from aui_utilities import FindFocusDescendant -from aui_constants import SWITCHER_TEXT_MARGIN_X, SWITCHER_TEXT_MARGIN_Y +from . import auibook +from .aui_utilities import FindFocusDescendant +from .aui_constants import SWITCHER_TEXT_MARGIN_X, SWITCHER_TEXT_MARGIN_Y # Define a translation function @@ -424,7 +424,7 @@ class SwitcherItems(object): def FindItemByName(self, name): - for i in xrange(len(self._items)): + for i in range(len(self._items)): if self._items[i].GetName() == name: return i @@ -433,7 +433,7 @@ class SwitcherItems(object): def FindItemById(self, id): - for i in xrange(len(self._items)): + for i in range(len(self._items)): if self._items[i].GetId() == id: return i @@ -573,7 +573,7 @@ class SwitcherItems(object): dc.DrawRectangle(win.GetClientRect()) dc.SetBackgroundMode(wx.TRANSPARENT) - for i in xrange(len(self._items)): + for i in range(len(self._items)): item = self._items[i] if i == self._selection: dc.SetPen(wx.Pen(selectionOutlineColour)) @@ -823,7 +823,7 @@ class MultiColumnListCtrl(wx.Control): newCol = self._items.GetColumnCount() - 1 # Find the first item from the end whose row matches and whose column is equal or lower - for i in xrange(self._items.GetItemCount()-1, -1, -1): + for i in range(self._items.GetItemCount()-1, -1, -1): item2 = self._items.GetItem(i) if item2.GetColPos() == newCol and item2.GetRowPos() <= row: self._items.SetSelection(i) @@ -842,7 +842,7 @@ class MultiColumnListCtrl(wx.Control): newCol = 0 # Find the first item from the end whose row matches and whose column is equal or lower - for i in xrange(self._items.GetItemCount()-1, -1, -1): + for i in range(self._items.GetItemCount()-1, -1, -1): item2 = self._items.GetItem(i) if item2.GetColPos() == newCol and item2.GetRowPos() <= row: self._items.SetSelection(i) diff --git a/wx/lib/agw/aui/aui_utilities.py b/wx/lib/agw/aui/aui_utilities.py index 317c0060..d9a34910 100644 --- a/wx/lib/agw/aui/aui_utilities.py +++ b/wx/lib/agw/aui/aui_utilities.py @@ -10,7 +10,7 @@ __date__ = "31 March 2009" import wx -from aui_constants import * +from .aui_constants import * if wx.Platform == "__WXMAC__": @@ -112,7 +112,7 @@ def ChopText(dc, text, max_size): textLen = len(text) last_good_length = 0 - for i in xrange(textLen, -1, -1): + for i in range(textLen, -1, -1): s = text[0:i] s += "..." @@ -232,7 +232,7 @@ def MakeGray(rgbTuple, factor, maskColour): if rgbTuple != maskColour: r, g, b = rgbTuple - return map(lambda x: int((230 - x) * factor) + x, (r, g, b)) + return [int((230 - x) * factor) + x for x in (r, g, b)] else: return rgbTuple @@ -284,8 +284,8 @@ def PaneCreateStippleBitmap(): img = wx.Image(2, 2) counter = 0 - for ii in xrange(2): - for jj in xrange(2): + for ii in range(2): + for jj in range(2): img.SetRGB(ii, jj, data[counter], data[counter+1], data[counter+2]) counter = counter + 3 @@ -489,8 +489,8 @@ class TabDragImage(wx.DragImage): timg = bitmap.ConvertToImage() if not timg.HasAlpha(): timg.InitAlpha() - for y in xrange(timg.GetHeight()): - for x in xrange(timg.GetWidth()): + for y in range(timg.GetHeight()): + for x in range(timg.GetWidth()): pix = wx.Colour(timg.GetRed(x, y), timg.GetGreen(x, y), timg.GetBlue(x, y)) @@ -612,7 +612,7 @@ def RescaleScreenShot(bmp, thumbnail_size=200): memDC.SetPen(wx.TRANSPARENT_PEN) pos = 0 - for i in xrange(5, 0, -1): + for i in range(5, 0, -1): brush = wx.Brush(wx.Colour(50*i, 50*i, 50*i)) memDC.SetBrush(brush) memDC.DrawRoundedRectangle(0, 0, newW+5-pos, newH+5-pos, 2) diff --git a/wx/lib/agw/aui/auibar.py b/wx/lib/agw/aui/auibar.py index 1be38efb..cfa88d5c 100644 --- a/wx/lib/agw/aui/auibar.py +++ b/wx/lib/agw/aui/auibar.py @@ -13,13 +13,14 @@ __date__ = "31 March 2009" import wx -import types -from aui_utilities import BitmapFromBits, StepColour, GetLabelSize -from aui_utilities import GetBaseColour, MakeDisabledBitmap +from .aui_utilities import BitmapFromBits, StepColour, GetLabelSize +from .aui_utilities import GetBaseColour, MakeDisabledBitmap import framemanager -from aui_constants import * +from .aui_constants import * + +import wx.lib.six as six # wxPython version string _VERSION_STRING = wx.VERSION_STRING @@ -55,7 +56,7 @@ class CommandToolBarEvent(wx.PyCommandEvent): :param integer `win_id`: the window identification number. """ - if type(command_type) == types.IntType: + if type(command_type) in six.integer_types: wx.PyCommandEvent.__init__(self, command_type, win_id) else: wx.PyCommandEvent.__init__(self, command_type.GetEventType(), command_type.GetId()) @@ -145,7 +146,7 @@ class AuiToolBarEvent(CommandToolBarEvent): CommandToolBarEvent.__init__(self, command_type, win_id) - if type(command_type) == types.IntType: + if type(command_type) in six.integer_types: self.notify = wx.NotifyEvent(command_type, win_id) else: self.notify = wx.NotifyEvent(command_type.GetEventType(), command_type.GetId()) @@ -2636,13 +2637,13 @@ class AuiToolBar(wx.Control): if tool.kind == ITEM_RADIO: idx = self.GetToolIndex(tool_id) if idx >= 0 and idx < len(self._items): - for i in xrange(idx, len(self._items)): + for i in range(idx, len(self._items)): tool = self.FindToolByIndex(i) if tool.kind != ITEM_RADIO: break tool.state &= ~AUI_BUTTON_STATE_CHECKED - for i in xrange(idx, -1, -1): + for i in range(idx, -1, -1): tool = self.FindToolByIndex(i) if tool.kind != ITEM_RADIO: break @@ -3565,19 +3566,19 @@ class AuiToolBar(wx.Control): # add custom overflow prepend items, if any count = len(self._custom_overflow_prepend) - for i in xrange(count): + for i in range(count): overflow_items.append(self._custom_overflow_prepend[i]) # only show items that don't fit in the dropdown count = len(self._items) - for i in xrange(count): + for i in range(count): if not self.GetToolFitsByIndex(i): overflow_items.append(self._items[i]) # add custom overflow append items, if any count = len(self._custom_overflow_append) - for i in xrange(count): + for i in range(count): overflow_items.append(self._custom_overflow_append[i]) res = self._art.ShowDropDown(self, overflow_items) diff --git a/wx/lib/agw/aui/auibook.py b/wx/lib/agw/aui/auibook.py index 14c0158f..c44fc568 100644 --- a/wx/lib/agw/aui/auibook.py +++ b/wx/lib/agw/aui/auibook.py @@ -16,18 +16,18 @@ __date__ = "31 March 2009" import wx -import types import datetime from wx.lib.expando import ExpandoTextCtrl +import wx.lib.six as six import framemanager -import tabart as TA +from . import tabart as TA -from aui_utilities import LightColour, MakeDisabledBitmap, TabDragImage -from aui_utilities import TakeScreenShot, RescaleScreenShot +from .aui_utilities import LightColour, MakeDisabledBitmap, TabDragImage +from .aui_utilities import TakeScreenShot, RescaleScreenShot -from aui_constants import * +from .aui_constants import * # AuiNotebook events wxEVT_COMMAND_AUINOTEBOOK_PAGE_CLOSE = wx.NewEventType() @@ -371,7 +371,7 @@ class CommandNotebookEvent(wx.PyCommandEvent): :param integer `win_id`: the window identification number. """ - if type(command_type) == types.IntType: + if type(command_type) in six.integer_types: wx.PyCommandEvent.__init__(self, command_type, win_id) else: wx.PyCommandEvent.__init__(self, command_type.GetEventType(), command_type.GetId()) @@ -504,7 +504,7 @@ class AuiNotebookEvent(CommandNotebookEvent): CommandNotebookEvent.__init__(self, command_type, win_id) - if type(command_type) == types.IntType: + if type(command_type) in six.integer_types: self.notify = wx.NotifyEvent(command_type, win_id) else: self.notify = wx.NotifyEvent(command_type.GetEventType(), command_type.GetId()) @@ -1092,7 +1092,7 @@ class AuiTabContainer(object): :param `wndOrInt`: an instance of :class:`Window` or an integer specifying a tab index. """ - if type(wndOrInt) == types.IntType: + if type(wndOrInt) in six.integer_types: if wndOrInt >= len(self._pages): return False @@ -1329,7 +1329,7 @@ class AuiTabContainer(object): # prepare the tab-close-button array # make sure tab button entries which aren't used are marked as hidden - for i in xrange(page_count, len(self._tab_close_buttons)): + for i in range(page_count, len(self._tab_close_buttons)): self._tab_close_buttons[i].cur_state = AUI_BUTTON_STATE_HIDDEN # make sure there are enough tab button entries to accommodate all tabs @@ -1345,7 +1345,7 @@ class AuiTabContainer(object): total_width = visible_width = 0 tab_width = [0] * page_count - for i in xrange(page_count): + for i in range(page_count): page = self._pages[i] # determine if a close button is on this tab @@ -1442,7 +1442,7 @@ class AuiTabContainer(object): # draw the buttons on the right side offset = self._rect.x + self._rect.width - for i in xrange(button_count): + for i in range(button_count): button = self._buttons[button_count - i - 1] if button.location != wx.RIGHT: @@ -1462,7 +1462,7 @@ class AuiTabContainer(object): offset = 0 # draw the buttons on the left side - for i in xrange(button_count): + for i in range(button_count): button = self._buttons[button_count - i - 1] if button.location != wx.LEFT: @@ -1483,7 +1483,7 @@ class AuiTabContainer(object): offset += self._art.GetIndentSize() # buttons before the tab offset must be set to hidden - for i in xrange(self._tab_offset): + for i in range(self._tab_offset): self._tab_close_buttons[i].cur_state = AUI_BUTTON_STATE_HIDDEN if self._pages[i].control: if self._pages[i].control.IsShown(): @@ -1511,7 +1511,7 @@ class AuiTabContainer(object): rect.y = 0 rect.height = self._rect.height - for i in xrange(self._tab_offset, page_count): + for i in range(self._tab_offset, page_count): page = self._pages[i] tab_button = self._tab_close_buttons[i] @@ -1547,7 +1547,7 @@ class AuiTabContainer(object): lenPages = len(self._pages) # make sure to deactivate buttons which are off the screen to the right - for j in xrange(i+1, len(self._tab_close_buttons)): + for j in range(i+1, len(self._tab_close_buttons)): self._tab_close_buttons[j].cur_state = AUI_BUTTON_STATE_HIDDEN if j > 0 and j <= lenPages: if self._pages[j-1].control: @@ -1591,7 +1591,7 @@ class AuiTabContainer(object): # First check if both buttons are disabled - if so, there's no need to # check further for visibility. arrowButtonVisibleCount = 0 - for i in xrange(button_count): + for i in range(button_count): button = self._buttons[i] if button.id == AUI_BUTTON_LEFT or \ @@ -1617,7 +1617,7 @@ class AuiTabContainer(object): # calculate size of the buttons on the right side offset = self._rect.x + self._rect.width - for i in xrange(button_count): + for i in range(button_count): button = self._buttons[button_count - i - 1] if button.location != wx.RIGHT: @@ -1631,7 +1631,7 @@ class AuiTabContainer(object): offset = 0 # calculate size of the buttons on the left side - for i in xrange(button_count): + for i in range(button_count): button = self._buttons[button_count - i - 1] if button.location != wx.LEFT: @@ -1652,7 +1652,7 @@ class AuiTabContainer(object): rect.height = self._rect.height # See if the given page is visible at the given tab offset (effectively scroll position) - for i in xrange(tabOffset, page_count): + for i in range(tabOffset, page_count): page = self._pages[i] tab_button = self._tab_close_buttons[i] @@ -1691,7 +1691,7 @@ class AuiTabContainer(object): dc = wx.ClientDC(win) if not self.IsTabVisible(tabPage, self.GetTabOffset(), dc, win): - for i in xrange(len(self._pages)): + for i in range(len(self._pages)): if self.IsTabVisible(tabPage, i, dc, win): self.SetTabOffset(i) win.Refresh() @@ -1715,7 +1715,7 @@ class AuiTabContainer(object): if btn in self._buttons: return None - for i in xrange(self._tab_offset, len(self._pages)): + for i in range(self._tab_offset, len(self._pages)): page = self._pages[i] if page.rect.Contains((x,y)): return page.window @@ -2933,7 +2933,7 @@ class AuiNotebook(wx.Panel): # add tab id's page_count = tabframe._tabs.GetPageCount() - for p in xrange(page_count): + for p in range(page_count): page = tabframe._tabs.GetPage(p) page_idx = self._tabs.GetIdxFromWindow(page.window) @@ -2965,7 +2965,7 @@ class AuiNotebook(wx.Panel): # Remove all tab ctrls (but still keep them in main index) tab_count = self._tabs.GetPageCount() - for i in xrange(tab_count): + for i in range(tab_count): wnd = self._tabs.GetWindowFromIdx(i) # find out which onscreen tab ctrl owns this tab @@ -3508,11 +3508,11 @@ class AuiNotebook(wx.Panel): if self.GetEnabled(ctrl_idx): return ctrl_idx - for indx in xrange(ctrl_idx, ctrl.GetPageCount()): + for indx in range(ctrl_idx, ctrl.GetPageCount()): if self.GetEnabled(indx): return indx - for indx in xrange(ctrl_idx, -1, -1): + for indx in range(ctrl_idx, -1, -1): if self.GetEnabled(indx): return indx @@ -3733,7 +3733,7 @@ class AuiNotebook(wx.Panel): if page >= self._tabs.GetPageCount(): return False - if not isinstance(image, types.IntType): + if not isinstance(image, six.integer_types): raise Exception("The image parameter must be an integer, you passed " \ "%s"%repr(image)) @@ -3766,7 +3766,7 @@ class AuiNotebook(wx.Panel): bitmap = self.GetPageBitmap(page) bmpData1 = bitmap.ConvertToImage().GetData() - for indx in xrange(self._imageList.GetImageCount()): + for indx in range(self._imageList.GetImageCount()): imgListBmp = self._imageList.GetBitmap(indx) bmpData2 = imgListBmp.ConvertToImage().GetData() if bmpData1 == bmpData2: @@ -4346,7 +4346,7 @@ class AuiNotebook(wx.Panel): # select first tab as destination self.SetSelection(0) # iterate all other tabs - for idx in xrange(1, self.GetPageCount()): + for idx in range(1, self.GetPageCount()): # get win reference win = self.GetPage(idx) # get tab title @@ -4459,7 +4459,7 @@ class AuiNotebook(wx.Panel): selection = -1 page_count = dest_tabs.GetPageCount() - for page in xrange(src_tabs.GetPageCount()-1, -1, -1): + for page in range(src_tabs.GetPageCount()-1, -1, -1): # remove the page from the source tabs page_info = src_tabs.GetPage(page) if page_info.active: @@ -5160,7 +5160,7 @@ class AuiNotebook(wx.Panel): # tab set, the remove the tab control completely all_panes = self._mgr.GetAllPanes() - for indx in xrange(len(all_panes)-1, -1, -1): + for indx in range(len(all_panes)-1, -1, -1): pane = all_panes[indx] if pane.name == "dummy": continue @@ -5364,7 +5364,7 @@ class AuiNotebook(wx.Panel): page_count = tabs.GetPageCount() selection = -1 - for page in xrange(page_count): + for page in range(page_count): # remove the page from the source tabs page_info = tabs.GetPage(page) if page_info.active: diff --git a/wx/lib/agw/aui/dockart.py b/wx/lib/agw/aui/dockart.py index dcc031d3..67063e9f 100644 --- a/wx/lib/agw/aui/dockart.py +++ b/wx/lib/agw/aui/dockart.py @@ -14,12 +14,11 @@ __date__ = "31 March 2009" import wx -import types -from aui_utilities import BitmapFromBits, StepColour, ChopText, GetBaseColour -from aui_utilities import DrawGradientRectangle, DrawMACCloseButton -from aui_utilities import DarkenBitmap, LightContrastColour -from aui_constants import * +from .aui_utilities import BitmapFromBits, StepColour, ChopText, GetBaseColour +from .aui_utilities import DrawGradientRectangle, DrawMACCloseButton +from .aui_utilities import DarkenBitmap, LightContrastColour +from .aui_constants import * optionActive = 2**14 """ Indicates that a pane is active and should display an active caption (if present). """ @@ -327,12 +326,7 @@ class AuiDefaultDockArt(object): :type `colour`: :class:`Colour` or tuple or integer """ - if isinstance(colour, basestring): - colour = wx.Colour(colour) - elif isinstance(colour, types.TupleType): - colour = wx.Colour(*colour) - elif isinstance(colour, types.IntType): - colour = wx.Colour(colour) + colour = wx.Colour(colour) if id == AUI_DOCKART_BACKGROUND_COLOUR: self._background_brush.SetColour(colour) @@ -468,7 +462,7 @@ class AuiDefaultDockArt(object): if pane.IsToolbar(): - for ii in xrange(0, border_width): + for ii in range(0, border_width): dc.SetPen(wx.WHITE_PEN) dc.DrawLine(drect.x, drect.y, drect.x+drect.width, drect.y) @@ -482,7 +476,7 @@ class AuiDefaultDockArt(object): else: - for ii in xrange(0, border_width): + for ii in range(0, border_width): dc.DrawRectangle(drect.x, drect.y, drect.width, drect.height) drect.Deflate(1, 1) @@ -618,7 +612,7 @@ class AuiDefaultDockArt(object): state = pane.state pane.state &= ~optionActive - for indx in xrange(6): + for indx in range(6): active = (indx%2 == 0 and [True] or [False])[0] if active: pane.state |= optionActive @@ -907,7 +901,7 @@ if _ctypes: def dump(self): """ Dumps `self` as a :class:`Rect`. """ - return map(int, (self.left, self.top, self.right, self.bottom)) + return list(map(int, (self.left, self.top, self.right, self.bottom))) class SIZE(ctypes.Structure): @@ -1083,7 +1077,7 @@ class ModernDockArt(AuiDefaultDockArt): state = pane.state pane.state &= ~optionActive - for indx in xrange(6): + for indx in range(6): active = (indx%2 == 0 and [True] or [False])[0] if active: pane.state |= optionActive diff --git a/wx/lib/agw/aui/framemanager.py b/wx/lib/agw/aui/framemanager.py index d391dfcb..9ff61bc4 100644 --- a/wx/lib/agw/aui/framemanager.py +++ b/wx/lib/agw/aui/framemanager.py @@ -13,7 +13,7 @@ # Python Code By: # # Andrea Gavana, @ 23 Dec 2005 -# Latest Revision: 19 Dec 2012, 21.00 GMT +# Latest Revision: 27 Dec 2012, 21.00 GMT # # For All Kind Of Problems, Requests Of Enhancements And Bug Reports, Please # Write To Me At: @@ -95,18 +95,20 @@ __date__ = "31 March 2009" import wx import time -import types import warnings +import wx.lib.six as six + import auibar import auibook -import tabmdi -import dockart -import tabart -from aui_utilities import Clip, PaneCreateStippleBitmap, GetDockingImage, GetSlidingPoints +from . import tabmdi +from . import dockart +from . import tabart -from aui_constants import * +from .aui_utilities import Clip, PaneCreateStippleBitmap, GetDockingImage, GetSlidingPoints + +from .aui_constants import * # Define this as a translation function _ = wx.GetTranslation @@ -1046,9 +1048,9 @@ class AuiPaneInfo(object): if isinstance(arg1, wx.Size): ret = self.MinSize1(arg1) - elif isinstance(arg1, types.TupleType): + elif isinstance(arg1, tuple): ret = self.MinSize1(wx.Size(*arg1)) - elif isinstance(arg1, types.IntType) and arg2 is not None: + elif isinstance(arg1, six.integer_types) and arg2 is not None: ret = self.MinSize2(arg1, arg2) else: raise Exception("Invalid argument passed to `MinSize`: arg1=%s, arg2=%s"%(repr(arg1), repr(arg2))) @@ -1090,9 +1092,9 @@ class AuiPaneInfo(object): if isinstance(arg1, wx.Size): ret = self.MaxSize1(arg1) - elif isinstance(arg1, types.TupleType): + elif isinstance(arg1, tuple): ret = self.MaxSize1(wx.Size(*arg1)) - elif isinstance(arg1, types.IntType) and arg2 is not None: + elif isinstance(arg1, six.integer_types) and arg2 is not None: ret = self.MaxSize2(arg1, arg2) else: raise Exception("Invalid argument passed to `MaxSize`: arg1=%s, arg2=%s"%(repr(arg1), repr(arg2))) @@ -1136,9 +1138,9 @@ class AuiPaneInfo(object): if isinstance(arg1, wx.Size): ret = self.BestSize1(arg1) - elif isinstance(arg1, types.TupleType): + elif isinstance(arg1, tuple): ret = self.BestSize1(wx.Size(*arg1)) - elif isinstance(arg1, types.IntType) and arg2 is not None: + elif isinstance(arg1, six.integer_types) and arg2 is not None: ret = self.BestSize2(arg1, arg2) else: raise Exception("Invalid argument passed to `BestSize`: arg1=%s, arg2=%s"%(repr(arg1), repr(arg2))) @@ -2030,7 +2032,7 @@ class AuiDockingGuideWindow(wx.Window): :param bool `vertical`: whether it is a vertical docking guide window or not. """ - for i in xrange(0, length, 2): + for i in range(0, length, 2): dc.DrawPoint(point.x, point.y) if vertical: point.y += 2 @@ -2143,7 +2145,7 @@ class AuiDockingGuideWindow(wx.Window): dc.SetPen(wx.Pen(colourIconArrow)) - for i in xrange(4): + for i in range(4): pt1 = wx.Point(point.x - rx.x*i, point.y - rx.y*i) pt2 = wx.Point(point.x + rx.x*(i+1), point.y + rx.y*(i+1)) dc.DrawLine(pt1, pt2) @@ -2740,7 +2742,7 @@ class AuiDockingHintWindow(wx.Frame): size = self.GetClientSize() region = wx.Region(0, 0, size.x, 1) - for y in xrange(size.y): + for y in range(size.y): # Reverse the order of the bottom 4 bits j = (y & 8 and [1] or [0])[0] | (y & 4 and [2] or [0])[0] | \ @@ -3477,10 +3479,10 @@ def CopyDocksAndPanes(src_docks, src_panes): dest_docks = src_docks dest_panes = src_panes - for ii in xrange(len(dest_docks)): + for ii in range(len(dest_docks)): dock = dest_docks[ii] - for jj in xrange(len(dock.panes)): - for kk in xrange(len(src_panes)): + for jj in range(len(dock.panes)): + for kk in range(len(src_panes)): if dock.panes[jj] == src_panes[kk]: dock.panes[jj] = dest_panes[kk] @@ -3500,7 +3502,7 @@ def CopyDocksAndPanes2(src_docks, src_panes): dest_docks = [] - for ii in xrange(len(src_docks)): + for ii in range(len(src_docks)): dest_docks.append(AuiDockInfo()) dest_docks[ii].dock_direction = src_docks[ii].dock_direction dest_docks[ii].dock_layer = src_docks[ii].dock_layer @@ -3515,7 +3517,7 @@ def CopyDocksAndPanes2(src_docks, src_panes): dest_panes = [] - for ii in xrange(len(src_panes)): + for ii in range(len(src_panes)): dest_panes.append(AuiPaneInfo()) dest_panes[ii].name = src_panes[ii].name dest_panes[ii].caption = src_panes[ii].caption @@ -3541,10 +3543,10 @@ def CopyDocksAndPanes2(src_docks, src_panes): dest_panes[ii].minimize_mode = src_panes[ii].minimize_mode dest_panes[ii].minimize_target = src_panes[ii].minimize_target - for ii in xrange(len(dest_docks)): + for ii in range(len(dest_docks)): dock = dest_docks[ii] - for jj in xrange(len(dock.panes)): - for kk in xrange(len(src_panes)): + for jj in range(len(dock.panes)): + for kk in range(len(src_panes)): if dock.panes[jj] == src_panes[kk]: dock.panes[jj] = dest_panes[kk] @@ -3601,7 +3603,7 @@ def DoInsertDockLayer(panes, dock_direction, dock_layer): :param integer `dock_layer`: the :class:`AuiDockInfo` layer to analyze. """ - for ii in xrange(len(panes)): + for ii in range(len(panes)): pane = panes[ii] if not pane.IsFloating() and pane.dock_direction == dock_direction and pane.dock_layer >= dock_layer: pane.dock_layer = pane.dock_layer + 1 @@ -3642,7 +3644,7 @@ def DoInsertPane(panes, dock_direction, dock_layer, dock_row, dock_pos): :param integer `dock_pos`: the :class:`AuiDockInfo` position to analyze. """ - for ii in xrange(len(panes)): + for ii in range(len(panes)): pane = panes[ii] if not pane.IsFloating() and pane.dock_direction == dock_direction and \ pane.dock_layer == dock_layer and pane.dock_row == dock_row and \ @@ -3824,7 +3826,7 @@ def RemovePaneFromDocks(docks, pane, exc=None): :param `exc`: the possible pane exception, an instance of :class:`AuiPaneInfo`. """ - for ii in xrange(len(docks)): + for ii in range(len(docks)): d = docks[ii] if d == exc: continue @@ -3846,10 +3848,10 @@ def RenumberDockRows(docks): :param `docks`: a list of :class:`AuiDockInfo` structures. """ - for ii in xrange(len(docks)): + for ii in range(len(docks)): dock = docks[ii] dock.dock_row = ii - for jj in xrange(len(dock.panes)): + for jj in range(len(dock.panes)): dock.panes[jj].dock_row = ii docks[ii] = dock @@ -4298,7 +4300,7 @@ class AuiManager(wx.EvtHandler): :param `item`: either a pane name or a :class:`Window`. """ - if isinstance(item, basestring): + if isinstance(item, six.string_types): return self.GetPaneByName(item) else: return self.GetPaneByWidget(item) @@ -4974,7 +4976,7 @@ class AuiManager(wx.EvtHandler): # the DetachPane() call. This prevets obscure crashes which would # happen at window repaint if the caller forgets to call Update() counter = 0 - for pi in xrange(len(self._uiparts)): + for pi in range(len(self._uiparts)): part = self._uiparts[counter] if part.pane == p: self._uiparts.pop(counter) @@ -5530,7 +5532,7 @@ class AuiManager(wx.EvtHandler): pane_count = len(dock.panes) # find the pane marked as our action pane - for pane_i in xrange(pane_count): + for pane_i in range(pane_count): pane = dock.panes[pane_i] if pane.HasFlag(AuiPaneInfo.actionPane): if action_pane != -1: @@ -5573,7 +5575,7 @@ class AuiManager(wx.EvtHandler): return positions, sizes offset = 0 - for pane_i in xrange(action_pane-1, -1, -1): + for pane_i in range(action_pane-1, -1, -1): amount = positions[pane_i+1] - (positions[pane_i] + sizes[pane_i]) if amount >= 0: offset += amount @@ -5585,7 +5587,7 @@ class AuiManager(wx.EvtHandler): # if the dock mode is fixed, make sure none of the panes # overlap we will bump panes that overlap offset = 0 - for pane_i in xrange(action_pane, pane_count): + for pane_i in range(action_pane, pane_count): amount = positions[pane_i] - offset if amount >= 0: offset += amount @@ -5659,7 +5661,7 @@ class AuiManager(wx.EvtHandler): # add pane buttons to the caption dummy_parts = [] - for btn_id in xrange(len(pane.buttons)-1, -1, -1): + for btn_id in range(len(pane.buttons)-1, -1, -1): sizer_item = caption_sizer.Add((caption_size, pane_button_size), 0, wx.EXPAND) part = AuiDockUIPart() part.type = AuiDockUIPart.typePaneButton @@ -5831,7 +5833,7 @@ class AuiManager(wx.EvtHandler): pane_positions, pane_sizes = self.GetPanePositionsAndSizes(dock) offset = 0 - for pane_i in xrange(pane_count): + for pane_i in range(pane_count): pane = dock.panes[pane_i] pane_pos = pane_positions[pane_i] @@ -5878,7 +5880,7 @@ class AuiManager(wx.EvtHandler): else: - for pane_i in xrange(pane_count): + for pane_i in range(pane_count): pane = dock.panes[pane_i] @@ -6156,7 +6158,7 @@ class AuiManager(wx.EvtHandler): # reassign the dock_pos to the sequential 0, 1, 2, 3 # e.g. remove gaps like 1, 2, 30, 500 if not dock.fixed: - for jj in xrange(dock_pane_count): + for jj in range(dock_pane_count): pane = dock.panes[jj] pane.dock_pos = jj @@ -6167,7 +6169,7 @@ class AuiManager(wx.EvtHandler): if dock.fixed and not action_pane_marked: pane_positions, pane_sizes = self.GetPanePositionsAndSizes(dock) offset = 0 - for jj in xrange(dock_pane_count): + for jj in range(dock_pane_count): pane = dock.panes[jj] pane.dock_pos = pane_positions[jj] amount = pane.dock_pos - offset @@ -6193,7 +6195,7 @@ class AuiManager(wx.EvtHandler): max_layer = 0 dock_count = len(docks) - for ii in xrange(dock_count): + for ii in range(dock_count): max_layer = max(max_layer, docks[ii].dock_layer) # clear out uiparts @@ -6207,7 +6209,7 @@ class AuiManager(wx.EvtHandler): if oncheck: docks = self._docks - for layer in xrange(max_layer+1): + for layer in range(max_layer+1): # find any docks in this layer arr = FindDocks(docks, -1, layer, -1) # if there aren't any, skip to the next layer @@ -6399,7 +6401,7 @@ class AuiManager(wx.EvtHandler): pane_count = len(self._panes) - for ii in xrange(pane_count): + for ii in range(pane_count): p = self._panes[ii] pFrame = p.frame @@ -6502,7 +6504,7 @@ class AuiManager(wx.EvtHandler): # the new pane rectangles against the old rectangles that # we saved a few lines above here. If the rectangles have # changed, the corresponding panes must also be updated - for ii in xrange(pane_count): + for ii in range(pane_count): p = self._panes[ii] if p.window and p.IsShown() and p.IsDocked(): if p.rect != old_pane_rects[ii]: @@ -6534,7 +6536,7 @@ class AuiManager(wx.EvtHandler): extra_notebook = len(self._notebooks) max_notebook += 1 - for i in xrange(extra_notebook, max_notebook): + for i in range(extra_notebook, max_notebook): self.CreateNotebook() # Remove pages from notebooks that no-longer belong there ... @@ -6543,7 +6545,7 @@ class AuiManager(wx.EvtHandler): pageCounter, allPages = 0, pages # Check each tab ... - for page in xrange(pages): + for page in range(pages): if page >= allPages: break @@ -6637,7 +6639,7 @@ class AuiManager(wx.EvtHandler): # its current pane, and sort the list by pane.dock_pos # order pages_and_panes = [] - for idx in reversed(range(pages)): + for idx in reversed(list(range(pages))): page = notebook.GetPage(idx) pane = self.GetPane(page) pages_and_panes.append((page, pane)) @@ -6682,7 +6684,7 @@ class AuiManager(wx.EvtHandler): want_close = True pages = notebook.GetPageCount() - for page in xrange(pages): + for page in range(pages): win = notebook.GetPage(page) pane = self.GetPane(win) @@ -6966,7 +6968,7 @@ class AuiManager(wx.EvtHandler): :param `dock`: a :class:`AuiDockInfo` instance. """ - for layer in xrange(dock.dock_layer, -1, -1): + for layer in range(dock.dock_layer, -1, -1): bestDock = None @@ -7725,7 +7727,7 @@ class AuiManager(wx.EvtHandler): # search the dock guides. # reverse order to handle the center first. - for i in xrange(len(self._guides)-1, -1, -1): + for i in range(len(self._guides)-1, -1, -1): guide = self._guides[i] # do hit testing on the guide @@ -8095,7 +8097,7 @@ class AuiManager(wx.EvtHandler): # need to clip the region to the managed window too or we get # nasty redrawn problems. clip.Intersect(self._frame.GetRect()) - screendc.SetClippingRegion(clip) + screendc.SetDeviceClippingRegion(clip) stipple = PaneCreateStippleBitmap() brush = wx.Brush(stipple) @@ -8255,7 +8257,7 @@ class AuiManager(wx.EvtHandler): # remove any pane already there which bears the same window # this happens when you are moving a pane around in a dock - for ii in xrange(len(panes)): + for ii in range(len(panes)): if panes[ii].window == pane_window: docks = RemovePaneFromDocks(docks, panes[ii]) panes.pop(ii) @@ -9915,7 +9917,7 @@ class AuiManager(wx.EvtHandler): dock = docks[0] pane_positions, pane_sizes = self.GetPanePositionsAndSizes(dock) - for i in xrange(len(dock.panes)): + for i in range(len(dock.panes)): dock.panes[i].dock_pos = pane_positions[i] pane.state &= ~AuiPaneInfo.actionPane @@ -10127,7 +10129,7 @@ class AuiManager(wx.EvtHandler): target = paneInfo.name minimize_toolbar.AddSimpleTool(ID_RESTORE_FRAME, paneInfo.caption, restore_bitmap, - _(u"Restore %s")%paneInfo.caption, target=target) + _(six.u("Restore %s"))%paneInfo.caption, target=target) minimize_toolbar.SetAuiManager(self) minimize_toolbar.Realize() toolpanelname = paneInfo.name + "_min" @@ -10342,7 +10344,7 @@ class AuiManager(wx.EvtHandler): dc.SetBrush(wx.TRANSPARENT_BRUSH) dc.SetPen(wx.LIGHT_GREY_PEN) - for i in xrange(int(step)): + for i in range(int(step)): width, height = win_rect.width - i*wstep, win_rect.height - i*hstep x, y = xstart - i*xstep, ystart - i*ystep new_rect = wx.Rect(x, y, width, height) @@ -10382,7 +10384,7 @@ class AuiManager(wx.EvtHandler): xstep = int((win_rect.x - hint_rect.x))/step ystep = int((win_rect.y - hint_rect.y))/step - for i in xrange(int(step)): + for i in range(int(step)): width, height = win_rect.width - i*wstep, win_rect.height - i*hstep x, y = xstart - i*xstep, ystart - i*ystep new_rect = wx.Rect(x, y, width, height) @@ -10576,7 +10578,7 @@ class AuiManager(wx.EvtHandler): step = stopX/10 window_size = 0 - for i in xrange(0, stopX, step): + for i in range(0, stopX, step): window_size = i self._sliding_frame.SetSize(startX, startY, window_size, stopY) self._sliding_frame.Refresh() @@ -10606,7 +10608,7 @@ class AuiManager(wx.EvtHandler): step = stopX/10 window_size = 0 - for i in xrange(stopX, 0, -step): + for i in range(stopX, 0, -step): window_size = i self._sliding_frame.SetSize(startX, startY, window_size, stopY) self._sliding_frame.Refresh() diff --git a/wx/lib/agw/aui/tabart.py b/wx/lib/agw/aui/tabart.py index 0e25568c..3205d2b6 100644 --- a/wx/lib/agw/aui/tabart.py +++ b/wx/lib/agw/aui/tabart.py @@ -20,11 +20,11 @@ import wx if wx.Platform == '__WXMAC__': import Carbon.Appearance -from aui_utilities import BitmapFromBits, StepColour, IndentPressedBitmap, ChopText -from aui_utilities import GetBaseColour, DrawMACCloseButton, LightColour, TakeScreenShot -from aui_utilities import CopyAttributes +from .aui_utilities import BitmapFromBits, StepColour, IndentPressedBitmap, ChopText +from .aui_utilities import GetBaseColour, DrawMACCloseButton, LightColour, TakeScreenShot +from .aui_utilities import CopyAttributes -from aui_constants import * +from .aui_constants import * # -- GUI helper classes and functions -- @@ -405,7 +405,7 @@ class AuiDefaultTabArt(object): # we'll just use a rectangle for the clipping region for now -- dc.SetClippingRegion(tab_x, tab_y, clip_width+1, tab_height-3) - border_points = [wx.Point() for i in xrange(6)] + border_points = [wx.Point() for i in range(6)] agwFlags = self.GetAGWFlags() if agwFlags & AUI_NB_BOTTOM: @@ -1207,7 +1207,7 @@ class AuiSimpleTabArt(object): # -- draw line -- - points = [wx.Point() for i in xrange(7)] + points = [wx.Point() for i in range(7)] points[0].x = tab_x points[0].y = tab_y + tab_height - 1 points[1].x = tab_x + tab_height - 3 @@ -1928,7 +1928,7 @@ class FF2TabArt(AuiDefaultTabArt): dc.SetClippingRegion(tab_x, tab_y, clip_width + 1, tab_height - 3) - tabPoints = [wx.Point() for i in xrange(7)] + tabPoints = [wx.Point() for i in range(7)] adjust = 0 if not page.active: @@ -2101,7 +2101,7 @@ class FF2TabArt(AuiDefaultTabArt): # Define the rounded rectangle base on the given rect # we need an array of 9 points for it - regPts = [wx.Point() for indx in xrange(9)] + regPts = [wx.Point() for indx in range(9)] if focus: if upperTabs: @@ -2247,7 +2247,7 @@ class VC8TabArt(AuiDefaultTabArt): if tab_x + clip_width > in_rect.x + in_rect.width - 4: clip_width = (in_rect.x + in_rect.width) - tab_x - 4 - tabPoints = [wx.Point() for i in xrange(8)] + tabPoints = [wx.Point() for i in range(8)] # If we draw the first tab or the active tab, # we draw a full tab, else we draw a truncated tab diff --git a/wx/lib/agw/aui/tabmdi.py b/wx/lib/agw/aui/tabmdi.py index e2f05d7c..99036671 100644 --- a/wx/lib/agw/aui/tabmdi.py +++ b/wx/lib/agw/aui/tabmdi.py @@ -4,8 +4,8 @@ __date__ = "31 March 2009" import wx -import auibook -from aui_constants import * +from . import auibook +from .aui_constants import * _ = wx.GetTranslation @@ -341,7 +341,7 @@ class AuiMDIChildFrame(wx.Panel): pParentFrame.SetActiveChild(None) pParentFrame.SetChildMenuBar(None) - for pos in xrange(pClientWindow.GetPageCount()): + for pos in range(pClientWindow.GetPageCount()): if pClientWindow.GetPage(pos) == self: return pClientWindow.DeletePage(pos) @@ -385,7 +385,7 @@ class AuiMDIChildFrame(wx.Panel): pClientWindow = pParentFrame.GetClientWindow() if pClientWindow is not None: - for pos in xrange(pClientWindow.GetPageCount()): + for pos in range(pClientWindow.GetPageCount()): if pClientWindow.GetPage(pos) == self: pClientWindow.SetPageText(pos, self._title) break @@ -439,7 +439,7 @@ class AuiMDIChildFrame(wx.Panel): pClientWindow = pParentFrame.GetClientWindow() if pClientWindow is not None: - for pos in xrange(pClientWindow.GetPageCount()): + for pos in range(pClientWindow.GetPageCount()): if pClientWindow.GetPage(pos) == self: pClientWindow.SetSelection(pos) break @@ -662,5 +662,5 @@ class AuiMDIClientWindow(auibook.AuiNotebook): auibook.AuiNotebook.OnSize(self, event) - for pos in xrange(self.GetPageCount()): + for pos in range(self.GetPageCount()): self.GetPage(pos).ApplyMDIChildFrameRect() diff --git a/wx/lib/agw/buttonpanel.py b/wx/lib/agw/buttonpanel.py index b628c974..11e8f142 100644 --- a/wx/lib/agw/buttonpanel.py +++ b/wx/lib/agw/buttonpanel.py @@ -11,7 +11,7 @@ # Python Code By: # # Andrea Gavana, @ 02 Oct 2006 -# Latest Revision: 19 Dec 2012, 21.00 GMT +# Latest Revision: 27 Dec 2012, 21.00 GMT # # # For All Kind Of Problems, Requests Of Enhancements And Bug Reports, Please @@ -180,7 +180,7 @@ License And Version :class:`ButtonPanel` is distributed under the wxPython license. -Latest Revision: Andrea Gavana @ 18 Dec 2012, 15.00 GMT +Latest Revision: Andrea Gavana @ 27 Dec 2012, 21.00 GMT Version 0.7. @@ -2819,7 +2819,7 @@ if __name__ == '__main__': obj = event.GetEventObject() # This will print the button label - print(obj.GetText()) + print((obj.GetText())) # our normal wxApp-derived class, as usual diff --git a/wx/lib/agw/flatmenu.py b/wx/lib/agw/flatmenu.py index bebc707a..58f0e04b 100644 --- a/wx/lib/agw/flatmenu.py +++ b/wx/lib/agw/flatmenu.py @@ -2,7 +2,7 @@ # FLATMENU wxPython IMPLEMENTATION # # Andrea Gavana, @ 03 Nov 2006 -# Latest Revision: 19 Dec 2012, 21.00 GMT +# Latest Revision: 27 Dec 2012, 21.00 GMT # # TODO List # @@ -185,7 +185,7 @@ License And Version :class:`FlatMenu` is distributed under the wxPython license. -Latest Revision: Andrea Gavana @ 19 Dec 2012, 21.00 GMT +Latest Revision: Andrea Gavana @ 27 Dec 2012, 21.00 GMT Version 1.0 @@ -197,13 +197,14 @@ __version__ = "1.0" import wx import os import math -import cStringIO import wx.lib.colourutils as colourutils -from fmcustomizedlg import FMCustomizeDlg -from artmanager import ArtManager, DCSaver -from fmresources import * +import wx.lib.six as six + +from .fmcustomizedlg import FMCustomizeDlg +from .artmanager import ArtManager, DCSaver +from .fmresources import * # FlatMenu styles FM_OPT_IS_LCD = 1 @@ -271,7 +272,7 @@ except ImportError: CPP_AUI = False try: - import aui as PyAUI + from . import aui as PyAUI PyAuiPaneInfo = PyAUI.AuiPaneInfo """ Default AuiPaneInfo as in :class:`framemanager`. """ except ImportError: @@ -583,13 +584,13 @@ class FMRenderer(object): img = img.ConvertToImage() x, y = img.GetWidth(), img.GetHeight() img.InitAlpha() - for jj in xrange(y): - for ii in xrange(x): + for jj in range(y): + for ii in range(x): img.SetAlpha(ii, jj, alpha[jj*x+ii]) else: - stream = cStringIO.StringIO(xpm) + stream = six.StringIO(xpm) img = wx.Image(stream) return wx.Bitmap(img) @@ -1342,7 +1343,7 @@ class FMRenderer(object): if not self.scrollBarButtons and flatmenu._showScrollButtons: posy += flatmenu.GetItemHeight() - for nCount in xrange(flatmenu._first, nItems): + for nCount in range(flatmenu._first, nItems): visibleItems += 1 item = flatmenu._itemsArr[nCount] @@ -1554,7 +1555,7 @@ class FMRendererMSOffice2007(FMRenderer): # Define the rounded rectangle base on the given rect # we need an array of 9 points for it - regPts = [wx.Point() for ii in xrange(9)] + regPts = [wx.Point() for ii in range(9)] radius = 2 regPts[0] = wx.Point(rect.x, rect.y + radius) @@ -1578,7 +1579,7 @@ class FMRendererMSOffice2007(FMRenderer): rightPt2 = wx.Point(rect.x + rect.width, rect.y + (rect.height / factor)*(factor-1)) # Define the top region - topReg = [wx.Point() for ii in xrange(7)] + topReg = [wx.Point() for ii in range(7)] topReg[0] = regPts[0] topReg[1] = regPts[1] topReg[2] = wx.Point(regPts[2].x+1, regPts[2].y) @@ -2010,7 +2011,7 @@ class FileHistory(object): numFiles += 1 # update the labels in all menus - for index in xrange(numFiles): + for index in range(numFiles): # if in same directory just show the filename otherwise the full path fnOld = self._fileHistory[index] @@ -2046,7 +2047,7 @@ class FileHistory(object): for menu in self._fileMenus: # shift filenames up - for j in xrange(numFiles): + for j in range(numFiles): menu.SetLabel(self._idBase + j, GetMRUEntryLabel(j, self._fileHistory[j])) # delete the last menu item which is unused now @@ -2126,7 +2127,7 @@ class FileHistory(object): buffer = "file%d" - for index in xrange(self._fileMaxFiles): + for index in range(self._fileMaxFiles): if index < len(self._fileHistory): config.Write(buffer%(index+1), self._fileHistory[i]) @@ -2166,7 +2167,7 @@ class FileHistory(object): if menu.GetMenuItemCount(): menu.AppendSeparator() - for index in xrange(len(self._fileHistory)): + for index in range(len(self._fileHistory)): menu.Append(self._idBase + index, GetMRUEntryLabel(index, self._fileHistory[i])) @@ -2225,7 +2226,7 @@ class MenuEntryInfo(object): :param integer `cmd`: the menu accelerator identifier. """ - if isinstance(titleOrMenu, basestring): + if isinstance(titleOrMenu, six.string_types): self._title = titleOrMenu self._menu = menu @@ -2665,7 +2666,7 @@ class FlatMenuBar(wx.Panel): counter = 0 # Get all the toolbar items - for i in xrange(len(self._tbButtons)): + for i in range(len(self._tbButtons)): xx += self._toolbarSpacer @@ -2772,10 +2773,10 @@ class FlatMenuBar(wx.Panel): self.DoGiveHelp(self._tbButtons[self._showTooltip]._tbItem) except: if _debug: - print "FlatMenu.py; fn : DrawToolbar; Can't create Tooltip " + print("FlatMenu.py; fn : DrawToolbar; Can't create Tooltip ") pass - for j in xrange(counter, len(self._tbButtons)): + for j in range(counter, len(self._tbButtons)): if self._tbButtons[j]._tbItem.IsCustomControl(): control = self._tbButtons[j]._tbItem.GetCustomControl() control.Hide() @@ -3209,7 +3210,7 @@ class FlatMenuBar(wx.Panel): # switch is if its a unselected radio item if not item.IsSelected() and item.IsRadioItem(): group = item.GetGroup() - for i in xrange(len(self._tbButtons)): + for i in range(len(self._tbButtons)): if self._tbButtons[i]._tbItem.GetGroup() == group and \ i != idx and self._tbButtons[i]._tbItem.IsSelected(): self._tbButtons[i]._state = ControlNormal @@ -3452,7 +3453,8 @@ class FlatMenuBar(wx.Panel): accelString = "\tAlt+" + accelChar title += accelString - accel = wx.GetAccelFromString(title) + accel = wx.AcceleratorEntry() + accel.FromString(title) itemId = item.GetCmdId() if accel: @@ -3462,10 +3464,10 @@ class FlatMenuBar(wx.Panel): accel.Set(accel.GetFlags(), accel.GetKeyCode(), itemId) updatedTable.append(accel) - entries = [wx.AcceleratorEntry() for ii in xrange(len(updatedTable))] + entries = [wx.AcceleratorEntry() for ii in range(len(updatedTable))] # Add the new menu items - for i in xrange(len(updatedTable)): + for i in range(len(updatedTable)): entries[i] = updatedTable[i] table = wx.AcceleratorTable(entries) @@ -3506,7 +3508,7 @@ class FlatMenuBar(wx.Panel): last_item = self.GetLastVisibleMenu() # find the current active menu - for i in xrange(last_item+1): + for i in range(last_item+1): if self._items[i].GetMenu().IsShown(): nextMenu = i + 1 if nextMenu >= last_item: @@ -3539,7 +3541,7 @@ class FlatMenuBar(wx.Panel): # find the current active menu last_item = self.GetLastVisibleMenu() - for i in xrange(last_item): + for i in range(last_item): if self._items[i].GetMenu().IsShown(): prevMenu = i - 1 if prevMenu < 0: @@ -3568,7 +3570,7 @@ class FlatMenuBar(wx.Panel): invM = self.GetInvisibleMenuItemCount() - for i in xrange(len(self._items) - invM, len(self._items)): + for i in range(len(self._items) - invM, len(self._items)): item = FlatMenuItem(self._moreMenu, wx.ID_ANY, self._items[i].GetTitle(), "", wx.ITEM_NORMAL, self._items[i].GetMenu()) self._moreMenu.AppendItem(item) @@ -3580,7 +3582,7 @@ class FlatMenuBar(wx.Panel): if self.GetInvisibleMenuItemCount() > 0: self._moreMenu.AppendSeparator() - for i in xrange(len(self._tbButtons) - invT, len(self._tbButtons)): + for i in range(len(self._tbButtons) - invT, len(self._tbButtons)): if self._tbButtons[i]._tbItem.IsSeparator(): self._moreMenu.AppendSeparator() elif not self._tbButtons[i]._tbItem.IsCustomControl(): @@ -3593,7 +3595,7 @@ class FlatMenuBar(wx.Panel): if self._showCustomize: if invT + invM > 0: self._moreMenu.AppendSeparator() - item = FlatMenuItem(self._moreMenu, self._popupDlgCmdId, _(u"Customize...")) + item = FlatMenuItem(self._moreMenu, self._popupDlgCmdId, _(six.u("Customize..."))) self._moreMenu.AppendItem(item) @@ -3615,7 +3617,7 @@ class FlatMenuBar(wx.Panel): """ count = 0 - for i in xrange(len(self._tbButtons)): + for i in range(len(self._tbButtons)): if self._tbButtons[i]._visible == False: break count = i @@ -4274,7 +4276,7 @@ class FlatMenuBase(ShadowPopupWindow): """ # some controls update themselves from OnIdle() call - let them do it - wx.GetApp().ProcessIdle() + wx.GetApp().GetMainLoop().ProcessIdle() # The mouse was pressed in the parent coordinates, # e.g. pressing on the left top of a text ctrl @@ -4327,7 +4329,7 @@ class FlatMenuBase(ShadowPopupWindow): self._upButton.Move((1, 3)) self._downButton.Move((1, scrHeight - pos.y - 3 - self.GetItemHeight())) - self.Move(pos) + self.Move(pos) self.Show() # Capture mouse event and direct them to us @@ -5206,7 +5208,9 @@ class FlatMenuItem(object): def GetAcceleratorEntry(self): """ Returns the accelerator entry associated to this menu item. """ - return wx.GetAccelFromString(self.GetText()) + accel = wx.AcceleratorEntry() + accel.FromString(self.GetText()) + return accel def GetMnemonicChar(self): @@ -5407,7 +5411,7 @@ class FlatMenu(FlatMenuBase): # If owner is None, the Default GetParent() is used as the owner self._owner = owner - for cc in xrange(numEvents): + for cc in range(numEvents): self.SendUIEvent(cc) # Adjust menu position and show it @@ -5567,7 +5571,7 @@ class FlatMenu(FlatMenuBase): self.SetSize(wx.Size(self._menuWidth*self._numCols, menuHeight+4)) if self._originalBackgroundImage: - img = wx.Image(self._originalBackgroundImage) + img = self._originalBackgroundImage.ConvertToImage() img = img.Scale(self._menuWidth*self._numCols-2-self._leftMarginWidth, menuHeight, wx.IMAGE_QUALITY_HIGH) self._backgroundImage = img.ConvertToBitmap() @@ -5935,7 +5939,7 @@ class FlatMenu(FlatMenuBase): itemIdx = -1 occur = 0 - for i in xrange(len(self._itemsArr)): + for i in range(len(self._itemsArr)): item = self._itemsArr[i] mnemonic = item.GetMnemonicChar() @@ -5997,7 +6001,7 @@ class FlatMenu(FlatMenuBase): num=0 singleItemIdx = -1 - for i in xrange(len(self._itemsArr)): + for i in range(len(self._itemsArr)): item = self._itemsArr[i] if item.IsSeparator(): @@ -6913,7 +6917,7 @@ class FlatMenu(FlatMenuBase): idx = wx.NOT_FOUND - for i in xrange(len(self._itemsArr)): + for i in range(len(self._itemsArr)): item = self._itemsArr[i] @@ -6943,7 +6947,7 @@ class FlatMenu(FlatMenuBase): if n == 0: return wx.NullAcceleratorTable - entries = [wx.AcceleratorEntry() for ii in xrange(n)] + entries = [wx.AcceleratorEntry() for ii in range(n)] for counter in len(entries): entries[counter] = self._accelArray[counter] @@ -7059,7 +7063,7 @@ class FlatMenu(FlatMenuBase): self._resizeMenu = False lenItems = len(self._itemsArr) - for ii in xrange(lenItems): + for ii in range(lenItems): self.Destroy(self._itemsArr[0].GetId()) # Now we can resize the menu @@ -7080,7 +7084,7 @@ class FlatMenu(FlatMenuBase): if item == None or len(self._itemsArr) == 0: return wx.NOT_FOUND - for i in xrange(len(self._itemsArr)): + for i in range(len(self._itemsArr)): if self._itemsArr[i] == item: return i @@ -7126,7 +7130,7 @@ class FlatMenu(FlatMenuBase): return newitems # if any item in this menu has sub-menu, copy them as well - for i in xrange(len(menu._itemsArr)): + for i in range(len(menu._itemsArr)): if menu._itemsArr[i].IsSubMenu(): newitems = self.GetAllItems(menu._itemsArr[i].GetSubMenu(), newitems) diff --git a/wx/lib/agw/flatnotebook.py b/wx/lib/agw/flatnotebook.py index d6f5006f..a604f632 100644 --- a/wx/lib/agw/flatnotebook.py +++ b/wx/lib/agw/flatnotebook.py @@ -11,7 +11,7 @@ # Python Code By: # # Andrea Gavana, @ 02 Oct 2006 -# Latest Revision: 19 Dec 2012, 21.00 GMT +# Latest Revision: 27 Dec 2012, 21.00 GMT # # # For All Kind Of Problems, Requests Of Enhancements And Bug Reports, Please @@ -22,6 +22,7 @@ # # Or, Obviously, To The wxPython Mailing List!!! # +# Tags: phoenix-port, unittest, documented # # End Of Comments # --------------------------------------------------------------------------- # @@ -83,7 +84,7 @@ Usage example:: notebook = fnb.FlatNotebook(panel, -1) - for i in xrange(3): + for i in range(3): caption = "Page %d"%(i+1) notebook.AddPage(self.CreatePage(notebook, caption), caption) @@ -175,7 +176,7 @@ License And Version :class:`FlatNotebook` is distributed under the wxPython license. -Latest Revision: Andrea Gavana @ 19 Dec 2012, 21.00 GMT +Latest Revision: Andrea Gavana @ 27 Dec 2012, 21.00 GMT Version 3.2 """ @@ -189,7 +190,9 @@ import wx import random import math import weakref -import cPickle +import pickle + +import wx.lib.six as six # Used on OSX to get access to carbon api constants if wx.Platform == '__WXMAC__': @@ -812,9 +815,9 @@ def FormatColour(colour): def RandomColour(): """ Creates a random colour. """ - r = random.randint(0, 255) # Random value betweem 0-255 - g = random.randint(0, 255) # Random value betweem 0-255 - b = random.randint(0, 255) # Random value betweem 0-255 + r = random.randint(0, 255) # Random value between 0-255 + g = random.randint(0, 255) # Random value between 0-255 + b = random.randint(0, 255) # Random value between 0-255 return wx.Colour(r, g, b) @@ -847,7 +850,7 @@ def PaintStraightGradientBox(dc, rect, startColour, endColour, vertical=True): if high < 1: return - for i in xrange(high+1): + for i in range(high+1): r = startColour.Red() + ((i*rd*100)/high)/100 g = startColour.Green() + ((i*gd*100)/high)/100 @@ -914,7 +917,7 @@ def DrawButton(dc, rect, focus, upperTabs): # Define the rounded rectangle base on the given rect # we need an array of 9 points for it - regPts = [wx.Point() for indx in xrange(9)] + regPts = [wx.Point() for indx in range(9)] if focus: if upperTabs: @@ -1067,7 +1070,7 @@ class FNBDropTarget(wx.DropTarget): wx.DropTarget.__init__(self) self._parent = parent - self._dataobject = wx.CustomDataObject(wx.DataFormat(u'FlatNotebook')) + self._dataobject = wx.CustomDataObject(wx.DataFormat(six.u('FlatNotebook'))) self.SetDataObject(self._dataobject) @@ -1086,7 +1089,7 @@ class FNBDropTarget(wx.DropTarget): return wx.DragNone draginfo = self._dataobject.GetData() - drginfo = cPickle.loads(draginfo) + drginfo = pickle.loads(draginfo) return self._parent.OnDropTarget(x, y, drginfo.GetPageIndex(), drginfo.GetContainer()) @@ -1596,7 +1599,7 @@ class TabNavigatorWindow(wx.Dialog): self._listBox.Append(book.GetPageText(prevSel)) self._indexMap.append(prevSel) - for c in xrange(count): + for c in range(count): # Skip selected page if c == selection: @@ -2287,7 +2290,7 @@ class FNBRenderer(object): # Draw thik grey line between the windows area and # the tab area - for num in xrange(3): + for num in range(3): dc.DrawLine(0, greyLineYVal + num, size.x, greyLineYVal + num) wbPen = (pc.HasAGWFlag(FNB_BOTTOM) and [wx.BLACK_PEN] or [wx.WHITE_PEN])[0] @@ -2306,7 +2309,7 @@ class FNBRenderer(object): posx = pc._pParent.GetPadding() # Update all the tabs from 0 to 'pc._nFrom' to be non visible - for i in xrange(pc._nFrom): + for i in range(pc._nFrom): pc._pagesInfoVec[i].SetPosition(wx.Point(-1, -1)) pc._pagesInfoVec[i].GetRegion().Clear() @@ -2317,7 +2320,7 @@ class FNBRenderer(object): # Go over and draw the visible tabs #---------------------------------------------------------- x1 = x2 = -1 - for i in xrange(pc._nFrom, len(pc._pagesInfoVec)): + for i in range(pc._nFrom, len(pc._pagesInfoVec)): dc.SetPen(borderPen) @@ -2368,7 +2371,7 @@ class FNBRenderer(object): posx += tabWidth # Update all tabs that can not fit into the screen as non-visible - for i in xrange(count, len(pc._pagesInfoVec)): + for i in range(count, len(pc._pagesInfoVec)): pc._pagesInfoVec[i].SetPosition(wx.Point(-1, -1)) pc._pagesInfoVec[i].GetRegion().Clear() @@ -2449,7 +2452,7 @@ class FNBRenderer(object): if fr < 0: fr = pc._nFrom - for i in xrange(fr, len(pc._pagesInfoVec)): + for i in range(fr, len(pc._pagesInfoVec)): tabWidth = self.CalcTabWidth(pageContainer, i, tabHeight) if posx + tabWidth + self.GetButtonsAreaLength(pc) >= clientWidth: @@ -2561,7 +2564,7 @@ class FNBRendererDefault(FNBRenderer): borderPen = wx.Pen(wx.SystemSettings.GetColour(wx.SYS_COLOUR_BTNSHADOW)) pc = pageContainer - tabPoints = [wx.Point() for ii in xrange(7)] + tabPoints = [wx.Point() for ii in range(7)] tabPoints[0].x = posx tabPoints[0].y = (pc.HasAGWFlag(FNB_BOTTOM) and [2] or [tabHeight - 2])[0] @@ -2695,7 +2698,7 @@ class FNBRendererFirefox2(FNBRenderer): borderPen = wx.Pen(wx.SystemSettings.GetColour(wx.SYS_COLOUR_BTNSHADOW)) pc = pageContainer - tabPoints = [wx.Point() for indx in xrange(7)] + tabPoints = [wx.Point() for indx in range(7)] tabPoints[0].x = posx + 2 tabPoints[0].y = (pc.HasAGWFlag(FNB_BOTTOM) and [2] or [tabHeight - 2])[0] @@ -3104,7 +3107,7 @@ class FNBRendererVC8(FNBRenderer): dc.SetFont(boldFont) # Update all the tabs from 0 to 'pc.self._nFrom' to be non visible - for i in xrange(pc._nFrom): + for i in range(pc._nFrom): pc._pagesInfoVec[i].SetPosition(wx.Point(-1, -1)) pc._pagesInfoVec[i].GetRegion().Clear() @@ -3116,7 +3119,7 @@ class FNBRendererVC8(FNBRenderer): activeTabWidth = 0 activeTabHeight = 0 - for cur in xrange(len(vTabsInfo)-1, -1, -1): + for cur in range(len(vTabsInfo)-1, -1, -1): # 'i' points to the index of the currently drawn tab # in pc.GetPageInfoVector() vector @@ -3176,7 +3179,7 @@ class FNBRendererVC8(FNBRenderer): self.DrawTab(pc, dc, activeTabPosx, pc.GetSelection(), activeTabWidth, activeTabHeight, pc._nTabXButtonStatus) # Update all tabs that can not fit into the screen as non-visible - for xx in xrange(pc._nFrom + len(vTabsInfo), len(pc._pagesInfoVec)): + for xx in range(pc._nFrom + len(vTabsInfo), len(pc._pagesInfoVec)): pc._pagesInfoVec[xx].SetPosition(wx.Point(-1, -1)) pc._pagesInfoVec[xx].GetRegion().Clear() @@ -3204,7 +3207,7 @@ class FNBRendererVC8(FNBRenderer): pc = pageContainer borderPen = wx.Pen(pc._pParent.GetBorderColour()) - tabPoints = [wx.Point() for ii in xrange(8)] + tabPoints = [wx.Point() for ii in range(8)] # If we draw the first tab or the active tab, # we draw a full tab, else we draw a truncated tab @@ -3447,7 +3450,7 @@ class FNBRendererVC8(FNBRenderer): if bBottomStyle: - for i in xrange(3): + for i in range(3): if y >= tabPoints[i].y and y < tabPoints[i+1].y: @@ -3460,7 +3463,7 @@ class FNBRendererVC8(FNBRenderer): else: - for i in xrange(3): + for i in range(3): if y <= tabPoints[i].y and y > tabPoints[i+1].y: @@ -3477,7 +3480,7 @@ class FNBRendererVC8(FNBRenderer): # According to the equation y = ax + b => x = (y-b)/a # We know the first 2 points - x1, x2, y1, y2 = map(float, (x1, x2, y1, y2)) + x1, x2, y1, y2 = list(map(float, (x1, x2, y1, y2))) if abs(x2 - x1) < 1e-6: return x2 @@ -3511,7 +3514,7 @@ class FNBRendererVC8(FNBRenderer): if bBottomStyle: - for i in xrange(7, 3, -1): + for i in range(7, 3, -1): if y >= tabPoints[i].y and y < tabPoints[i-1].y: @@ -3524,7 +3527,7 @@ class FNBRendererVC8(FNBRenderer): else: - for i in xrange(7, 3, -1): + for i in range(7, 3, -1): if y <= tabPoints[i].y and y > tabPoints[i-1].y: @@ -3579,7 +3582,7 @@ class FNBRendererVC8(FNBRenderer): if fr < 0: fr = pc._nFrom - for i in xrange(fr, len(pc._pagesInfoVec)): + for i in range(fr, len(pc._pagesInfoVec)): vc8glitch = tabHeight + FNB_HEIGHT_SPACER tabWidth = self.CalcTabWidth(pageContainer, i, tabHeight) @@ -3799,7 +3802,7 @@ class FNBRendererRibbonTabs(FNBRenderer): posx = pc._pParent.GetPadding() # Update all the tabs from 0 to 'pc._nFrom' to be non visible - for i in xrange(pc._nFrom): + for i in range(pc._nFrom): pc._pagesInfoVec[i].SetPosition(wx.Point(-1, -1)) count = pc._nFrom @@ -3812,7 +3815,7 @@ class FNBRendererRibbonTabs(FNBRenderer): noselBrush = wx.Brush(pc._tabAreaColour) selBrush = wx.Brush(LightColour(pc._tabAreaColour,60)) - for i in xrange(pc._nFrom, len(pc._pagesInfoVec)): + for i in range(pc._nFrom, len(pc._pagesInfoVec)): # This style highlights the selected tab and the tab the mouse is over highlight = (i==pc.GetSelection()) or pc.IsMouseHovering(i) @@ -3855,7 +3858,7 @@ class FNBRendererRibbonTabs(FNBRenderer): posx += tabWidth # Update all tabs that can not fit into the screen as non-visible - for i in xrange(count, len(pc._pagesInfoVec)): + for i in range(count, len(pc._pagesInfoVec)): pc._pagesInfoVec[i].SetPosition(wx.Point(-1, -1)) pc._pagesInfoVec[i].GetRegion().Clear() @@ -4648,7 +4651,7 @@ class FlatNotebook(wx.Panel): if angle > 15: return - for ii in xrange(len(self._pages._pagesInfoVec)): + for ii in range(len(self._pages._pagesInfoVec)): self._pages._pagesInfoVec[ii].SetTabAngle(angle) self.Refresh() @@ -5261,7 +5264,7 @@ class PageContainer(wx.Panel): fr = 0 page = self.GetSelection() - for fr in xrange(self._nFrom): + for fr in range(self._nFrom): vTabInfo = renderer.NumberTabsCanFit(self, fr) if page - fr >= len(vTabInfo): continue @@ -5305,7 +5308,7 @@ class PageContainer(wx.Panel): delta = event.GetWheelDelta() steps = int(rotation/delta) - for tab in xrange(abs(steps)): + for tab in range(abs(steps)): if steps > 0: before = self._nLeftButtonStatus self._nLeftButtonStatus = FNB_BTN_PRESSED @@ -5550,7 +5553,7 @@ class PageContainer(wx.Panel): # Test whether a left click was made on a tab bFoundMatch = False - for cur in xrange(self._nFrom, len(self._pagesInfoVec)): + for cur in range(self._nFrom, len(self._pagesInfoVec)): pgInfo = self._pagesInfoVec[cur] @@ -5831,8 +5834,8 @@ class PageContainer(wx.Panel): self._isdragging = True draginfo = FNBDragInfo(self, tabIdx) - drginfo = cPickle.dumps(draginfo) - dataobject = wx.CustomDataObject(wx.DataFormat(u'FlatNotebook')) + drginfo = pickle.dumps(draginfo) + dataobject = wx.CustomDataObject(wx.DataFormat(six.u('FlatNotebook'))) dataobject.SetData(drginfo) dragSource = FNBDropSource(self) dragSource.SetData(dataobject) @@ -5886,7 +5889,7 @@ class PageContainer(wx.Panel): ii = 0 - for ii in xrange(self._nFrom, len(self._pagesInfoVec)): + for ii in range(self._nFrom, len(self._pagesInfoVec)): if self._pagesInfoVec[ii].GetPosition() == wx.Point(-1, -1): break @@ -6228,7 +6231,7 @@ class PageContainer(wx.Panel): """ Returns the number of visible tabs. """ count = 0 - for ii in xrange(self._nFrom, len(self._pagesInfoVec)): + for ii in range(self._nFrom, len(self._pagesInfoVec)): if self._pagesInfoVec[ii].GetPosition() == wx.Point(-1, -1): break count = count + 1 @@ -6437,7 +6440,7 @@ class PageContainer(wx.Panel): popupMenu = wx.Menu() - for i in xrange(len(self._pagesInfoVec)): + for i in range(len(self._pagesInfoVec)): pi = self._pagesInfoVec[i] item = wx.MenuItem(popupMenu, i+1, pi.GetCaption(), pi.GetCaption(), wx.ITEM_NORMAL) self.Bind(wx.EVT_MENU, self.OnTabMenuSelection, item) @@ -6545,7 +6548,7 @@ class PageContainer(wx.Panel): if page < len(self._pagesInfoVec): return self._pagesInfoVec[page].GetCaption() else: - return u'' + return six.u('') def SetPageText(self, page, text): diff --git a/wx/lib/agw/floatspin.py b/wx/lib/agw/floatspin.py index ff5c1fbe..0e0886da 100644 --- a/wx/lib/agw/floatspin.py +++ b/wx/lib/agw/floatspin.py @@ -3,7 +3,7 @@ # Python Code By: # # Andrea Gavana, @ 16 Nov 2005 -# Latest Revision: 19 Dec 2012, 21.00 GMT +# Latest Revision: 27 Dec 2012, 21.00 GMT # # # TODO List/Caveats @@ -136,7 +136,7 @@ License And Version :class:`FloatSpin` control is distributed under the wxPython license. -Latest revision: Andrea Gavana @ 18 Dec 2012, 21.00 GMT +Latest revision: Andrea Gavana @ 27 Dec 2012, 21.00 GMT Version 1.0 @@ -1499,6 +1499,9 @@ class FixedPoint(object): def __nonzero__(self): return self.n != 0 + def __bool__(self): + return self.n != 0 + def __neg__(self): return _mkFP(-self.n, self.p) diff --git a/wx/lib/agw/fmcustomizedlg.py b/wx/lib/agw/fmcustomizedlg.py index 4f568781..fb427d05 100644 --- a/wx/lib/agw/fmcustomizedlg.py +++ b/wx/lib/agw/fmcustomizedlg.py @@ -6,9 +6,9 @@ This module contains a custom dialog class used to personalize the appearance of import wx from UserDict import UserDict -from artmanager import ArtManager -from fmresources import * -from labelbook import LabelBook +from .artmanager import ArtManager +from .fmresources import * +from .labelbook import LabelBook _ = wx.GetTranslation @@ -43,7 +43,7 @@ class OrderedDict(UserDict): return dict def items(self): - return zip(self._keys, self.values()) + return list(zip(self._keys, list(self.values()))) def keys(self): return self._keys @@ -65,11 +65,11 @@ class OrderedDict(UserDict): def update(self, dict): UserDict.update(self, dict) - for key in dict.keys(): + for key in list(dict.keys()): if key not in self._keys: self._keys.append(key) def values(self): - return map(self.get, self._keys) + return list(map(self.get, self._keys)) # ---------------------------------------------------------------------------- # @@ -242,7 +242,7 @@ class FMCustomizeDlg(wx.Dialog): self.order = [] # Add all the menu items that are currently visible to the list - for i in xrange(len(mb._items)): + for i in range(len(mb._items)): dummy, lableOnly = ArtManager.Get().GetAccelIndex(mb._items[i].GetTitle()) choices.append(lableOnly) @@ -254,7 +254,7 @@ class FMCustomizeDlg(wx.Dialog): # Add all hidden menus to the menu bar - for key in self._hiddenMenus.keys(): + for key in list(self._hiddenMenus.keys()): choices.append(key) if self.created: @@ -419,7 +419,7 @@ class FMCustomizeDlg(wx.Dialog): if checked: # remove the item from the hidden map - if self._hiddenMenus.has_key(menuName): + if menuName in self._hiddenMenus: menu = self._hiddenMenus.pop(menuName) # add it to the visible map @@ -434,7 +434,7 @@ class FMCustomizeDlg(wx.Dialog): else: # remove the item from the visible items - if self._visibleMenus.has_key(menuName): + if menuName in self._visibleMenus: menu = self._visibleMenus.pop(menuName) # add it to the hidden map diff --git a/wx/lib/agw/gradientbutton.py b/wx/lib/agw/gradientbutton.py index b31c6256..43efd4d0 100644 --- a/wx/lib/agw/gradientbutton.py +++ b/wx/lib/agw/gradientbutton.py @@ -2,7 +2,7 @@ # GRADIENTBUTTON wxPython IMPLEMENTATION # # Andrea Gavana, @ 07 October 2008 -# Latest Revision: 19 Dec 2012, 21.00 GMT +# Latest Revision: 27 Dec 2012, 21.00 GMT # # # TODO List @@ -18,6 +18,7 @@ # # Or, obviously, to the wxPython mailing list!!! # +# Tags: phoenix-port, unittest, documented # # End Of Comments # --------------------------------------------------------------------------------- # @@ -108,7 +109,7 @@ License And Version :class:`GradientButton` is distributed under the wxPython license. -Latest Revision: Andrea Gavana @ 14 Mar 2012, 21.00 GMT +Latest Revision: Andrea Gavana @ 27 Dec 2012, 21.00 GMT Version 0.3 @@ -194,7 +195,7 @@ class GradientButton(wx.Control): self.Bind(wx.EVT_LEFT_DCLICK, self.OnLeftDown) self._mouseAction = None - self._bitmap = bitmap + self.SetBitmapLabel(bitmap) self._hasFocus = False self.SetLabel(label) @@ -204,6 +205,17 @@ class GradientButton(wx.Control): self.SetBaseColours() + def SetBitmapLabel(self, bitmap): + """ + Sets the bitmap label for the button. + + :param `bitmap`: the bitmap label to set, an instance of :class:`Bitmap`. + """ + + self._bitmap = bitmap + self.Refresh() + + def SetBaseColours(self, startcolour=wx.BLACK, foregroundcolour=wx.WHITE): """Sets the bottom, top, pressed and foreground colour diff --git a/wx/lib/agw/infobar.py b/wx/lib/agw/infobar.py index 0b88ae01..ca9aca56 100644 --- a/wx/lib/agw/infobar.py +++ b/wx/lib/agw/infobar.py @@ -5,7 +5,7 @@ # Python Code By: # # Andrea Gavana, @ 12 March 2012 -# Latest Revision: 19 Dec 2012, 21.00 GMT +# Latest Revision: 27 Dec 2012, 21.00 GMT # # # TODO List/Caveats @@ -150,7 +150,7 @@ License And Version :class:`InfoBar` control is distributed under the wxPython license. -Latest Revision: Andrea Gavana @ 19 Dec 2012, 21.00 GMT +Latest Revision: Andrea Gavana @ 27 Dec 2012, 21.00 GMT Version 0.3 @@ -171,7 +171,7 @@ try: except ImportError: CPP_AUI = False -from aui import framemanager as framemanager +from .aui import framemanager as framemanager # These are for the AutoWrapStaticText class from wx.lib.wordwrap import wordwrap @@ -668,7 +668,7 @@ class InfoBar(wx.Control): self.DoHide() - def AddButton(self, btnid, label, bitmap=wx.NullBitmap): + def AddButton(self, btnid, label='', bitmap=wx.NullBitmap): """ Adds a button to be shown in the info bar. @@ -747,7 +747,7 @@ class InfoBar(wx.Control): # they are repeated removing the last added one probably makes more sense) items = sizer.GetChildren() - for item in items[::-1]: + for item in reversed(items): # if we reached the spacer separating the buttons from the text # preceding them without finding our button,it must mean it's not # there at all @@ -755,13 +755,14 @@ class InfoBar(wx.Control): raise Exception("button with id %d not found"%btnid) # check if we found our button - if item.GetWindow().GetId() == btnid: - sizer.Detach(item) - item.GetWindow().Destroy() + window = item.GetWindow() + if window.GetId() == btnid: + sizer.Detach(window) + window.Destroy() break - + # check if there are any custom buttons left - if sizer.GetChildren()[-1].IsSpacer(): + if list(sizer.GetChildren())[-1].IsSpacer(): # if the last item is the spacer,none are left so restore the # standard close button sizer.Add(self._button, wx.SizerFlags().Centre().DoubleBorder()) diff --git a/wx/lib/agw/knobctrl.py b/wx/lib/agw/knobctrl.py index fbe60281..ba8052a6 100644 --- a/wx/lib/agw/knobctrl.py +++ b/wx/lib/agw/knobctrl.py @@ -2,7 +2,7 @@ # KNOBCTRL wxPython IMPLEMENTATION # # Andrea Gavana, @ 03 Nov 2006 -# Latest Revision: 18 Dec 2012, 21.00 GMT +# Latest Revision: 27 Dec 2012, 21.00 GMT # # # TODO List @@ -135,7 +135,7 @@ License And Version :class:`KnobCtrl` is distributed under the wxPython license. -Latest Revision: Andrea Gavana @ 18 Dec 2012, 21.00 GMT +Latest Revision: Andrea Gavana @ 27 Dec 2012, 21.00 GMT Version 0.4 @@ -917,11 +917,11 @@ if __name__ == '__main__': knob1 = KnobCtrl(panel, -1, size=(100, 100)) knob2 = KnobCtrl(panel, -1, size=(100, 100)) - knob1.SetTags(range(0, 151, 10)) + knob1.SetTags(list(range(0, 151, 10))) knob1.SetAngularRange(-45, 225) knob1.SetValue(45) - knob2.SetTags(range(0, 151, 10)) + knob2.SetTags(list(range(0, 151, 10))) knob2.SetAngularRange(0, 270) knob2.SetValue(100) diff --git a/wx/lib/agw/labelbook.py b/wx/lib/agw/labelbook.py index 54228b1d..5e4c479b 100644 --- a/wx/lib/agw/labelbook.py +++ b/wx/lib/agw/labelbook.py @@ -10,7 +10,7 @@ # Python Code By: # # Andrea Gavana, @ 03 Nov 2006 -# Latest Revision: 19 Dec 2012, 21.00 GMT +# Latest Revision: 27 Dec 2012, 21.00 GMT # # # For All Kind Of Problems, Requests Of Enhancements And Bug Reports, Please @@ -170,7 +170,7 @@ License And Version :class:`LabelBook` and :class:`FlatImageBook` are distributed under the wxPython license. -Latest Revision: Andrea Gavana @ 19 Dec 2012, 21.00 GMT +Latest Revision: Andrea Gavana @ 27 Dec 2012, 21.00 GMT Version 0.6. @@ -185,8 +185,8 @@ __version__ = "0.6" import wx -from artmanager import ArtManager, DCSaver -from fmresources import * +from .artmanager import ArtManager, DCSaver +from .fmresources import * # Check for the new method in 2.7 (not present in 2.6.3.3) if wx.VERSION_STRING < "2.7": @@ -813,7 +813,7 @@ class ImageContainerBase(wx.Panel): if self._pinBtnRect.Contains(pt): return -1, IMG_OVER_PIN - for i in xrange(len(self._pagesInfoVec)): + for i in range(len(self._pagesInfoVec)): if self._pagesInfoVec[i].GetPosition() == wx.Point(-1, -1): break @@ -1266,7 +1266,7 @@ class ImageContainer(ImageContainerBase): boldFont = wx.SystemSettings.GetFont(wx.SYS_DEFAULT_GUI_FONT) boldFont.SetWeight(wx.BOLD) - for i in xrange(len(self._pagesInfoVec)): + for i in range(len(self._pagesInfoVec)): count = count + 1 @@ -1428,7 +1428,7 @@ class ImageContainer(ImageContainerBase): pos += rectWidth # Update all buttons that can not fit into the screen as non-visible - for ii in xrange(count, len(self._pagesInfoVec)): + for ii in range(count, len(self._pagesInfoVec)): self._pagesInfoVec[ii].SetPosition(wx.Point(-1, -1)) # Draw the pin button @@ -1630,7 +1630,7 @@ class LabelContainer(ImageContainerBase): posy = 20 count = 0 - for i in xrange(len(self._pagesInfoVec)): + for i in range(len(self._pagesInfoVec)): count = count+1 # Default values for the surronounding rectangle # around a button @@ -1673,7 +1673,7 @@ class LabelContainer(ImageContainerBase): posy += rectHeight # Update all buttons that can not fit into the screen as non-visible - for ii in xrange(count, len(self._pagesInfoVec)): + for ii in range(count, len(self._pagesInfoVec)): self._pagesInfoVec[i].SetPosition(wx.Point(-1, -1)) if bUsePin: @@ -1997,10 +1997,7 @@ class LabelContainer(ImageContainerBase): :see: :meth:`~LabelContainer.SetColour` for a list of valid colour keys. """ - if not self._coloursMap.has_key(which): - return wx.Colour() - - return self._coloursMap[which] + return self._coloursMap.get(which, wx.Colour()) def InitializeColours(self): @@ -2504,7 +2501,7 @@ class FlatBookBase(wx.Panel): dc.SetFont(font) maxW = 0 - for page in xrange(self.GetPageCount()): + for page in range(self.GetPageCount()): caption = self._pages.GetPageText(page) w, h = dc.GetTextExtent(caption) maxW = max(maxW, w) diff --git a/wx/lib/agw/peakmeter.py b/wx/lib/agw/peakmeter.py index cfcac975..ecf167d3 100644 --- a/wx/lib/agw/peakmeter.py +++ b/wx/lib/agw/peakmeter.py @@ -2,7 +2,7 @@ # PEAKMETERCTRL wxPython IMPLEMENTATION # # Andrea Gavana, @ 07 October 2008 -# Latest Revision: 18 Dec 2012, 21.00 GMT +# Latest Revision: 27 Dec 2012, 21.00 GMT # # # TODO List @@ -156,7 +156,7 @@ License And Version :class:`PeakMeterCtrl` is distributed under the wxPython license. -Latest Revision: Andrea Gavana @ 18 Dec 2012, 21.00 GMT +Latest Revision: Andrea Gavana @ 27 Dec 2012, 21.00 GMT Version 0.4 @@ -911,7 +911,7 @@ if __name__ == '__main__': nElements = 15 arrayData = [] - for i in xrange(nElements): + for i in range(nElements): nRandom = random.randint(0, 100) arrayData.append(nRandom) diff --git a/wx/lib/agw/persist/__init__.py b/wx/lib/agw/persist/__init__.py index ae37885e..ae4a0db6 100644 --- a/wx/lib/agw/persist/__init__.py +++ b/wx/lib/agw/persist/__init__.py @@ -179,7 +179,7 @@ License And Version `PersistentObjects` library is distributed under the wxPython license. -Latest revision: Andrea Gavana @ 19 Dec 2012, 21.00 GMT +Latest revision: Andrea Gavana @ 27 Dec 2012, 21.00 GMT Version 0.4. """ @@ -188,6 +188,6 @@ __author__ = "Andrea Gavana " __date__ = "16 November 2009" -from persist_constants import * -from persistencemanager import * -from persist_handlers import * +from .persist_constants import * +from .persistencemanager import * +from .persist_handlers import * diff --git a/wx/lib/agw/persist/persist_handlers.py b/wx/lib/agw/persist/persist_handlers.py index 70a396a2..a1d7b7e8 100644 --- a/wx/lib/agw/persist/persist_handlers.py +++ b/wx/lib/agw/persist/persist_handlers.py @@ -6,7 +6,6 @@ actions depending on the widget kind. """ import wx -import types import datetime import wx.aui @@ -42,9 +41,9 @@ except: import wx.lib.agw.ultimatelistctrl as ULC -import persistencemanager as PM +from . import persistencemanager as PM -from persist_constants import * +from .persist_constants import * def PyDate2wxDate(date): @@ -67,7 +66,7 @@ def wxDate2PyDate(date): """ if date.IsValid(): - ymd = map(int, date.FormatISODate().split('-')) + ymd = list(map(int, date.FormatISODate().split('-'))) return datetime.date(*ymd) else: return None @@ -237,7 +236,7 @@ class TreebookHandler(BookHandler): book, obj = self._window, self._pObject expanded = "" - for page in xrange(book.GetPageCount()): + for page in range(book.GetPageCount()): if book.IsNodeExpanded(page): if expanded: expanded += PERSIST_SEP @@ -653,7 +652,7 @@ class ListCtrlHandler(ListBoxHandler): return retVal colSizes = [] - for col in xrange(listCtrl.GetColumnCount()): + for col in range(listCtrl.GetColumnCount()): colSizes.append(listCtrl.GetColumnWidth(col)) obj.SaveValue(PERSIST_LISTCTRL_COLWIDTHS, colSizes) @@ -709,7 +708,7 @@ class CheckListBoxHandler(ListBoxHandler): checkList, obj = self._window, self._pObject checked = [] - for index in xrange(checkList.GetCount()): + for index in range(checkList.GetCount()): if checkList.IsChecked(index): checked.append(index) @@ -804,7 +803,7 @@ class FoldPanelBarHandler(AbstractHandler): def Save(self): fpb, obj = self._window, self._pObject - expanded = [fpb.GetFoldPanel(i).IsExpanded() for i in xrange(fpb.GetCount())] + expanded = [fpb.GetFoldPanel(i).IsExpanded() for i in range(fpb.GetCount())] obj.SaveValue(PERSIST_FOLDPANELBAR_EXPANDED, expanded) return True @@ -1638,7 +1637,7 @@ class TreeListCtrlHandler(TreeCtrlHandler): treeList, obj = self._window, self._pObject colSizes = [] - for col in xrange(treeList.GetColumnCount()): + for col in range(treeList.GetColumnCount()): colSizes.append(treeList.GetColumnWidth(col)) obj.SaveValue(PERSIST_TREELISTCTRL_COLWIDTHS, colSizes) @@ -1922,7 +1921,7 @@ class FileDirPickerHandler(AbstractHandler): if value is not None: if issubclass(picker.__class__, wx.FileDialog): - if type(value) == types.ListType: + if type(value) == list: value = value[-1] picker.SetPath(value) @@ -2007,7 +2006,7 @@ class FileHistoryHandler(AbstractHandler): history, obj = self._window, self._pObject paths = [] - for indx in xrange(history.GetCount()): + for indx in range(history.GetCount()): paths.append(history.GetHistoryFile(indx)) obj.SaveValue(PERSIST_FILEHISTORY_PATHS, paths) @@ -2062,7 +2061,7 @@ class MenuBarHandler(AbstractHandler): return False checkRadioItems = {} - for indx in xrange(menuCount): + for indx in range(menuCount): menu = bar.GetMenu(indx) for item in menu.GetMenuItems(): if item.GetKind() in [wx.ITEM_CHECK, wx.ITEM_RADIO]: @@ -2087,7 +2086,7 @@ class MenuBarHandler(AbstractHandler): return False retVal = True - for indx in xrange(menuCount): + for indx in range(menuCount): menu = bar.GetMenu(indx) for item in menu.GetMenuItems(): if item.GetKind() in [wx.ITEM_CHECK, wx.ITEM_RADIO]: @@ -2138,7 +2137,7 @@ class ToolBarHandler(AbstractHandler): return False checkRadioItems = {} - for indx in xrange(toolCount): + for indx in range(toolCount): tool = bar.FindToolByIndex(indx) if tool is not None: if tool.GetKind() in [AUI.ITEM_CHECK, AUI.ITEM_RADIO]: @@ -2162,7 +2161,7 @@ class ToolBarHandler(AbstractHandler): if checkRadioItems is None: return False - for indx in xrange(toolCount): + for indx in range(toolCount): tool = bar.FindToolByIndex(indx) if tool is not None: toolId = tool.GetId() @@ -2371,7 +2370,7 @@ class ColourDialogHandler(TLWHandler): obj.SaveValue(PERSIST_COLOURDIALOG_CHOOSEFULL, data.GetChooseFull()) customColours = [] - for indx in xrange(15): + for indx in range(15): colour = data.GetCustomColour(indx) if not colour.IsOk() or colour == wx.WHITE: break diff --git a/wx/lib/agw/persist/persistencemanager.py b/wx/lib/agw/persist/persistencemanager.py index b8cfa3f5..0ad8c8c5 100644 --- a/wx/lib/agw/persist/persistencemanager.py +++ b/wx/lib/agw/persist/persistencemanager.py @@ -10,7 +10,7 @@ # Python Code By: # # Andrea Gavana, @ 16 Nov 2009 -# Latest Revision: 19 Dec 2012, 21.00 GMT +# Latest Revision: 27 Dec 2012, 21.00 GMT # # For All Kind Of Problems, Requests Of Enhancements And Bug Reports, Please # Write To Me At: @@ -34,10 +34,10 @@ import datetime import wx.gizmos -from persist_handlers import FindHandler, HasCtrlHandler +from .persist_handlers import FindHandler, HasCtrlHandler -from persist_constants import BAD_DEFAULT_NAMES, CONFIG_PATH_SEPARATOR -from persist_constants import PM_DEFAULT_STYLE, PM_PERSIST_CONTROL_VALUE +from .persist_constants import BAD_DEFAULT_NAMES, CONFIG_PATH_SEPARATOR +from .persist_constants import PM_DEFAULT_STYLE, PM_PERSIST_CONTROL_VALUE # ----------------------------------------------------------------------------------- # @@ -595,7 +595,7 @@ class PersistenceManager(object): """ if window is None: - for name, obj in self._persistentObjects.items(): + for name, obj in list(self._persistentObjects.items()): self.SaveAndUnregister(obj.GetWindow()) return diff --git a/wx/lib/agw/pybusyinfo.py b/wx/lib/agw/pybusyinfo.py index bba117fe..4e101d25 100644 --- a/wx/lib/agw/pybusyinfo.py +++ b/wx/lib/agw/pybusyinfo.py @@ -5,7 +5,7 @@ # Python Code By: # # Andrea Gavana, @ 10 December 2009 -# Latest Revision: 19 Dec 2012, 21.00 GMT +# Latest Revision: 27 Dec 2012, 21.00 GMT # # # TODO List/Caveats @@ -123,7 +123,7 @@ License And Version :class:`PyBusyInfo` is distributed under the wxPython license. -Latest Revision: Andrea Gavana @ 19 Dec 2012, 21.00 GMT +Latest Revision: Andrea Gavana @ 27 Dec 2012, 21.00 GMT Version 0.3 @@ -381,7 +381,7 @@ if __name__ == '__main__': wx.Yield() - for indx in xrange(5): + for indx in range(5): wx.MilliSleep(1000) del busy diff --git a/wx/lib/agw/pygauge.py b/wx/lib/agw/pygauge.py index 0e923b3a..0f5fa559 100644 --- a/wx/lib/agw/pygauge.py +++ b/wx/lib/agw/pygauge.py @@ -2,7 +2,7 @@ # PYGAUGE wxPython IMPLEMENTATION # # Mark Reed, @ 28 Jul 2010 -# Latest Revision: 19 Dec 2012, 21.00 GMT +# Latest Revision: 27 Dec 2012, 21.00 GMT # # TODO List # @@ -106,7 +106,7 @@ License And Version :class:`PyGauge` has been kindly contributed to the AGW library by Mark Reed. -Latest Revision: Andrea Gavana @ 19 Dec 2012, 21.00 GMT +Latest Revision: Andrea Gavana @ 27 Dec 2012, 21.00 GMT Version 0.1 @@ -426,7 +426,7 @@ class PyGauge(wx.Window): formatString.format(12.345) error_occurred = False except Exception as e: - print("We have exception:%s"%e) + print(("We have exception: %s"%e)) if error_occurred: formatString = None @@ -506,12 +506,12 @@ class PyGauge(wx.Window): if self.GetBarGradient(): tmp = sorted(zip(self._value,self._barGradient)); tmp.reverse() - a,b = zip(*tmp) + a, b = list(zip(*tmp)) self._valueSorted = list(a) self._barGradientSorted = list(b) else: tmp = sorted(zip(self._value,self._barColour)); tmp.reverse() - a,b = zip(*tmp) + a, b = list(zip(*tmp)) self._valueSorted = list(a) self._barColourSorted = list(b) diff --git a/wx/lib/agw/ribbon/__init__.py b/wx/lib/agw/ribbon/__init__.py index f7ed0c36..adbd6ae1 100644 --- a/wx/lib/agw/ribbon/__init__.py +++ b/wx/lib/agw/ribbon/__init__.py @@ -150,7 +150,7 @@ License And Version RIBBON library is distributed under the wxPython license. -Latest revision: Andrea Gavana @ 19 Dec 2012, 21.00 GMT +Latest revision: Andrea Gavana @ 27 Dec 2012, 21.00 GMT Version 0.3. @@ -160,18 +160,18 @@ __author__ = "Andrea Gavana " __date__ = "16 October 2009" -from art import * -from art_aui import * -from art_internal import * -from art_msw import * -from art_default import * +from .art import * +from .art_aui import * +from .art_internal import * +from .art_msw import * +from .art_default import * -from bar import * -from buttonbar import * -from control import * -from gallery import * +from .bar import * +from .buttonbar import * +from .control import * +from .gallery import * -from page import * -from panel import * -from toolbar import * +from .page import * +from .panel import * +from .toolbar import * diff --git a/wx/lib/agw/ribbon/art_aui.py b/wx/lib/agw/ribbon/art_aui.py index d306e752..43fdb6ee 100644 --- a/wx/lib/agw/ribbon/art_aui.py +++ b/wx/lib/agw/ribbon/art_aui.py @@ -33,12 +33,12 @@ import wx from math import cos from math import pi as M_PI -from art_msw import RibbonMSWArtProvider -from art_internal import RibbonHSLColour, RibbonShiftLuminance, RibbonInterpolateColour +from .art_msw import RibbonMSWArtProvider +from .art_internal import RibbonHSLColour, RibbonShiftLuminance, RibbonInterpolateColour -import bar as BAR, panel as PANEL +from . import bar as BAR, panel as PANEL -from art import * +from .art import * if wx.Platform == "__WXMAC__": import Carbon.Appearance @@ -393,7 +393,7 @@ class RibbonAUIArtProvider(RibbonMSWArtProvider): grad_rect.height = btm_rect.y - grad_rect.y dc.GradientFillLinear(grad_rect, self._tab_hover_background_top_colour, self._tab_hover_background_top_gradient_colour, wx.SOUTH) - border_points = [wx.Point() for i in xrange(5)] + border_points = [wx.Point() for i in range(5)] border_points[0] = wx.Point(0, 3) border_points[1] = wx.Point(1, 2) border_points[2] = wx.Point(tab.rect.width - 3, 2) @@ -576,7 +576,7 @@ class RibbonAUIArtProvider(RibbonMSWArtProvider): """ true_rect = wx.Rect(*rect) - arrow_points = [wx.Point() for i in xrange(3)] + arrow_points = [wx.Point() for i in range(3)] if style & RIBBON_SCROLL_BTN_FOR_MASK == RIBBON_SCROLL_BTN_FOR_TABS: true_rect.y += 2 @@ -710,7 +710,7 @@ class RibbonAUIArtProvider(RibbonMSWArtProvider): :param `rect`: The panel client rectangle. """ - true_rect = wx.Rect(*rect) + true_rect = wx.Rect(rect) true_rect = self.RemovePanelPadding(true_rect) true_rect.x += 1 diff --git a/wx/lib/agw/ribbon/art_default.py b/wx/lib/agw/ribbon/art_default.py index 516f9316..6b7a1ada 100644 --- a/wx/lib/agw/ribbon/art_default.py +++ b/wx/lib/agw/ribbon/art_default.py @@ -30,9 +30,9 @@ See Also import wx -from art_msw import RibbonMSWArtProvider -from art_aui import RibbonAUIArtProvider -from art_osx import RibbonOSXArtProvider +from .art_msw import RibbonMSWArtProvider +from .art_aui import RibbonAUIArtProvider +from .art_osx import RibbonOSXArtProvider if wx.Platform == "__WXMSW__": diff --git a/wx/lib/agw/ribbon/art_internal.py b/wx/lib/agw/ribbon/art_internal.py index cc289f3b..b21e0b21 100644 --- a/wx/lib/agw/ribbon/art_internal.py +++ b/wx/lib/agw/ribbon/art_internal.py @@ -47,7 +47,7 @@ def RibbonDrawParallelGradientLines(dc, nlines, line_origins, stepx, stepy, nums gd = end_colour.Green() - start_colour.Green() bd = end_colour.Blue() - start_colour.Blue() - for step in xrange(numsteps): + for step in range(numsteps): r = start_colour.Red() + (((step*rd*100)/numsteps)/100) g = start_colour.Green() + (((step*gd*100)/numsteps)/100) b = start_colour.Blue() + (((step*bd*100)/numsteps)/100) @@ -55,7 +55,7 @@ def RibbonDrawParallelGradientLines(dc, nlines, line_origins, stepx, stepy, nums p = wx.Pen(wx.Colour(r, g, b)) dc.SetPen(p) - for n in xrange(nlines): + for n in range(nlines): dc.DrawLine(offset_x + line_origins[n].x, offset_y + line_origins[n].y, offset_x + line_origins[n].x + stepx, offset_y + line_origins[n].y + stepy) @@ -179,7 +179,7 @@ class RibbonHSLColour(object): else: blue = tmp1 - return wx.Colour(red * 255.0, green * 255.0, blue * 255.0) + return wx.Colour(int(red * 255.0), int(green * 255.0), int(blue * 255.0)) def Darker(self, delta): diff --git a/wx/lib/agw/ribbon/art_msw.py b/wx/lib/agw/ribbon/art_msw.py index 950ee67d..dd8686a2 100644 --- a/wx/lib/agw/ribbon/art_msw.py +++ b/wx/lib/agw/ribbon/art_msw.py @@ -29,19 +29,18 @@ See Also """ import wx -import types from math import cos from math import pi as M_PI -import panel as PANEL -import page as PAGE +from . import panel as PANEL +from . import page as PAGE -from art_internal import RibbonLoadPixmap, RibbonInterpolateColour, RibbonDrawParallelGradientLines -from art_internal import RibbonCanLabelBreakAtPosition -from art_internal import RibbonHSLColour +from .art_internal import RibbonLoadPixmap, RibbonInterpolateColour, RibbonDrawParallelGradientLines +from .art_internal import RibbonCanLabelBreakAtPosition +from .art_internal import RibbonHSLColour -from art import * +from .art import * gallery_up_xpm = ["5 5 2 1", " c None", "x c #FF00FF", " ", " x ", " xxx ", "xxxxx", " "] @@ -77,10 +76,10 @@ class RibbonMSWArtProvider(object): self._button_bar_label_font = wx.NORMAL_FONT self._panel_label_font = wx.NORMAL_FONT - self._gallery_up_bitmap = [wx.NullBitmap for i in xrange(4)] - self._gallery_down_bitmap = [wx.NullBitmap for i in xrange(4)] - self._gallery_extension_bitmap = [wx.NullBitmap for i in xrange(4)] - self._panel_extension_bitmap = [wx.NullBitmap for i in xrange(2)] + self._gallery_up_bitmap = [wx.NullBitmap for i in range(4)] + self._gallery_down_bitmap = [wx.NullBitmap for i in range(4)] + self._gallery_extension_bitmap = [wx.NullBitmap for i in range(4)] + self._panel_extension_bitmap = [wx.NullBitmap for i in range(2)] if set_colour_scheme: self.SetColourScheme(wx.Colour(194, 216, 241), wx.Colour(255, 223, 114), wx.Colour(0, 0, 0)) @@ -290,12 +289,12 @@ class RibbonMSWArtProvider(object): def CloneTo(self, copy): - for i in xrange(4): + for i in range(4): copy._gallery_up_bitmap[i] = self._gallery_up_bitmap[i] copy._gallery_down_bitmap[i] = self._gallery_down_bitmap[i] copy._gallery_extension_bitmap[i] = self._gallery_extension_bitmap[i] - for i in xrange(2): + for i in range(2): copy._panel_extension_bitmap[i] = self._panel_extension_bitmap[i] copy._toolbar_drop_bitmap = self._toolbar_drop_bitmap @@ -979,7 +978,7 @@ class RibbonMSWArtProvider(object): dc.GradientFillLinear(background, self._tab_hover_background_colour, self._tab_hover_background_gradient_colour, wx.SOUTH) - border_points = [wx.Point() for i in xrange(6)] + border_points = [wx.Point() for i in range(6)] border_points[0] = wx.Point(1, tab.rect.height - 2) border_points[1] = wx.Point(1, 3) border_points[2] = wx.Point(3, 1) @@ -1094,13 +1093,13 @@ class RibbonMSWArtProvider(object): g3 = self._tab_separator_gradient_colour.Green() b3 = self._tab_separator_gradient_colour.Blue() - for i in xrange(rect.height-1): + for i in range(rect.height-1): p = float(i)/h - r = (p * r3 + (1.0 - p) * r2) * visibility + r1 - g = (p * g3 + (1.0 - p) * g2) * visibility + g1 - b = (p * b3 + (1.0 - p) * b2) * visibility + b1 + r = int((p * r3 + (1.0 - p) * r2) * visibility + r1) + g = int((p * g3 + (1.0 - p) * g2) * visibility + g1) + b = int((p * b3 + (1.0 - p) * b2) * visibility + b1) P = wx.Pen(wx.Colour(r, g, b)) dc.SetPen(P) @@ -1111,7 +1110,7 @@ class RibbonMSWArtProvider(object): def DrawPartialPageBackground(self, dc, wnd, rect, allow_hovered_or_page=True, offset=None, hovered=False): - if isinstance(allow_hovered_or_page, types.BooleanType): + if isinstance(allow_hovered_or_page, bool): self.DrawPartialPageBackground2(dc, wnd, rect, allow_hovered_or_page) else: self.DrawPartialPageBackground1(dc, wnd, rect, allow_hovered_or_page, offset, hovered) @@ -1226,7 +1225,7 @@ class RibbonMSWArtProvider(object): dc.GradientFillLinear(background, self._page_background_colour, self._page_background_gradient_colour, wx.SOUTH) - border_points = [wx.Point() for i in xrange(8)] + border_points = [wx.Point() for i in range(8)] border_points[0] = wx.Point(2, 0) border_points[1] = wx.Point(1, 1) border_points[2] = wx.Point(1, rect.height - 4) @@ -1306,7 +1305,7 @@ class RibbonMSWArtProvider(object): dc.GradientFillLinear(background, self._page_background_colour, self._page_background_gradient_colour, wx.SOUTH) - border_points = [wx.Point() for i in xrange(7)] + border_points = [wx.Point() for i in range(7)] result = style & RIBBON_SCROLL_BTN_DIRECTION_MASK if result == RIBBON_SCROLL_BTN_LEFT: @@ -1347,7 +1346,7 @@ class RibbonMSWArtProvider(object): dc.DrawLines(border_points, rect.x, rect.y) # NB: Code for handling hovered/active state is temporary - arrow_points = [wx.Point() for i in xrange(3)] + arrow_points = [wx.Point() for i in range(3)] result = style & RIBBON_SCROLL_BTN_DIRECTION_MASK if result == RIBBON_SCROLL_BTN_LEFT: @@ -1386,7 +1385,7 @@ class RibbonMSWArtProvider(object): def DrawDropdownArrow(self, dc, x, y, colour): - arrow_points = [wx.Point() for i in xrange(3)] + arrow_points = [wx.Point() for i in range(3)] brush = wx.Brush(colour) arrow_points[0] = wx.Point(1, 2) arrow_points[1] = arrow_points[0] + wx.Point(-3, -3) @@ -1470,7 +1469,7 @@ class RibbonMSWArtProvider(object): else: # Room for some characters and ... # Display as many characters as possible and append ... - for l in xrange(len(label)-1, 3, -1): + for l in range(len(label)-1, 3, -1): new_label = label[0:l] + "..." label_size = wx.Size(*dc.GetTextExtent(new_label)) if label_size.GetWidth() <= label_rect.GetWidth(): @@ -1515,7 +1514,7 @@ class RibbonMSWArtProvider(object): :param `rect`: The panel client rectangle. """ - true_rect = wx.Rect(*self.RemovePanelPadding(rect)) + true_rect = wx.Rect(self.RemovePanelPadding(rect)) true_rect = wx.Rect(true_rect.GetRight()-13, true_rect.GetBottom()-13, 13, 13) return true_rect @@ -1692,7 +1691,7 @@ class RibbonMSWArtProvider(object): def DrawPanelBorder(self, dc, rect, primary_colour, secondary_colour): - border_points = [wx.Point() for i in xrange(9)] + border_points = [wx.Point() for i in range(9)] border_points[0] = wx.Point(2, 0) border_points[1] = wx.Point(rect.width - 3, 0) border_points[2] = wx.Point(rect.width - 1, 2) @@ -1835,7 +1834,7 @@ class RibbonMSWArtProvider(object): dc.SetTextForeground(self._panel_minimised_label_colour) dc.DrawText(wnd.GetLabel(), xpos, ypos) - arrow_points = [wx.Point() for i in xrange(3)] + arrow_points = [wx.Point() for i in range(3)] if self._flags & RIBBON_BAR_FLOW_VERTICAL: xpos += label_width @@ -2006,7 +2005,7 @@ class RibbonMSWArtProvider(object): dc.GradientFillLinear(bg_rect, self._button_bar_hover_background_colour, self._button_bar_hover_background_gradient_colour, wx.SOUTH) - border_points = [wx.Point() for i in xrange(9)] + border_points = [wx.Point() for i in range(9)] border_points[0] = wx.Point(2, 0) border_points[1] = wx.Point(rect.width - 3, 0) border_points[2] = wx.Point(rect.width - 1, 2) @@ -2123,7 +2122,7 @@ class RibbonMSWArtProvider(object): """ dc.SetPen(self._toolbar_border_pen) - outline = [wx.Point() for i in xrange(9)] + outline = [wx.Point() for i in range(9)] outline[0] = wx.Point(2, 0) outline[1] = wx.Point(rect.width - 3, 0) outline[2] = wx.Point(rect.width - 1, 2) @@ -2574,7 +2573,7 @@ class RibbonMSWArtProvider(object): if result == RIBBON_BUTTONBAR_BUTTON_SMALL: # Small bitmap, no label - button_size = bitmap_size_small + wx.Size(6, 4) + button_size = wx.Size(bitmap_size_small + wx.Size(6, 4)) if kind in [RIBBON_BUTTON_NORMAL, RIBBON_BUTTON_TOGGLE]: normal_region = wx.Rect(0, 0, *button_size) @@ -2620,7 +2619,7 @@ class RibbonMSWArtProvider(object): if kind not in [RIBBON_BUTTON_NORMAL, RIBBON_BUTTON_TOGGLE]: last_line_extra_width += 8 - for i in xrange(0, len(label)): + for i in range(0, len(label)): if RibbonCanLabelBreakAtPosition(label, i): width = max(dc.GetTextExtent(label[0:i])[0], diff --git a/wx/lib/agw/ribbon/art_osx.py b/wx/lib/agw/ribbon/art_osx.py index 8a76e099..82873038 100644 --- a/wx/lib/agw/ribbon/art_osx.py +++ b/wx/lib/agw/ribbon/art_osx.py @@ -31,7 +31,7 @@ See Also """ import wx -from art_aui import RibbonAUIArtProvider +from .art_aui import RibbonAUIArtProvider class RibbonOSXArtProvider(RibbonAUIArtProvider): diff --git a/wx/lib/agw/ribbon/bar.py b/wx/lib/agw/ribbon/bar.py index c4af57a9..fa6e0b0c 100644 --- a/wx/lib/agw/ribbon/bar.py +++ b/wx/lib/agw/ribbon/bar.py @@ -9,7 +9,7 @@ # Python Code By: # # Andrea Gavana, @ 15 Oct 2009 -# Latest Revision: 19 Dec 2012, 21.00 GMT +# Latest Revision: 27 Dec 2012, 21.00 GMT # # For All Kind Of Problems, Requests Of Enhancements And Bug Reports, Please # Write To Me At: @@ -90,13 +90,14 @@ See Also import wx -import types -from control import RibbonControl +import wx.lib.six as six -from art_internal import RibbonPageTabInfo -from art_msw import RibbonMSWArtProvider -from art import * +from .control import RibbonControl + +from .art_internal import RibbonPageTabInfo +from .art_msw import RibbonMSWArtProvider +from .art import * wxEVT_COMMAND_RIBBONBAR_PAGE_CHANGED = wx.NewEventType() wxEVT_COMMAND_RIBBONBAR_PAGE_CHANGING = wx.NewEventType() @@ -589,7 +590,7 @@ class RibbonBar(RibbonControl): ribbon bar). """ - for i in xrange(len(self._pages)): + for i in range(len(self._pages)): if self._pages[i].page == page: return self.SetActivePageByIndex(i) @@ -599,7 +600,7 @@ class RibbonBar(RibbonControl): def SetActivePage(self, page): """ See comments on :meth:`~RibbonBar.SetActivePageByIndex` and :meth:`~RibbonBar.SetActivePageByPage`. """ - if isinstance(page, types.IntType): + if isinstance(page, six.integer_types): return self.SetActivePageByIndex(page) return self.SetActivePageByPage(page) @@ -871,7 +872,7 @@ class RibbonBar(RibbonControl): dc = wx.AutoBufferedPaintDC(self) - if not self.GetUpdateRegion().ContainsRect(wx.Rect(0, 0, self.GetClientSize().GetWidth(), self._tab_height)): + if not self.GetUpdateRegion().Contains(wx.Rect(0, 0, self.GetClientSize().GetWidth(), self._tab_height)): # Nothing to do in the tab area, and the page area is handled by the active page return @@ -910,7 +911,7 @@ class RibbonBar(RibbonControl): rect.width = self._art.GetMetric(RIBBON_ART_TAB_SEPARATION_SIZE) sep_visibility /= float(numtabs) - for i in xrange(0, numtabs-1): + for i in range(0, numtabs-1): info = self._pages[i] rect.x = info.rect.x + info.rect.width diff --git a/wx/lib/agw/ribbon/buttonbar.py b/wx/lib/agw/ribbon/buttonbar.py index 6afd5983..b1744e22 100644 --- a/wx/lib/agw/ribbon/buttonbar.py +++ b/wx/lib/agw/ribbon/buttonbar.py @@ -33,8 +33,10 @@ Event Name Description import wx -from control import RibbonControl -from art import * +import wx.lib.six as six + +from .control import RibbonControl +from .art import * wxEVT_COMMAND_RIBBONBUTTON_CLICKED = wx.NewEventType() wxEVT_COMMAND_RIBBONBUTTON_DROPDOWN_CLICKED = wx.NewEventType() @@ -72,7 +74,7 @@ class RibbonButtonBarButtonBase(object): self.bitmap_large_disabled = wx.NullBitmap self.bitmap_small = wx.NullBitmap self.bitmap_small_disabled = wx.NullBitmap - self.sizes = [RibbonButtonBarButtonSizeInfo() for i in xrange(3)] + self.sizes = [RibbonButtonBarButtonSizeInfo() for i in range(3)] self.client_data = None self.id = -1 self.kind = None @@ -98,7 +100,7 @@ class RibbonButtonBarButtonBase(object): def GetSmallerSize(self, size, n=1): - for i in xrange(n, 0, -1): + for i in range(n, 0, -1): if size == RIBBON_BUTTONBAR_BUTTON_LARGE: if self.sizes[RIBBON_BUTTONBAR_BUTTON_MEDIUM].is_supported: @@ -340,7 +342,7 @@ class RibbonButtonBar(RibbonControl): if not bitmap.IsOk() and not bitmap_small.IsOk(): raise Exception("Invalid main bitmap") - if not isinstance(help_string, basestring): + if not isinstance(help_string, six.string_types): raise Exception("Invalid help string parameter") if not self._buttons: @@ -858,7 +860,7 @@ class RibbonButtonBar(RibbonControl): layout_count = len(self._layouts) self._current_layout = layout_count - 1 - for layout_i in xrange(layout_count): + for layout_i in range(layout_count): layout_size = self._layouts[layout_i].overall_size if layout_size.x <= new_size.x and layout_size.y <= new_size.y: @@ -1092,7 +1094,7 @@ class RibbonButtonBar(RibbonControl): # it is only done when the first button is involved in a collapse. preserve_height = True - for btn_i in xrange(count, first_btn+1): + for btn_i in range(count, first_btn+1): instance = layout.buttons[btn_i] result, instance.size = instance.base.GetSmallerSize(instance.size) instance.position = wx.Point(*cursor) @@ -1100,7 +1102,7 @@ class RibbonButtonBar(RibbonControl): x_adjust = available_width - used_width - for btn_i in xrange(first_btn+1, btn_count): + for btn_i in range(first_btn+1, btn_count): instance = layout.buttons[btn_i] instance.position.x -= x_adjust diff --git a/wx/lib/agw/ribbon/gallery.py b/wx/lib/agw/ribbon/gallery.py index e6706611..5c508000 100644 --- a/wx/lib/agw/ribbon/gallery.py +++ b/wx/lib/agw/ribbon/gallery.py @@ -32,8 +32,8 @@ Event Name Description import wx -from control import RibbonControl -from art import * +from .control import RibbonControl +from .art import * wxEVT_COMMAND_RIBBONGALLERY_HOVER_CHANGED = wx.NewEventType() wxEVT_COMMAND_RIBBONGALLERY_SELECTED = wx.NewEventType() diff --git a/wx/lib/agw/ribbon/page.py b/wx/lib/agw/ribbon/page.py index 53838c07..cb1cf1f9 100644 --- a/wx/lib/agw/ribbon/page.py +++ b/wx/lib/agw/ribbon/page.py @@ -14,10 +14,10 @@ See Also import wx -from control import RibbonControl -from panel import RibbonPanel +from .control import RibbonControl +from .panel import RibbonPanel -from art import * +from .art import * # As scroll buttons need to be rendered on top of a page's child windows, the # buttons themselves have to be proper child windows (rather than just painted @@ -30,6 +30,7 @@ from art import * def GetSizeInOrientation(size, orientation): + size = wx.Size(size) if orientation == wx.HORIZONTAL: return size.GetWidth() elif orientation == wx.VERTICAL: @@ -528,7 +529,7 @@ class RibbonPage(RibbonControl): if minor_axis_size < 0: minor_axis_size = 0 - for iteration in xrange(1, 3): + for iteration in range(1, 3): for child in self.GetChildren(): w, h = child.GetSize() diff --git a/wx/lib/agw/ribbon/panel.py b/wx/lib/agw/ribbon/panel.py index 3a4784b0..ee1d9a45 100644 --- a/wx/lib/agw/ribbon/panel.py +++ b/wx/lib/agw/ribbon/panel.py @@ -47,9 +47,9 @@ See Also import wx -from control import RibbonControl +from .control import RibbonControl -from art import * +from .art import * wxEVT_COMMAND_RIBBONPANEL_EXTBUTTON_ACTIVATED = wx.NewEventType() @@ -339,8 +339,8 @@ class RibbonPanel(RibbonControl): def RemoveChild(self, child): - child.Bind(wx.EVT_ENTER_WINDOW, None) - child.Bind(wx.EVT_LEAVE_WINDOW, None) + child.Unbind(wx.EVT_ENTER_WINDOW) + child.Unbind(wx.EVT_LEAVE_WINDOW) RibbonControl.RemoveChild(self, child) @@ -1090,9 +1090,9 @@ class RibbonPanel(RibbonControl): display_n = wx.Display.GetCount() - for display_i in xrange(display_n): + for display_i in range(display_n): display = wx.Display(display_i).GetGeometry() - if display.ContainsRect(expanded): + if display.Contains(expanded): return expanded elif display.Intersects(expanded): diff --git a/wx/lib/agw/ribbon/toolbar.py b/wx/lib/agw/ribbon/toolbar.py index 050e4eb8..1bc411fc 100644 --- a/wx/lib/agw/ribbon/toolbar.py +++ b/wx/lib/agw/ribbon/toolbar.py @@ -24,12 +24,11 @@ Event Name Description """ import wx -import sys -from control import RibbonControl -from panel import RibbonPanel +from .control import RibbonControl +from .panel import RibbonPanel -from art import * +from .art import * wxEVT_COMMAND_RIBBONTOOL_CLICKED = wx.NewEventType() wxEVT_COMMAND_RIBBONTOOL_DROPDOWN_CLICKED = wx.NewEventType() @@ -105,11 +104,11 @@ class RibbonToolBarEvent(wx.PyCommandEvent): group_count = len(self._bar._groups) tobreak = False - for g in xrange(group_count): + for g in range(group_count): group = self._bar._groups[g] tool_count = len(group.tools) - for t in xrange(tool_count): + for t in range(tool_count): tool = group.tools[t] if tool == self._bar._active_tool: pos = wx.Point(*group.position) @@ -441,7 +440,7 @@ class RibbonToolBar(RibbonControl): if pos < tool_count: new_group = self.InsertGroup(index+1) - for t in xrange(pos, tool_count): + for t in range(pos, tool_count): new_group.tools.append(group.tools[t]) group.tools = group.tools[0:pos] @@ -543,7 +542,7 @@ class RibbonToolBar(RibbonControl): next_group = self._groups[index+1] - for t in xrange(0, len(next_group.tools)): + for t in range(0, len(next_group.tools)): group.tools.append(next_group.tools[t]) self._groups.pop(index+1) @@ -882,7 +881,7 @@ class RibbonToolBar(RibbonControl): area = 0 tobreak = False - for nrows in xrange(self._nrows_max, self._nrows_min-1, -1): + for nrows in range(self._nrows_max, self._nrows_min-1, -1): size = wx.Size(*self._sizes[nrows - self._nrows_min]) original = wx.Size(*size) @@ -923,7 +922,7 @@ class RibbonToolBar(RibbonControl): area = 10000 tobreak = False - for nrows in xrange(self._nrows_min, self._nrows_max+1): + for nrows in range(self._nrows_min, self._nrows_max+1): size = wx.Size(*self._sizes[nrows - self._nrows_min]) original = wx.Size(*size) @@ -977,7 +976,7 @@ class RibbonToolBar(RibbonControl): self._nrows_max = nMax self._sizes = [] - self._sizes = [wx.Size(0, 0) for i in xrange(self._nrows_min, self._nrows_max + 1)] + self._sizes = [wx.Size(0, 0) for i in range(self._nrows_min, self._nrows_max + 1)] self.Realize() @@ -1033,11 +1032,11 @@ class RibbonToolBar(RibbonControl): # Calculate the minimum size for each possible number of rows sep = self._art.GetMetric(RIBBON_ART_TOOL_GROUP_SEPARATION_SIZE) smallest_area = 10000 - row_sizes = [wx.Size(0, 0) for i in xrange(self._nrows_max)] + row_sizes = [wx.Size(0, 0) for i in range(self._nrows_max)] major_axis = ((self._art.GetFlags() & RIBBON_BAR_FLOW_VERTICAL) and [wx.VERTICAL] or [wx.HORIZONTAL])[0] self.SetMinSize(wx.Size(0, 0)) - minSize = wx.Size(sys.maxint, sys.maxint) + minSize = wx.Size(10000, 10000) # See if we're sizing flexibly (i.e. wrapping), and set min size differently sizingFlexibly = False @@ -1051,17 +1050,17 @@ class RibbonToolBar(RibbonControl): if sizingFlexibly: major_axis = wx.HORIZONTAL - for nrows in xrange(self._nrows_min, self._nrows_max+1): + for nrows in range(self._nrows_min, self._nrows_max+1): - for r in xrange(nrows): + for r in range(nrows): row_sizes[r] = wx.Size(0, 0) - for g in xrange(group_count): + for g in range(group_count): group = self._groups[g] shortest_row = 0 - for r in xrange(1, nrows): + for r in range(1, nrows): if row_sizes[r].GetWidth() < row_sizes[shortest_row].GetWidth(): shortest_row = r @@ -1071,7 +1070,7 @@ class RibbonToolBar(RibbonControl): size = wx.Size(0, 0) - for r in xrange(nrows): + for r in range(nrows): if row_sizes[r].GetWidth() != 0: row_sizes[r].DecBy(sep, 0) if row_sizes[r].GetWidth() > size.GetWidth(): @@ -1135,7 +1134,7 @@ class RibbonToolBar(RibbonControl): if self._nrows_max != self._nrows_min: area = 0 - for i in xrange(self._nrows_max - self._nrows_min + 1): + for i in range(self._nrows_max - self._nrows_min + 1): if self._sizes[i].x <= size.x and self._sizes[i].y <= size.y and \ GetSizeInOrientation(self._sizes[i], major_axis) > area: area = GetSizeInOrientation(self._sizes[i], major_axis) @@ -1143,13 +1142,13 @@ class RibbonToolBar(RibbonControl): bestSize = wx.Size(*self._sizes[i]) # Assign groups to rows and calculate row widths - row_sizes = [wx.Size(0, 0) for i in xrange(row_count)] + row_sizes = [wx.Size(0, 0) for i in range(row_count)] sep = self._art.GetMetric(RIBBON_ART_TOOL_GROUP_SEPARATION_SIZE) group_count = len(self._groups) for group in self._groups: shortest_row = 0 - for r in xrange(1, row_count): + for r in range(1, row_count): if row_sizes[r].GetWidth() < row_sizes[shortest_row].GetWidth(): shortest_row = r @@ -1160,13 +1159,13 @@ class RibbonToolBar(RibbonControl): # Calculate row positions total_height = 0 - for r in xrange(row_count): + for r in range(row_count): total_height += row_sizes[r].GetHeight() rowsep = (size.GetHeight() - total_height) / (row_count + 1) rowypos = [0]*row_count rowypos[0] = rowsep - for r in xrange(1, row_count): + for r in range(1, row_count): rowypos[r] = rowypos[r - 1] + row_sizes[r - 1].GetHeight() + rowsep # Set group y positions @@ -1193,7 +1192,7 @@ class RibbonToolBar(RibbonControl): if self._nrows_max != self._nrows_min: area = 0 - for i in xrange(self._nrows_max - self._nrows_min + 1): + for i in range(self._nrows_max - self._nrows_min + 1): if self._sizes[i].x <= size.x and self._sizes[i].y <= size.y and \ GetSizeInOrientation(self._sizes[i], major_axis) > area: diff --git a/wx/lib/agw/shortcuteditor.py b/wx/lib/agw/shortcuteditor.py index dbcd40e6..64699042 100644 --- a/wx/lib/agw/shortcuteditor.py +++ b/wx/lib/agw/shortcuteditor.py @@ -3,7 +3,7 @@ # Inspired By the GIMP Shortcut Editor. # # Andrea Gavana, @ 05 March 2012 -# Latest Revision: 19 Dec 2012, 21.00 GMT +# Latest Revision: 27 Dec 2012, 21.00 GMT # # # TODO List @@ -287,7 +287,7 @@ License And Version :class:`ShortcutEditor` is distributed under the wxPython license. -Latest Revision: Andrea Gavana @ 18 Dec 2012, 21.00 GMT +Latest Revision: Andrea Gavana @ 27 Dec 2012, 21.00 GMT Version 0.1 @@ -309,8 +309,8 @@ from wx.lib.embeddedimage import PyEmbeddedImage from wx.lib.mixins import treemixin # AGW stuff -import hypertreelist as HTL -import genericmessagedialog as GMD +from . import hypertreelist as HTL +from . import genericmessagedialog as GMD # add support for I18N _ = wx.GetTranslation @@ -980,25 +980,25 @@ class HTMLHelpWindow(wx.Frame): w, h = _html_reload.GetBitmap().GetWidth(), _html_reload.GetBitmap().GetHeight() toolbar.SetToolBitmapSize((w, h)) - toolbar.AddLabelTool(wx.ID_BACKWARD, _('Back'), _html_back.GetBitmap(), shortHelp=_('Back'), - longHelp=_('Go to the previous page')) + toolbar.AddTool(wx.ID_BACKWARD, _('Back'), _html_back.GetBitmap(), wx.NullBitmap, shortHelpString=_('Back'), + longHelpString=_('Go to the previous page')) - toolbar.AddLabelTool(wx.ID_FORWARD, _('Forward'), _html_forward.GetBitmap(), shortHelp=_('Forward'), - longHelp=_('Go to the next page')) + toolbar.AddTool(wx.ID_FORWARD, _('Forward'), _html_forward.GetBitmap(), wx.NullBitmap, shortHelpString=_('Forward'), + longHelpString=_('Go to the next page')) toolbar.AddSeparator() - toolbar.AddLabelTool(wx.ID_HOME, _('Home'), _html_home.GetBitmap(), shortHelp=_('Home Page'), - longHelp=_('Go to the home page')) + toolbar.AddTool(wx.ID_HOME, _('Home'), _html_home.GetBitmap(), wx.NullBitmap, shortHelpString=_('Home Page'), + longHelpString=_('Go to the home page')) - toolbar.AddLabelTool(wx.ID_REFRESH, _('Refresh'), _html_reload.GetBitmap(), shortHelp=_('Refresh'), - longHelp=_('Refresh the current page')) + toolbar.AddTool(wx.ID_REFRESH, _('Refresh'), _html_reload.GetBitmap(), wx.NullBitmap, shortHelpString=_('Refresh'), + longHelpString=_('Refresh the current page')) toolbar.AddSeparator() toolbar.AddStretchableSpace() - toolbar.AddLabelTool(wx.ID_PRINT, _('Print'), _html_print.GetBitmap(), shortHelp=_('Print'), - longHelp=_('Print the current page')) + toolbar.AddTool(wx.ID_PRINT, _('Print'), _html_print.GetBitmap(), wx.NullBitmap, shortHelpString=_('Print'), + longHelpString=_('Print the current page')) toolbar.Realize() @@ -1360,7 +1360,7 @@ class Shortcut(object): return None - def Match(self, filter=u'', item=None): + def Match(self, filter='', item=None): """ Matches this :class:`Shortcut` label string against the `filter` input variable. @@ -1611,8 +1611,8 @@ class Shortcut(object): split = accelerator.split('+') modifiers, keyCode = split[0:-1], split[-1] - inv_Accel = dict(zip(ACCELERATORS.values(), ACCELERATORS.keys())) - inv_KeyMap = dict(zip(KEYMAP.values(), KEYMAP.keys())) + inv_Accel = dict(list(zip(list(ACCELERATORS.values()), list(ACCELERATORS.keys())))) + inv_KeyMap = dict(list(zip(list(KEYMAP.values()), list(KEYMAP.keys())))) base = wx.ACCEL_NORMAL @@ -1704,7 +1704,7 @@ class ListShortcut(HTL.HyperTreeList, treemixin.ExpansionState): self.selectedItem = None self.hookBound = False - self.filter = u'' + self.filter = '' self.expansionState = [] self.Bind(wx.EVT_TREE_SEL_CHANGED, self.OnSelChanged) @@ -2129,7 +2129,7 @@ class ListShortcut(HTL.HyperTreeList, treemixin.ExpansionState): textCtrl.Hide() - def SetFilter(self, filter=u''): + def SetFilter(self, filter=''): """ Sets the `filter` string against all the shortcuts in the :class:`ListShortcut` are matched. @@ -2148,7 +2148,7 @@ class ListShortcut(HTL.HyperTreeList, treemixin.ExpansionState): self.Freeze() self.DeleteAllItems() - self.AddRoot(u'') + self.AddRoot('') self.Populate() @@ -2336,7 +2336,7 @@ class ShortcutEditor(wx.Dialog): def MenuItemSearch(menu, item): - for menuItem in menu.GetMenuItems(): + for menuItem in list(menu.GetMenuItems()): label = menuItem.GetLabel() if not label: @@ -2465,7 +2465,7 @@ class ShortcutEditor(wx.Dialog): """ total_width = 0 - for col in xrange(self.listShortcut.GetColumnCount()): + for col in range(self.listShortcut.GetColumnCount()): self.listShortcut.SetColumnWidth(col, wx.LIST_AUTOSIZE) width = self.listShortcut.GetColumnWidth(col) @@ -2512,7 +2512,7 @@ class ShortcutEditor(wx.Dialog): :param `event`: an instance of :class:`CommandEvent`. """ - self.searchText.SetValue(u'') + self.searchText.SetValue('') def OnRestoreDefaults(self, event): diff --git a/wx/lib/agw/speedmeter.py b/wx/lib/agw/speedmeter.py index 5762b3e6..98026e01 100644 --- a/wx/lib/agw/speedmeter.py +++ b/wx/lib/agw/speedmeter.py @@ -3,7 +3,7 @@ # Python Code By: # # Andrea Gavana, @ 25 Sep 2005 -# Latest Revision: 19 Dec 2012, 21.00 GMT +# Latest Revision: 27 Dec 2012, 21.00 GMT # # # TODO List/Caveats @@ -184,7 +184,7 @@ License And Version :class:`SpeedMeter` is distributed under the wxPython license. -Latest revision: Andrea Gavana @ 19 Dec 2012, 21.00 GMT +Latest revision: Andrea Gavana @ 27 Dec 2012, 21.00 GMT Version 0.3 @@ -267,10 +267,10 @@ SM_DRAW_FANCY_TICKS = 1024 SM_MOUSE_TRACK = 1 """ Flag to allow the left/right click of the mouse to change the :class:`SpeedMeter` value interactively. """ -fontfamily = range(70, 78) +fontfamily = list(range(70, 78)) familyname = ["default", "decorative", "roman", "script", "swiss", "modern", "teletype"] -weights = range(90, 93) +weights = list(range(90, 93)) weightsname = ["normal", "light", "bold"] styles = [90, 93, 94] @@ -952,7 +952,7 @@ class SpeedMeter(BufferedWindow): spacing = (newinterval - oldinterval)/float(ticknum+1) - for tcount in xrange(ticknum): + for tcount in range(ticknum): if direction == "Advance": oldinterval = (oldinterval + spacing) - start stint = oldinterval @@ -1583,7 +1583,7 @@ class SpeedMeter(BufferedWindow): else: interval = intervals - indexes = range(len(intervals)) + indexes = list(range(len(intervals))) try: intersection = [ind for ind in indexes if interval[ind] <= current <= interval[ind+1]] except: diff --git a/wx/lib/agw/supertooltip.py b/wx/lib/agw/supertooltip.py index 526384be..9049f67c 100644 --- a/wx/lib/agw/supertooltip.py +++ b/wx/lib/agw/supertooltip.py @@ -2,7 +2,7 @@ # SUPERTOOLTIP wxPython IMPLEMENTATION # # Andrea Gavana, @ 07 October 2008 -# Latest Revision: 19 Dec 2012, 21.00 GMT +# Latest Revision: 27 Dec 2012, 21.00 GMT # # # TODO List @@ -120,7 +120,7 @@ License And Version :class:`SuperToolTip` is distributed under the wxPython license. -Latest Revision: Andrea Gavana @ 19 Dec 2012, 21.00 GMT +Latest Revision: Andrea Gavana @ 27 Dec 2012, 21.00 GMT Version 0.5 @@ -201,7 +201,7 @@ _colourSchemes = {"Beige": (wx.Colour(255,255,255), wx.Colour(242,242,223), wx.C def GetStyleKeys(): """ Returns the predefined styles keywords. """ - schemes = _colourSchemes.keys() + schemes = list(_colourSchemes.keys()) schemes.sort() return schemes diff --git a/wx/lib/agw/thumbnailctrl.py b/wx/lib/agw/thumbnailctrl.py index a337f567..2795df78 100644 --- a/wx/lib/agw/thumbnailctrl.py +++ b/wx/lib/agw/thumbnailctrl.py @@ -3,7 +3,7 @@ # Python Code By: # # Andrea Gavana And Peter Damoc, @ 12 Dec 2005 -# Latest Revision: 19 Dec 2012, 21.00 GMT +# Latest Revision: 27 Dec 2012, 21.00 GMT # # # TODO List/Caveats @@ -149,7 +149,7 @@ License And Version :class:`ThumbnailCtrl` is distributed under the wxPython license. -Latest revision: Andrea Gavana @ 19 Dec 2012, 21.00 GMT +Latest revision: Andrea Gavana @ 27 Dec 2012, 21.00 GMT Version 0.9 @@ -163,14 +163,18 @@ Version 0.9 import wx import os import time -import cStringIO import zlib -import thread +import wx.lib.six as six from math import pi from wx.lib.embeddedimage import PyEmbeddedImage +if six.PY3: + import _thread as thread +else: + import thread + #---------------------------------------------------------------------- # Get Default Icon/Data #---------------------------------------------------------------------- @@ -196,7 +200,7 @@ def GetMondrianBitmap(): def GetMondrianImage(): """ Returns a default image placeholder as a :class:`Image`. """ - stream = cStringIO.StringIO(GetMondrianData()) + stream = six.StringIO(GetMondrianData()) return wx.Image(stream) @@ -318,9 +322,9 @@ def getDataTR(): def getShadow(): """ Creates a shadow behind every thumbnail. """ - sh_tr = wx.Image(cStringIO.StringIO(getDataTR())).ConvertToBitmap() - sh_bl = wx.Image(cStringIO.StringIO(getDataBL())).ConvertToBitmap() - sh_sh = wx.Image(cStringIO.StringIO(getDataSH())).Rescale(500, 500, wx.IMAGE_QUALITY_HIGH) + sh_tr = wx.Image(six.StringIO(getDataTR())).ConvertToBitmap() + sh_bl = wx.Image(six.StringIO(getDataBL())).ConvertToBitmap() + sh_sh = wx.Image(six.StringIO(getDataSH())).Rescale(500, 500, wx.IMAGE_QUALITY_HIGH) return (sh_tr, sh_bl, sh_sh.ConvertToBitmap()) @@ -335,7 +339,7 @@ def opj(path): :param `path`: the path to convert. """ - strs = apply(os.path.join, tuple(path.split('/'))) + strs = os.path.join(*tuple(path.split('/'))) # HACK: on Linux, a leading / gets lost... if path.startswith('/'): strs = '/' + strs @@ -1705,7 +1709,7 @@ class ScrolledThumbnail(wx.ScrolledWindow): selectedfname = [] selecteditemid = [] - for ii in xrange(len(self._selectedarray)): + for ii in range(len(self._selectedarray)): selectedfname.append(self.GetSelectedItem(ii).GetFileName()) selecteditemid.append(self.GetSelectedItem(ii).GetId()) @@ -1713,8 +1717,8 @@ class ScrolledThumbnail(wx.ScrolledWindow): if len(selected) > 0: self._selectedarray = [] - for ii in xrange(len(self._items)): - for jj in xrange(len(selected)): + for ii in range(len(self._items)): + for jj in range(len(selected)): if self._items[ii].GetFileName() == selectedfname[jj] and \ self._items[ii].GetId() == selecteditemid[jj]: @@ -1783,7 +1787,7 @@ class ScrolledThumbnail(wx.ScrolledWindow): """ capHeight = 0 - for ii in xrange(begRow, begRow + count): + for ii in range(begRow, begRow + count): if ii < len(self._tCaptionHeight): capHeight = capHeight + self._tCaptionHeight[ii] @@ -1841,11 +1845,11 @@ class ScrolledThumbnail(wx.ScrolledWindow): self._tCaptionHeight = [] - for row in xrange(self._rows): + for row in range(self._rows): capHeight = 0 - for col in xrange(self._cols): + for col in range(self._cols): ii = row*self._cols + col @@ -2134,7 +2138,7 @@ class ScrolledThumbnail(wx.ScrolledWindow): row = -1 xwhite = self._tBorder - for ii in xrange(len(self._items)): + for ii in range(len(self._items)): col = ii%self._cols if col == 0: @@ -2222,7 +2226,7 @@ class ScrolledThumbnail(wx.ScrolledWindow): endindex = self._selected self._selectedarray = [] - for ii in xrange(begindex, endindex+1): + for ii in range(begindex, endindex+1): self._selectedarray.append(ii) update = True @@ -2319,7 +2323,7 @@ class ScrolledThumbnail(wx.ScrolledWindow): if self._dragging and event.Dragging() and len(self._selectedarray) > 0: files = wx.FileDataObject() - for ii in xrange(len(self._selectedarray)): + for ii in range(len(self._selectedarray)): files.AddFile(opj(self.GetSelectedItem(ii).GetFullFileName())) source = wx.DropSource(self) @@ -2393,7 +2397,7 @@ class ScrolledThumbnail(wx.ScrolledWindow): :param `event`: a :class:`ThumbnailEvent` event to be processed. """ - for ii in xrange(len(self._items)): + for ii in range(len(self._items)): if self._items[ii].GetFileName() == event.GetString(): self._items[ii].SetFilename(self._items[ii].GetFileName()) @@ -2449,7 +2453,7 @@ class ScrolledThumbnail(wx.ScrolledWindow): count = 0 selected = [] - for ii in xrange(len(self._items)): + for ii in range(len(self._items)): if self.IsSelected(ii): selected.append(self._items[ii]) @@ -2502,7 +2506,7 @@ class ScrolledThumbnail(wx.ScrolledWindow): wx.BeginBusyCursor() - for ii in xrange(len(self._items)): + for ii in range(len(self._items)): if self.IsSelected(ii): thumb = self._items[ii] files = self._items[ii].GetFullFileName() diff --git a/wx/lib/agw/toasterbox.py b/wx/lib/agw/toasterbox.py index f32fc84c..6ad8da0f 100644 --- a/wx/lib/agw/toasterbox.py +++ b/wx/lib/agw/toasterbox.py @@ -3,7 +3,7 @@ # Ported And Enhanced From wxWidgets Contribution (Aj Bommarito) By: # # Andrea Gavana, @ 16 September 2005 -# Latest Revision: 19 Dec 2012, 21.00 GMT +# Latest Revision: 27 Dec 2012, 21.00 GMT # # # TODO/Caveats List @@ -129,7 +129,7 @@ License And Version ToasterBox is distributed under the wxPython license. -Latest revision: Andrea Gavana @ 19 Dec 2012, 21.00 GMT +Latest revision: Andrea Gavana @ 27 Dec 2012, 21.00 GMT Version 0.3 @@ -392,9 +392,7 @@ class ToasterBox(wx.Timer): if colour is None: colour = wx.WHITE - if isinstance(colour, basestring): - colour = wx.Colour(colour) - + colour = wx.Colour(colour) self._backgroundcolour = colour self._tb.SetPopupBackgroundColour(self._backgroundcolour) @@ -412,9 +410,7 @@ class ToasterBox(wx.Timer): if colour is None: colour = wx.BLACK - if isinstance(colour, basestring): - colour = wx.Colour(colour) - + colour = wx.Colour(colour) self._foregroundcolour = colour @@ -465,8 +461,7 @@ class ToasterBox(wx.Timer): """ if bitmap is not None: - if isinstance(bitmap, basestring): - bitmap = wx.Bitmap(bitmap) + bitmap = wx.Bitmap(bitmap) self._bitmap = bitmap @@ -641,7 +636,7 @@ class ToasterBox(wx.Timer): current = self._popupposition[1] # loop through all the windows - for j in xrange(0, len(winlist)): + for j in range(0, len(winlist)): ourNewHeight = current - (j*self._popupsize[1] - 8) tmpTb = winlist[j] # reset where the object THINKS its supposed to be @@ -1087,7 +1082,7 @@ class ToasterBoxWindow(wx.Frame): self._currentStep += self._scrollStep - if self._currentStep not in range(self._start, self._stop, self._scrollStep): + if self._currentStep not in list(range(self._start, self._stop, self._scrollStep)): self._scrollTimer.Stop() self.Update() diff --git a/wx/lib/agw/ultimatelistctrl.py b/wx/lib/agw/ultimatelistctrl.py index c3b37814..67ccf51f 100644 --- a/wx/lib/agw/ultimatelistctrl.py +++ b/wx/lib/agw/ultimatelistctrl.py @@ -3,7 +3,7 @@ # Inspired by and heavily based on the wxWidgets C++ generic version of wxListCtrl. # # Andrea Gavana, @ 08 May 2009 -# Latest Revision: 26 Dec 2012, 21.00 GMT +# Latest Revision: 27 Dec 2012, 21.00 GMT # # # TODO List @@ -225,7 +225,7 @@ License And Version UltimateListCtrl is distributed under the wxPython license. -Latest Revision: Andrea Gavana @ 26 Dec 2012, 21.00 GMT +Latest Revision: Andrea Gavana @ 27 Dec 2012, 21.00 GMT Version 0.8 @@ -234,9 +234,9 @@ Version 0.8 import wx import math import bisect -import types import zlib -import cStringIO + +import wx.lib.six as six from wx.lib.expando import ExpandoTextCtrl @@ -552,7 +552,7 @@ IL_FIXED_SIZE = 0 IL_VARIABLE_SIZE = 1 # Python integers, to make long types to work with CreateListItem -INTEGER_TYPES = [types.IntType, types.LongType] +INTEGER_TYPES = six.integer_types # ---------------------------------------------------------------------------- @@ -568,9 +568,9 @@ def to_list(input): be done to `input`. """ - if isinstance(input, types.ListType): + if isinstance(input, list): return input - elif isinstance(input, types.IntType): + elif isinstance(input, INTEGER_TYPES): return [input] else: raise Exception("Invalid parameter passed to `to_list`: only integers and list are accepted.") @@ -654,7 +654,7 @@ def GetdragcursorBitmap(): def GetdragcursorImage(): """ Returns the drag and drop cursor image as a :class:`Image`. """ - stream = cStringIO.StringIO(GetdragcursorData()) + stream = six.StringIO(GetdragcursorData()) return wx.Image(stream) @@ -738,7 +738,7 @@ class PyImageList(object): bitmap.GetHeight() >= self._height: numImages = bitmap.GetWidth()/self._width - for subIndex in xrange(numImages): + for subIndex in range(numImages): rect = wx.Rect(self._width * subIndex, 0, self._width, self._height) tmpBmp = bitmap.GetSubBitmap(rect) self._images.append(tmpBmp) @@ -1043,11 +1043,11 @@ class SelectionStore(object): # TODO: it should be possible to optimize the searches a bit # knowing the possible range - for item in xrange(itemFrom): + for item in range(itemFrom): if item not in selOld: self._itemsSel.append(item) - for item in xrange(itemTo + 1, self._count): + for item in range(itemTo + 1, self._count): if item not in selOld: self._itemsSel.append(item) @@ -1070,7 +1070,7 @@ class SelectionStore(object): if start <= end: # delete all of them (from end to avoid changing indices) - for i in xrange(end, start-1, -1): + for i in range(end, start-1, -1): if itemsChanged: if len(itemsChanged) > MANY_ITEMS: # stop counting (see comment below) @@ -1088,7 +1088,7 @@ class SelectionStore(object): itemsChanged = [] # just add the items to the selection - for item in xrange(itemFrom, itemTo+1): + for item in range(itemFrom, itemTo+1): if self.SelectItem(item, select) and itemsChanged: itemsChanged.append(item) if len(itemsChanged) > MANY_ITEMS: @@ -1134,7 +1134,7 @@ class SelectionStore(object): # forget about all items whose indices are now invalid if the size # decreased if count < self._count: - for i in xrange(len(self._itemsSel), 0, -1): + for i in range(len(self._itemsSel), 0, -1): if self._itemsSel[i - 1] >= count: self._itemsSel.pop(i - 1) @@ -2288,7 +2288,7 @@ class CommandListEvent(wx.PyCommandEvent): :param `winid`: the event identifier. """ - if type(commandTypeOrEvent) == types.IntType: + if type(commandTypeOrEvent) in INTEGER_TYPES: wx.PyCommandEvent.__init__(self, commandTypeOrEvent, winid) @@ -2453,7 +2453,7 @@ class UltimateListEvent(CommandListEvent): CommandListEvent.__init__(self, commandTypeOrEvent, winid) - if type(commandTypeOrEvent) == types.IntType: + if type(commandTypeOrEvent) in INTEGER_TYPES: self.notify = wx.NotifyEvent(commandTypeOrEvent, winid) else: self.notify = wx.NotifyEvent(commandTypeOrEvent.GetEventType(), commandTypeOrEvent.GetId()) @@ -4082,7 +4082,7 @@ class UltimateListLineData(object): :param `num`: the initial number of items to store. """ - for i in xrange(num): + for i in range(num): self._items.append(UltimateListItemData(self._owner)) @@ -4775,7 +4775,7 @@ class UltimateListLineData(object): rf, gf, bf = 0, 0, 0 - for y in xrange(rect.y, rect.y + rect.height): + for y in range(rect.y, rect.y + rect.height): currCol = (r1 + rf, g1 + gf, b1 + bf) dc.SetBrush(wx.Brush(currCol, wx.SOLID)) dc.DrawRectangle(rect.x, y, rect.width, 1) @@ -4823,7 +4823,7 @@ class UltimateListLineData(object): rf, gf, bf = 0, 0, 0 - for x in xrange(rect.x, rect.x + rect.width): + for x in range(rect.x, rect.x + rect.width): currCol = (int(r1 + rf), int(g1 + gf), int(b1 + bf)) dc.SetBrush(wx.Brush(currCol, wx.SOLID)) dc.DrawRectangle(x, rect.y, 1, rect.height) @@ -4882,7 +4882,7 @@ class UltimateListLineData(object): rf, gf, bf = 0, 0, 0 dc.SetPen(wx.TRANSPARENT_PEN) - for y in xrange(filRect.y, filRect.y + filRect.height): + for y in range(filRect.y, filRect.y + filRect.height): currCol = (r1 + rf, g1 + gf, b1 + bf) dc.SetBrush(wx.Brush(currCol, wx.SOLID)) dc.DrawRectangle(filRect.x, y, filRect.width, 1) @@ -5102,7 +5102,7 @@ class UltimateListHeaderWindow(wx.Control): maxH = 0 numColumns = self._owner.GetColumnCount() dc = wx.ClientDC(self) - for i in xrange(numColumns): + for i in range(numColumns): if not self.IsColumnShown(i): continue @@ -5148,7 +5148,7 @@ class UltimateListHeaderWindow(wx.Control): virtual = self._owner.IsVirtual() isFooter = self._isFooter - for i in xrange(numColumns): + for i in range(numColumns): # Reset anything in the dc that a custom renderer might have changed dc.SetTextForeground(self.GetForegroundColour()) @@ -5440,7 +5440,7 @@ class UltimateListHeaderWindow(wx.Control): broken = False tipCol = -1 - for col in xrange(countCol): + for col in range(countCol): if not self.IsColumnShown(col): continue @@ -5499,7 +5499,7 @@ class UltimateListHeaderWindow(wx.Control): # record the selected state of the columns if event.LeftDown(): - for i in xrange(self._owner.GetColumnCount()): + for i in range(self._owner.GetColumnCount()): if not self.IsColumnShown(col): continue @@ -5586,7 +5586,7 @@ class UltimateListHeaderWindow(wx.Control): x = HEADER_OFFSET_X - for i in xrange(self._owner.GetColumnCount()): + for i in range(self._owner.GetColumnCount()): if not self.IsColumnShown(i): continue @@ -5680,7 +5680,7 @@ class UltimateListHeaderWindow(wx.Control): xOld = 0 - for i in xrange(self._owner.GetColumnCount()): + for i in range(self._owner.GetColumnCount()): if not self.IsColumnShown(i): continue @@ -5765,7 +5765,7 @@ class UltimateListTextCtrl(ExpandoTextCtrl): """ Control used for in-place edit. - This is a subclass of :class:`~lib.expando.ExpandoTextCtrl` as :class:`UltimateListCtrl` + This is a subclass of :class:`~lib.expando.ExpandoTextCtrl` as :class:`UltimateListCtrl` supports multiline text items. :note: To add a newline character in a multiline item, press ``Shift`` + ``Enter`` @@ -6395,7 +6395,7 @@ class UltimateListMainWindow(wx.ScrolledWindow): """ if (self.HasAGWFlag(ULC_REPORT) and self.HasAGWFlag(ULC_HAS_VARIABLE_ROW_HEIGHT) and not self.IsVirtual()) or force: - for l in xrange(self.GetItemCount()): + for l in range(self.GetItemCount()): line = self.GetLine(l) line.ResetDimensions() @@ -6528,7 +6528,7 @@ class UltimateListMainWindow(wx.ScrolledWindow): ld = self.GetDummyLine() countCol = self.GetColumnCount() - for col in xrange(countCol): + for col in range(countCol): ld.SetText(col, listctrl.OnGetItemText(line, col)) ld.SetToolTip(col, listctrl.OnGetItemToolTip(line, col)) ld.SetColour(col, listctrl.OnGetItemTextColour(line, col)) @@ -6657,7 +6657,7 @@ class UltimateListMainWindow(wx.ScrolledWindow): return lineY lineY = 0 - for l in xrange(line): + for l in range(line): lineY += self.GetLineHeight(l) lineItem.SetY(LINE_SPACING + lineY) @@ -6892,12 +6892,12 @@ class UltimateListMainWindow(wx.ScrolledWindow): else: # only a few items changed state, refresh only them - for n in xrange(len(linesChanged)): + for n in range(len(linesChanged)): self.RefreshLine(linesChanged[n]) else: # iterate over all items in non report view - for line in xrange(lineFrom, lineTo+1): + for line in range(lineFrom, lineTo+1): if self.HighlightLine(line, highlight): self.RefreshLine(line) @@ -6976,7 +6976,7 @@ class UltimateListMainWindow(wx.ScrolledWindow): else: # !report # TODO: this should be optimized... - for line in xrange(lineFrom, lineTo+1): + for line in range(lineFrom, lineTo+1): self.RefreshLine(line) @@ -7032,7 +7032,7 @@ class UltimateListMainWindow(wx.ScrolledWindow): if self.HasCurrent() and self._current >= fromm and self._current <= to: self.RefreshLine(self._current) - for line in xrange(fromm, to+1): + for line in range(fromm, to+1): # NB: the test works as expected even if self._current == -1 if line != self._current and self.IsHighlighted(line): self.RefreshLine(line) @@ -7106,7 +7106,7 @@ class UltimateListMainWindow(wx.ScrolledWindow): no_highlight = self.HasAGWFlag(ULC_NO_HIGHLIGHT) - for line in xrange(visibleFrom, visibleTo+1): + for line in range(visibleFrom, visibleTo+1): rectLine = self.GetLineRect(line) if not self.IsExposed(rectLine.x + xOrig, rectLine.y + yOrig, rectLine.width, rectLine.height): @@ -7130,7 +7130,7 @@ class UltimateListMainWindow(wx.ScrolledWindow): dc.SetPen(pen) dc.SetBrush(wx.TRANSPARENT_BRUSH) - for i in xrange(start, visibleTo+1): + for i in range(start, visibleTo+1): lineY = self.GetLineY(i) dc.DrawLine(0 - dev_x, lineY, clientSize.x - dev_x, lineY) @@ -7150,7 +7150,7 @@ class UltimateListMainWindow(wx.ScrolledWindow): x = firstItemRect.GetX() dc.SetPen(pen) dc.SetBrush(wx.TRANSPARENT_BRUSH) - for col in xrange(self.GetColumnCount()): + for col in range(self.GetColumnCount()): if not self.IsColumnShown(col): continue @@ -7167,7 +7167,7 @@ class UltimateListMainWindow(wx.ScrolledWindow): else: # !report - for i in xrange(self.GetItemCount()): + for i in range(self.GetItemCount()): self.GetLine(i).Draw(i, dc) if wx.Platform not in ["__WXMAC__", "__WXGTK__"]: @@ -7499,14 +7499,14 @@ class UltimateListMainWindow(wx.ScrolledWindow): else: return else: - for current in xrange(count): + for current in range(count): newItem, hitResult = self.HitTestLine(current, x, y) if hitResult: break else: # TODO: optimize it too! this is less simple than for report view but # enumerating all items is still not a way to do it!! - for current in xrange(count): + for current in range(count): newItem, hitResult = self.HitTestLine(current, x, y) if hitResult: break @@ -7757,7 +7757,7 @@ class UltimateListMainWindow(wx.ScrolledWindow): if not self.IsHighlighted(lineFrom): shift = 1 - for i in xrange(lineFrom+1, lineTo+1): + for i in range(lineFrom+1, lineTo+1): if self.IsHighlighted(i): self.HighlightLine(i, False) self.RefreshLine(i) @@ -8435,7 +8435,7 @@ class UltimateListMainWindow(wx.ScrolledWindow): self._normal_image_list = imageList self._normal_grayed_image_list = cls(width, height, True, 0) - for ii in xrange(imageList.GetImageCount()): + for ii in range(imageList.GetImageCount()): bmp = imageList.GetBitmap(ii) newbmp = MakeDisabledBitmap(bmp) self._normal_grayed_image_list.Add(newbmp) @@ -8448,7 +8448,7 @@ class UltimateListMainWindow(wx.ScrolledWindow): self._small_grayed_image_list = cls(width, height, True, 0) - for ii in xrange(imageList.GetImageCount()): + for ii in range(imageList.GetImageCount()): bmp = imageList.GetBitmap(ii) newbmp = MakeDisabledBitmap(bmp) self._small_grayed_image_list.Add(newbmp) @@ -8514,7 +8514,7 @@ class UltimateListMainWindow(wx.ScrolledWindow): sizex, sizey = imglist.GetSize(0) self._image_list_check = imglist - for ii in xrange(self._image_list_check.GetImageCount()): + for ii in range(self._image_list_check.GetImageCount()): bmp = self._image_list_check.GetBitmap(ii) newbmp = MakeDisabledBitmap(bmp) @@ -8693,7 +8693,7 @@ class UltimateListMainWindow(wx.ScrolledWindow): # if the cached column width isn't valid then recalculate it if self._aColWidths[col]._bNeedsUpdate: - for i in xrange(count): + for i in range(count): line = self.GetLine(i) itemData = line._items[col] @@ -8726,7 +8726,7 @@ class UltimateListMainWindow(wx.ScrolledWindow): if not self._headerWidth: count = self.GetColumnCount() - for col in xrange(count): + for col in range(count): if not self.IsColumnShown(col): continue @@ -8858,7 +8858,7 @@ class UltimateListMainWindow(wx.ScrolledWindow): elif state & ULC_STATE_SELECTED: count = self.GetItemCount() - for i in xrange(count): + for i in range(count): self.SetItemState(i, ULC_STATE_SELECTED, ULC_STATE_SELECTED) else: @@ -9068,7 +9068,7 @@ class UltimateListMainWindow(wx.ScrolledWindow): :note: This method is meaningful only for checkbox-like and radiobutton-like items. """ - for indx in xrange(self.GetItemCount()): + for indx in range(self.GetItemCount()): item = CreateListItem(indx, column) newItem = self.GetItem(item, column) self.CheckItem(newItem, not isChecked, False) @@ -9083,7 +9083,7 @@ class UltimateListMainWindow(wx.ScrolledWindow): :note: This method is meaningful only for checkbox-like and radiobutton-like items. """ - for indx in xrange(self.GetItemCount()): + for indx in range(self.GetItemCount()): item = CreateListItem(indx, column) newItem = self.GetItem(item, column) @@ -9494,7 +9494,7 @@ class UltimateListMainWindow(wx.ScrolledWindow): # non virtual controls as enumerating all lines is really slow... countSel = 0 count = self.GetItemCount() - for line in xrange(count): + for line in range(count): if self.GetLine(line).IsHighlighted(): countSel += 1 @@ -9523,7 +9523,7 @@ class UltimateListMainWindow(wx.ScrolledWindow): count = self.GetItemCount() if count: - for i in xrange(count): + for i in range(count): # we need logical, not physical, coordinates here, so use # GetLineRect() instead of GetItemRect() r = self.GetLineRect(i) @@ -9579,7 +9579,7 @@ class UltimateListMainWindow(wx.ScrolledWindow): if subItem < 0 or subItem >= self.GetColumnCount(): raise Exception("invalid subItem in GetSubItemRect") - for i in xrange(subItem): + for i in range(subItem): rect.x += self.GetColumnWidth(i) rect.width = self.GetColumnWidth(subItem) @@ -9710,7 +9710,7 @@ class UltimateListMainWindow(wx.ScrolledWindow): y = EXTRA_BORDER_Y widthMax = 0 - for i in xrange(count): + for i in range(count): line = self.GetLine(i) line.CalculateSize(dc, iconSpacing) @@ -9733,7 +9733,7 @@ class UltimateListMainWindow(wx.ScrolledWindow): # traverse the items again and tweak their sizes so that they are # all the same in a row - for i in xrange(count): + for i in range(count): line = self.GetLine(i) line._gi.ExtendWidth(widthMax) @@ -9753,7 +9753,7 @@ class UltimateListMainWindow(wx.ScrolledWindow): entireWidth = 0 - for tries in xrange(2): + for tries in range(2): entireWidth = 2*EXTRA_BORDER_X @@ -9770,7 +9770,7 @@ class UltimateListMainWindow(wx.ScrolledWindow): self._linesPerPage = 0 currentlyVisibleLines = 0 - for i in xrange(count): + for i in range(count): currentlyVisibleLines += 1 line = self.GetLine(i) @@ -9912,7 +9912,7 @@ class UltimateListMainWindow(wx.ScrolledWindow): # any will do return ret - for line in xrange(ret, maxI): + for line in range(ret, maxI): if state & ULC_STATE_FOCUSED and line == self._current: return line @@ -9956,7 +9956,7 @@ class UltimateListMainWindow(wx.ScrolledWindow): line = self.GetLine(lindex) item = UltimateListItem() - for i in xrange(len(self._columns)): + for i in range(len(self._columns)): itemData = line._items[i] item = itemData.GetItem(item) itemWidth = self.GetItemWidthWithImage(item) @@ -9999,7 +9999,7 @@ class UltimateListMainWindow(wx.ScrolledWindow): if not self.IsVirtual(): # update all the items - for i in xrange(len(self._lines)): + for i in range(len(self._lines)): line = self.GetLine(i) line._items.pop(col) @@ -10034,7 +10034,7 @@ class UltimateListMainWindow(wx.ScrolledWindow): if self.InReportView(): self.ResetVisibleLinesRange(True) - for i in xrange(len(self._aColWidths)): + for i in range(len(self._aColWidths)): self._aColWidths[i]._bNeedsUpdate = True for item in self._itemWithWindow[:]: @@ -10064,7 +10064,7 @@ class UltimateListMainWindow(wx.ScrolledWindow): self.DeleteAllItems() count = len(self._columns) - for n in xrange(count): + for n in range(count): self.DeleteColumn(0) self.RecalculatePositions() @@ -10112,7 +10112,7 @@ class UltimateListMainWindow(wx.ScrolledWindow): str_upper = string.upper() count = self.GetItemCount() - for i in xrange(start, count): + for i in range(start, count): line = self.GetLine(i) text = line.GetText(0) line_upper = text.upper() @@ -10140,7 +10140,7 @@ class UltimateListMainWindow(wx.ScrolledWindow): count = self.GetItemCount() - for i in xrange(start, count): + for i in range(start, count): line = self.GetLine(i) item = UltimateListItem() item = line.GetItem(0, item) @@ -10193,7 +10193,7 @@ class UltimateListMainWindow(wx.ScrolledWindow): if flags: return current, flags else: - for current in xrange(self._lineFrom, count): + for current in range(self._lineFrom, count): newItem, flags = self.HitTestLine(current, x, y) if flags: return current, flags @@ -10201,7 +10201,7 @@ class UltimateListMainWindow(wx.ScrolledWindow): else: # TODO: optimize it too! this is less simple than for report view but # enumerating all items is still not a way to do it!! - for current in xrange(count): + for current in range(count): newItem, flags = self.HitTestLine(current, x, y) if flags: return current, flags @@ -10301,7 +10301,7 @@ class UltimateListMainWindow(wx.ScrolledWindow): if not self.IsVirtual(): # update all the items - for i in xrange(len(self._lines)): + for i in range(len(self._lines)): line = self.GetLine(i) data = UltimateListItemData(self) if insert: @@ -10530,7 +10530,7 @@ class UltimateListMainWindow(wx.ScrolledWindow): view_x, view_y = self.GetViewStart() view_y *= SCROLL_UNIT_Y - for i in xrange(0, count): + for i in range(0, count): rc = self.GetLineY(i) if rc > view_y: self._lineFrom = i - 1 @@ -10542,7 +10542,7 @@ class UltimateListMainWindow(wx.ScrolledWindow): self._lineTo = self._lineFrom clientWidth, clientHeight = self.GetClientSize() - for i in xrange(self._lineFrom, count): + for i in range(self._lineFrom, count): rc = self.GetLineY(i) + self.GetLineHeight(i) if rc > view_y + clientHeight - 5: break @@ -11927,7 +11927,7 @@ class UltimateListCtrl(wx.Control): """ Deletes all the column in :class:`UltimateListCtrl`. """ count = len(self._mainWin._columns) - for n in xrange(count): + for n in range(count): self.DeleteColumn(0) return True @@ -13112,14 +13112,10 @@ class UltimateListCtrl(wx.Control): """ if entry: - if wx.USE_UNICODE: - cvtfunc = unicode - else: - cvtfunc = str pos = self.GetItemCount() - self.InsertStringItem(pos, cvtfunc(entry[0])) + self.InsertStringItem(pos, six.u(entry[0])) for i in range(1, len(entry)): - self.SetStringItem(pos, i, cvtfunc(entry[i])) + self.SetStringItem(pos, i, six.u(entry[i])) return pos @@ -13663,4 +13659,3 @@ class UltimateListCtrl(wx.Control): if self._footerWin: self._footerWin.Refresh() - diff --git a/wx/lib/agw/xlsgrid.py b/wx/lib/agw/xlsgrid.py index f747ab9f..6077c33f 100644 --- a/wx/lib/agw/xlsgrid.py +++ b/wx/lib/agw/xlsgrid.py @@ -2,7 +2,7 @@ # XLSGRID wxPython IMPLEMENTATION # # Andrea Gavana @ 08 Aug 2011 -# Latest Revision: 19 Dec 2012, 21.00 GMT +# Latest Revision: 27 Dec 2012, 21.00 GMT # # # TODO List @@ -226,7 +226,7 @@ License And Version :class:`XLSGrid` is distributed under the wxPython license. -Latest Revision: Andrea Gavana @ 19 Dec 2012, 21.00 GMT +Latest Revision: Andrea Gavana @ 27 Dec 2012, 21.00 GMT Version 0.4 @@ -249,10 +249,12 @@ import string import wx.grid as gridlib +import wx.lib.six as six + from wx.lib.embeddedimage import PyEmbeddedImage from wx.lib.wordwrap import wordwrap -import supertooltip as STT +from . import supertooltip as STT from math import pi, sin, cos from operator import attrgetter @@ -314,7 +316,7 @@ XF_FONT_FAMILY = {0: wx.SWISS, 1: wx.ROMAN, 2: wx.SWISS, # Unicode ordinals for Hebrew, Arabic and Syriac # I don't know if there are other RTL languages -RTL_UNICODE = range(1424, 1872) +RTL_UNICODE = list(range(1424, 1872)) # To guess text direction we exclude digits and punctuation USELESS_CHARS = string.punctuation + string.digits + " " @@ -436,8 +438,8 @@ def SplitThousands(s, tSep=',', dSep='.'): """ - if not isinstance(s, basestring): - s = unicode(s, "utf-8", "ignore") + if not isinstance(s, six.string_types): + s = six.u(s) cnt = 0 numChars = dSep + '0123456789' @@ -497,8 +499,8 @@ def ReadExcelCOM(filename, sheetname, rows, cols): try: workbook = Excel(filename, sheetname) - for i in xrange(1, rows+1): - for j in xrange(1, cols+1): + for i in range(1, rows+1): + for j in range(1, cols+1): texts[i-1][j-1] = workbook.GetText(i, j) comm_range = workbook.GetCommentsRange() @@ -834,7 +836,7 @@ class XLSText(object): value = representation%value except ValueError: # Fall back to string - value = unicode(value, "utf-8", "ignore") + value = six.u(value) if "#," in number_format: value = SplitThousands(value) @@ -1036,7 +1038,7 @@ class XLSRichText(XLSText): rich_text.append((len(value), rich_text[-1][1])) attributes = [] - for indx in xrange(len(rich_text)-1): + for indx in range(len(rich_text)-1): offset_start, index_start = rich_text[indx] offset_end, index_end = rich_text[indx+1] @@ -1417,7 +1419,7 @@ class XLSBorderFactory(object): borders = {} diagonals = border.diag_up, border.diag_down - for label, location in XF_BORDER_STYLES.items(): + for label, location in list(XF_BORDER_STYLES.items()): line_style = getattr(border, "%s_line_style"%label) colour_index = getattr(border, "%s_colour_index"%label) border_colour = book.colour_map[colour_index] @@ -1425,7 +1427,7 @@ class XLSBorderFactory(object): border_class = XLSBorder(location, line_style, border_colour, default_colour, diagonals) borders[location] = border_class - self.draw_priority = sorted(borders.values(), key=attrgetter('draw_priority')) + self.draw_priority = sorted(list(borders.values()), key=attrgetter('draw_priority')) def Draw(self, dc, rect): @@ -1936,9 +1938,9 @@ class XLSGrid(gridlib.Grid): self.cells = {} - for i in xrange(nrows): + for i in range(nrows): - for j in xrange(ncols): + for j in range(ncols): hyperlink = rich_text = None @@ -1955,7 +1957,7 @@ class XLSGrid(gridlib.Grid): row_height = sheet.default_row_height col_width = sheet.defcolwidth - for i in xrange(nrows): + for i in range(nrows): if i in sheet.rowinfo_map: current = sheet.rowinfo_map[i].height else: @@ -1964,7 +1966,7 @@ class XLSGrid(gridlib.Grid): row_height = int(round(float(default_height)*current/256.0)) self.SetRowSize(i, row_height) - for j in xrange(ncols): + for j in range(ncols): if j in sheet.colinfo_map: current = sheet.colinfo_map[j].width else: diff --git a/wx/lib/agw/zoombar.py b/wx/lib/agw/zoombar.py index 595e810f..ed3a01f0 100644 --- a/wx/lib/agw/zoombar.py +++ b/wx/lib/agw/zoombar.py @@ -114,6 +114,8 @@ Version 0.1 import wx import sys +import wx.lib.six as six + from wx.lib.embeddedimage import PyEmbeddedImage zoombackgrey = PyEmbeddedImage( @@ -354,7 +356,7 @@ class ZoomBarImage(object): self._oldHeight = 0 self._vCenter = 0 self._hCenter = 0 - self._oldInc = -sys.maxint + self._oldInc = -six.MAXSIZE self._isSeparator = False self._enabled = True @@ -797,7 +799,7 @@ class ZoomBar(wx.Control): nButton = self._buttons.index(toButton) # do any buttons on the right - for n in xrange(nButton + 1, len(self._buttons)): + for n in range(nButton + 1, len(self._buttons)): oButton = self._buttons[n] oButton._left = nRight @@ -813,7 +815,7 @@ class ZoomBar(wx.Control): # now to the left if nButton > 0: # only for 2nd and more - for n in xrange(nButton-1, -1, -1): + for n in range(nButton-1, -1, -1): oButton = self._buttons[n] oButton._left = nLeft - (oButton._width + 1) if self._showReflections: diff --git a/wx/lib/colourutils.py b/wx/lib/colourutils.py index 5ddcf1f3..f1413b98 100644 --- a/wx/lib/colourutils.py +++ b/wx/lib/colourutils.py @@ -59,9 +59,9 @@ def AdjustColour(color, percent, alpha=wx.ALPHA_OPAQUE): :returns: A new darkened/lightened :class:`Colour` with the alpha channel specified as input """ - + radj, gadj, badj = [ int(val * (abs(percent) / 100.)) - for val in color.Get() ] + for val in color.Get(includeAlpha=False) ] if percent < 0: radj, gadj, badj = [ val * -1 for val in [radj, gadj, badj] ] diff --git a/wx/lib/masked/maskededit.py b/wx/lib/masked/maskededit.py index b7e75bc8..3e19fbd6 100644 --- a/wx/lib/masked/maskededit.py +++ b/wx/lib/masked/maskededit.py @@ -828,7 +828,7 @@ WXK_CTRL_Z = (ord('Z')+1) - ord('A') nav = ( wx.WXK_BACK, wx.WXK_LEFT, wx.WXK_RIGHT, wx.WXK_UP, wx.WXK_DOWN, wx.WXK_TAB, - wx.WXK_HOME, wx.WXK_END, wx.WXK_RETURN, wx.WXK_PAGEUP, wx.WXK_, + wx.WXK_HOME, wx.WXK_END, wx.WXK_RETURN, wx.WXK_PAGEUP, wx.WXK_PAGEDOWN, wx.WXK_NUMPAD_LEFT, wx.WXK_NUMPAD_RIGHT, wx.WXK_NUMPAD_UP, wx.WXK_NUMPAD_DOWN, wx.WXK_NUMPAD_HOME, wx.WXK_NUMPAD_END, wx.WXK_NUMPAD_ENTER, wx.WXK_NUMPAD_PAGEUP, wx.WXK_NUMPAD_PAGEDOWN )