+class wxGenBitmapTextButton(wxGenBitmapButton): # generic bitmapped button with Text Label
+ def __init__(self, parent, ID, bitmap, label,
+ pos = wxDefaultPosition, size = wxDefaultSize,
+ style = 0, validator = wxDefaultValidator,
+ name = "genbutton"):
+ wxGenBitmapButton.__init__(self, parent, ID, bitmap, pos, size, style, validator, name)
+ self.SetLabel(label)
+
+
+ def _GetLabelSize(self):
+ """ used internally """
+ w, h = self.GetTextExtent(self.GetLabel())
+ if not self.bmpLabel:
+ return w, h, true # if there isn't a bitmap use the size of the text
+
+ w_bmp = self.bmpLabel.GetWidth()+2
+ h_bmp = self.bmpLabel.GetHeight()+2
+ width = w + w_bmp
+ if h_bmp > h:
+ height = h_bmp
+ else:
+ height = h
+ return width, height, true
+
+
+ def DrawLabel(self, dc, width, height, dw=0, dy=0):
+ bmp = self.bmpLabel
+ if bmp != None: # if the bitmap is used
+ if self.bmpDisabled and not self.IsEnabled():
+ bmp = self.bmpDisabled
+ if self.bmpFocus and self.hasFocus:
+ bmp = self.bmpFocus
+ if self.bmpSelected and not self.up:
+ bmp = self.bmpSelected
+ bw,bh = bmp.GetWidth(), bmp.GetHeight()
+ if not self.up:
+ dw = dy = self.labelDelta
+ hasMask = bmp.GetMask() != None
+ else:
+ bw = bh = 0 # no bitmap -> size is zero
+
+ dc.SetFont(self.GetFont())
+ if self.IsEnabled():
+ dc.SetTextForeground(self.GetForegroundColour())
+ else:
+ dc.SetTextForeground(wxSystemSettings_GetSystemColour(wxSYS_COLOUR_GRAYTEXT))
+
+ label = self.GetLabel()
+ tw, th = dc.GetTextExtent(label) # size of text
+ if not self.up:
+ dw = dy = self.labelDelta
+
+ pos_x = (width-bw-tw)/2+dw # adjust for bitmap and text to centre
+ if bmp !=None:
+ 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 + dw+bw, (height-th)/2+dy) # draw the text
+
+#----------------------------------------------------------------------