]> git.saurik.com Git - wxWidgets.git/blobdiff - wxPython/wx/lib/buttons.py
removed some members from wxAuiPaneInfo which should not be on the class interface
[wxWidgets.git] / wxPython / wx / lib / buttons.py
index 6339ead1fd8e20b93a86470226899d438cfa668e..f4b9d7b4fbf6db9a7a67f0188a2c8b05a6ad509c 100644 (file)
@@ -31,8 +31,8 @@ import imageutils
 
 class GenButtonEvent(wx.PyCommandEvent):
     """Event sent from the generic buttons when the button is activated. """
-    def __init__(self, eventType, ID):
-        wx.PyCommandEvent.__init__(self, eventType, ID)
+    def __init__(self, eventType, id):
+        wx.PyCommandEvent.__init__(self, eventType, id)
         self.isDown = False
         self.theButton = None
 
@@ -56,14 +56,14 @@ class GenButton(wx.PyControl):
 
     labelDelta = 1
 
-    def __init__(self, parent, ID, label,
+    def __init__(self, parent, id=-1, label='',
                  pos = wx.DefaultPosition, size = wx.DefaultSize,
                  style = 0, validator = wx.DefaultValidator,
                  name = "genbutton"):
         cstyle = style
         if cstyle == 0:
             cstyle = wx.BORDER_NONE
-        wx.PyControl.__init__(self, parent, ID, pos, size, cstyle, validator, name)
+        wx.PyControl.__init__(self, parent, id, pos, size, cstyle, validator, name)
 
         self.up = True
         self.hasFocus = False
@@ -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):
         """
@@ -255,16 +256,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 +293,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):
@@ -312,8 +317,9 @@ class GenButton(wx.PyControl):
             if not self.up:    # if the button was down when the mouse was released...
                 self.Notify()
             self.up = True
-            self.Refresh()
-            event.Skip()
+            if self:           # in case the button was destroyed in the eventhandler
+                self.Refresh()
+                event.Skip()
 
 
     def OnMotion(self, event):
@@ -335,29 +341,25 @@ class GenButton(wx.PyControl):
 
     def OnGainFocus(self, event):
         self.hasFocus = True
-        dc = wx.ClientDC(self)
-        w, h = self.GetClientSizeTuple()
-        if self.useFocusInd:
-            self.DrawFocusIndicator(dc, w, h)
+        self.Refresh()
+        self.Update()
 
 
     def OnLoseFocus(self, event):
         self.hasFocus = False
-        dc = wx.ClientDC(self)
-        w, h = self.GetClientSizeTuple()
-        if self.useFocusInd:
-            self.DrawFocusIndicator(dc, w, h)
+        self.Refresh()
+        self.Update()
 
 
     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()
@@ -369,7 +371,7 @@ class GenButton(wx.PyControl):
 class GenBitmapButton(GenButton):
     """A generic bitmap button."""
 
-    def __init__(self, parent, ID, bitmap,
+    def __init__(self, parent, id=-1, bitmap=wx.NullBitmap,
                  pos = wx.DefaultPosition, size = wx.DefaultSize,
                  style = 0, validator = wx.DefaultValidator,
                  name = "genbutton"):
@@ -377,7 +379,7 @@ class GenBitmapButton(GenButton):
         self.bmpFocus = None
         self.bmpSelected = None
         self.SetBitmapLabel(bitmap)
-        GenButton.__init__(self, parent, ID, "", pos, size, style, validator, name)
+        GenButton.__init__(self, parent, id, "", pos, size, style, validator, name)
 
 
     def GetBitmapLabel(self):
@@ -444,11 +446,11 @@ class GenBitmapButton(GenButton):
 
 class GenBitmapTextButton(GenBitmapButton):
     """A generic bitmapped button with text label"""
-    def __init__(self, parent, ID, bitmap, label,
+    def __init__(self, parent, id=-1, bitmap=wx.NullBitmap, label='',
                  pos = wx.DefaultPosition, size = wx.DefaultSize,
                  style = 0, validator = wx.DefaultValidator,
                  name = "genbutton"):
-        GenBitmapButton.__init__(self, parent, ID, bitmap, pos, size, style, validator, name)
+        GenBitmapButton.__init__(self, parent, id, bitmap, pos, size, style, validator, name)
         self.SetLabel(label)
 
 
@@ -554,7 +556,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()