# o Updated for 2.5 compatability.
#
+"""
+Provides a `ColourSelect` button that, when clicked, will display a
+colour selection dialog. The selected colour is displayed on the
+button itself.
+"""
+
#----------------------------------------------------------------------------
import wx
#----------------------------------------------------------------------------
class ColourSelect(wx.BitmapButton):
- def __init__(self, parent, id, label="", colour=wx.BLACK,
+ def __init__(self, parent, id=wx.ID_ANY, label="", colour=wx.BLACK,
pos=wx.DefaultPosition, size=wx.DefaultSize,
callback=None, style=0):
if label:
def MakeBitmap(self):
- bdr = 10
+ bdr = 8
width, height = self.GetSize()
+
+ # yes, this is weird, but it appears to work around a bug in wxMac
+ if "wxMac" in wx.PlatformInfo and width == height:
+ height -= 1
+
bmp = wx.EmptyBitmap(width-bdr, height-bdr)
dc = wx.MemoryDC()
dc.SelectObject(bmp)
self.SetBitmapDisabled(bmp)
self.SetBitmapFocus(bmp)
self.SetBitmapSelected(bmp)
-
+ self.Refresh()
+
def OnChange(self):
wx.PostEvent(self, ColourSelectEvent(self.GetId(), self.GetValue()))
data = wx.ColourData()
data.SetChooseFull(True)
data.SetColour(self.colour)
- dlg = wx.ColourDialog(self.GetParent(), data)
+ dlg = wx.ColourDialog(wx.GetTopLevelParent(self), data)
changed = dlg.ShowModal() == wx.ID_OK
if changed:
data = dlg.GetColourData()
self.SetColour(data.GetColour())
-
dlg.Destroy()
# moved after dlg.Destroy, since who knows what the callback will do...