self.SetLabel(label)
self.InheritAttributes()
- self.SetBestFittingSize(size)
+ self.SetInitialSize(size)
self.InitColours()
self.Bind(wx.EVT_LEFT_DOWN, self.OnLeftDown)
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):
"""
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.PaintDC(self)
- brush = None
-
+ 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)
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):
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()
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()