mirror of
https://github.com/python/cpython.git
synced 2025-07-24 03:35:53 +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
|
import ColorDB
|
||||||
from ChipWidget import ChipWidget
|
from ChipWidget import ChipWidget
|
||||||
from TypeinWidget import TypeinWidget
|
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):
|
class PyncheWidget(Pmw.MegaWidget):
|
||||||
def __init__(self, colordb, parent=None, **kw):
|
def __init__(self, colordb, parent=None, **kw):
|
||||||
self.__colordb = colordb
|
self.__colordb = colordb
|
||||||
|
@ -21,8 +50,17 @@ class PyncheWidget(Pmw.MegaWidget):
|
||||||
interiorarg = (self.interior(),)
|
interiorarg = (self.interior(),)
|
||||||
|
|
||||||
# create color selectors
|
# create color selectors
|
||||||
self.__selectors = Pmw.Group(parent, tag_text='Color Selectors')
|
group = Pmw.Group(parent, tag_text='Color Selectors')
|
||||||
self.__selectors.pack(side=TOP, expand=YES, fill=BOTH)
|
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
|
# create chip window
|
||||||
group = Pmw.Group(parent, tag_text='Current Color')
|
group = Pmw.Group(parent, tag_text='Current Color')
|
||||||
|
@ -51,7 +89,6 @@ class PyncheWidget(Pmw.MegaWidget):
|
||||||
|
|
||||||
|
|
||||||
def set_color(self, obj, rgbtuple):
|
def set_color(self, obj, rgbtuple):
|
||||||
print 'setting color to:', rgbtuple
|
|
||||||
nearest = self.__colordb.nearest(rgbtuple)
|
nearest = self.__colordb.nearest(rgbtuple)
|
||||||
red, green, blue = self.__colordb.find_byname(nearest)
|
red, green, blue = self.__colordb.find_byname(nearest)
|
||||||
# for an exact match, use the color name
|
# for an exact match, use the color name
|
||||||
|
@ -61,8 +98,13 @@ class PyncheWidget(Pmw.MegaWidget):
|
||||||
else:
|
else:
|
||||||
rrggbb = ColorDB.triplet_to_rrggbb(rgbtuple)
|
rrggbb = ColorDB.triplet_to_rrggbb(rgbtuple)
|
||||||
self.__selected.configure(color=rrggbb)
|
self.__selected.configure(color=rrggbb)
|
||||||
|
|
||||||
|
# configure all subwidgets
|
||||||
self.__nearest.configure(color=nearest)
|
self.__nearest.configure(color=nearest)
|
||||||
self.__typein.configure(color=rgbtuple)
|
self.__typein.configure(color=rgbtuple)
|
||||||
|
self.__reds.configure(color=rgbtuple)
|
||||||
|
self.__greens.configure(color=rgbtuple)
|
||||||
|
self.__blues.configure(color=rgbtuple)
|
||||||
delegate = self['delegate']
|
delegate = self['delegate']
|
||||||
if delegate:
|
if delegate:
|
||||||
delegate.set_color(self, rgbtuple)
|
delegate.set_color(self, rgbtuple)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue