81 lines
2.2 KiB
Python
81 lines
2.2 KiB
Python
|
# AnalogClock's colour selector for setup dialog
|
||
|
# E. A. Tacao <e.a.tacao |at| estadao.com.br>
|
||
|
# http://j.domaindlx.com/elements28/wxpython/
|
||
|
# 15 Fev 2006, 22:00 GMT-03:00
|
||
|
# Distributed under the wxWidgets license.
|
||
|
|
||
|
import wx
|
||
|
from wx.lib.newevent import NewEvent
|
||
|
from wx.lib.buttons import GenBitmapButton
|
||
|
|
||
|
#----------------------------------------------------------------------------
|
||
|
|
||
|
(ColourSelectEvent, EVT_COLOURSELECT) = NewEvent()
|
||
|
|
||
|
#----------------------------------------------------------------------------
|
||
|
|
||
|
class ColourSelect(GenBitmapButton):
|
||
|
def __init__(self, parent, size=(21, 21), value=wx.BLACK):
|
||
|
w, h = size[0] - 5, size[1] - 5
|
||
|
GenBitmapButton.__init__(self, parent, wx.ID_ANY, wx.EmptyBitmap(w, h),
|
||
|
size=size)
|
||
|
self.SetBezelWidth(1)
|
||
|
|
||
|
self.parent = parent
|
||
|
self.SetValue(value)
|
||
|
|
||
|
self.parent.Bind(wx.EVT_BUTTON, self.OnClick, self)
|
||
|
|
||
|
|
||
|
def _makeBitmap(self):
|
||
|
bdr = 8; w, h = self.GetSize()
|
||
|
bmp = wx.EmptyBitmap(w - bdr, h - bdr)
|
||
|
|
||
|
dc = wx.MemoryDC()
|
||
|
dc.SelectObject(bmp)
|
||
|
dc.SetBackground(wx.Brush(self.value, wx.SOLID))
|
||
|
dc.Clear()
|
||
|
dc.SelectObject(wx.NullBitmap)
|
||
|
|
||
|
self.SetBitmapLabel(bmp)
|
||
|
self.Refresh()
|
||
|
|
||
|
|
||
|
def GetValue(self):
|
||
|
return self.value
|
||
|
|
||
|
|
||
|
def SetValue(self, value):
|
||
|
self.value = value
|
||
|
self._makeBitmap()
|
||
|
|
||
|
|
||
|
def OnClick(self, event):
|
||
|
win = wx.GetTopLevelParent(self)
|
||
|
|
||
|
data = wx.ColourData()
|
||
|
data.SetChooseFull(True)
|
||
|
data.SetColour(self.value)
|
||
|
[data.SetCustomColour(colour_index, win.customcolours[colour_index])
|
||
|
for colour_index in range(0, 16)]
|
||
|
|
||
|
dlg = wx.ColourDialog(win, data)
|
||
|
dlg.SetTitle("Select Colour")
|
||
|
changed = dlg.ShowModal() == wx.ID_OK
|
||
|
|
||
|
if changed:
|
||
|
data = dlg.GetColourData()
|
||
|
self.SetValue(data.GetColour())
|
||
|
win.customcolours = [data.GetCustomColour(colour_index) \
|
||
|
for colour_index in range(0, 16)]
|
||
|
dlg.Destroy()
|
||
|
|
||
|
if changed:
|
||
|
nevt = ColourSelectEvent(id=self.GetId(), obj=self, val=self.value)
|
||
|
wx.PostEvent(self.parent, nevt)
|
||
|
|
||
|
|
||
|
#
|
||
|
##
|
||
|
### eof
|