3 Copyright (C) 2002 Michael Gilfix <mgilfix@eecs.tufts.edu> 
   5 This file is part of PyColourChooser. 
   7 This version of PyColourChooser is open source; you can redistribute it 
   8 and/or modify it under the licensed terms. 
  10 This program is distributed in the hope that it will be useful, 
  11 but WITHOUT ANY WARRANTY; without even the implied warranty of 
  12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
  14 # 12/14/2003 - Jeff Grimmett (grimmtooth@softhome.net) 
  16 # o 2.5 compatability update. 
  18 # 12/21/2003 - Jeff Grimmett (grimmtooth@softhome.net) 
  20 # o wxPyColorChooser -> PyColorChooser 
  21 # o wxPyColourChooser -> PyColourChooser 
  26 class PyColourBox(wx
.Panel
): 
  27     """A Colour Selection Box 
  29     The Colour selection box implements button like behavior but contains 
  30     a solid-filled, coloured sub-box. Placing the colour in a sub-box allows 
  31     for filling in the main panel's background for a high-lighting effect. 
  33     def __init__(self
, parent
, id, colour
=(0, 0, 0), size
=(25, 20)): 
  34         """Creates a new colour box instance and initializes the colour 
  36         wx
.Panel
.__init
__(self
, parent
, id, size
=size
, style
=wx
.NO_BORDER
) 
  38         self
.colour_box 
= wx
.Window(self
, -1, style
=wx
.SIMPLE_BORDER
) 
  40         sizer 
= wx
.GridSizer(1, 1) 
  41         sizer
.Add(self
.colour_box
, 0, wx
.FIXED_MINSIZE | wx
.ALIGN_CENTER_VERTICAL | wx
.ALIGN_CENTER_HORIZONTAL
) 
  42         sizer
.SetItemMinSize(self
.colour_box
, size
[0] - 5, size
[1] - 5) 
  43         self
.SetAutoLayout(True) 
  47         self
.real_bg 
= self
.GetBackgroundColour() 
  48         self
.SetColourTuple(colour
) 
  50     def GetColourBox(self
): 
  51         """Returns a reference to the internal box object containing the 
  52         color. This function is useful for setting up event handlers for 
  54         return self
.colour_box
 
  57         """Returns a wxColour object indicating the box's current colour.""" 
  58         return self
.colour_box
.GetBackgroundColour() 
  60     def SetColour(self
, colour
): 
  61         """Accepts a wxColour object and sets the box's current color.""" 
  62         self
.colour_box
.SetBackgroundColour(colour
) 
  63         self
.colour_box
.Refresh() 
  65     def SetColourTuple(self
, colour
): 
  66         """Sets the box's current couple to the given tuple.""" 
  68         self
.colour_box
.SetBackgroundColour(wx
.Colour(*self
.colour
)) 
  72         self
.colour_box
.Update() 
  74     def SetHighlight(self
, val
): 
  75         """Accepts a boolean 'val' toggling the box's highlighting.""" 
  76         # XXX This code has been disabled for now until I can figure out 
  77         # how to get this to work reliably across all platforms. 
  79             #A wxColourPtr is returned in windows, making this difficult 
  80             red 
=(self
.real_bg
.Red() - 45) % 255 
  81             green 
=(self
.real_bg
.Green() - 45) % 255 
  82             blue 
=(self
.real_bg
.Blue() - 45) % 255 
  83             new_colour 
= wx
.Colour(red
, green
, blue
) 
  84             self
.SetBackgroundColour(new_colour
) 
  86             self
.SetBackgroundColour(self
.real_bg
)