X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/4e20fcc5517f3a638e45a6c826e81e5dd0b62ce4..68fc5c8025e38b9d827383fbfe7ce509ae331c1f:/wxPython/wx/lib/buttons.py?ds=sidebyside diff --git a/wxPython/wx/lib/buttons.py b/wxPython/wx/lib/buttons.py index e01fd4b55b..a7290cbbde 100644 --- a/wxPython/wx/lib/buttons.py +++ b/wxPython/wx/lib/buttons.py @@ -77,7 +77,7 @@ class GenButton(wx.PyControl): self.SetLabel(label) self.InheritAttributes() - self.SetBestFittingSize(size) + self.SetInitialSize(size) self.InitColours() self.Bind(wx.EVT_LEFT_DOWN, self.OnLeftDown) @@ -92,15 +92,16 @@ class GenButton(wx.PyControl): self.Bind(wx.EVT_PAINT, self.OnPaint) - def SetBestSize(self, size=None): + def SetInitialSize(self, size=None): """ Given the current font and bezel width settings, calculate and set a good size. """ if size is None: size = wx.DefaultSize - wx.PyControl.SetBestFittingSize(self, size) - + wx.PyControl.SetInitialSize(self, size) + SetBestSize = SetInitialSize + def DoGetBestSize(self): """ @@ -197,7 +198,9 @@ class GenButton(wx.PyControl): self.InitColours() def SetDefault(self): - self.GetParent().SetDefaultItem(self) + tlw = wx.GetTopLevelParent(self) + if hasattr(tlw, 'SetDefaultItem'): + tlw.SetDefaultItem(self) def _GetLabelSize(self): """ used internally """ @@ -255,16 +258,25 @@ class GenButton(wx.PyControl): dc.DrawRectangle(bw+2,bw+2, w-bw*2-4, h-bw*2-4) dc.SetLogicalFunction(wx.COPY) - def OnPaint(self, event): (width, height) = self.GetClientSizeTuple() x1 = y1 = 0 x2 = width-1 y2 = height-1 - - dc = wx.BufferedPaintDC(self) - brush = None - + + dc = wx.PaintDC(self) + brush = self.GetBackgroundBrush(dc) + if brush is not None: + dc.SetBackground(brush) + dc.Clear() + + self.DrawBezel(dc, x1, y1, x2, y2) + self.DrawLabel(dc, width, height) + if self.hasFocus and self.useFocusInd: + self.DrawFocusIndicator(dc, width, height) + + + def GetBackgroundBrush(self, dc): if self.up: colBg = self.GetBackgroundColour() brush = wx.Brush(colBg, wx.SOLID) @@ -283,15 +295,10 @@ class GenButton(wx.PyControl): colBg = self.GetParent().GetBackgroundColour() brush = wx.Brush(colBg, wx.SOLID) else: + # this line assumes that a pressed button should be hilighted with + # a solid colour even if the background is supposed to be transparent brush = wx.Brush(self.faceDnClr, wx.SOLID) - if brush is not None: - dc.SetBackground(brush) - dc.Clear() - - self.DrawBezel(dc, x1, y1, x2, y2) - self.DrawLabel(dc, width, height) - if self.hasFocus and self.useFocusInd: - self.DrawFocusIndicator(dc, width, height) + return brush def OnLeftDown(self, event): @@ -347,14 +354,14 @@ class GenButton(wx.PyControl): def OnKeyDown(self, event): - if self.hasFocus and event.KeyCode() == ord(" "): + if self.hasFocus and event.GetKeyCode() == ord(" "): self.up = False self.Refresh() event.Skip() def OnKeyUp(self, event): - if self.hasFocus and event.KeyCode() == ord(" "): + if self.hasFocus and event.GetKeyCode() == ord(" "): self.up = True self.Notify() self.Refresh() @@ -551,7 +558,7 @@ class __ToggleMixin: event.Skip() def OnKeyUp(self, event): - if self.hasFocus and event.KeyCode() == ord(" "): + if self.hasFocus and event.GetKeyCode() == ord(" "): self.up = not self.up self.Notify() self.Refresh() @@ -574,4 +581,35 @@ class GenBitmapTextToggleButton(__ToggleMixin, GenBitmapTextButton): #---------------------------------------------------------------------- +class ThemedGenButton(GenButton): + " A themed generic button, and base class for the other themed buttons " + def DrawBezel(self, dc, x1, y1, x2, y2): + rect = wx.Rect(x1, y1, x2, y2) + if self.up: + state = 0 + else: + state = wx.CONTROL_PRESSED + wx.RendererNative.Get().DrawPushButton(self, dc, rect, state) + +class ThemedGenBitmapButton(ThemedGenButton, GenBitmapButton): + """A themed generic bitmap button.""" + pass + +class ThemedGenBitmapTextButton(ThemedGenButton, GenBitmapTextButton): + """A themed generic bitmapped button with text label""" + pass + +class ThemedGenToggleButton(ThemedGenButton, GenToggleButton): + """A themed generic toggle button""" + pass + +class ThemedGenBitmapToggleButton(ThemedGenButton, GenBitmapToggleButton): + """A themed generic toggle bitmap button""" + pass +class ThemedGenBitmapTextToggleButton(ThemedGenButton, GenBitmapTextToggleButton): + """A themed generic toggle bitmap button with text label""" + pass + + +#----------------------------------------------------------------------