]> git.saurik.com Git - wxWidgets.git/blobdiff - wxPython/wx/lib/buttons.py
Compile fixes for Panther
[wxWidgets.git] / wxPython / wx / lib / buttons.py
index 11c3e77860583b9c2fde845269dce5c5fca6c4e7..a7290cbbde15e1b258725eed6a71dd84ba89325c 100644 (file)
@@ -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.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)
@@ -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):
@@ -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
+
+
+#----------------------------------------------------------------------