]> granicus.if.org Git - python/commitdiff
Added color strip widgets
authorBarry Warsaw <barry@python.org>
Thu, 12 Feb 1998 19:52:31 +0000 (19:52 +0000)
committerBarry Warsaw <barry@python.org>
Thu, 12 Feb 1998 19:52:31 +0000 (19:52 +0000)
Tools/pynche/PyncheWidget.py

index 855c6f77120822091d7f3d0a381c7b70cf36dc89..106dd1fd0d8ec62149075cd328ead1bb4fc29b7b 100644 (file)
@@ -6,7 +6,36 @@ import Pmw
 import ColorDB
 from ChipWidget import ChipWidget
 from TypeinWidget import TypeinWidget
+from StripWidget import StripWidget
 
+\f
+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)
+
+
+\f
 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)