Commit 29fe4ddd authored by Barry Warsaw's avatar Barry Warsaw

Added color strip widgets

parent 9d882bc4
...@@ -6,7 +6,36 @@ import Pmw ...@@ -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): ...@@ -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): ...@@ -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): ...@@ -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)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment