X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/1fded56b375bf7a4687af1cdb182899614c1b2a8..eb3efe0d4b8a0964cd0504a69c0e9540c18e390c:/wxPython/wx/lib/colourchooser/pycolourbox.py diff --git a/wxPython/wx/lib/colourchooser/pycolourbox.py b/wxPython/wx/lib/colourchooser/pycolourbox.py index d240cb83c9..a1108c7b1c 100644 --- a/wxPython/wx/lib/colourchooser/pycolourbox.py +++ b/wxPython/wx/lib/colourchooser/pycolourbox.py @@ -1,11 +1,87 @@ +""" +PyColourChooser +Copyright (C) 2002 Michael Gilfix -"""Renamer stub: provides a way to drop the wx prefix from wxPython objects.""" +This file is part of PyColourChooser. -__cvsid__ = "$Id$" -__revision__ = "$Revision$"[11:-2] +This version of PyColourChooser is open source; you can redistribute it +and/or modify it under the licensed terms. -from wx import _rename -from wxPython.lib.colourchooser import pycolourbox -_rename(globals(), pycolourbox.__dict__, modulename='lib.colourchooser.pycolourbox') -del pycolourbox -del _rename +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +""" +# 12/14/2003 - Jeff Grimmett (grimmtooth@softhome.net) +# +# o 2.5 compatability update. +# +# 12/21/2003 - Jeff Grimmett (grimmtooth@softhome.net) +# +# o wxPyColorChooser -> PyColorChooser +# o wxPyColourChooser -> PyColourChooser +# + +import wx + +class PyColourBox(wx.Panel): + """A Colour Selection Box + + The Colour selection box implements button like behavior but contains + a solid-filled, coloured sub-box. Placing the colour in a sub-box allows + for filling in the main panel's background for a high-lighting effect. + """ + def __init__(self, parent, id, colour=(0, 0, 0), size=(25, 20)): + """Creates a new colour box instance and initializes the colour + content.""" + wx.Panel.__init__(self, parent, id, size=size, style=wx.NO_BORDER) + + self.colour_box = wx.Window(self, -1, style=wx.SIMPLE_BORDER) + + sizer = wx.GridSizer(1, 1) + sizer.Add(self.colour_box, 0, wx.FIXED_MINSIZE | wx.ALIGN_CENTER_VERTICAL | wx.ALIGN_CENTER_HORIZONTAL) + sizer.SetItemMinSize(self.colour_box, size[0] - 5, size[1] - 5) + self.SetAutoLayout(True) + self.SetSizer(sizer) + self.Layout() + + self.real_bg = self.GetBackgroundColour() + self.SetColourTuple(colour) + + def GetColourBox(self): + """Returns a reference to the internal box object containing the + color. This function is useful for setting up event handlers for + the box.""" + return self.colour_box + + def GetColour(self): + """Returns a wxColour object indicating the box's current colour.""" + return self.colour_box.GetBackgroundColour() + + def SetColour(self, colour): + """Accepts a wxColour object and sets the box's current color.""" + self.colour_box.SetBackgroundColour(colour) + self.colour_box.Refresh() + + def SetColourTuple(self, colour): + """Sets the box's current couple to the given tuple.""" + self.colour = colour + self.colour_box.SetBackgroundColour(wx.Colour(*self.colour)) + + def Update(self): + wx.Panel.Update(self) + self.colour_box.Update() + + def SetHighlight(self, val): + """Accepts a boolean 'val' toggling the box's highlighting.""" + # XXX This code has been disabled for now until I can figure out + # how to get this to work reliably across all platforms. + if val: + #A wxColourPtr is returned in windows, making this difficult + red =(self.real_bg.Red() - 45) % 255 + green =(self.real_bg.Green() - 45) % 255 + blue =(self.real_bg.Blue() - 45) % 255 + new_colour = wx.Colour(red, green, blue) + self.SetBackgroundColour(new_colour) + else: + self.SetBackgroundColour(self.real_bg) + self.Refresh()