From 173d0796810bb65de9bdfdc6941d24a04628f6c2 Mon Sep 17 00:00:00 2001 From: Scott Talbert Date: Wed, 1 Dec 2021 14:19:00 -0500 Subject: [PATCH] Fix a bunch of Python 3.10 issues with pure-Python classes and demos In Python 3.10, a change[1] was implemented where extension functions that take integer arguments will no longer silently accept non-integer arguments (e.g., floats) that can only be converted to integers with a loss of precision. This PR fixes most of these issues in the pure-Python classes and demos by explicitly converting the parameters to int before passing them to wxWidgets. There is loss of precision, but this was happening before (automatically) anyway as most wxWidgets DeviceContext functions operate using integers. Additionally, the PR fixes a few sizing issues, mostly with SpinCtrls being too small on GTK3. This is an example of the relevant exception: Traceback (most recent call last): File "/usr/lib64/python3.10/site-packages/wx/lib/agw/pygauge.py", line 355, in OnPaint r.width = w TypeError: 'float' object cannot be interpreted as an integer Fixes #2038. [1] https://bugs.python.org/issue37999 --- demo/GridLabelRenderer.py | 4 - demo/Mask.py | 4 - demo/Overlay.py | 1 demo/PenAndBrushStyles.py | 2 demo/PopupWindow.py | 2 demo/PrintFramework.py | 2 demo/PropertyGrid.py | 2 demo/Sizers.py | 2 demo/UIActionSimulator.py | 2 demo/agw/AUI.py | 32 ++++----- demo/agw/MacLargeDemo.py | 4 - demo/agw/PeakMeter.py | 6 - demo/agw/PersistentControls.py | 2 demo/agw/RibbonBar.py | 2 demo/agw/SpeedMeter.py | 2 demo/agw/SuperToolTip.py | 3 demo/agw/ThumbDemoConfig.py | 1 demo/agw/UltimateReportDemo.py | 8 +- demo/agw/Windows7Explorer_Contents.py | 16 ++-- demo/agw/ZoomBar.py | 2 wx/lib/agw/advancedsplash.py | 2 wx/lib/agw/aui/auibook.py | 4 - wx/lib/agw/balloontip.py | 4 - wx/lib/agw/flatmenu.py | 62 +++++++++--------- wx/lib/agw/flatnotebook.py | 10 +- wx/lib/agw/floatspin.py | 2 wx/lib/agw/gradientbutton.py | 8 +- wx/lib/agw/hypertreelist.py | 2 wx/lib/agw/knobctrl.py | 12 +-- wx/lib/agw/labelbook.py | 32 ++++----- wx/lib/agw/peakmeter.py | 2 wx/lib/agw/pygauge.py | 4 - wx/lib/agw/ribbon/art_aui.py | 22 +++--- wx/lib/agw/ribbon/art_internal.py | 12 +-- wx/lib/agw/ribbon/art_msw.py | 88 ++++++++++++------------- wx/lib/agw/ribbon/bar.py | 4 - wx/lib/agw/ribbon/buttonbar.py | 6 - wx/lib/agw/ribbon/gallery.py | 8 +- wx/lib/agw/ribbon/panel.py | 16 ++-- wx/lib/agw/ribbon/toolbar.py | 2 wx/lib/agw/scrolledthumbnail.py | 24 +++--- wx/lib/agw/shapedbutton.py | 10 +- wx/lib/agw/speedmeter.py | 70 +++++++++++--------- wx/lib/agw/supertooltip.py | 20 ++--- wx/lib/agw/toasterbox.py | 4 - wx/lib/agw/ultimatelistctrl.py | 20 ++--- wx/lib/agw/xlsgrid.py | 4 - wx/lib/agw/zoombar.py | 10 +- wx/lib/analogclock/analogclock.py | 2 wx/lib/analogclock/helpers.py | 22 +++--- wx/lib/analogclock/setup.py | 6 - wx/lib/buttons.py | 10 +- wx/lib/colourchooser/pycolourchooser.py | 4 - wx/lib/colourchooser/pypalette.py | 2 wx/lib/floatcanvas/FCObjects.py | 8 +- wx/lib/gizmos/ledctrl.py | 8 +- wx/lib/imagebrowser.py | 4 - wx/lib/ogl/basic.py | 10 +- wx/lib/ogl/bmpshape.py | 2 wx/lib/ogl/composit.py | 4 - wx/lib/ogl/divided.py | 2 wx/lib/ogl/lines.py | 2 wx/lib/ogl/oglmisc.py | 4 - wx/lib/plot/examples/demo.py | 4 - wx/lib/plot/plotcanvas.py | 110 ++++++++++++++++---------------- wx/lib/plot/polyobjects.py | 22 +++--- wx/lib/popupctl.py | 2 wx/lib/scrolledpanel.py | 2 wx/lib/throbber.py | 6 - wx/lib/ticker.py | 4 - 70 files changed, 408 insertions(+), 395 deletions(-) --- a/demo/GridLabelRenderer.py +++ b/demo/GridLabelRenderer.py @@ -46,8 +46,8 @@ class MyCornerLabelRenderer(glr.GridLabe self._bmp = images.Smiles.GetBitmap() def Draw(self, grid, dc, rect, rc): - x = rect.left + (rect.width - self._bmp.GetWidth()) / 2 - y = rect.top + (rect.height - self._bmp.GetHeight()) / 2 + x = rect.left + (rect.width - self._bmp.GetWidth()) // 2 + y = rect.top + (rect.height - self._bmp.GetHeight()) // 2 dc.DrawBitmap(self._bmp, x, y, True) --- a/demo/Mask.py +++ b/demo/Mask.py @@ -90,9 +90,9 @@ class TestMaskWindow(wx.ScrolledWindow): for text, code in logicList: x,y = 120+150*(i%4), 20+100*(i/4) - dc.DrawText(text, x, y-20) + dc.DrawText(text, x, int(y-20)) mdc.SelectObject(self.bmp_withcolourmask) - dc.Blit(x,y, cx,cy, mdc, 0,0, code, True) + dc.Blit(x,int(y), cx,cy, mdc, 0,0, code, True) i = i + 1 --- a/demo/Overlay.py +++ b/demo/Overlay.py @@ -56,7 +56,6 @@ class TestPanel(wx.Panel): self.penstylesCombo.SetToolTip('Pen Style') self.overlayPenWidth = wx.SpinCtrl(self, -1, value='', - size=(75, -1), style=wx.SP_ARROW_KEYS, min=1, max=24, initial=1) self.overlayPenWidth.SetToolTip('Pen Width') --- a/demo/PenAndBrushStyles.py +++ b/demo/PenAndBrushStyles.py @@ -100,7 +100,7 @@ class PenPanel(BasePanel): dc.SetPen(pen) y = labelHeight + (height - labelHeight)/2 - dc.DrawLine(5, y, width-5, y) + dc.DrawLine(5, int(y), width-5, int(y)) class BrushPanel(BasePanel): --- a/demo/PopupWindow.py +++ b/demo/PopupWindow.py @@ -89,7 +89,7 @@ class TestTransientPopup(wx.PopupTransie "(or its first child) loses focus in \n" "any other way.") btn = wx.Button(panel, -1, "Press Me") - spin = wx.SpinCtrl(panel, -1, "Hello", size=(100,-1)) + spin = wx.SpinCtrl(panel, -1, "Hello") btn.Bind(wx.EVT_BUTTON, self.OnButton) sizer = wx.BoxSizer(wx.VERTICAL) --- a/demo/PrintFramework.py +++ b/demo/PrintFramework.py @@ -81,7 +81,7 @@ class MyPrintout(wx.Printout): #------------------------------------------- self.canvas.DoDrawing(dc, True) - dc.DrawText("Page: %d" % page, marginX/2, maxY-marginY) + dc.DrawText("Page: %d" % page, marginX//2, maxY-marginY) return True --- a/demo/PropertyGrid.py +++ b/demo/PropertyGrid.py @@ -150,7 +150,7 @@ class SizeProperty(wxpg.PGProperty): """ Utility convert arbitrary value to a real wx.Size. """ import collections - if isinstance(value, collections.Sequence) or hasattr(value, '__getitem__'): + if isinstance(value, collections.abc.Sequence) or hasattr(value, '__getitem__'): value = wx.Size(*value) return value --- a/demo/Sizers.py +++ b/demo/Sizers.py @@ -45,7 +45,7 @@ class SampleWindow(wx.Window): dc = wx.PaintDC(self) w,h = dc.GetTextExtent(self.text) dc.Clear() - dc.DrawText(self.text, (sz.width-w)/2, (sz.height-h)/2) + dc.DrawText(self.text, (sz.width-w)//2, (sz.height-h)//2) def OnSize(self, evt): self.Refresh() --- a/demo/UIActionSimulator.py +++ b/demo/UIActionSimulator.py @@ -88,7 +88,7 @@ class TestPanel(wx.Panel): def _setNextKeyEvent(self): evtType, key, modifiers, milli = self._playbackEvents.pop(0) - milli = max(milli/2, 1) # play back faster than it was recorded + milli = max(milli//2, 1) # play back faster than it was recorded print(evtType, key, modifiers, milli) wx.CallLater(milli, self._playbackKey, evtType, key, modifiers) --- a/demo/agw/AUI.py +++ b/demo/agw/AUI.py @@ -393,7 +393,7 @@ class SizeReportCtrl(wx.Control): dc.SetPen(wx.LIGHT_GREY_PEN) dc.DrawLine(0, 0, size.x, size.y) dc.DrawLine(0, size.y, size.x, 0) - dc.DrawText(s, (size.x-w)/2, (size.y-height*5)/2) + dc.DrawText(s, (size.x-w)//2, (size.y-height*5)//2) if self._mgr: @@ -401,19 +401,19 @@ class SizeReportCtrl(wx.Control): s = "Layer: %d"%pi.dock_layer w, h = dc.GetTextExtent(s) - dc.DrawText(s, (size.x-w)/2, ((size.y-(height*5))/2)+(height*1)) + dc.DrawText(s, (size.x-w)//2, ((size.y-(height*5))//2)+(height*1)) s = "Dock: %d Row: %d"%(pi.dock_direction, pi.dock_row) w, h = dc.GetTextExtent(s) - dc.DrawText(s, (size.x-w)/2, ((size.y-(height*5))/2)+(height*2)) + dc.DrawText(s, (size.x-w)//2, ((size.y-(height*5))//2)+(height*2)) s = "Position: %d"%pi.dock_pos w, h = dc.GetTextExtent(s) - dc.DrawText(s, (size.x-w)/2, ((size.y-(height*5))/2)+(height*3)) + dc.DrawText(s, (size.x-w)//2, ((size.y-(height*5))//2)+(height*3)) s = "Proportion: %d"%pi.dock_proportion w, h = dc.GetTextExtent(s) - dc.DrawText(s, (size.x-w)/2, ((size.y-(height*5))/2)+(height*4)) + dc.DrawText(s, (size.x-w)//2, ((size.y-(height*5))//2)+(height*4)) def OnEraseBackground(self, event): @@ -435,7 +435,7 @@ class SettingsPanel(wx.Panel): s1 = wx.BoxSizer(wx.HORIZONTAL) self._border_size = wx.SpinCtrl(self, ID_PaneBorderSize, "%d"%frame.GetDockArt().GetMetric(aui.AUI_DOCKART_PANE_BORDER_SIZE), - wx.DefaultPosition, wx.Size(50, 20), wx.SP_ARROW_KEYS, 0, 100, + wx.DefaultPosition, wx.DefaultSize, wx.SP_ARROW_KEYS, 0, 100, frame.GetDockArt().GetMetric(aui.AUI_DOCKART_PANE_BORDER_SIZE)) s1.Add((1, 1), 1, wx.EXPAND) s1.Add(wx.StaticText(self, -1, "Pane Border Size:")) @@ -445,7 +445,7 @@ class SettingsPanel(wx.Panel): s2 = wx.BoxSizer(wx.HORIZONTAL) self._sash_size = wx.SpinCtrl(self, ID_SashSize, "%d"%frame.GetDockArt().GetMetric(aui.AUI_DOCKART_SASH_SIZE), wx.DefaultPosition, - wx.Size(50, 20), wx.SP_ARROW_KEYS, 0, 100, frame.GetDockArt().GetMetric(aui.AUI_DOCKART_SASH_SIZE)) + wx.DefaultSize, wx.SP_ARROW_KEYS, 0, 100, frame.GetDockArt().GetMetric(aui.AUI_DOCKART_SASH_SIZE)) s2.Add((1, 1), 1, wx.EXPAND) s2.Add(wx.StaticText(self, -1, "Sash Size:")) s2.Add(self._sash_size) @@ -454,7 +454,7 @@ class SettingsPanel(wx.Panel): s3 = wx.BoxSizer(wx.HORIZONTAL) self._caption_size = wx.SpinCtrl(self, ID_CaptionSize, "%d"%frame.GetDockArt().GetMetric(aui.AUI_DOCKART_CAPTION_SIZE), - wx.DefaultPosition, wx.Size(50, 20), wx.SP_ARROW_KEYS, 0, 100, frame.GetDockArt().GetMetric(aui.AUI_DOCKART_CAPTION_SIZE)) + wx.DefaultPosition, wx.DefaultSize, wx.SP_ARROW_KEYS, 0, 100, frame.GetDockArt().GetMetric(aui.AUI_DOCKART_CAPTION_SIZE)) s3.Add((1, 1), 1, wx.EXPAND) s3.Add(wx.StaticText(self, -1, "Caption Size:")) s3.Add(self._caption_size) @@ -807,9 +807,9 @@ class ProgressGauge(wx.Window): # We take the percent way of the colour from colour -> white i = percent - r = colour.Red() + ((i*rd*100)/high)/100 - g = colour.Green() + ((i*gd*100)/high)/100 - b = colour.Blue() + ((i*bd*100)/high)/100 + r = colour.Red() + ((i*rd*100)//high)//100 + g = colour.Green() + ((i*gd*100)//high)//100 + b = colour.Blue() + ((i*bd*100)//high)//100 return wx.Colour(r, g, b) @@ -826,10 +826,10 @@ class ProgressGauge(wx.Window): x, y, width, height = clientRect x, width = self._pos, interval - gradientRect.SetHeight(gradientRect.GetHeight()/2) + gradientRect.SetHeight(gradientRect.GetHeight()//2) topStart, topEnd = self._topStartColour, self._topEndColour - rc1 = wx.Rect(x, y, width, height/2) + rc1 = wx.Rect(int(x), y, int(width), height//2) path1 = self.GetPath(gc, rc1, 8) br1 = gc.CreateLinearGradientBrush(x, y, x, y+height/2, topStart, topEnd) gc.SetBrush(br1) @@ -845,14 +845,14 @@ class ProgressGauge(wx.Window): bottomStart, bottomEnd = self._bottomStartColour, self._bottomEndColour - rc3 = wx.Rect(x, y+height/2, width, height/2) + rc3 = wx.Rect(int(x), y+height//2, int(width), height//2) path3 = self.GetPath(gc, rc3, 8) br3 = gc.CreateLinearGradientBrush(x, y+height/2, x, y+height, bottomStart, bottomEnd) gc.SetBrush(br3) gc.FillPath(path3) #draw main path4 = gc.CreatePath() - path4.AddRectangle(x, y+height/2, width, 8) + path4.AddRectangle(x, y+height//2, width, 8) path4.CloseSubpath() gc.SetBrush(br3) gc.FillPath(path4) @@ -2613,7 +2613,7 @@ class AuiFrame(wx.Frame): flex.Add(wx.TextCtrl(panel, -1, "", wx.DefaultPosition, wx.Size(100, -1)), 1, wx.ALL|wx.ALIGN_CENTRE, 5) flex.Add(wx.StaticText(panel, -1, "wxSpinCtrl:"), 0, wx.ALL|wx.ALIGN_CENTRE, 5) - flex.Add(wx.SpinCtrl(panel, -1, "5", wx.DefaultPosition, wx.Size(100, -1), + flex.Add(wx.SpinCtrl(panel, -1, "5", wx.DefaultPosition, wx.DefaultSize, wx.SP_ARROW_KEYS, 5, 50, 5), 0, wx.ALL|wx.ALIGN_CENTRE, 5) flex.Add((5, 5)) flex.Add((5, 5)) --- a/demo/agw/MacLargeDemo.py +++ b/demo/agw/MacLargeDemo.py @@ -223,12 +223,12 @@ class MacRenderer(object): mdc.SelectObject(wx.NullBitmap) # Center the progress bar vertically in the box supplied - y = y + (h - PIPE_HEIGHT)/2 + y = y + (h - PIPE_HEIGHT)//2 if percent == 0: middle = 0 else: - middle = (w * percent)/100 + middle = int((w * percent)/100) if w < 1: return --- a/demo/agw/PeakMeter.py +++ b/demo/agw/PeakMeter.py @@ -149,10 +149,10 @@ class PeakMeterCtrlDemo(wx.Panel): def OnStart(self, event): - self.timer.Start(1000/2) # 2 fps + self.timer.Start(1000//2) # 2 fps - self.vertPeak.Start(1000/18) # 18 fps - self.horzPeak.Start(1000/20) # 20 fps + self.vertPeak.Start(1000//18) # 18 fps + self.horzPeak.Start(1000//20) # 20 fps def OnStop(self, event): --- a/demo/agw/PersistentControls.py +++ b/demo/agw/PersistentControls.py @@ -234,7 +234,7 @@ class PersistentFrame1(wx.Frame): sizer_1.Add(label_1, 0, wx.ALL, 5) sizer_1.Add(combo, 0, wx.LEFT|wx.RIGHT, 5) sizer_1.Add((20, 20), 1) - box2.Add(sizer_1, 1, wx.EXPAND|wx.ALIGN_CENTER, 0) + box2.Add(sizer_1, 1, wx.EXPAND, 0) box2.Add((0, 0), 1, 1) otherPanel.SetSizer(box2) --- a/demo/agw/RibbonBar.py +++ b/demo/agw/RibbonBar.py @@ -799,7 +799,7 @@ class RibbonFrame(wx.Frame): (c.Blue() + 192) % 256) dc.SetTextForeground(foreground) - dc.DrawText(colour, (iWidth - size.GetWidth() + 1) / 2, (iHeight - size.GetHeight()) / 2) + dc.DrawText(colour, (iWidth - size.GetWidth() + 1) // 2, (iHeight - size.GetHeight()) // 2) dc.SelectObjectAsSource(wx.NullBitmap) item = gallery.Append(bitmap, wx.ID_ANY) --- a/demo/agw/SpeedMeter.py +++ b/demo/agw/SpeedMeter.py @@ -418,7 +418,7 @@ class SpeedMeterDemo(wx.Panel): bsizer3 = wx.BoxSizer(wx.VERTICAL) hsizer3 = wx.BoxSizer(wx.HORIZONTAL) - sc = wx.SpinCtrl(panel3, -1, size=(60,20)) + sc = wx.SpinCtrl(panel3, -1) sc.SetRange(1, 250) sc.SetValue(50) --- a/demo/agw/SuperToolTip.py +++ b/demo/agw/SuperToolTip.py @@ -43,7 +43,7 @@ class SuperToolTipDemo(wx.Frame): self.topColourPicker = wx.ColourPickerCtrl(self.mainPanel, colour=wx.WHITE) system = wx.SystemSettings.GetColour(wx.SYS_COLOUR_ACTIVECAPTION) r, g, b, a = system - self.middleColourPicker = wx.ColourPickerCtrl(self.mainPanel, colour=wx.Colour((255-r)/2, (255-g)/2, (255-b)/2)) + self.middleColourPicker = wx.ColourPickerCtrl(self.mainPanel, colour=wx.Colour((255-r)//2, (255-g)//2, (255-b)//2)) self.bottomColourPicker = wx.ColourPickerCtrl(self.mainPanel, colour=system) self.headerCheck = wx.CheckBox(self.mainPanel, -1, "Show Header") self.headerText = wx.TextCtrl(self.mainPanel, -1, "Merge And Center") @@ -233,7 +233,6 @@ class SuperToolTipDemo(wx.Frame): frameSizer.Add(self.mainPanel, 1, wx.EXPAND, 0) self.SetSizer(frameSizer) frameSizer.Layout() - frameSizer.Fit(self) self.Layout() wx.CallAfter(mainSizer.Layout) --- a/demo/agw/ThumbDemoConfig.py +++ b/demo/agw/ThumbDemoConfig.py @@ -4,6 +4,7 @@ import wx import os import images +import wx.lib.agw.scrolledthumbnail as TC from wx.lib.agw.scrolledthumbnail import (ScrolledThumbnail, Thumb, NativeImageHandler, --- a/demo/agw/UltimateReportDemo.py +++ b/demo/agw/UltimateReportDemo.py @@ -216,7 +216,7 @@ class UltimateRenderer_1(object): mdc.SetFont(wx.Font(8, wx.FONTFAMILY_SWISS, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_BOLD)) text = "%d Mb"%self.progressValue textWidth, dummy = mdc.GetTextExtent(text) - mdc.DrawText(text, rect.width/2 - textWidth/2, rect.height/2 - dummy/2) + mdc.DrawText(text, rect.width//2 - textWidth//2, rect.height//2 - dummy//2) dc.SetClippingRegion(rect.x, rect.y, rect.width, rect.height) dc.Blit(rect.x+3, rect.y, rect.width-6, rect.height, mdc, 0, 0) dc.DestroyClippingRegion() @@ -279,12 +279,12 @@ class UltimateRenderer_1(object): mdc.SelectObject(wx.NullBitmap) # Center the progress bar vertically in the box supplied - y = y + (h - PIPE_HEIGHT)/2 + y = y + (h - PIPE_HEIGHT)//2 if percent == 0: middle = 0 else: - middle = (w * percent)/100 + middle = (w * percent)//100 if middle == 0: # not started bitmap = self.REMAINING_BITMAP.GetSubBitmap((1, 0, w, PIPE_HEIGHT)) @@ -335,7 +335,7 @@ class UltimateRenderer_2(object): colours = [wx.RED, wx.WHITE, wx.GREEN, wx.Colour("SKY BLUE")] w, h = dc.GetTextExtent("Hg") x = rect.x + 1 - y = rect.y + rect.height/2 - h/2 + y = rect.y + rect.height//2 - h//2 for ch in self.text: dc.SetTextForeground(random.choice(colours)) --- a/demo/agw/Windows7Explorer_Contents.py +++ b/demo/agw/Windows7Explorer_Contents.py @@ -127,13 +127,13 @@ class FirstColumnRenderer(object): """Draw a custom progress bar using double buffering to prevent flicker""" bmpWidth, bmpHeight = self.icon.GetWidth(), self.icon.GetHeight() - dc.DrawIcon(self.icon, rect.x+5, rect.y+(rect.height-bmpHeight)/2) + dc.DrawIcon(self.icon, rect.x+5, rect.y+(rect.height-bmpHeight)//2) dc.SetFont(self.normalFont) textWidth, textHeight = dc.GetTextExtent(self.text) dc.SetTextForeground(wx.SystemSettings.GetColour(wx.SYS_COLOUR_BTNTEXT)) - dc.DrawText(self.text, rect.x+bmpWidth+10, rect.y+(rect.height - textHeight)/4) + dc.DrawText(self.text, rect.x+bmpWidth+10, rect.y+(rect.height - textHeight)//4) if not self.description: return @@ -144,10 +144,10 @@ class FirstColumnRenderer(object): textWidth, textHeight = dc.GetTextExtent("Type: " + self.description) dc.SetTextForeground(self.greyColour) - dc.DrawText("Type: ", rect.x+bmpWidth+10, rect.y+3*(rect.height - textHeight)/4) + dc.DrawText("Type: ", rect.x+bmpWidth+10, rect.y+3*(rect.height - textHeight)//4) dc.SetTextForeground(wx.BLACK) - dc.DrawText(self.description, rect.x+bmpWidth+dummy1+10, rect.y+3*(rect.height - textHeight)/4) + dc.DrawText(self.description, rect.x+bmpWidth+dummy1+10, rect.y+3*(rect.height - textHeight)//4) def GetLineHeight(self): @@ -207,10 +207,10 @@ class SecondColumnRenderer(object): textWidth, textHeight = dc.GetTextExtent("Date modified: " + date) dc.SetTextForeground(self.greyColour) - dc.DrawText("Date modified: ", rect.x+5, rect.y+(rect.height - textHeight)/4) + dc.DrawText("Date modified: ", rect.x+5, rect.y+(rect.height - textHeight)//4) dc.SetTextForeground(wx.BLACK) - dc.DrawText(date, rect.x+dummy1+5, rect.y+(rect.height - textHeight)/4) + dc.DrawText(date, rect.x+dummy1+5, rect.y+(rect.height - textHeight)//4) if not self.size: return @@ -218,10 +218,10 @@ class SecondColumnRenderer(object): dummy1, dummy2= dc.GetTextExtent("Size: ") dc.SetTextForeground(self.greyColour) - dc.DrawText("Size: ", rect.x+5, rect.y+3*(rect.height - textHeight)/4) + dc.DrawText("Size: ", rect.x+5, rect.y+3*(rect.height - textHeight)//4) dc.SetTextForeground(wx.BLACK) - dc.DrawText(self.size, rect.x+dummy1+5, rect.y+3*(rect.height - textHeight)/4) + dc.DrawText(self.size, rect.x+dummy1+5, rect.y+3*(rect.height - textHeight)//4) def GetLineHeight(self): --- a/demo/agw/ZoomBar.py +++ b/demo/agw/ZoomBar.py @@ -55,7 +55,7 @@ class TestPanel(wx.Panel): reflections = glob.glob(bitmapDir + "/*96Flip40.png") separatorImage = bitmapDir + "/separator.gif" - separatorReflection = bitmapDir + "/separatorFlip.png" + separatorReflection = bitmapDir + "/separatorflip.png" count = 0 for std, ref in zip(standard, reflections): --- a/wx/lib/agw/advancedsplash.py +++ b/wx/lib/agw/advancedsplash.py @@ -438,7 +438,7 @@ class AdvancedSplash(wx.Frame): if font is None: self._textfont = wx.Font(1, wx.FONTFAMILY_SWISS, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_BOLD, False) - self._textsize = 10.0 + self._textsize = 10 self._textfont.SetPointSize(self._textsize) else: self._textfont = font --- a/wx/lib/agw/aui/auibook.py +++ b/wx/lib/agw/aui/auibook.py @@ -3452,8 +3452,8 @@ class AuiNotebook(wx.Panel): # should happen around the middle if tab_ctrl_count < 2: new_split_size = self.GetClientSize() - new_split_size.x /= 2 - new_split_size.y /= 2 + new_split_size.x //= 2 + new_split_size.y //= 2 else: --- a/wx/lib/agw/balloontip.py +++ b/wx/lib/agw/balloontip.py @@ -615,7 +615,7 @@ class BalloonTip(object): if delay < 1: raise Exception("\nERROR: Delay Time For BalloonTip Creation Should Be Greater Than 1 ms") - self._startdelaytime = float(delay) + self._startdelaytime = int(delay) def GetStartDelay(self): @@ -640,7 +640,7 @@ class BalloonTip(object): if delay < 1: raise Exception("\nERROR: Delay Time For BalloonTip Destruction Should Be Greater Than 1 ms") - self._enddelaytime = float(delay) + self._enddelaytime = int(delay) def GetEndDelay(self): --- a/wx/lib/agw/flatmenu.py +++ b/wx/lib/agw/flatmenu.py @@ -736,8 +736,8 @@ class FMRenderer(object): """ dcsaver = DCSaver(dc) - sepRect1 = wx.Rect(xCoord + textX, yCoord + 1, sepWidth/2, 1) - sepRect2 = wx.Rect(xCoord + textX + sepWidth/2, yCoord + 1, sepWidth/2-1, 1) + sepRect1 = wx.Rect(xCoord + textX, yCoord + 1, sepWidth//2, 1) + sepRect2 = wx.Rect(xCoord + textX + sepWidth//2, yCoord + 1, sepWidth//2-1, 1) artMgr = ArtManager.Get() backColour = artMgr.GetMenuFaceColour() @@ -817,11 +817,11 @@ class FMRenderer(object): imgWidth = bmp.GetWidth() if imageMarginX == 0: - xx = rect.x + (leftMarginWidth - imgWidth)/2 + xx = rect.x + (leftMarginWidth - imgWidth)//2 else: - xx = rect.x + ((leftMarginWidth - rect.height) - imgWidth)/2 + rect.height + xx = rect.x + ((leftMarginWidth - rect.height) - imgWidth)//2 + rect.height - yy = rect.y + (rect.height - imgHeight)/2 + yy = rect.y + (rect.height - imgHeight)//2 dc.DrawBitmap(bmp, xx, yy, True) if item.GetKind() == wx.ITEM_CHECK: @@ -837,7 +837,7 @@ class FMRenderer(object): if not selected and self.highlightCheckAndRadio: self.DrawButton(dc, rr, ControlFocus) - dc.DrawBitmap(item._checkMarkBmp, rr.x + (rr.width - 16)/2, rr.y + (rr.height - 16)/2, True) + dc.DrawBitmap(item._checkMarkBmp, rr.x + (rr.width - 16)//2, rr.y + (rr.height - 16)//2, True) if item.GetKind() == wx.ITEM_RADIO: @@ -852,7 +852,7 @@ class FMRenderer(object): if not selected and self.highlightCheckAndRadio: self.DrawButton(dc, rr, ControlFocus) - dc.DrawBitmap(item._radioMarkBmp, rr.x + (rr.width - 16)/2, rr.y + (rr.height - 16)/2, True) + dc.DrawBitmap(item._radioMarkBmp, rr.x + (rr.width - 16)//2, rr.y + (rr.height - 16)//2, True) # Draw text - without accelerators text = item.GetLabel() @@ -890,7 +890,7 @@ class FMRenderer(object): w3, dummy = dc.GetTextExtent(text3) posx = xCoord + textX + borderXSize - posy = (itemHeight - h)/2 + yCoord + posy = (itemHeight - h)//2 + yCoord # Draw first part dc.DrawText(text1, posx, posy) @@ -912,7 +912,7 @@ class FMRenderer(object): else: w, h = dc.GetTextExtent(text) - dc.DrawText(text, xCoord + textX + borderXSize, (itemHeight - h)/2 + yCoord) + dc.DrawText(text, xCoord + textX + borderXSize, (itemHeight - h)//2 + yCoord) # Now draw accelerator @@ -920,7 +920,7 @@ class FMRenderer(object): if item.GetAccelString(): accelWidth, accelHeight = dc.GetTextExtent(item.GetAccelString()) - dc.DrawText(item.GetAccelString(), xCoord + rightMarginX - accelWidth, (itemHeight - accelHeight)/2 + yCoord) + dc.DrawText(item.GetAccelString(), xCoord + rightMarginX - accelWidth, (itemHeight - accelHeight)//2 + yCoord) # Check if this item has sub-menu - if it does, draw # right arrow on the right margin @@ -932,7 +932,7 @@ class FMRenderer(object): xx = xCoord + rightMarginX + borderXSize rr = wx.Rect(xx, rect.y + 1, rect.height-2, rect.height-2) - dc.DrawBitmap(rightArrowBmp, rr.x + 4, rr.y +(rr.height-16)/2, True) + dc.DrawBitmap(rightArrowBmp, rr.x + 4, rr.y +(rr.height-16)//2, True) def DrawMenuBarButton(self, dc, rect, state): @@ -1142,7 +1142,7 @@ class FMRenderer(object): # Get the menu item rect textWidth, textHeight = dc.GetTextExtent(fixedText) #rect = wx.Rect(posx+menubar._spacer/2, posy, textWidth, textHeight) - rect = wx.Rect(posx+padding/2, posy, textWidth, textHeight) + rect = wx.Rect(posx+padding//2, posy, textWidth, textHeight) # Can we draw more?? # the +DROP_DOWN_ARROW_WIDTH is the width of the drop down arrow @@ -1172,7 +1172,7 @@ class FMRenderer(object): dc.SetTextForeground(textColour) ww, hh = dc.GetTextExtent(labelOnly) - textOffset = (rect.width - ww) / 2 + textOffset = (rect.width - ww) // 2 if not menubar._isLCD and item.GetTextBitmap().IsOk() and not selected: dc.DrawBitmap(item.GetTextBitmap(), rect.x, rect.y, True) @@ -1505,8 +1505,8 @@ class FMRendererMSOffice2007(FMRenderer) baseColour = colour # Define the middle points - leftPt = wx.Point(rect.x, rect.y + (rect.height / 2)) - rightPt = wx.Point(rect.x + rect.width-1, rect.y + (rect.height / 2)) + leftPt = wx.Point(rect.x, rect.y + (rect.height // 2)) + rightPt = wx.Point(rect.x + rect.width-1, rect.y + (rect.height // 2)) # Define the top region top = wx.Rect((rect.GetLeft(), rect.GetTop()), rightPt) @@ -1572,11 +1572,11 @@ class FMRendererMSOffice2007(FMRenderer) factor = artMgr.GetMenuBgFactor() - leftPt1 = wx.Point(rect.x, rect.y + (rect.height / factor)) - leftPt2 = wx.Point(rect.x, rect.y + (rect.height / factor)*(factor-1)) + leftPt1 = wx.Point(rect.x, rect.y + (rect.height // factor)) + leftPt2 = wx.Point(rect.x, rect.y + (rect.height // factor)*(factor-1)) - rightPt1 = wx.Point(rect.x + rect.width, rect.y + (rect.height / factor)) - rightPt2 = wx.Point(rect.x + rect.width, rect.y + (rect.height / factor)*(factor-1)) + rightPt1 = wx.Point(rect.x + rect.width, rect.y + (rect.height // factor)) + rightPt2 = wx.Point(rect.x + rect.width, rect.y + (rect.height // factor)*(factor-1)) # Define the top region topReg = [wx.Point() for ii in range(7)] @@ -2707,7 +2707,7 @@ class FlatMenuBar(wx.Panel): elif tbItem.IsCustomControl(): control = tbItem.GetCustomControl() ctrlSize = control.GetSize() - ctrlPos = wx.Point(xx, rect.y + (rect.height - ctrlSize.y)/2) + ctrlPos = wx.Point(xx, rect.y + (rect.height - ctrlSize.y)//2) if control.GetPosition() != ctrlPos: control.SetPosition(ctrlPos) @@ -2727,9 +2727,9 @@ class FlatMenuBar(wx.Panel): # Draw the toolbar image if bmp.IsOk(): - x = xx - self._toolbarSpacer/2 + x = xx - self._toolbarSpacer//2 #y = rect.y + (rect.height - bmp.GetHeight())/2 - 1 - y = rect.y + self._toolbarMargin/2 + y = rect.y + self._toolbarMargin//2 buttonRect = wx.Rect(x, y, highlight_width, highlight_height) @@ -2745,8 +2745,8 @@ class FlatMenuBar(wx.Panel): else: self._tbButtons[i]._state = ControlNormal - imgx = buttonRect.x + (buttonRect.width - bmp.GetWidth())/2 - imgy = buttonRect.y + (buttonRect.height - bmp.GetHeight())/2 + imgx = buttonRect.x + (buttonRect.width - bmp.GetWidth())//2 + imgy = buttonRect.y + (buttonRect.height - bmp.GetHeight())//2 if self._tbButtons[i]._state == ControlFocus and not self._tbButtons[i]._tbItem.IsSelected(): @@ -2827,8 +2827,8 @@ class FlatMenuBar(wx.Panel): dropArrowBmp = self.GetRenderer()._bitmaps["arrow_down"] # Calc the image coordinates - xx = rect.x + (DROP_DOWN_ARROW_WIDTH - dropArrowBmp.GetWidth())/2 - yy = rect.y + (rect.height - dropArrowBmp.GetHeight())/2 + xx = rect.x + (DROP_DOWN_ARROW_WIDTH - dropArrowBmp.GetWidth())//2 + yy = rect.y + (rect.height - dropArrowBmp.GetHeight())//2 dc.DrawBitmap(dropArrowBmp, xx, yy + self._spacer, True) self._dropDownButtonState = state @@ -3269,8 +3269,8 @@ class FlatMenuBar(wx.Panel): # draw the bitmap over the highlight buttonRect = wx.Rect(*rect) - x = rect.x + (buttonRect.width - self._tbButtons[idx]._tbItem.GetBitmap().GetWidth())/2 - y = rect.y + (buttonRect.height - self._tbButtons[idx]._tbItem.GetBitmap().GetHeight())/2 + x = rect.x + (buttonRect.width - self._tbButtons[idx]._tbItem.GetBitmap().GetWidth())//2 + y = rect.y + (buttonRect.height - self._tbButtons[idx]._tbItem.GetBitmap().GetHeight())//2 if state == ControlFocus: @@ -3784,7 +3784,7 @@ class FlatMenuBar(wx.Panel): pn.Name("flat_menu_bar") pn.Caption("Menu Bar") pn.Top() - pn.MinSize(wx.Size(xx/2, self._barHeight)) + pn.MinSize(wx.Size(xx//2, self._barHeight)) pn.LeftDockable(False) pn.RightDockable(False) pn.ToolbarPane() @@ -3997,8 +3997,8 @@ class FlatMenuButton(object): """ rect = wx.Rect(self._pos, self._size) - xx = rect.x + (rect.width - self._normalBmp.GetWidth())/2 - yy = rect.y + (rect.height - self._normalBmp.GetHeight())/2 + xx = rect.x + (rect.width - self._normalBmp.GetWidth())//2 + yy = rect.y + (rect.height - self._normalBmp.GetHeight())//2 self._parent.GetRenderer().DrawScrollButton(dc, rect, self._state) dc.DrawBitmap(self._normalBmp, xx, yy, True) --- a/wx/lib/agw/flatnotebook.py +++ b/wx/lib/agw/flatnotebook.py @@ -858,9 +858,9 @@ def PaintStraightGradientBox(dc, rect, s for i in range(high+1): - r = startColour.Red() + ((i*rd*100)/high)/100 - g = startColour.Green() + ((i*gd*100)/high)/100 - b = startColour.Blue() + ((i*bd*100)/high)/100 + r = startColour.Red() + ((i*rd*100)//high)//100 + g = startColour.Green() + ((i*gd*100)//high)//100 + b = startColour.Blue() + ((i*bd*100)//high)//100 p = wx.Pen(wx.Colour(r, g, b)) dc.SetPen(p) @@ -2630,9 +2630,9 @@ class FNBRendererDefault(FNBRenderer): imageYCoord = (pc.HasAGWFlag(FNB_BOTTOM) and [6] or [8])[0] if hasImage: - textOffset = 2*pc._pParent._nPadding + 16 + shapePoints/2 + textOffset = 2*pc._pParent._nPadding + 16 + shapePoints//2 else: - textOffset = pc._pParent._nPadding + shapePoints/2 + textOffset = pc._pParent._nPadding + shapePoints//2 textOffset += 2 --- a/wx/lib/agw/floatspin.py +++ b/wx/lib/agw/floatspin.py @@ -336,7 +336,7 @@ class FloatSpin(wx.Control): """ def __init__(self, parent, id=wx.ID_ANY, pos=wx.DefaultPosition, - size=(95,-1), style=0, value=0.0, min_val=None, max_val=None, + size=wx.DefaultSize, style=0, value=0.0, min_val=None, max_val=None, increment=1.0, digits=-1, agwStyle=FS_LEFT, name="FloatSpin"): """ --- a/wx/lib/agw/gradientbutton.py +++ b/wx/lib/agw/gradientbutton.py @@ -412,14 +412,14 @@ class GradientButton(wx.Control): x, y, width, height = clientRect - gradientRect.SetHeight(gradientRect.GetHeight()/2 + ((capture==self and [1] or [0])[0])) + gradientRect.SetHeight(gradientRect.GetHeight()//2 + ((capture==self and [1] or [0])[0])) if capture != self: if self._mouseAction == HOVER: topStart, topEnd = self.LightColour(self._topStartColour, 10), self.LightColour(self._topEndColour, 10) else: topStart, topEnd = self._topStartColour, self._topEndColour - rc1 = wx.Rect(x, y, width, height/2) + rc1 = wx.Rect(x, y, width, height//2) path1 = self.GetPath(gc, rc1, 8) br1 = gc.CreateLinearGradientBrush(x, y, x, y+height/2, topStart, topEnd) gc.SetBrush(br1) @@ -448,7 +448,7 @@ class GradientButton(wx.Control): else: bottomStart, bottomEnd = self._bottomStartColour, self._bottomEndColour - rc3 = wx.Rect(x, y+height/2, width, height/2) + rc3 = wx.Rect(x, y+height//2, width, height//2) path3 = self.GetPath(gc, rc3, 8) br3 = gc.CreateLinearGradientBrush(x, y+height/2, x, y+height, bottomStart, bottomEnd) gc.SetBrush(br3) @@ -463,7 +463,7 @@ class GradientButton(wx.Control): shadowOffset = 0 else: - rc2 = wx.Rect(x+1, gradientRect.height/2, gradientRect.width, gradientRect.height) + rc2 = wx.Rect(x+1, gradientRect.height//2, gradientRect.width, gradientRect.height) path2 = self.GetPath(gc, rc2, 8) gc.SetPen(wx.Pen(self._pressedBottomColour)) gc.SetBrush(wx.Brush(self._pressedBottomColour)) --- a/wx/lib/agw/hypertreelist.py +++ b/wx/lib/agw/hypertreelist.py @@ -3381,7 +3381,7 @@ class TreeListMainWindow(CustomTreeCtrl) if not self.HasAGWFlag(wx.TR_NO_LINES) and children: last_child = children[-1] - Y1 = last_child.GetY() + last_child.GetHeight() / 2 + Y1 = last_child.GetY() + last_child.GetHeight() // 2 dc.DrawLine(x, oldY, x, Y1) return y, x_maincol --- a/wx/lib/agw/knobctrl.py +++ b/wx/lib/agw/knobctrl.py @@ -325,7 +325,7 @@ class BufferedWindow(wx.Window): memory.Clear() minradius = min(0.9*self.Width/2.0, 0.9*self.Height/2.0) - memory.DrawCircle(self.Width//2, self.Height//2, minradius) + memory.DrawCircle(self.Width//2, self.Height//2, int(minradius)) memory.SelectObject(wx.NullBitmap) self._region = wx.Region(self._Buffer, self.GetBackgroundColour()) self._minradius = minradius @@ -645,8 +645,8 @@ class KnobCtrl(BufferedWindow): dxi = math.cos(angle)*((width - xshift + tagLen - 6)/2.0 - tagLen) dyi = math.sin(angle)*((height - yshift + tagLen - 6)/2.0 - tagLen) - dc.DrawLine(width//2 - sxi, height//2 - syi, - width//2 - dxi, height//2 - dyi) + dc.DrawLine(int(width//2 - sxi), int(height//2 - syi), + int(width//2 - dxi), int(height//2 - dyi)) def DrawDiagonalGradient(self, dc, size): @@ -759,8 +759,8 @@ class KnobCtrl(BufferedWindow): p1 = wx.Pen(self.OffsetColour(pencolour, -70), 2) p2 = wx.Pen(self.OffsetColour(pencolour, 10), 1) - pt1 = wx.Point(cx-r*math.sqrt(2)/2.0, cy+r*math.sqrt(2)/2.0) - pt2 = wx.Point(cx+r*math.sqrt(2)/2.0, cy-r*math.sqrt(2)/2.0) + pt1 = wx.Point(int(cx-r*math.sqrt(2)/2.0), int(cy+r*math.sqrt(2)/2.0)) + pt2 = wx.Point(int(cx+r*math.sqrt(2)/2.0), int(cy-r*math.sqrt(2)/2.0)) dc.SetPen(p2) dc.DrawArc(pt1, pt2, (cx, cy)) @@ -779,7 +779,7 @@ class KnobCtrl(BufferedWindow): radius = 0.9*min(size.x, size.y)/2.0 dc.SetBrush(wx.TRANSPARENT_BRUSH) dc.SetPen(wx.Pen(self._boundingcolour)) - dc.DrawCircle(self.Width//2, self.Height//2, radius) + dc.DrawCircle(self.Width//2, self.Height//2, int(radius)) def CircleCoords(self, radius, angle, centerX, centerY): --- a/wx/lib/agw/labelbook.py +++ b/wx/lib/agw/labelbook.py @@ -1376,13 +1376,13 @@ class ImageContainer(ImageContainerBase) if bUseYcoord: - imgXcoord = self._nImgSize / 2 - imgYcoord = (style & INB_SHOW_ONLY_IMAGES and [pos + self._nImgSize / 2] or [pos + imgTopPadding])[0] + imgXcoord = self._nImgSize // 2 + imgYcoord = (style & INB_SHOW_ONLY_IMAGES and [pos + self._nImgSize // 2] or [pos + imgTopPadding])[0] else: - imgXcoord = pos + (rectWidth / 2) - (self._nImgSize / 2) - imgYcoord = (style & INB_SHOW_ONLY_IMAGES and [self._nImgSize / 2] or [imgTopPadding])[0] + imgXcoord = pos + (rectWidth // 2) - (self._nImgSize // 2) + imgYcoord = (style & INB_SHOW_ONLY_IMAGES and [self._nImgSize // 2] or [imgTopPadding])[0] self._ImageList.Draw(self._pagesInfoVec[i].GetImageIndex(), dc, imgXcoord, imgYcoord, @@ -1408,15 +1408,15 @@ class ImageContainer(ImageContainerBase) if bUseYcoord: - textOffsetX = ((rectWidth - textWidth) / 2 ) + textOffsetX = ((rectWidth - textWidth) // 2 ) textOffsetY = (not style & INB_SHOW_ONLY_TEXT and [pos + self._nImgSize + imgTopPadding + 3] or \ - [pos + ((self._nImgSize * 2 - textHeight) / 2 )])[0] + [pos + ((self._nImgSize * 2 - textHeight) // 2 )])[0] else: - textOffsetX = (rectWidth - textWidth) / 2 + pos + nTextPaddingLeft + textOffsetX = (rectWidth - textWidth) // 2 + pos + nTextPaddingLeft textOffsetY = (not style & INB_SHOW_ONLY_TEXT and [self._nImgSize + imgTopPadding + 3] or \ - [((self._nImgSize * 2 - textHeight) / 2 )])[0] + [((self._nImgSize * 2 - textHeight) // 2 )])[0] dc.SetTextForeground(wx.SystemSettings.GetColour(wx.SYS_COLOUR_WINDOWTEXT)) dc.DrawText(fixedText, textOffsetX, textOffsetY) @@ -1591,8 +1591,8 @@ class LabelContainer(ImageContainerBase) # Draw gradient in the background area startColour = self._coloursMap[INB_TAB_AREA_BACKGROUND_COLOUR] endColour = ArtManager.Get().LightColour(self._coloursMap[INB_TAB_AREA_BACKGROUND_COLOUR], 50) - ArtManager.Get().PaintStraightGradientBox(dc, wx.Rect(0, 0, size.x / 2, size.y), startColour, endColour, False) - ArtManager.Get().PaintStraightGradientBox(dc, wx.Rect(size.x / 2, 0, size.x / 2, size.y), endColour, startColour, False) + ArtManager.Get().PaintStraightGradientBox(dc, wx.Rect(0, 0, size.x // 2, size.y), startColour, endColour, False) + ArtManager.Get().PaintStraightGradientBox(dc, wx.Rect(size.x // 2, 0, size.x // 2, size.y), endColour, startColour, False) else: @@ -1638,7 +1638,7 @@ class LabelContainer(ImageContainerBase) if self.HasAGWFlag(INB_SHOW_ONLY_TEXT): font = wx.SystemSettings.GetFont(wx.SYS_DEFAULT_GUI_FONT) - font.SetPointSize(font.GetPointSize() * self.GetParent().GetFontSizeMultiple()) + font.SetPointSize(int(font.GetPointSize() * self.GetParent().GetFontSizeMultiple())) if self.GetParent().GetFontBold(): font.SetWeight(wx.FONTWEIGHT_BOLD) @@ -1954,7 +1954,7 @@ class LabelContainer(ImageContainerBase) # Redraw the text with underlined font underLinedFont = wx.SystemSettings.GetFont(wx.SYS_DEFAULT_GUI_FONT) - underLinedFont.SetPointSize(underLinedFont.GetPointSize() * self.GetParent().GetFontSizeMultiple()) + underLinedFont.SetPointSize(int(underLinedFont.GetPointSize() * self.GetParent().GetFontSizeMultiple())) if self.GetParent().GetFontBold(): underLinedFont.SetWeight(wx.FONTWEIGHT_BOLD) elif self.HasAGWFlag(INB_BOLD_TAB_SELECTION) and selected: @@ -2050,7 +2050,7 @@ class LabelContainer(ImageContainerBase) imgRect = wx.Rect(*rect) font = wx.SystemSettings.GetFont(wx.SYS_DEFAULT_GUI_FONT) - font.SetPointSize(font.GetPointSize() * self.GetParent().GetFontSizeMultiple()) + font.SetPointSize(int(font.GetPointSize() * self.GetParent().GetFontSizeMultiple())) if self.GetParent().GetFontBold(): font.SetWeight(wx.FONTWEIGHT_BOLD) @@ -2069,7 +2069,7 @@ class LabelContainer(ImageContainerBase) # Text bounding rectangle textRect.x += nPadding - textRect.y = rect.y + (rect.height - h)/2 + textRect.y = rect.y + (rect.height - h)//2 textRect.width = rect.width - 2 * nPadding if bmp.IsOk() and not self.HasAGWFlag(INB_SHOW_ONLY_TEXT): @@ -2086,7 +2086,7 @@ class LabelContainer(ImageContainerBase) imgRect.x += nPadding imgRect.width = bmp.GetWidth() - imgRect.y = rect.y + (rect.height - bmp.GetHeight())/2 + imgRect.y = rect.y + (rect.height - bmp.GetHeight())//2 imgRect.height = bmp.GetHeight() # Draw bounding rectangle @@ -2496,7 +2496,7 @@ class FlatBookBase(wx.Panel): dc = wx.MemoryDC() dc.SelectObject(wx.Bitmap(1, 1)) font = wx.SystemSettings.GetFont(wx.SYS_DEFAULT_GUI_FONT) - font.SetPointSize(font.GetPointSize()*self._fontSizeMultiple) + font.SetPointSize(int(font.GetPointSize()*self._fontSizeMultiple)) if self.GetFontBold() or agwStyle & INB_BOLD_TAB_SELECTION: font.SetWeight(wx.FONTWEIGHT_BOLD) dc.SetFont(font) --- a/wx/lib/agw/peakmeter.py +++ b/wx/lib/agw/peakmeter.py @@ -784,7 +784,7 @@ class PeakMeterCtrl(wx.Control): maxWidth = size.x*horzBands points = [wx.Point() for i in range(2)] points[0].y = rectPrev.GetTopRight().y - yDecal - points[0].x = rectPrev.GetBottomLeft().x + self._meterData[vert]._falloff*maxWidth/self._maxValue + points[0].x = rectPrev.GetBottomLeft().x + self._meterData[vert]._falloff*maxWidth//self._maxValue points[1].y = rectPrev.GetBottomLeft().y + yDecal points[1].x = points[0].x dc.SetPen(pen) --- a/wx/lib/agw/pygauge.py +++ b/wx/lib/agw/pygauge.py @@ -344,7 +344,7 @@ class PyGauge(wx.Window): c1,c2 = gradient w = rect.width * (float(self._valueSorted[i]) / self._range) r = copy.copy(rect) - r.width = w + r.width = int(w) dc.GradientFillLinear(r, c1, c2, wx.EAST) else: for i, colour in enumerate(self._barColourSorted): @@ -352,7 +352,7 @@ class PyGauge(wx.Window): dc.SetPen(wx.Pen(colour)) w = rect.width * (float(self._valueSorted[i]) / self._range) r = copy.copy(rect) - r.width = w + r.width = int(w) dc.DrawRectangle(r) --- a/wx/lib/agw/ribbon/art_aui.py +++ b/wx/lib/agw/ribbon/art_aui.py @@ -390,7 +390,7 @@ class RibbonAUIArtProvider(RibbonMSWArtP grad_rect = wx.Rect(*tab.rect) grad_rect.height -= 4 grad_rect.width -= 1 - grad_rect.height /= 2 + grad_rect.height //= 2 grad_rect.y = grad_rect.y + tab.rect.height - grad_rect.height - 1 dc.SetBrush(self._tab_active_top_background_brush) dc.DrawRectangle(tab.rect.x, tab.rect.y + 3, tab.rect.width - 1, grad_rect.y - tab.rect.y - 3) @@ -401,7 +401,7 @@ class RibbonAUIArtProvider(RibbonMSWArtP btm_rect = wx.Rect(*tab.rect) btm_rect.height -= 4 btm_rect.width -= 1 - btm_rect.height /= 2 + btm_rect.height //= 2 btm_rect.y = btm_rect.y + tab.rect.height - btm_rect.height - 1 dc.SetBrush(self._tab_hover_background_brush) dc.DrawRectangle(btm_rect.x, btm_rect.y, btm_rect.width, btm_rect.height) @@ -434,8 +434,8 @@ class RibbonAUIArtProvider(RibbonMSWArtP icon = tab.page.GetIcon() if self._flags & RIBBON_BAR_SHOW_PAGE_LABELS == 0: if icon.IsOk(): - x = tab.rect.x + (tab.rect.width - icon.GetWidth()) / 2 - dc.DrawBitmap(icon, x, tab.rect.y + 1 + (tab.rect.height - 1 - icon.GetHeight()) / 2, True) + x = tab.rect.x + (tab.rect.width - icon.GetWidth()) // 2 + dc.DrawBitmap(icon, x, tab.rect.y + 1 + (tab.rect.height - 1 - icon.GetHeight()) // 2, True) if self._flags & RIBBON_BAR_SHOW_PAGE_LABELS: label = tab.page.GetLabel() @@ -450,7 +450,7 @@ class RibbonAUIArtProvider(RibbonMSWArtP offset += icon.GetWidth() + 2 text_width, text_height = dc.GetTextExtent(label) - x = (tab.rect.width - 2 - text_width - offset) / 2 + x = (tab.rect.width - 2 - text_width - offset) // 2 if x > 8: x = 8 elif x < 1: @@ -458,7 +458,7 @@ class RibbonAUIArtProvider(RibbonMSWArtP width = tab.rect.width - x - 2 x += tab.rect.x + offset - y = tab.rect.y + (tab.rect.height - text_height) / 2 + y = tab.rect.y + (tab.rect.height - text_height) // 2 if icon.IsOk(): dc.DrawBitmap(icon, x - offset, tab.rect.y + (tab.rect.height - icon.GetHeight()) / 2, True) @@ -892,8 +892,8 @@ class RibbonAUIArtProvider(RibbonMSWArtP self._page_hover_background_gradient_colour, wx.SOUTH) if bitmap.IsOk(): - dc.DrawBitmap(bitmap, preview.x + (preview.width - bitmap.GetWidth()) / 2, - preview.y + (preview.height - bitmap.GetHeight()) / 2, True) + dc.DrawBitmap(bitmap, preview.x + (preview.width - bitmap.GetWidth()) // 2, + preview.y + (preview.height - bitmap.GetHeight()) // 2, True) def DrawPartialPanelBackground(self, dc, wnd, rect): @@ -1024,7 +1024,7 @@ class RibbonAUIArtProvider(RibbonMSWArtP dc.DrawRectangle(reduced_rect.x, reduced_rect.y, reduced_rect.width, reduced_rect.height) btn_bitmap = bitmaps[3] - dc.DrawBitmap(btn_bitmap, reduced_rect.x + reduced_rect.width / 2 - 2, (rect.y + rect.height / 2) - 2, True) + dc.DrawBitmap(btn_bitmap, reduced_rect.x + reduced_rect.width // 2 - 2, (rect.y + rect.height // 2) - 2, True) def DrawGalleryItemBackground(self, dc, wnd, rect, item): @@ -1277,7 +1277,7 @@ class RibbonAUIArtProvider(RibbonMSWArtP if is_split_hybrid: dc.DrawLine(rect.x + avail_width + 1, rect.y, rect.x + avail_width + 1, rect.y + rect.height) - dc.DrawBitmap(self._toolbar_drop_bitmap, bg_rect.x + avail_width + 2, bg_rect.y + (bg_rect.height / 2) - 2, True) + dc.DrawBitmap(self._toolbar_drop_bitmap, bg_rect.x + avail_width + 2, bg_rect.y + (bg_rect.height // 2) - 2, True) - dc.DrawBitmap(bitmap, bg_rect.x + (avail_width - bitmap.GetWidth()) / 2, bg_rect.y + (bg_rect.height - bitmap.GetHeight()) / 2, True) + dc.DrawBitmap(bitmap, bg_rect.x + (avail_width - bitmap.GetWidth()) // 2, bg_rect.y + (bg_rect.height - bitmap.GetHeight()) // 2, True) --- a/wx/lib/agw/ribbon/art_internal.py +++ b/wx/lib/agw/ribbon/art_internal.py @@ -32,9 +32,9 @@ def RibbonInterpolateColour(start_colour r = end_colour.Red() - start_colour.Red() g = end_colour.Green() - start_colour.Green() b = end_colour.Blue() - start_colour.Blue() - r = start_colour.Red() + (((r * position * 100) / end_position) / 100) - g = start_colour.Green() + (((g * position * 100) / end_position) / 100) - b = start_colour.Blue() + (((b * position * 100) / end_position) / 100) + r = start_colour.Red() + (((r * position * 100) // end_position) // 100) + g = start_colour.Green() + (((g * position * 100) // end_position) // 100) + b = start_colour.Blue() + (((b * position * 100) // end_position) // 100) return wx.Colour(r, g, b) @@ -61,9 +61,9 @@ def RibbonDrawParallelGradientLines(dc, bd = end_colour.Blue() - start_colour.Blue() 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) + 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) p = wx.Pen(wx.Colour(r, g, b)) dc.SetPen(p) --- a/wx/lib/agw/ribbon/art_msw.py +++ b/wx/lib/agw/ribbon/art_msw.py @@ -982,7 +982,7 @@ class RibbonMSWArtProvider(object): background.width -= 4 background.height -= 3 h = background.height - background.height /= 2 + background.height //= 2 dc.GradientFillLinear(background, self._tab_hover_background_top_colour, self._tab_hover_background_top_gradient_colour, wx.SOUTH) @@ -1024,9 +1024,9 @@ class RibbonMSWArtProvider(object): if icon.IsOk(): x = tab.rect.x + 4 if self._flags & RIBBON_BAR_SHOW_PAGE_LABELS == 0: - x = tab.rect.x + (tab.rect.width - icon.GetWidth()) / 2 + x = tab.rect.x + (tab.rect.width - icon.GetWidth()) // 2 - dc.DrawBitmap(icon, x, tab.rect.y + 1 + (tab.rect.height - 1 - icon.GetHeight()) / 2, True) + dc.DrawBitmap(icon, x, tab.rect.y + 1 + (tab.rect.height - 1 - icon.GetHeight()) // 2, True) if self._flags & RIBBON_BAR_SHOW_PAGE_LABELS: label = tab.page.GetLabel() @@ -1043,13 +1043,13 @@ class RibbonMSWArtProvider(object): x += 3 + tab.page.GetIcon().GetWidth() width -= 3 + tab.page.GetIcon().GetWidth() - y = tab.rect.y + (tab.rect.height - text_height) / 2 + y = tab.rect.y + (tab.rect.height - text_height) // 2 if width <= text_width: dc.SetClippingRegion(x, tab.rect.y, width, tab.rect.height) dc.DrawText(label, x, y) else: - dc.DrawText(label, x + (width - text_width) / 2 + 1, y) + dc.DrawText(label, x + (width - text_width) // 2 + 1, y) def DrawTabSeparator(self, dc, wnd, rect, visibility): @@ -1093,7 +1093,7 @@ class RibbonMSWArtProvider(object): dc = wx.MemoryDC(self._cached_tab_separator) self.DrawTabCtrlBackground(dc, wnd, rect) - x = rect.x + rect.width / 2 + x = rect.x + rect.width // 2 h = float(rect.height - 1) r1 = self._tab_ctrl_background_brush.GetColour().Red() * (1.0 - visibility) + 0.5 @@ -1146,7 +1146,7 @@ class RibbonMSWArtProvider(object): # upper_rect, lower_rect, paint_rect are all in page co-ordinates upper_rect = wx.Rect(*background) - upper_rect.height /= 5 + upper_rect.height //= 5 lower_rect = wx.Rect(*background) lower_rect.y += upper_rect.height @@ -1229,7 +1229,7 @@ class RibbonMSWArtProvider(object): background.width -= 4 background.height -= 2 - background.height /= 5 + background.height //= 5 dc.GradientFillLinear(background, self._page_background_top_colour, self._page_background_top_gradient_colour, wx.SOUTH) @@ -1493,10 +1493,10 @@ class RibbonMSWArtProvider(object): if clip_label: clip = wx.DCClipper(dc, label_rect) - dc.DrawText(label, label_rect.x, label_rect.y + (label_rect.GetHeight() - label_size.GetHeight()) / 2) + dc.DrawText(label, label_rect.x, label_rect.y + (label_rect.GetHeight() - label_size.GetHeight()) // 2) else: - dc.DrawText(label, label_rect.x + (label_rect.GetWidth() - label_size.GetWidth()) / 2, - label_rect.y + (label_rect.GetHeight() - label_size.GetHeight()) / 2) + dc.DrawText(label, label_rect.x + (label_rect.GetWidth() - label_size.GetWidth()) // 2, + label_rect.y + (label_rect.GetHeight() - label_size.GetHeight()) // 2) if has_ext_button: if wnd.IsExtButtonHovered(): @@ -1577,7 +1577,7 @@ class RibbonMSWArtProvider(object): # Divider between items and buttons dc.DrawLine(rect.x, rect.y + rect.height - 15, rect.x + rect.width, rect.y + rect.height - 15) - up_btn = wx.Rect(rect.x, rect.y + rect.height - 15, rect.width / 3, 15) + up_btn = wx.Rect(rect.x, rect.y + rect.height - 15, rect.width // 3, 15) down_btn = wx.Rect(up_btn.GetRight() + 1, up_btn.GetTop(), up_btn.GetWidth(), up_btn.GetHeight()) dc.DrawLine(down_btn.GetLeft(), down_btn.GetTop(), down_btn.GetLeft(), down_btn.GetBottom()) ext_btn = wx.Rect(down_btn.GetRight() + 1, up_btn.GetTop(), rect.width - up_btn.GetWidth() - down_btn.GetWidth() - 1, up_btn.GetHeight()) @@ -1587,7 +1587,7 @@ class RibbonMSWArtProvider(object): # Divider between items and buttons dc.DrawLine(rect.x + rect.width - 15, rect.y, rect.x + rect.width - 15, rect.y + rect.height) - up_btn = wx.Rect(rect.x + rect.width - 15, rect.y, 15, rect.height / 3) + up_btn = wx.Rect(rect.x + rect.width - 15, rect.y, 15, rect.height // 3) down_btn = wx.Rect(up_btn.GetLeft(), up_btn.GetBottom() + 1, up_btn.GetWidth(), up_btn.GetHeight()) dc.DrawLine(down_btn.GetLeft(), down_btn.GetTop(), down_btn.GetRight(), down_btn.GetTop()) ext_btn = wx.Rect(up_btn.GetLeft(), down_btn.GetBottom() + 1, up_btn.GetWidth(), rect.height - up_btn.GetHeight() - down_btn.GetHeight() - 1) @@ -1633,14 +1633,14 @@ class RibbonMSWArtProvider(object): dc.SetPen(wx.TRANSPARENT_PEN) dc.SetBrush(btn_top_brush) - dc.DrawRectangle(rect.x, rect.y, rect.width, rect.height / 2) + dc.DrawRectangle(rect.x, rect.y, rect.width, rect.height // 2) lower = wx.Rect(*rect) - lower.height = (lower.height + 1) / 2 + lower.height = (lower.height + 1) // 2 lower.y += rect.height - lower.height dc.GradientFillLinear(lower, btn_colour, btn_grad_colour, wx.SOUTH) - dc.DrawBitmap(btn_bitmap, rect.x + rect.width / 2 - 2, lower.y - 2, True) + dc.DrawBitmap(btn_bitmap, rect.x + rect.width // 2 - 2, lower.y - 2, True) def DrawGalleryItemBackground(self, dc, wnd, rect, item): @@ -1691,7 +1691,7 @@ class RibbonMSWArtProvider(object): upper.x += 1 upper.width -= 2 upper.y += 1 - upper.height /= 3 + upper.height //= 3 dc.SetPen(wx.TRANSPARENT_PEN) dc.SetBrush(top_brush) dc.DrawRectangle(upper.x, upper.y, upper.width, upper.height) @@ -1760,7 +1760,7 @@ class RibbonMSWArtProvider(object): client_rect.x += 1 client_rect.width -= 2 client_rect.y += 1 - client_rect.height = (rect.y + rect.height / 5) - client_rect.x + client_rect.height = (rect.y + rect.height // 5) - client_rect.x dc.GradientFillLinear(client_rect, self._panel_active_background_top_colour, self._panel_active_background_top_gradient_colour, wx.SOUTH) @@ -1785,7 +1785,7 @@ class RibbonMSWArtProvider(object): dc.SetPen(wx.TRANSPARENT_PEN) dc.DrawRectangle(preview.x + 1, preview.y + preview.height - 8, preview.width - 2, 7) - mid_pos = rect.y + rect.height / 5 - preview.y + mid_pos = rect.y + rect.height // 5 - preview.y if mid_pos < 0 or mid_pos >= preview.height: full_rect = wx.Rect(*preview) @@ -1816,8 +1816,8 @@ class RibbonMSWArtProvider(object): self._page_hover_background_gradient_colour, wx.SOUTH) if bitmap.IsOk(): - dc.DrawBitmap(bitmap, preview.x + (preview.width - bitmap.GetWidth()) / 2, - preview.y + (preview.height - 7 - bitmap.GetHeight()) / 2, True) + dc.DrawBitmap(bitmap, preview.x + (preview.width - bitmap.GetWidth()) // 2, + preview.y + (preview.height - 7 - bitmap.GetHeight()) // 2, True) self.DrawPanelBorder(dc, preview, self._panel_border_pen, self._panel_border_gradient_pen) self.DrawPanelBorder(dc, true_rect, self._panel_minimised_border_pen, self._panel_minimised_border_gradient_pen) @@ -1829,20 +1829,20 @@ class RibbonMSWArtProvider(object): if self._flags & RIBBON_BAR_FLOW_VERTICAL: preview.x = true_rect.x + 4 - preview.y = true_rect.y + (true_rect.height - preview.height) / 2 + preview.y = true_rect.y + (true_rect.height - preview.height) // 2 else: - preview.x = true_rect.x + (true_rect.width - preview.width) / 2 + preview.x = true_rect.x + (true_rect.width - preview.width) // 2 preview.y = true_rect.y + 4 dc.SetFont(self._panel_label_font) label_width, label_height = dc.GetTextExtent(wnd.GetLabel()) - xpos = true_rect.x + (true_rect.width - label_width + 1) / 2 + xpos = true_rect.x + (true_rect.width - label_width + 1) // 2 ypos = preview.y + preview.height + 5 if self._flags & RIBBON_BAR_FLOW_VERTICAL: xpos = preview.x + preview.width + 5 - ypos = true_rect.y + (true_rect.height - label_height) / 2 + ypos = true_rect.y + (true_rect.height - label_height) // 2 dc.SetTextForeground(self._panel_minimised_label_colour) dc.DrawText(wnd.GetLabel(), xpos, ypos) @@ -1851,12 +1851,12 @@ class RibbonMSWArtProvider(object): if self._flags & RIBBON_BAR_FLOW_VERTICAL: xpos += label_width - arrow_points[0] = wx.Point(xpos + 5, ypos + label_height / 2) + arrow_points[0] = wx.Point(xpos + 5, ypos + label_height // 2) arrow_points[1] = arrow_points[0] + wx.Point(-3, 3) arrow_points[2] = arrow_points[0] + wx.Point(-3, -3) else: ypos += label_height - arrow_points[0] = wx.Point(true_rect.width / 2, ypos + 5) + arrow_points[0] = wx.Point(true_rect.width // 2, ypos + 5) arrow_points[1] = arrow_points[0] + wx.Point(-3, -3) arrow_points[2] = arrow_points[0] + wx.Point( 3, -3) @@ -1967,7 +1967,7 @@ class RibbonMSWArtProvider(object): bg_rect.height -= 2 bg_rect_top = wx.Rect(*bg_rect) - bg_rect_top.height /= 3 + bg_rect_top.height //= 3 bg_rect.y += bg_rect_top.height bg_rect.height -= bg_rect_top.height @@ -2043,7 +2043,7 @@ class RibbonMSWArtProvider(object): if result == RIBBON_BUTTONBAR_BUTTON_LARGE: padding = 2 - dc.DrawBitmap(bitmap_large, rect.x + (rect.width - bitmap_large.GetWidth()) / 2, + dc.DrawBitmap(bitmap_large, rect.x + (rect.width - bitmap_large.GetWidth()) // 2, rect.y + padding, True) ypos = rect.y + padding + bitmap_large.GetHeight() + padding arrow_width = (kind == RIBBON_BUTTON_NORMAL and [0] or [8])[0] @@ -2052,10 +2052,10 @@ class RibbonMSWArtProvider(object): if label_w + 2 * padding <= rect.width: - dc.DrawText(label, rect.x + (rect.width - label_w) / 2, ypos) + dc.DrawText(label, rect.x + (rect.width - label_w) // 2, ypos) if arrow_width != 0: - self.DrawDropdownArrow(dc, rect.x + rect.width / 2, - ypos + (label_h * 3) / 2, + self.DrawDropdownArrow(dc, rect.x + rect.width // 2, + ypos + (label_h * 3) // 2, self._button_bar_label_colour) else: breaki = len(label) @@ -2067,17 +2067,17 @@ class RibbonMSWArtProvider(object): label_w, label_h = dc.GetTextExtent(label_top) if label_w + 2 * padding <= rect.width: - dc.DrawText(label_top, rect.x + (rect.width - label_w) / 2, ypos) + dc.DrawText(label_top, rect.x + (rect.width - label_w) // 2, ypos) ypos += label_h label_bottom = label[breaki:] label_w, label_h = dc.GetTextExtent(label_bottom) label_w += arrow_width - iX = rect.x + (rect.width - label_w) / 2 + iX = rect.x + (rect.width - label_w) // 2 dc.DrawText(label_bottom, iX, ypos) if arrow_width != 0: self.DrawDropdownArrow(dc, iX + 2 +label_w - arrow_width, - ypos + label_h / 2 + 1, + ypos + label_h // 2 + 1, self._button_bar_label_colour) break @@ -2085,14 +2085,14 @@ class RibbonMSWArtProvider(object): elif result == RIBBON_BUTTONBAR_BUTTON_MEDIUM: x_cursor = rect.x + 2 - dc.DrawBitmap(bitmap_small, x_cursor, rect.y + (rect.height - bitmap_small.GetHeight())/2, True) + dc.DrawBitmap(bitmap_small, x_cursor, rect.y + (rect.height - bitmap_small.GetHeight())//2, True) x_cursor += bitmap_small.GetWidth() + 2 label_w, label_h = dc.GetTextExtent(label) - dc.DrawText(label, x_cursor, rect.y + (rect.height - label_h) / 2) + dc.DrawText(label, x_cursor, rect.y + (rect.height - label_h) // 2) x_cursor += label_w + 3 if kind != RIBBON_BUTTON_NORMAL: - self.DrawDropdownArrow(dc, x_cursor, rect.y + rect.height / 2, + self.DrawDropdownArrow(dc, x_cursor, rect.y + rect.height // 2, self._button_bar_label_colour) else: @@ -2184,7 +2184,7 @@ class RibbonMSWArtProvider(object): # Background bg_rect_top = wx.Rect(*bg_rect) - bg_rect_top.height = (bg_rect_top.height * 2) / 5 + bg_rect_top.height = (bg_rect_top.height * 2) // 5 bg_rect_btm = wx.Rect(*bg_rect) bg_rect_btm.y += bg_rect_top.height bg_rect_btm.height -= bg_rect_top.height @@ -2244,10 +2244,10 @@ class RibbonMSWArtProvider(object): dc.DrawLine(rect.x + avail_width + 1, rect.y, rect.x + avail_width + 1, rect.y + rect.height) dc.DrawBitmap(self._toolbar_drop_bitmap, bg_rect.x + avail_width + 2, - bg_rect.y + (bg_rect.height / 2) - 2, True) + bg_rect.y + (bg_rect.height // 2) - 2, True) - dc.DrawBitmap(bitmap, bg_rect.x + (avail_width - bitmap.GetWidth()) / 2, - bg_rect.y + (bg_rect.height - bitmap.GetHeight()) / 2, True) + dc.DrawBitmap(bitmap, bg_rect.x + (avail_width - bitmap.GetWidth()) // 2, + bg_rect.y + (bg_rect.height - bitmap.GetHeight()) // 2, True) def GetBarTabWidth(self, dc, wnd, label, bitmap, ideal=None, small_begin_need_separator=None, @@ -2474,7 +2474,7 @@ class RibbonMSWArtProvider(object): scroll_up.y = size.GetHeight() - 15 scroll_up.height = 15 scroll_up.x = 0 - scroll_up.width = (size.GetWidth() + 2) / 3 + scroll_up.width = (size.GetWidth() + 2) // 3 scroll_down.y = scroll_up.y scroll_down.height = scroll_up.height scroll_down.x = scroll_up.x + scroll_up.width @@ -2491,7 +2491,7 @@ class RibbonMSWArtProvider(object): scroll_up.x = size.GetWidth() - 15 scroll_up.width = 15 scroll_up.y = 0 - scroll_up.height = (size.GetHeight() + 2) / 3 + scroll_up.height = (size.GetHeight() + 2) // 3 scroll_down.x = scroll_up.x scroll_down.width = scroll_up.width scroll_down.y = scroll_up.y + scroll_up.height --- a/wx/lib/agw/ribbon/bar.py +++ b/wx/lib/agw/ribbon/bar.py @@ -743,7 +743,7 @@ class RibbonBar(RibbonControl): delta = info.ideal_width - info.small_must_have_separator_width info.rect.x = x info.rect.y = y - info.rect.width = info.small_must_have_separator_width + delta*(width - total_small_width)/total_delta + info.rect.width = info.small_must_have_separator_width + delta*(width - total_small_width)//total_delta info.rect.height = self._tab_height x += info.rect.width + tabsep @@ -797,7 +797,7 @@ class RibbonBar(RibbonControl): delta = smallest_tab_width - info.minimum_width info.rect.x = x info.rect.y = y - info.rect.width = info.minimum_width + delta*(width - total_small_width)/total_delta + info.rect.width = info.minimum_width + delta*(width - total_small_width)//total_delta info.rect.height = self._tab_height x += info.rect.width + tabsep --- a/wx/lib/agw/ribbon/buttonbar.py +++ b/wx/lib/agw/ribbon/buttonbar.py @@ -354,7 +354,7 @@ class RibbonButtonBar(RibbonControl): self._bitmap_size_large = bitmap.GetSize() if not bitmap_small.IsOk(): w, h = self._bitmap_size_large - self._bitmap_size_small = wx.Size(0.5*w, 0.5*h) + self._bitmap_size_small = wx.Size(w//2, h//2) if bitmap_small.IsOk(): @@ -867,8 +867,8 @@ class RibbonButtonBar(RibbonControl): layout_size = self._layouts[layout_i].overall_size if layout_size.x <= new_size.x and layout_size.y <= new_size.y: - self._layout_offset.x = (new_size.x - layout_size.x)/2 - self._layout_offset.y = (new_size.y - layout_size.y)/2 + self._layout_offset.x = (new_size.x - layout_size.x)//2 + self._layout_offset.y = (new_size.y - layout_size.y)//2 self._current_layout = layout_i break --- a/wx/lib/agw/ribbon/gallery.py +++ b/wx/lib/agw/ribbon/gallery.py @@ -805,8 +805,8 @@ class RibbonGallery(RibbonControl): if client.GetWidth() < 0 or client.GetHeight() < 0: return relative_to - client.x = (client.x / self._bitmap_padded_size.x) * self._bitmap_padded_size.x - client.y = (client.y / self._bitmap_padded_size.y) * self._bitmap_padded_size.y + client.x = (client.x // self._bitmap_padded_size.x) * self._bitmap_padded_size.x + client.y = (client.y // self._bitmap_padded_size.y) * self._bitmap_padded_size.y size = self._art.GetGallerySize(dc, self, wx.Size(*client)) minimum = self.GetMinSize() @@ -849,8 +849,8 @@ class RibbonGallery(RibbonControl): elif direction == wx.BOTH: client.IncBy(self._bitmap_padded_size) - client.x = (client.x / self._bitmap_padded_size.x) * self._bitmap_padded_size.x - client.y = (client.y / self._bitmap_padded_size.y) * self._bitmap_padded_size.y + client.x = (client.x // self._bitmap_padded_size.x) * self._bitmap_padded_size.x + client.y = (client.y // self._bitmap_padded_size.y) * self._bitmap_padded_size.y size = self._art.GetGallerySize(dc, self, wx.Size(*client)) minimum = self.GetMinSize() --- a/wx/lib/agw/ribbon/panel.py +++ b/wx/lib/agw/ribbon/panel.py @@ -584,12 +584,12 @@ class RibbonPanel(RibbonControl): minimum = wx.Size(*self.GetMinSize()) if direction & wx.HORIZONTAL: - current.x = (current.x * 4) / 5 + current.x = (current.x * 4) // 5 if current.x < minimum.x: current.x = minimum.x if direction & wx.VERTICAL: - current.y = (current.y * 4) / 5 + current.y = (current.y * 4) // 5 if current.y < minimum.y: current.y = minimum.y @@ -668,10 +668,10 @@ class RibbonPanel(RibbonControl): current = wx.Size(*relative_to) if direction & wx.HORIZONTAL: - current.x = (current.x * 5 + 3) / 4 + current.x = (current.x * 5 + 3) // 4 if direction & wx.VERTICAL: - current.y = (current.y * 5 + 3) / 4 + current.y = (current.y * 5 + 3) // 4 return current @@ -1076,25 +1076,25 @@ class RibbonPanel(RibbonControl): pos = wx.Point() if direction == wx.NORTH: - pos.x = panel.GetX() + (panel.GetWidth() - expanded_size.GetWidth()) / 2 + pos.x = panel.GetX() + (panel.GetWidth() - expanded_size.GetWidth()) // 2 pos.y = panel.GetY() - expanded_size.GetHeight() primary_x = True secondary_y = 1 elif direction == wx.EAST: pos.x = panel.GetRight() - pos.y = panel.GetY() + (panel.GetHeight() - expanded_size.GetHeight()) / 2 + pos.y = panel.GetY() + (panel.GetHeight() - expanded_size.GetHeight()) // 2 secondary_x = -1 elif direction == wx.SOUTH: - pos.x = panel.GetX() + (panel.GetWidth() - expanded_size.GetWidth()) / 2 + pos.x = panel.GetX() + (panel.GetWidth() - expanded_size.GetWidth()) // 2 pos.y = panel.GetBottom() primary_x = True secondary_y = -1 else: pos.x = panel.GetX() - expanded_size.GetWidth() - pos.y = panel.GetY() + (panel.GetHeight() - expanded_size.GetHeight()) / 2 + pos.y = panel.GetY() + (panel.GetHeight() - expanded_size.GetHeight()) // 2 secondary_x = 1 expanded = wx.Rect(pos, expanded_size) --- a/wx/lib/agw/ribbon/toolbar.py +++ b/wx/lib/agw/ribbon/toolbar.py @@ -1159,7 +1159,7 @@ class RibbonToolBar(RibbonControl): # Set group y positions for group in self._groups: - group.position.y = rowypos[group.position.y] + group.position.y = int(rowypos[group.position.y]) def GetBestSizeForParentSize(self, parentSize): --- a/wx/lib/agw/scrolledthumbnail.py +++ b/wx/lib/agw/scrolledthumbnail.py @@ -1162,8 +1162,8 @@ class ScrolledThumbnail(wx.ScrolledWindo self._tWidth = width self._tHeight = height self._tBorder = border - self.SetScrollRate((self._tWidth + self._tBorder)/4, - (self._tHeight + self._tBorder)/4) + self.SetScrollRate((self._tWidth + self._tBorder)//4, + (self._tHeight + self._tBorder)//4) self.SetSizeHints(self._tWidth + self._tBorder*2 + 16, self._tHeight + self._tBorder*2 + 8) if self._items: @@ -1588,8 +1588,8 @@ class ScrolledThumbnail(wx.ScrolledWindo ww = img.GetWidth() hh = img.GetHeight() - imgRect = wx.Rect(x + (self._tWidth - img.GetWidth())/2, - y + (self._tHeight - img.GetHeight())/2, + imgRect = wx.Rect(int(x + (self._tWidth - img.GetWidth())/2), + int(y + (self._tHeight - img.GetHeight())/2), img.GetWidth(), img.GetHeight()) if not thumb._alpha and self._dropShadow: @@ -1626,14 +1626,14 @@ class ScrolledThumbnail(wx.ScrolledWindo else: ty = y + hh + (self._tHeight-hh)/2 + (self._tTextHeight - sh)/2 + 3 - dc.DrawText(mycaption, tx, ty) + dc.DrawText(mycaption, int(tx), int(ty)) # outline if self._tOutline != THUMB_OUTLINE_NONE and (self._tOutlineNotSelected or self.IsSelected(index)): dotrect = wx.Rect() - dotrect.x = x - 2 - dotrect.y = y - 2 + dotrect.x = int(x) - 2 + dotrect.y = int(y) - 2 dotrect.width = bmp.GetWidth() - self._tBorder + 4 dotrect.height = bmp.GetHeight() - self._tBorder + 4 @@ -1643,8 +1643,8 @@ class ScrolledThumbnail(wx.ScrolledWindo if self._tOutline == THUMB_OUTLINE_FULL or self._tOutline == THUMB_OUTLINE_RECT: - imgRect.x = x - imgRect.y = y + imgRect.x = int(x) + imgRect.y = int(y) imgRect.width = bmp.GetWidth() - self._tBorder imgRect.height = bmp.GetHeight() - self._tBorder @@ -1708,10 +1708,10 @@ class ScrolledThumbnail(wx.ScrolledWindo if col == 0: row = row + 1 - xwhite = ((w - self._cols*(self._tWidth + self._tBorder)))/(self._cols+1) + xwhite = ((w - self._cols*(self._tWidth + self._tBorder)))//(self._cols+1) tx = xwhite + col*(self._tWidth + self._tBorder) - ty = self._tBorder/2 + row*(self._tHeight + self._tBorder) + \ + ty = self._tBorder//2 + row*(self._tHeight + self._tBorder) + \ self.GetCaptionHeight(0, row) tw = self._tWidth + self._tBorder th = self._tHeight + self.GetCaptionHeight(row) + self._tBorder @@ -1723,7 +1723,7 @@ class ScrolledThumbnail(wx.ScrolledWindo self.DrawThumbnail(thmb, self._items[ii], ii) dc.DrawBitmap(thmb, tx, ty) - rect = wx.Rect(xwhite, self._tBorder/2, + rect = wx.Rect(xwhite, self._tBorder//2, self._cols*(self._tWidth + self._tBorder), self._rows*(self._tHeight + self._tBorder) + \ self.GetCaptionHeight(0, self._rows)) --- a/wx/lib/agw/shapedbutton.py +++ b/wx/lib/agw/shapedbutton.py @@ -569,9 +569,9 @@ class SButton(wx.Window): rect2 = w*main//secondary if self._isup: - img = self._mainbuttonup.Scale(rect2, rect3) + img = self._mainbuttonup.Scale(int(rect2), int(rect3)) else: - img = self._mainbuttondown.Scale(rect2, rect3) + img = self._mainbuttondown.Scale(int(rect2), int(rect3)) bmp = img.ConvertToBitmap() @@ -599,7 +599,7 @@ class SButton(wx.Window): ypos = 0 # Draw Finally The Bitmap - dc.DrawBitmap(bmp, xpos, ypos, True) + dc.DrawBitmap(bmp, int(xpos), int(ypos), True) # Store Bitmap Position And Size To Draw An Elliptical Focus Indicator self._xpos = xpos @@ -646,7 +646,7 @@ class SButton(wx.Window): xp = xc - (tw//2)* cos(angle) - (th//2)*sin(angle) yp = yc + (tw//2)*sin(angle) - (th//2)*cos(angle) - dc.DrawRotatedText(label, xp + dw, yp + dh , angle*180/pi) + dc.DrawRotatedText(label, int(xp + dw), int(yp + dh), angle*180/pi) def DrawFocusIndicator(self, dc, width, height): @@ -676,7 +676,7 @@ class SButton(wx.Window): else: # This Is An Ellipse if hasattr(self, "_xpos"): - dc.DrawEllipse(self._xpos + 2, self._ypos + 2, self._imgx - 4, self._imgy - 4) + dc.DrawEllipse(int(self._xpos + 2), int(self._ypos + 2), self._imgx - 4, self._imgy - 4) dc.SetLogicalFunction(wx.COPY) --- a/wx/lib/agw/speedmeter.py +++ b/wx/lib/agw/speedmeter.py @@ -580,8 +580,8 @@ class SpeedMeter(BufferedWindow): dc.SetBackground(wx.Brush(speedbackground)) dc.Clear() - centerX = self.faceBitmap.GetWidth()/2 - centerY = self.faceBitmap.GetHeight()/2 + centerX = self.faceBitmap.GetWidth()//2 + centerY = self.faceBitmap.GetHeight()//2 self.CenterX = centerX self.CenterY = centerY @@ -681,7 +681,7 @@ class SpeedMeter(BufferedWindow): # Draw The Filler (Both In "Advance" And "Reverse" Directions) dc.SetBrush(wx.Brush(fillercolour)) - dc.DrawArc(xs2, ys2, xe2, ye2, centerX, centerY) + dc.DrawArc(xs2, ys2, xe2, ye2, int(centerX), int(centerY)) if self._agwStyle & SM_DRAW_SECTORS == 0: dc.SetBrush(wx.Brush(speedbackground)) @@ -952,7 +952,7 @@ class SpeedMeter(BufferedWindow): y = y - height/2.0 - height*sin(angis)/2.0 fancytext.RenderToDC(fancystr, dc, x, y) else: - dc.DrawText(strings, x, y) + dc.DrawText(strings, int(x), int(y)) # This Is The Small Rectangle --> Tick Mark rectangle = colourangles[ii] + pi/2.0 @@ -969,6 +969,7 @@ class SpeedMeter(BufferedWindow): y4 = y3 + 3*self.scale*sinrect points = [(x1, y1), (x2, y2), (x4, y4), (x3, y3)] + points = [(int(p[0]), int(p[1])) for p in points] dc.DrawPolygon(points) @@ -1003,6 +1004,7 @@ class SpeedMeter(BufferedWindow): y4 = y3 + self.scale*sinrect points = [(x1, y1), (x2, y2), (x4, y4), (x3, y3)] + points = [(int(p[0]), int(p[1])) for p in points] dc.DrawPolygon(points) @@ -1017,7 +1019,7 @@ class SpeedMeter(BufferedWindow): dc.SetBrush(wx.TRANSPARENT_BRUSH) if self._drawarc: - dc.SetPen(wx.Pen(self.GetArcColour(), 2.0)) + dc.SetPen(wx.Pen(self.GetArcColour(), 2)) # If It's Not A Complete Circle, Draw The Connecting Lines And The Arc if abs(abs(startangle - endangle) - 2*pi) > 1.0/180.0: dc.DrawArc(xstart, ystart, xend, yend, centerX, centerY) @@ -1046,7 +1048,7 @@ class SpeedMeter(BufferedWindow): newx = centerX + 1.5*mw*cos(middleangle) - mw/2.0 newy = centerY - 1.5*mh*sin(middleangle) - mh/2.0 dc.SetTextForeground(middlecolour) - dc.DrawText(middletext, newx, newy) + dc.DrawText(middletext, int(newx), int(newy)) # Here We Draw The Icon In The Middle, Near The Start Of The Arrow (If Present) # This Is Like The "Fuel" Icon In The Cars @@ -1054,8 +1056,8 @@ class SpeedMeter(BufferedWindow): middleicon = self.GetMiddleIcon() middlewidth, middleheight = self.GetMiddleIconDimens() - middleicon.SetWidth(middlewidth*self.scale) - middleicon.SetHeight(middleheight*self.scale) + middleicon.SetWidth(int(middlewidth*self.scale)) + middleicon.SetHeight(int(middleheight*self.scale)) middleangle = (startangle + endangle)/2.0 mw = middleicon.GetWidth() @@ -1064,7 +1066,7 @@ class SpeedMeter(BufferedWindow): newx = centerX + 1.5*mw*cos(middleangle) - mw/2.0 newy = centerY - 1.5*mh*sin(middleangle) - mh/2.0 - dc.DrawIcon(middleicon, newx, newy) + dc.DrawIcon(middleicon, int(newx), int(newy)) # Restore Icon Dimension, If Not Something Strange Happens middleicon.SetWidth(middlewidth) @@ -1109,53 +1111,61 @@ class SpeedMeter(BufferedWindow): if handstyle == "Arrow": # Draw The Shadow shadowcolour = self.GetShadowColour() - dc.SetPen(wx.Pen(shadowcolour, 5*log(self.scale+1))) + dc.SetPen(wx.Pen(shadowcolour, int(5*log(self.scale+1)))) dc.SetBrush(wx.Brush(shadowcolour)) shadowdistance = 2.0*self.scale - dc.DrawLine(newx + shadowdistance, newy + shadowdistance, - xarr + shadowdistance, yarr + shadowdistance) + dc.DrawLine(int(newx + shadowdistance), int(newy + shadowdistance), + int(xarr + shadowdistance), int(yarr + shadowdistance)) - dc.DrawPolygon([(x1+shadowdistance, y1+shadowdistance), - (x2+shadowdistance, y2+shadowdistance), - (x3+shadowdistance, y3+shadowdistance)]) + points = [(x1+shadowdistance, y1+shadowdistance), + (x2+shadowdistance, y2+shadowdistance), + (x3+shadowdistance, y3+shadowdistance)] + points = [(int(p[0]), int(p[1])) for p in points] + dc.DrawPolygon(points) else: # Draw The Shadow shadowcolour = self.GetShadowColour() dc.SetBrush(wx.Brush(shadowcolour)) - dc.SetPen(wx.Pen(shadowcolour, 1.0)) + dc.SetPen(wx.Pen(shadowcolour, 1)) shadowdistance = 1.5*self.scale - dc.DrawPolygon([(x1+shadowdistance, y1+shadowdistance), - (x2+shadowdistance, y2+shadowdistance), - (x3+shadowdistance, y3+shadowdistance), - (x4+shadowdistance, y4+shadowdistance)]) + points = [(x1+shadowdistance, y1+shadowdistance), + (x2+shadowdistance, y2+shadowdistance), + (x3+shadowdistance, y3+shadowdistance), + (x4+shadowdistance, y4+shadowdistance)] + points = [(int(p[0]), int(p[1])) for p in points] + dc.DrawPolygon(points) if handstyle == "Arrow": - dc.SetPen(wx.Pen(handcolour, 1.5)) + dc.SetPen(wx.Pen(handcolour, 1)) # Draw The Small Circle In The Center --> The Hand "Holder" dc.SetBrush(wx.Brush(speedbackground)) - dc.DrawCircle(centerX, centerY, 4*self.scale) + dc.DrawCircle(centerX, centerY, int(4*self.scale)) - dc.SetPen(wx.Pen(handcolour, 5*log(self.scale+1))) + dc.SetPen(wx.Pen(handcolour, int(5*log(self.scale+1)))) # Draw The "Hand", An Arrow - dc.DrawLine(newx, newy, xarr, yarr) + dc.DrawLine(int(newx), int(newy), int(xarr), int(yarr)) # Draw The Arrow Pointer dc.SetBrush(wx.Brush(handcolour)) - dc.DrawPolygon([(x1, y1), (x2, y2), (x3, y3)]) + points = [(x1, y1), (x2, y2), (x3, y3)] + points = [(int(p[0]), int(p[1])) for p in points] + dc.DrawPolygon(points) else: # Draw The Hand Pointer - dc.SetPen(wx.Pen(handcolour, 1.5)) + dc.SetPen(wx.Pen(handcolour, 1)) dc.SetBrush(wx.Brush(handcolour)) - dc.DrawPolygon([(x1, y1), (x2, y2), (x3, y3), (x4, y4)]) + points = [(x1, y1), (x2, y2), (x3, y3), (x4, y4)] + points = [(int(p[0]), int(p[1])) for p in points] + dc.DrawPolygon(points) # Draw The Small Circle In The Center --> The Hand "Holder" dc.SetBrush(wx.Brush(speedbackground)) - dc.DrawCircle(centerX, centerY, 4*self.scale) + dc.DrawCircle(centerX, centerY, int(4*self.scale)) def SetIntervals(self, intervals=None): @@ -1527,7 +1537,7 @@ class SpeedMeter(BufferedWindow): if font is None: self._middletextfont = wx.Font(1, wx.FONTFAMILY_SWISS, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_BOLD, False) - self._middletextsize = 10.0 + self._middletextsize = 10 self._middletextfont.SetPointSize(self._middletextsize) else: self._middletextfont = font @@ -1599,7 +1609,7 @@ class SpeedMeter(BufferedWindow): x = radius*cos(angle) + centerX y = radius*sin(angle) + centerY - return x, y + return int(x), int(y) def GetIntersection(self, current, intervals): --- a/wx/lib/agw/supertooltip.py +++ b/wx/lib/agw/supertooltip.py @@ -295,8 +295,8 @@ class ToolTipWindowBase(object): # Get the user options for header, bitmaps etc... drawHeader, drawFooter = classParent.GetDrawHeaderLine(), classParent.GetDrawFooterLine() - topRect = wx.Rect(frameRect.x, frameRect.y, frameRect.width, frameRect.height/2) - bottomRect = wx.Rect(frameRect.x, frameRect.y+frameRect.height/2, frameRect.width, frameRect.height/2+1) + topRect = wx.Rect(frameRect.x, frameRect.y, frameRect.width, frameRect.height//2) + bottomRect = wx.Rect(frameRect.x, frameRect.y+frameRect.height//2, frameRect.width, frameRect.height//2+1) # Fill the triple-gradient dc.GradientFillLinear(topRect, topColour, middleColour, wx.SOUTH) dc.GradientFillLinear(bottomRect, middleColour, bottomColour, wx.SOUTH) @@ -324,9 +324,9 @@ class ToolTipWindowBase(object): normalText = classParent.GetTextColour() if header: dc.SetTextForeground(normalText) - dc.DrawText(header, bmpXPos+bmpWidth+self._spacing, (height-textHeight+self._spacing)/2) + dc.DrawText(header, bmpXPos+bmpWidth+self._spacing, (height-textHeight+self._spacing)//2) if headerBmp and headerBmp.IsOk(): - dc.DrawBitmap(headerBmp, bmpXPos, (height-bmpHeight+self._spacing)/2, True) + dc.DrawBitmap(headerBmp, bmpXPos, (height-bmpHeight+self._spacing)//2, True) if header or (headerBmp and headerBmp.IsOk()): yPos += height @@ -376,7 +376,7 @@ class ToolTipWindowBase(object): messageHeight += textHeight xText = (bmpWidth + 2 * self._spacing) if bmpWidth > 0 else self._spacing - yText += textHeight/2+self._spacing + yText += textHeight//2+self._spacing maxWidth = max(xText + textWidth + self._spacing, maxWidth) dc.DrawText(line, xText, yText) if isLink: @@ -412,8 +412,8 @@ class ToolTipWindowBase(object): if drawFooter: # Draw the separator line before the footer dc.SetPen(wx.GREY_PEN) - dc.DrawLine(self._spacing, yPos-self._spacing/2+toAdd, - width-self._spacing, yPos-self._spacing/2+toAdd) + dc.DrawLine(self._spacing, yPos-self._spacing//2+toAdd, + width-self._spacing, yPos-self._spacing//2+toAdd) # Draw the footer and footer bitmap (if any) dc.SetTextForeground(normalText) height = max(textHeight, bmpHeight) @@ -424,7 +424,7 @@ class ToolTipWindowBase(object): maxWidth = max(bmpXPos + bmpWidth + (self._spacing*2) + textWidth, maxWidth) if footerBmp and footerBmp.IsOk(): toAdd = (height - bmpHeight + self._spacing) / 2 - dc.DrawBitmap(footerBmp, bmpXPos, yPos + toAdd, True) + dc.DrawBitmap(footerBmp, bmpXPos, int(yPos + toAdd), True) maxWidth = max(footerBmp.GetSize().GetWidth() + bmpXPos, maxWidth) maxHeight = yPos + height + toAdd @@ -815,7 +815,7 @@ class SuperToolTip(object): :param `delay`: the delay in seconds. """ - self._startDelayTime = float(delay) + self._startDelayTime = int(delay) def GetStartDelay(self): @@ -831,7 +831,7 @@ class SuperToolTip(object): :param `delay`: the delay in seconds. """ - self._endDelayTime = float(delay) + self._endDelayTime = int(delay) def GetEndDelay(self): --- a/wx/lib/agw/toasterbox.py +++ b/wx/lib/agw/toasterbox.py @@ -1316,11 +1316,11 @@ class ToasterBoxWindow(wx.Frame): for line in lines: w, h = dc.GetTextExtent(line) fh += h + textPadding - y = (th - fh) / 2; coords = [] + y = (th - fh) // 2; coords = [] for line in lines: w, h = dc.GetTextExtent(line) - x = (tw - w) / 2 + x = (tw - w) // 2 coords.append((x, y)) y += h + textPadding --- a/wx/lib/agw/ultimatelistctrl.py +++ b/wx/lib/agw/ultimatelistctrl.py @@ -914,7 +914,7 @@ class PyImageList(object): raise Exception("Wrong index in image list") bmp = self._images[index] - dc.DrawBitmap(bmp, x, y, (flags & wx.IMAGELIST_DRAW_TRANSPARENT) > 0) + dc.DrawBitmap(bmp, x, int(y), (flags & wx.IMAGELIST_DRAW_TRANSPARENT) > 0) return True @@ -4022,7 +4022,7 @@ class UltimateListLineData(object): if item.HasImage(): - self._gi._rectIcon.x = self._gi._rectAll.x + 4 + (self._gi._rectAll.width - self._gi._rectIcon.width)/2 + self._gi._rectIcon.x = self._gi._rectAll.x + 4 + (self._gi._rectAll.width - self._gi._rectIcon.width)//2 self._gi._rectIcon.y = self._gi._rectAll.y + 4 if item.HasText(): @@ -4030,7 +4030,7 @@ class UltimateListLineData(object): if self._gi._rectLabel.width > spacing: self._gi._rectLabel.x = self._gi._rectAll.x + 2 else: - self._gi._rectLabel.x = self._gi._rectAll.x + 2 + (spacing/2) - (self._gi._rectLabel.width/2) + self._gi._rectLabel.x = self._gi._rectAll.x + 2 + (spacing//2) - (self._gi._rectLabel.width//2) self._gi._rectLabel.y = self._gi._rectAll.y + self._gi._rectAll.height + 2 - self._gi._rectLabel.height self._gi._rectHighlight.x = self._gi._rectLabel.x - 2 @@ -4546,7 +4546,7 @@ class UltimateListLineData(object): # We got a checkbox-type item ix, iy = self._owner.GetCheckboxImageSize() checked = item.IsChecked() - self._owner.DrawCheckbox(dc, xOld, y + (height-iy+1)/2, item.GetKind(), checked, enabled) + self._owner.DrawCheckbox(dc, xOld, y + (height-iy+1)//2, item.GetKind(), checked, enabled) xOld += ix width -= ix @@ -4557,7 +4557,7 @@ class UltimateListLineData(object): for img in images: ix, iy = self._owner.GetImageSize([img]) - self._owner.DrawImage(img, dc, xOld, y + (height-iy)/2, enabled) + self._owner.DrawImage(img, dc, xOld, y + (height-iy)//2, enabled) xOld += ix width -= ix @@ -5230,7 +5230,7 @@ class UltimateListHeaderWindow(wx.Contro # We got a checkbox-type item ix, iy = self._owner.GetCheckboxImageSize() # We draw it on the left, always - self._owner.DrawCheckbox(dc, x + HEADER_OFFSET_X, HEADER_OFFSET_Y + (h - 4 - iy)/2, kind, checked, enabled) + self._owner.DrawCheckbox(dc, x + HEADER_OFFSET_X, HEADER_OFFSET_Y + (h - 4 - iy)//2, kind, checked, enabled) wcheck += ix + HEADER_IMAGE_MARGIN_IN_REPORT_MODE cw -= ix + HEADER_IMAGE_MARGIN_IN_REPORT_MODE @@ -6819,7 +6819,7 @@ class UltimateListMainWindow(wx.Scrolled # We got a checkbox-type item ix, iy = self.GetCheckboxImageSize() LH = self.GetLineHeight(line) - rect = wx.Rect(xOld, lineY + LH/2 - iy/2, ix, iy) + rect = wx.Rect(xOld, lineY + LH//2 - iy//2, ix, iy) if rect.Contains((x, y)): newItem = self.GetParent().GetItem(line, col) return newItem, ULC_HITTEST_ONITEMCHECK @@ -7937,13 +7937,13 @@ class UltimateListMainWindow(wx.Scrolled while start_y > view_y: start_y -= SCROLL_UNIT_Y - self.Scroll(-1, start_y/SCROLL_UNIT_Y) + self.Scroll(-1, start_y//SCROLL_UNIT_Y) if start_y + height > view_y + client_h: while start_y + height < view_y + client_h: start_y += SCROLL_UNIT_Y - self.Scroll(-1, (start_y+height-client_h+SCROLL_UNIT_Y)/SCROLL_UNIT_Y) + self.Scroll(-1, (start_y+height-client_h+SCROLL_UNIT_Y)//SCROLL_UNIT_Y) else: # !report @@ -7960,7 +7960,7 @@ class UltimateListMainWindow(wx.Scrolled if rect.y + rect.height - 5 > view_y + client_h: sy = (rect.y + rect.height - client_h + hLine)/hLine - self.Scroll(sx, sy) + self.Scroll(int(sx), int(sy)) # ---------------------------------------------------------------------------- --- a/wx/lib/agw/xlsgrid.py +++ b/wx/lib/agw/xlsgrid.py @@ -965,7 +965,7 @@ class XLSText(object): xp = xc - (text_width/2)*xshift - (text_height/2)*yshift yp = yc + (text_width/2)*yshift - (text_height/2)*xshift - dc.DrawRotatedText(value, xp, yp, self.rotation) + dc.DrawRotatedText(value, int(xp), int(yp), self.rotation) else: @@ -1125,7 +1125,7 @@ class XLSRichText(XLSText): if font.escapement == 1: ypos = ypos - maxH + height - dc.DrawText(chunk, start, ypos) + dc.DrawText(chunk, start, int(ypos)) start += width --- a/wx/lib/agw/zoombar.py +++ b/wx/lib/agw/zoombar.py @@ -463,7 +463,7 @@ class ZoomBarImage(object): def GetPosition(self): """ Returns the button position. """ - return wx.Point(self._left, self._top) + return wx.Point(int(self._left), int(self._top)) def GetSize(self): @@ -601,7 +601,7 @@ class ImageBar(object): def GetPosition(self): """ Returns the position of :class:`wx.ImageBar`, as a :class:`wx.Point`. """ - return wx.Point(self._left, self._top) + return wx.Point(int(self._left), int(self._top)) def GetSize(self): @@ -660,7 +660,7 @@ class ImageBar(object): if xSize is not None: self._size = wx.Size(xSize, ySize) - bitmap.Rescale(self._size.width, self._size.height/2) + bitmap.Rescale(self._size.width, self._size.height//2) r1, g1, b1 = self._startColour.Red(), self._startColour.Green(), self._startColour.Blue() r2, g2, b2 = colour.Red(), colour.Green(), colour.Blue() @@ -1065,7 +1065,7 @@ class ZoomBar(wx.Control): ySize += yextent if self._showReflections: - ySize += self._buttonSize/2 + ySize += self._buttonSize//2 if self._centerZoom: ySize += self._buttonSize @@ -1240,7 +1240,7 @@ class ZoomBar(wx.Control): textWidth, textHeight = dc.GetTextExtent(label) buttonPos = button.GetPosition() buttonSize = button.GetSize() - xpos = buttonPos.x + (buttonSize.width - textWidth)/2 + xpos = buttonPos.x + (buttonSize.width - textWidth)//2 ypos = buttonPos.y - textHeight - 2 dc.DrawRectangle(xpos-2, ypos-1, textWidth+4, textHeight+2) --- a/wx/lib/analogclock/analogclock.py +++ b/wx/lib/analogclock/analogclock.py @@ -173,7 +173,7 @@ class AnalogClock(wx.Window): scale = min([float(size.width) / self.basesize.width, float(size.height) / self.basesize.height]) - centre = wx.Point(size.width / 2., size.height / 2.) + centre = wx.Point(size.width // 2, size.height // 2) self.Box.RecalcCoords(size, centre, scale) self.Hands.RecalcCoords(size, centre, scale) --- a/wx/lib/analogclock/helpers.py +++ b/wx/lib/analogclock/helpers.py @@ -37,7 +37,7 @@ class Element: def _pol2rect(self, m, t): - return m * math.cos(math.radians(t)), m * math.sin(math.radians(t)) + return int(m * math.cos(math.radians(t))), int(m * math.sin(math.radians(t))) def _rect2pol(self, x, y): @@ -174,7 +174,7 @@ class Face(ElementWithDyer): def Draw(self, dc): self.dyer.Select(dc) - dc.DrawCircle(self.pos.x, self.pos.y, self.radius) + dc.DrawCircle(self.pos.x, self.pos.y, int(self.radius)) def RecalcCoords(self, clocksize, centre, scale): @@ -205,7 +205,7 @@ class Hand(ElementWithDyer): m, t = self._rect2pol(x, y) polygon[i] = self._pol2rect(m, t - angle) - dc.DrawPolygon(polygon, centre.x + offset, centre.y + offset) + dc.DrawPolygon(polygon, int(centre.x + offset), int(centre.y + offset)) def RecalcCoords(self, clocksize, centre, scale): @@ -226,7 +226,7 @@ class TickSquare(Element): x = self.pos.x - width / 2. y = self.pos.y - height / 2. - dc.DrawRectangle(x + offset, y + offset, width, height) + dc.DrawRectangle(int(x + offset), int(y + offset), int(width), int(height)) #---------------------------------------------------------------------- @@ -242,7 +242,7 @@ class TickCircle(Element): x = self.pos.x y = self.pos.y - dc.DrawCircle(x + offset, y + offset, radius) + dc.DrawCircle(int(x + offset), int(y + offset), int(radius)) #---------------------------------------------------------------------- @@ -273,7 +273,7 @@ class TickPoly(Element): x = self.pos.x - width / 2. y = self.pos.y - height / 2. - dc.DrawPolygon(polygon, x + offset, y + offset) + dc.DrawPolygon(polygon, int(x + offset), int(y + offset)) def DrawRotated(self, dc, offset=0): @@ -290,7 +290,7 @@ class TickPoly(Element): x = self.pos.x - math.cos(r) * width / 2. - math.sin(r) * height / 2. y = self.pos.y - math.cos(r) * height / 2. + math.sin(r) * width / 2. - dc.DrawPolygon(polygon, x + offset, y + offset) + dc.DrawPolygon(polygon, int(x + offset), int(y + offset)) #---------------------------------------------------------------------- @@ -309,7 +309,7 @@ class TickDecimal(Element): x = self.pos.x - width / 2. y = self.pos.y - height / 2. - dc.DrawText(self.text, x + offset, y + offset) + dc.DrawText(self.text, int(x + offset), int(y + offset)) def DrawRotated(self, dc, offset=0): @@ -321,7 +321,7 @@ class TickDecimal(Element): x = self.pos.x - math.cos(r) * width / 2. - math.sin(r) * height / 2. y = self.pos.y - math.cos(r) * height / 2. + math.sin(r) * width / 2. - dc.DrawRotatedText(self.text, x + offset, y + offset, angle) + dc.DrawRotatedText(self.text, int(x + offset), int(y + offset), int(angle)) #---------------------------------------------------------------------- @@ -656,7 +656,7 @@ class TickSet: # Try to find a 'good' max size for text-based ticks. if a_tick.text is not None: - self.font.SetPointSize(size) + self.font.SetPointSize(int(size)) dc = wx.MemoryDC() dc.SelectObject(wx.Bitmap(*clocksize.Get())) dc.SetFont(self.font) @@ -686,7 +686,7 @@ class TickSet: x = centre.x + radius * math.sin(angle) y = centre.y + radius * math.cos(angle) - tick.SetPosition(wx.Point(x, y)) + tick.SetPosition(wx.Point(int(x), int(y))) def GetSize(self): --- a/wx/lib/analogclock/setup.py +++ b/wx/lib/analogclock/setup.py @@ -179,7 +179,7 @@ class _Group_1(_GroupBase): p.SetCustomColours(self.customcolours) sizer.Add(p, pos=(0, 1), flag=wx.ALIGN_CENTRE_VERTICAL) - p = self.bw = wx.SpinCtrl(self, size=(75, 21), + p = self.bw = wx.SpinCtrl(self, min=0, max=100, value="75") sizer.Add(p, pos=(0, 2), span=(1, 2), flag=wx.ALIGN_CENTRE_VERTICAL) @@ -193,7 +193,7 @@ class _Group_1(_GroupBase): p = self.ls = wx.StaticText(self, label="Size:") sizer.Add(p, pos=(2, 0), flag=wx.ALIGN_CENTRE_VERTICAL) - p = self.sz = wx.SpinCtrl(self, size=(75, 21), + p = self.sz = wx.SpinCtrl(self, min=0, max=100, value="75") sizer.Add(p, pos=(2, 1), span=(1, 3), flag=wx.ALIGN_CENTRE_VERTICAL) @@ -212,7 +212,7 @@ class _Group_2(_Group_1): p = wx.StaticText(self, label="Offset:") sizer.Add(p, pos=(3, 0), flag=wx.ALIGN_CENTRE_VERTICAL) - p = self.of = wx.SpinCtrl(self, size=(75, 21), + p = self.of = wx.SpinCtrl(self, min=0, max=100, value="75") sizer.Add(p, pos=(3, 1), span=(1, 3), flag=wx.ALIGN_CENTRE_VERTICAL) --- a/wx/lib/buttons.py +++ b/wx/lib/buttons.py @@ -453,7 +453,7 @@ class GenButton(wx.Control): tw, th = dc.GetTextExtent(label) if not self.up: dx = dy = self.labelDelta - dc.DrawText(label, (width-tw)/2+dx, (height-th)/2+dy) + dc.DrawText(label, (width-tw)//2+dx, (height-th)//2+dy) def DrawFocusIndicator(self, dc, w, h): @@ -844,7 +844,7 @@ class GenBitmapButton(GenButton): if not self.up: dx = dy = self.labelDelta hasMask = bmp.GetMask() is not None - dc.DrawBitmap(bmp, (width-bw)/2+dx, (height-bh)/2+dy, hasMask) + dc.DrawBitmap(bmp, (width-bw)//2+dx, (height-bh)//2+dy, hasMask) #---------------------------------------------------------------------- @@ -926,12 +926,12 @@ class GenBitmapTextButton(GenBitmapButto if not self.up: dx = dy = self.labelDelta - pos_x = (width-bw-tw)/2+dx # adjust for bitmap and text to centre + pos_x = (width-bw-tw)//2+dx # adjust for bitmap and text to centre if bmp is not None: - dc.DrawBitmap(bmp, pos_x, (height-bh)/2+dy, hasMask) # draw bitmap if available + dc.DrawBitmap(bmp, pos_x, (height-bh)//2+dy, hasMask) # draw bitmap if available pos_x = pos_x + 2 # extra spacing from bitmap - dc.DrawText(label, pos_x + dx+bw, (height-th)/2+dy) # draw the text + dc.DrawText(label, pos_x + dx+bw, (height-th)//2+dy) # draw the text #---------------------------------------------------------------------- --- a/wx/lib/colourchooser/pycolourchooser.py +++ b/wx/lib/colourchooser/pycolourchooser.py @@ -188,7 +188,7 @@ class PyColourChooser(wx.Panel): self.colour_slider.Bind(wx.EVT_MOTION, self.onSliderMotion) self.slider = wx.Slider( self, self.idSCROLL, 86, 0, self.colour_slider.HEIGHT - 1, - style=wx.SL_VERTICAL, size=(15, self.colour_slider.HEIGHT) + style=wx.SL_VERTICAL, size=(-1, self.colour_slider.HEIGHT) ) self.Bind(wx.EVT_COMMAND_SCROLL, self.onScroll, self.slider) @@ -338,7 +338,7 @@ class PyColourChooser(wx.Panel): min = self.slider.GetMin() max = self.slider.GetMax() val = (1 - v) * max - self.slider.SetValue(val) + self.slider.SetValue(int(val)) def getVFromSlider(self): """Get the current value of "V" from the v slider.""" --- a/wx/lib/colourchooser/pypalette.py +++ b/wx/lib/colourchooser/pypalette.py @@ -165,7 +165,7 @@ class PyPalette(canvas.Canvas): if self.point: self.buffer.SetPen(wx.BLACK_PEN) self.buffer.SetBrush(wx.TRANSPARENT_BRUSH) - self.buffer.DrawCircle(self.point[0], self.point[1], 3) + self.buffer.DrawCircle(int(self.point[0]), int(self.point[1]), 3) def HighlightPoint(self, x, y): """Highlights an area of the palette with a little circle around --- a/wx/lib/floatcanvas/FCObjects.py +++ b/wx/lib/floatcanvas/FCObjects.py @@ -296,7 +296,7 @@ class DrawObject: else: self.Pen = self.PenList.setdefault( (LineColor, LineStyle, LineWidth), - wx.Pen(LineColor, LineWidth, self.LineStyleList[LineStyle])) + wx.Pen(LineColor, int(LineWidth), self.LineStyleList[LineStyle])) def SetHitBrush(self, HitColor): """ @@ -1202,14 +1202,14 @@ class SquarePoint(XYObjectMixin, ColorOn x = xc - Size/2.0 y = yc - Size/2.0 dc.SetBrush(self.Brush) - dc.DrawRectangle(x, y, Size, Size) + dc.DrawRectangle(int(x), int(y), Size, Size) if HTdc and self.HitAble: HTdc.SetPen(self.HitPen) if self.Size <= 1: HTdc.DrawPoint(xc, xc) else: HTdc.SetBrush(self.HitBrush) - HTdc.DrawRectangle(x, y, Size, Size) + HTdc.DrawRectangle(int(x), int(y), Size, Size) class RectEllipse(XYObjectMixin, LineAndFillMixin, DrawObject): """A RectEllipse draw object.""" @@ -2161,7 +2161,7 @@ class ScaledBitmap(TextObjectMixin, Draw W = H * (self.bmpWidth / self.bmpHeight) if (self.ScaledBitmap is None) or (H != self.ScaledHeight) : self.ScaledHeight = H - Img = self.Image.Scale(W, H) + Img = self.Image.Scale(int(W), int(H)) self.ScaledBitmap = wx.Bitmap(Img) XY = self.ShiftFun(XY[0], XY[1], W, H) --- a/wx/lib/gizmos/ledctrl.py +++ b/wx/lib/gizmos/ledctrl.py @@ -293,7 +293,7 @@ class LEDNumberCtrl(wx.Control): if digit & c.COLON: dc.SetBrush(wx.Brush(lineColor)) - centerX = XPos + (self.m_lineLength + self.m_digitMargin) / 2 - radius = self.m_lineWidth / 2 - dc.DrawCircle(centerX, (self.m_lineLength + (self.m_lineMargin * 4)) / 2, radius) - dc.DrawCircle(centerX, (self.m_lineLength * 2 + (self.m_lineMargin * 6)) * 3 / 4, radius) + centerX = XPos + (self.m_lineLength + self.m_digitMargin) // 2 + radius = self.m_lineWidth // 2 + dc.DrawCircle(centerX, (self.m_lineLength + (self.m_lineMargin * 4)) // 2, radius) + dc.DrawCircle(centerX, (self.m_lineLength * 2 + (self.m_lineMargin * 6)) * 3 // 4, radius) --- a/wx/lib/imagebrowser.py +++ b/wx/lib/imagebrowser.py @@ -347,8 +347,8 @@ class ImageView(wx.Window): owidth = int(scale*iwidth) oheight = int(scale*iheight) - diffx = (wwidth - owidth)/2 # center calc - diffy = (wheight - oheight)/2 # center calc + diffx = (wwidth - owidth)//2 # center calc + diffy = (wheight - oheight)//2 # center calc if not bmp: if owidth!=iwidth or oheight!=iheight: --- a/wx/lib/ogl/basic.py +++ b/wx/lib/ogl/basic.py @@ -1051,7 +1051,7 @@ class Shape(ShapeEvtHandler): dc.SetPen(self.GetBackgroundPen()) dc.SetBrush(self.GetBackgroundBrush()) - dc.DrawRectangle(topLeftX - penWidth, topLeftY - penWidth, maxX + penWidth * 2 + 4, maxY + penWidth * 2 + 4) + dc.DrawRectangle(int(topLeftX - penWidth), int(topLeftY - penWidth), int(maxX + penWidth * 2 + 4), int(maxY + penWidth * 2 + 4)) def EraseLinks(self, dc, attachment = -1, recurse = False): """ @@ -2769,9 +2769,9 @@ class RectangleShape(Shape): dc.SetBrush(self._brush) if self._cornerRadius: - dc.DrawRoundedRectangle(x1, y1, self._width, self._height, self._cornerRadius) + dc.DrawRoundedRectangle(int(x1), int(y1), self._width, self._height, self._cornerRadius) else: - dc.DrawRectangle(x1, y1, self._width, self._height) + dc.DrawRectangle(int(x1), int(y1), self._width, self._height) def GetBoundingBoxMin(self): """Get the bounding box minimum.""" @@ -2882,7 +2882,7 @@ class PolygonShape(Shape): # Duplicate the list of points self._points = [] for point in the_points: - new_point = wx.Point(point[0], point[1]) + new_point = wx.Point(int(point[0]), int(point[1])) self._points.append(new_point) self.CalculateBoundingBox() self._originalWidth = self._boundWidth @@ -3444,7 +3444,7 @@ class EllipseShape(Shape): dc.SetPen(self._pen) if self._brush: dc.SetBrush(self._brush) - dc.DrawEllipse(self._xpos - self.GetWidth() / 2.0, self._ypos - self.GetHeight() / 2.0, self.GetWidth(), self.GetHeight()) + dc.DrawEllipse(int(self._xpos - self.GetWidth() / 2.0), int(self._ypos - self.GetHeight() / 2.0), self.GetWidth(), self.GetHeight()) def SetSize(self, x, y, recursive = True): """ --- a/wx/lib/ogl/bmpshape.py +++ b/wx/lib/ogl/bmpshape.py @@ -32,7 +32,7 @@ class BitmapShape(RectangleShape): x = self._xpos - self._bitmap.GetWidth() / 2.0 y = self._ypos - self._bitmap.GetHeight() / 2.0 - dc.DrawBitmap(self._bitmap, x, y, True) + dc.DrawBitmap(self._bitmap, int(x), int(y), True) def SetSize(self, w, h, recursive = True): """ --- a/wx/lib/ogl/composit.py +++ b/wx/lib/ogl/composit.py @@ -1131,11 +1131,11 @@ class DivisionShape(CompositeShape): if self._leftSide: dc.SetPen(self._leftSidePen) - dc.DrawLine(x1, y2, x1, y1) + dc.DrawLine(int(x1), int(y2), int(x1), int(y1)) if self._topSide: dc.SetPen(self._topSidePen) - dc.DrawLine(x1, y1, x2, y1) + dc.DrawLine(int(x1), int(y1), int(x2), int(y1)) # For testing purposes, draw a rectangle so we know # how big the division is. --- a/wx/lib/ogl/divided.py +++ b/wx/lib/ogl/divided.py @@ -231,7 +231,7 @@ class DividedShape(RectangleShape): regionPen = region.GetActualPen() if regionPen: dc.SetPen(regionPen) - dc.DrawLine(leftX, y, rightX, y) + dc.DrawLine(int(leftX), int(y), int(rightX), int(y)) currentY = actualY --- a/wx/lib/ogl/lines.py +++ b/wx/lib/ogl/lines.py @@ -1200,7 +1200,7 @@ class LineShape(Shape): points = [] for point in self._lineControlPoints: - points.append(wx.Point(point[0], point[1])) + points.append(wx.Point(int(point[0]), int(point[1]))) if self._isSpline: dc.DrawSpline(points) --- a/wx/lib/ogl/oglmisc.py +++ b/wx/lib/ogl/oglmisc.py @@ -300,10 +300,10 @@ def DrawFormattedText(dc, text_list, xpo yoffset = ypos - height / 2.0 # +1 to allow for rounding errors - dc.SetClippingRegion(xpos - width / 2.0, ypos - height / 2.0, width + 1, height + 1) + dc.SetClippingRegion(int(xpos - width / 2.0), int(ypos - height / 2.0), int(width + 1), int(height + 1)) for line in text_list: - dc.DrawText(line.GetText(), xoffset + line.GetX(), yoffset + line.GetY()) + dc.DrawText(line.GetText(), int(xoffset + line.GetX()), int(yoffset + line.GetY())) dc.DestroyClippingRegion() --- a/wx/lib/plot/examples/demo.py +++ b/wx/lib/plot/examples/demo.py @@ -984,7 +984,7 @@ class PlotDemoMainFrame(wx.Frame): sx, sy = mDataDict["scaledXY"] # scaled x,y of closest point # 10by10 square centered on point - dc.DrawRectangle(sx - 5, sy - 5, 10, 10) + dc.DrawRectangle(int(sx - 5), int(sy - 5), 10, 10) px, py = mDataDict["pointXY"] cNum = mDataDict["curveNum"] pntIn = mDataDict["pIndex"] @@ -992,7 +992,7 @@ class PlotDemoMainFrame(wx.Frame): # make a string to display s = "Crv# %i, '%s', Pt. (%.2f,%.2f), PtInd %i" % ( cNum, legend, px, py, pntIn) - dc.DrawText(s, sx, sy + 1) + dc.DrawText(s, int(sx), int(sy + 1)) def run_demo(): --- a/wx/lib/plot/plotcanvas.py +++ b/wx/lib/plot/plotcanvas.py @@ -174,24 +174,24 @@ class PlotCanvas(wx.Panel): # Default Pens self._gridPen = wx.Pen(wx.Colour(180, 180, 180, 255), - self._pointSize[0], + int(self._pointSize[0]), wx.PENSTYLE_DOT) self._centerLinePen = wx.Pen(wx.RED, - self._pointSize[0], + int(self._pointSize[0]), wx.PENSTYLE_SHORT_DASH) self._axesPen = wx.Pen(wx.BLACK, - self._pointSize[0], + int(self._pointSize[0]), wx.PENSTYLE_SOLID) self._tickPen = wx.Pen(wx.BLACK, - self._pointSize[0], + int(self._pointSize[0]), wx.PENSTYLE_SOLID) self._tickLength = tuple(-x * 2 for x in self._pointSize) self._diagonalPen = wx.Pen(wx.BLUE, - self._pointSize[0], + int(self._pointSize[0]), wx.PENSTYLE_DOT_DASH) def SetCursor(self, cursor): @@ -1925,10 +1925,10 @@ class PlotCanvas(wx.Panel): # set clipping area so drawing does not occur outside axis box ptx, pty, rectWidth, rectHeight = self._point2ClientCoord(p1, p2) # allow graph to overlap axis lines by adding units to w and h - dc.SetClippingRegion(ptx * self._pointSize[0], - pty * self._pointSize[1], - rectWidth * self._pointSize[0] + 2, - rectHeight * self._pointSize[1] + 1) + dc.SetClippingRegion(int(ptx * self._pointSize[0]), + int(pty * self._pointSize[1]), + int(rectWidth * self._pointSize[0] + 2), + int(rectHeight * self._pointSize[1] + 1)) # Draw the lines and markers # start = _time.perf_counter() graphics.draw(dc) @@ -2280,7 +2280,7 @@ class PlotCanvas(wx.Panel): pnt = ((trhc[0] + legendLHS + legendSymExt[0] + 5 * self._pointSize[0]), trhc[1] + s + lineHeight / 2. - legendTextExt[1] / 2) - dc.DrawText(o.getLegend(), pnt[0], pnt[1]) + dc.DrawText(o.getLegend(), int(pnt[0]), int(pnt[1])) dc.SetFont(self._getFont(self._fontSizeAxis)) # reset def _titleLablesWH(self, dc, graphics): @@ -2329,7 +2329,7 @@ class PlotCanvas(wx.Panel): dc.SetPen(wx.Pen(wx.BLACK)) dc.SetBrush(wx.Brush(wx.WHITE, wx.BRUSHSTYLE_TRANSPARENT)) dc.SetLogicalFunction(wx.INVERT) - dc.DrawRectangle(ptx, pty, rectWidth, rectHeight) + dc.DrawRectangle(int(ptx), int(pty), int(rectWidth), int(rectHeight)) dc.SetLogicalFunction(wx.COPY) def _getFont(self, size): @@ -2423,7 +2423,7 @@ class PlotCanvas(wx.Panel): # increases thickness for printing only pen = self.gridPen penWidth = self.printerScale * pen.GetWidth() - pen.SetWidth(penWidth) + pen.SetWidth(int(penWidth)) dc.SetPen(pen) x, y, width, height = self._point2ClientCoord(p1, p2) @@ -2432,13 +2432,13 @@ class PlotCanvas(wx.Panel): if self.enableGrid[0]: for x, _ in xticks: pt = scale_and_shift_point(x, p1[1], scale, shift) - dc.DrawLine(pt[0], pt[1], pt[0], pt[1] - height) + dc.DrawLine(int(pt[0]), int(pt[1]), int(pt[0]), int(pt[1] - height)) if self._ySpec != 'none': if self.enableGrid[1]: for y, label in yticks: pt = scale_and_shift_point(p1[0], y, scale, shift) - dc.DrawLine(pt[0], pt[1], pt[0] + width, pt[1]) + dc.DrawLine(int(pt[0]), int(pt[1]), int(pt[0] + width), int(pt[1])) @TempStyle('pen') def _drawTicks(self, dc, p1, p2, scale, shift, xticks, yticks): @@ -2471,7 +2471,7 @@ class PlotCanvas(wx.Panel): # increases thickness for printing only pen = self.tickPen penWidth = self.printerScale * pen.GetWidth() - pen.SetWidth(penWidth) + pen.SetWidth(int(penWidth)) dc.SetPen(pen) # lengthen lines for printing @@ -2484,13 +2484,13 @@ class PlotCanvas(wx.Panel): lines = [] for x, label in xticks: pt = scale_and_shift_point(x, p1[1], scale, shift) - lines.append((pt[0], pt[1], pt[0], pt[1] - xTickLength)) + lines.append((int(pt[0]), int(pt[1]), int(pt[0]), int(pt[1] - xTickLength))) dc.DrawLineList(lines) if ticks.top: lines = [] for x, label in xticks: pt = scale_and_shift_point(x, p2[1], scale, shift) - lines.append((pt[0], pt[1], pt[0], pt[1] + xTickLength)) + lines.append((int(pt[0]), int(pt[1]), int(pt[0]), int(pt[1] + xTickLength))) dc.DrawLineList(lines) if self.ySpec != 'none': @@ -2498,13 +2498,13 @@ class PlotCanvas(wx.Panel): lines = [] for y, label in yticks: pt = scale_and_shift_point(p1[0], y, scale, shift) - lines.append((pt[0], pt[1], pt[0] + yTickLength, pt[1])) + lines.append((int(pt[0]), int(pt[1]), int(pt[0] + yTickLength), int(pt[1]))) dc.DrawLineList(lines) if ticks.right: lines = [] for y, label in yticks: pt = scale_and_shift_point(p2[0], y, scale, shift) - lines.append((pt[0], pt[1], pt[0] - yTickLength, pt[1])) + lines.append((int(pt[0]), int(pt[1]), int(pt[0] - yTickLength), int(pt[1]))) dc.DrawLineList(lines) @TempStyle('pen') @@ -2531,25 +2531,25 @@ class PlotCanvas(wx.Panel): # increases thickness for printing only pen = self.centerLinePen penWidth = self.printerScale * pen.GetWidth() - pen.SetWidth(penWidth) + pen.SetWidth(int(penWidth)) dc.SetPen(pen) if self._centerLinesEnabled in ('Horizontal', True): y1 = scale[1] * p1[1] + shift[1] y2 = scale[1] * p2[1] + shift[1] y = (y1 - y2) / 2.0 + y2 - dc.DrawLine(scale[0] * p1[0] + shift[0], - y, - scale[0] * p2[0] + shift[0], - y) + dc.DrawLine(int(scale[0] * p1[0] + shift[0]), + int(y), + int(scale[0] * p2[0] + shift[0]), + int(y)) if self._centerLinesEnabled in ('Vertical', True): x1 = scale[0] * p1[0] + shift[0] x2 = scale[0] * p2[0] + shift[0] x = (x1 - x2) / 2.0 + x2 - dc.DrawLine(x, - scale[1] * p1[1] + shift[1], - x, - scale[1] * p2[1] + shift[1]) + dc.DrawLine(int(x), + int(scale[1] * p1[1] + shift[1]), + int(x), + int(scale[1] * p2[1] + shift[1])) @TempStyle('pen') def _drawDiagonals(self, dc, p1, p2, scale, shift): @@ -2575,19 +2575,19 @@ class PlotCanvas(wx.Panel): """ pen = self.diagonalPen penWidth = self.printerScale * pen.GetWidth() - pen.SetWidth(penWidth) + pen.SetWidth(int(penWidth)) dc.SetPen(pen) if self._diagonalsEnabled in ('Bottomleft-Topright', True): - dc.DrawLine(scale[0] * p1[0] + shift[0], - scale[1] * p1[1] + shift[1], - scale[0] * p2[0] + shift[0], - scale[1] * p2[1] + shift[1]) + dc.DrawLine(int(scale[0] * p1[0] + shift[0]), + int(scale[1] * p1[1] + shift[1]), + int(scale[0] * p2[0] + shift[0]), + int(scale[1] * p2[1] + shift[1])) if self._diagonalsEnabled in ('Bottomright-Topleft', True): - dc.DrawLine(scale[0] * p1[0] + shift[0], - scale[1] * p2[1] + shift[1], - scale[0] * p2[0] + shift[0], - scale[1] * p1[1] + shift[1]) + dc.DrawLine(int(scale[0] * p1[0] + shift[0]), + int(scale[1] * p2[1] + shift[1]), + int(scale[0] * p2[0] + shift[0]), + int(scale[1] * p1[1] + shift[1])) @TempStyle('pen') def _drawAxes(self, dc, p1, p2, scale, shift): @@ -2614,7 +2614,7 @@ class PlotCanvas(wx.Panel): # increases thickness for printing only pen = self.axesPen penWidth = self.printerScale * pen.GetWidth() - pen.SetWidth(penWidth) + pen.SetWidth(int(penWidth)) dc.SetPen(pen) axes = self.enableAxes @@ -2623,24 +2623,24 @@ class PlotCanvas(wx.Panel): lower, upper = p1[0], p2[0] a1 = scale_and_shift_point(lower, p1[1], scale, shift) a2 = scale_and_shift_point(upper, p1[1], scale, shift) - dc.DrawLine(a1[0], a1[1], a2[0], a2[1]) + dc.DrawLine(int(a1[0]), int(a1[1]), int(a2[0]), int(a2[1])) if axes.top: lower, upper = p1[0], p2[0] a1 = scale_and_shift_point(lower, p2[1], scale, shift) a2 = scale_and_shift_point(upper, p2[1], scale, shift) - dc.DrawLine(a1[0], a1[1], a2[0], a2[1]) + dc.DrawLine(int(a1[0]), int(a1[1]), int(a2[0]), int(a2[1])) if self.ySpec != 'none': if axes.left: lower, upper = p1[1], p2[1] a1 = scale_and_shift_point(p1[0], lower, scale, shift) a2 = scale_and_shift_point(p1[0], upper, scale, shift) - dc.DrawLine(a1[0], a1[1], a2[0], a2[1]) + dc.DrawLine(int(a1[0]), int(a1[1]), int(a2[0]), int(a2[1])) if axes.right: lower, upper = p1[1], p2[1] a1 = scale_and_shift_point(p2[0], lower, scale, shift) a2 = scale_and_shift_point(p2[0], upper, scale, shift) - dc.DrawLine(a1[0], a1[1], a2[0], a2[1]) + dc.DrawLine(int(a1[0]), int(a1[1]), int(a2[0]), int(a2[1])) @TempStyle('pen') def _drawAxesValues(self, dc, p1, p2, scale, shift, xticks, yticks): @@ -2686,8 +2686,8 @@ class PlotCanvas(wx.Panel): w = dc.GetTextExtent(label)[0] pt = scale_and_shift_point(x, p1[1], scale, shift) coords.append( - (pt[0] - w/2, - pt[1] + 2 * self._pointSize[1] - xTickLength) + (int(pt[0] - w/2), + int(pt[1] + 2 * self._pointSize[1] - xTickLength)) ) dc.DrawTextList(labels, coords) @@ -2698,8 +2698,8 @@ class PlotCanvas(wx.Panel): w, h = dc.GetTextExtent(label) pt = scale_and_shift_point(x, p2[1], scale, shift) coords.append( - (pt[0] - w/2, - pt[1] - 2 * self._pointSize[1] - h - xTickLength) + (int(pt[0] - w/2), + int(pt[1] - 2 * self._pointSize[1] - h - xTickLength)) ) dc.DrawTextList(labels, coords) @@ -2712,8 +2712,8 @@ class PlotCanvas(wx.Panel): w = dc.GetTextExtent(label)[0] pt = scale_and_shift_point(p1[0], y, scale, shift) coords.append( - (pt[0] - w - 3 * self._pointSize[0] + yTickLength, - pt[1] - 0.5 * h) + (int(pt[0] - w - 3 * self._pointSize[0] + yTickLength), + int(pt[1] - 0.5 * h)) ) dc.DrawTextList(labels, coords) @@ -2725,8 +2725,8 @@ class PlotCanvas(wx.Panel): w = dc.GetTextExtent(label)[0] pt = scale_and_shift_point(p2[0], y, scale, shift) coords.append( - (pt[0] + 3 * self._pointSize[0] + yTickLength, - pt[1] - 0.5 * h) + (int(pt[0] + 3 * self._pointSize[0] + yTickLength), + int(pt[1] - 0.5 * h)) ) dc.DrawTextList(labels, coords) @@ -2785,7 +2785,7 @@ class PlotCanvas(wx.Panel): + (self.plotbox_size[0] - lhsW - rhsW) / 2. - titleWH[0] / 2., self.plotbox_origin[1] - self.plotbox_size[1] ) - dc.DrawText(graphics.title, titlePos[0], titlePos[1]) + dc.DrawText(graphics.title, int(titlePos[0]), int(titlePos[1])) def _drawAxesLabels(self, dc, graphics, lhsW, rhsW, bottomH, topH, xLabelWH, yLabelWH): @@ -2806,7 +2806,7 @@ class PlotCanvas(wx.Panel): + (self.plotbox_size[0] - lhsW - rhsW) / 2. - xLabelWH[0] / 2., self.plotbox_origin[1] - xLabelWH[1] - yTickLength ) - dc.DrawText(graphics.xLabel, xLabelPos[0], xLabelPos[1]) + dc.DrawText(graphics.xLabel, int(xLabelPos[0]), int(xLabelPos[1])) yLabelPos = ( self.plotbox_origin[0] - 3 * self._pointSize[0] + xTickLength, self.plotbox_origin[1] - bottomH @@ -2814,7 +2814,7 @@ class PlotCanvas(wx.Panel): ) if graphics.yLabel: # bug fix for Linux dc.DrawRotatedText( - graphics.yLabel, yLabelPos[0], yLabelPos[1], 90) + graphics.yLabel, int(yLabelPos[0]), int(yLabelPos[1]), 90) @TempStyle('pen') def _drawPlotAreaLabels(self, dc, graphics, lhsW, rhsW, titleWH, @@ -2942,7 +2942,7 @@ class PlotCanvas(wx.Panel): if pos >= 0: pagesize = int((r_current[1] - r_current[0]) / unit) - self.sb_hor.SetScrollbar(pos, pagesize, sbfullrange, pagesize) + self.sb_hor.SetScrollbar(pos, pagesize, int(sbfullrange), pagesize) self._sb_xunit = unit needScrollbars = needScrollbars or (pagesize != sbfullrange) else: @@ -2964,7 +2964,7 @@ class PlotCanvas(wx.Panel): if pos >= 0: pagesize = int((r_current[1] - r_current[0]) / unit) pos = (sbfullrange - 1 - pos - pagesize) - self.sb_vert.SetScrollbar(pos, pagesize, sbfullrange, pagesize) + self.sb_vert.SetScrollbar(int(pos), pagesize, int(sbfullrange), pagesize) self._sb_yunit = unit needScrollbars = needScrollbars or (pagesize != sbfullrange) else: --- a/wx/lib/plot/polyobjects.py +++ b/wx/lib/plot/polyobjects.py @@ -417,7 +417,7 @@ class PolyLine(PolyPoints): if not isinstance(colour, wx.Colour): colour = wx.Colour(colour) - pen = wx.Pen(colour, width, style) + pen = wx.Pen(colour, int(width), style) pen.SetCap(wx.CAP_BUTT) dc.SetPen(pen) if coord is None: @@ -518,7 +518,7 @@ class PolySpline(PolyLine): style = self.attributes['style'] if not isinstance(colour, wx.Colour): colour = wx.Colour(colour) - pen = wx.Pen(colour, width, style) + pen = wx.Pen(colour, int(width), style) pen.SetCap(wx.CAP_ROUND) dc.SetPen(pen) if coord is None: @@ -590,7 +590,7 @@ class PolyMarker(PolyPoints): if fillcolour and not isinstance(fillcolour, wx.Colour): fillcolour = wx.Colour(fillcolour) - dc.SetPen(wx.Pen(colour, width)) + dc.SetPen(wx.Pen(colour, int(width))) if fillcolour: dc.SetBrush(wx.Brush(fillcolour, fillstyle)) else: @@ -618,6 +618,7 @@ class PolyMarker(PolyPoints): dc.DrawEllipseList(rect.astype(np.int32)) def _dot(self, dc, coords, size=1): + coords = [(int(c[0]), int(c[1])) for c in coords] dc.DrawPointList(coords) def _square(self, dc, coords, size=1): @@ -699,7 +700,7 @@ class PolyBarsBase(PolyPoints): if not isinstance(pencolour, wx.Colour): pencolour = wx.Colour(pencolour) - pen = wx.Pen(pencolour, penwidth, penstyle) + pen = wx.Pen(pencolour, int(penwidth), penstyle) pen.SetCap(wx.CAP_BUTT) if not isinstance(fillcolour, wx.Colour): @@ -790,6 +791,7 @@ class PolyBars(PolyBarsBase): raise TypeError(err_str.format(type(barwidth))) rects = [self.calc_rect(x, y, w) for x, y, w in pts] + rects = [(int(r[0]), int(r[1]), int(r[2]), int(r[3])) for r in rects] dc.DrawRectangleList(rects) else: dc.DrawLines(coord) # draw legend line @@ -858,6 +860,8 @@ class PolyHistogram(PolyBarsBase): rects = [self.calc_rect(y, low, high) for y, (low, high) in zip(self.hist, self.bins)] + rects = [(int(r[0]), int(r[1]), int(r[2]), int(r[3])) + for r in rects] dc.DrawRectangleList(rects) else: @@ -1114,10 +1118,10 @@ class PolyBoxPlot(PolyPoints): self.currentShift) # rectangles are drawn (left, top, width, height) so adjust - iqr_box = [iqr_box[0][0], # X (left) - iqr_box[0][1], # Y (top) - iqr_box[1][0] - iqr_box[0][0], # Width - iqr_box[1][1] - iqr_box[0][1]] # Height + iqr_box = [int(iqr_box[0][0]), # X (left) + int(iqr_box[0][1]), # Y (top) + int(iqr_box[1][0] - iqr_box[0][0]), # Width + int(iqr_box[1][1] - iqr_box[0][1])] # Height box_pen = wx.Pen(wx.BLACK, 3, wx.PENSTYLE_SOLID) box_brush = wx.Brush(wx.GREEN, wx.BRUSHSTYLE_SOLID) @@ -1503,7 +1507,7 @@ class PlotPrintout(wx.Printout): self.graph._setSize(plotAreaW, plotAreaH) # Set offset and scale - dc.SetDeviceOrigin(pixLeft, pixTop) + dc.SetDeviceOrigin(int(pixLeft), int(pixTop)) # Thicken up pens and increase marker size for printing ratioW = float(plotAreaW) / clientDcSize[0] --- a/wx/lib/popupctl.py +++ b/wx/lib/popupctl.py @@ -124,7 +124,7 @@ class PopupDialog(wx.Dialog): selfSize = self.GetSize() tcSize = self.ctrl.GetSize() - pos.x -= (selfSize.width - tcSize.width) / 2 + pos.x -= (selfSize.width - tcSize.width) // 2 if pos.x + selfSize.width > dSize.width: pos.x = dSize.width - selfSize.width if pos.x < 0: --- a/wx/lib/scrolledpanel.py +++ b/wx/lib/scrolledpanel.py @@ -222,4 +222,4 @@ class ScrolledPanel(wx.ScrolledWindow): # if we need to adjust if new_vs_x != -1 or new_vs_y != -1: #print("%s: (%s, %s)" % (self.GetName(), new_vs_x, new_vs_y)) - self.Scroll(new_vs_x, new_vs_y) + self.Scroll(int(new_vs_x), int(new_vs_y)) --- a/wx/lib/throbber.py +++ b/wx/lib/throbber.py @@ -200,11 +200,11 @@ class Throbber(wx.Panel): """ dc.DrawBitmap(self.submaps[self.sequence[self.current]], 0, 0, True) if self.overlay and self.showOverlay: - dc.DrawBitmap(self.overlay, self.overlayX, self.overlayY, True) + dc.DrawBitmap(self.overlay, int(self.overlayX), int(self.overlayY), True) if self.label and self.showLabel: - dc.DrawText(self.label, self.labelX, self.labelY) + dc.DrawText(self.label, int(self.labelX), int(self.labelY)) dc.SetTextForeground(wx.WHITE) - dc.DrawText(self.label, self.labelX-1, self.labelY-1) + dc.DrawText(self.label, int(self.labelX-1), int(self.labelY-1)) def OnPaint(self, event): --- a/wx/lib/ticker.py +++ b/wx/lib/ticker.py @@ -86,7 +86,7 @@ class Ticker(wx.Control): def Start(self): """Starts the text moving""" if not self.timer.IsRunning(): - self.timer.Start(1000 / self._fps) + self.timer.Start(1000 // self._fps) def IsTicking(self): @@ -208,7 +208,7 @@ class Ticker(wx.Control): offx = self._offset - self._extent[0] else: offx = self.GetSize()[0] - self._offset - offy = (self.GetSize()[1] - self._extent[1]) / 2 #centered vertically + offy = (self.GetSize()[1] - self._extent[1]) // 2 #centered vertically dc.DrawText(self._text, offx, offy)