mirror of
https://github.com/python/cpython.git
synced 2025-07-23 11:15:24 +00:00
Added color strip widgets
This commit is contained in:
parent
9d882bc4de
commit
29fe4ddd20
1 changed files with 45 additions and 3 deletions
|
@ -6,7 +6,36 @@ import Pmw
|
|||
import ColorDB
|
||||
from ChipWidget import ChipWidget
|
||||
from TypeinWidget import TypeinWidget
|
||||
from StripWidget import StripWidget
|
||||
|
||||
|
||||
def constant(numchips):
|
||||
step = 255.0 / (numchips - 1)
|
||||
start = 0.0
|
||||
seq = []
|
||||
while numchips > 0:
|
||||
seq.append(int(start))
|
||||
start = start + step
|
||||
numchips = numchips - 1
|
||||
return seq
|
||||
|
||||
def constant_red_generator(numchips, rgbtuple):
|
||||
red = rgbtuple[0]
|
||||
seq = constant(numchips)
|
||||
return map(None, [red] * numchips, seq, seq)
|
||||
|
||||
def constant_green_generator(numchips, rgbtuple):
|
||||
green = rgbtuple[1]
|
||||
seq = constant(numchips)
|
||||
return map(None, seq, [green] * numchips, seq)
|
||||
|
||||
def constant_blue_generator(numchips, rgbtuple):
|
||||
blue = rgbtuple[2]
|
||||
seq = constant(numchips)
|
||||
return map(None, seq, seq, [blue] * numchips)
|
||||
|
||||
|
||||
|
||||
class PyncheWidget(Pmw.MegaWidget):
|
||||
def __init__(self, colordb, parent=None, **kw):
|
||||
self.__colordb = colordb
|
||||
|
@ -21,8 +50,17 @@ class PyncheWidget(Pmw.MegaWidget):
|
|||
interiorarg = (self.interior(),)
|
||||
|
||||
# create color selectors
|
||||
self.__selectors = Pmw.Group(parent, tag_text='Color Selectors')
|
||||
self.__selectors.pack(side=TOP, expand=YES, fill=BOTH)
|
||||
group = Pmw.Group(parent, tag_text='Color Selectors')
|
||||
group.pack(side=TOP, expand=YES, fill=BOTH)
|
||||
self.__reds = StripWidget(group.interior(),
|
||||
generator=constant_red_generator)
|
||||
self.__reds.pack()
|
||||
self.__blues = StripWidget(group.interior(),
|
||||
generator=constant_blue_generator)
|
||||
self.__blues.pack()
|
||||
self.__greens = StripWidget(group.interior(),
|
||||
generator=constant_green_generator)
|
||||
self.__greens.pack()
|
||||
|
||||
# create chip window
|
||||
group = Pmw.Group(parent, tag_text='Current Color')
|
||||
|
@ -51,7 +89,6 @@ class PyncheWidget(Pmw.MegaWidget):
|
|||
|
||||
|
||||
def set_color(self, obj, rgbtuple):
|
||||
print 'setting color to:', rgbtuple
|
||||
nearest = self.__colordb.nearest(rgbtuple)
|
||||
red, green, blue = self.__colordb.find_byname(nearest)
|
||||
# for an exact match, use the color name
|
||||
|
@ -61,8 +98,13 @@ class PyncheWidget(Pmw.MegaWidget):
|
|||
else:
|
||||
rrggbb = ColorDB.triplet_to_rrggbb(rgbtuple)
|
||||
self.__selected.configure(color=rrggbb)
|
||||
|
||||
# configure all subwidgets
|
||||
self.__nearest.configure(color=nearest)
|
||||
self.__typein.configure(color=rgbtuple)
|
||||
self.__reds.configure(color=rgbtuple)
|
||||
self.__greens.configure(color=rgbtuple)
|
||||
self.__blues.configure(color=rgbtuple)
|
||||
delegate = self['delegate']
|
||||
if delegate:
|
||||
delegate.set_color(self, rgbtuple)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue