diff options
author | Barry Warsaw <barry@python.org> | 1998-12-15 01:04:38 (GMT) |
---|---|---|
committer | Barry Warsaw <barry@python.org> | 1998-12-15 01:04:38 (GMT) |
commit | ef30092207e684bd3e74fe3d6172b97327a0a089 (patch) | |
tree | c129186ebf166cc202c9bfcfd64964794d3a70b5 /Tools/pynche | |
parent | 6403991a9d11b285f503c326ee5fab0a0b6be066 (diff) | |
download | cpython-ef30092207e684bd3e74fe3d6172b97327a0a089.zip cpython-ef30092207e684bd3e74fe3d6172b97327a0a089.tar.gz cpython-ef30092207e684bd3e74fe3d6172b97327a0a089.tar.bz2 |
Added most of the mechanism to change the strips from color variations
to color constants (i.e. red constant, green constant, blue
constant). But I haven't hooked this up yet because the UI gets more
crowded and the arrows don't reflect the correct values.
Added "Go to Black" and "Go to White" buttons.
Diffstat (limited to 'Tools/pynche')
-rw-r--r-- | Tools/pynche/StripViewer.py | 121 |
1 files changed, 101 insertions, 20 deletions
diff --git a/Tools/pynche/StripViewer.py b/Tools/pynche/StripViewer.py index f085fec..f0a9587 100644 --- a/Tools/pynche/StripViewer.py +++ b/Tools/pynche/StripViewer.py @@ -58,6 +58,21 @@ def constant(numchips): return seq # red variations, green+blue = cyan constant +def constant_red_generator(numchips, red, green, blue): + seq = constant(numchips) + return map(None, [red] * numchips, seq, seq) + +# green variations, red+blue = magenta constant +def constant_green_generator(numchips, red, green, blue): + seq = constant(numchips) + return map(None, seq, [green] * numchips, seq) + +# blue variations, red+green = yellow constant +def constant_blue_generator(numchips, red, green, blue): + seq = constant(numchips) + return map(None, seq, seq, [blue] * numchips) + +# red variations, green+blue = cyan constant def constant_cyan_generator(numchips, red, green, blue): seq = constant(numchips) return map(None, seq, [green] * numchips, [blue] * numchips) @@ -74,7 +89,6 @@ def constant_yellow_generator(numchips, red, green, blue): - class LeftArrow: _ARROWWIDTH = 30 _ARROWHEIGHT = 15 @@ -293,49 +307,90 @@ class StripWidget: # move the arrows around self.__trackarrow(chip, (red, green, blue)) + def set(self, label, generator): + self.__canvas.itemconfigure(self.__label, text=label) + self.__generator = generator + class StripViewer: def __init__(self, switchboard, master=None): self.__sb = switchboard optiondb = switchboard.optiondb() - # create a frame inside the master - self.__frame = Frame(master, relief=RAISED, borderwidth=1) - self.__frame.grid(row=1, column=0, columnspan=2, sticky='EW') + # create a frame inside the master. + frame = Frame(master, relief=RAISED, borderwidth=1) + frame.grid(row=1, column=0, columnspan=2, sticky='NSEW') + # create the options to be used later uwd = self.__uwdvar = BooleanVar() uwd.set(optiondb.get('UPWHILEDRAG', 0)) hexp = self.__hexpvar = BooleanVar() hexp.set(optiondb.get('HEXSTRIP', 0)) - self.__reds = StripWidget(switchboard, self.__frame, + # create the red, green, blue strips inside their own frame + frame1 = Frame(frame) + frame1.pack(expand=YES, fill=BOTH) + self.__reds = StripWidget(switchboard, frame1, generator=constant_cyan_generator, axis=0, label='Red Variations', uwdvar=uwd, hexvar=hexp) - self.__greens = StripWidget(switchboard, self.__frame, + self.__greens = StripWidget(switchboard, frame1, generator=constant_magenta_generator, axis=1, label='Green Variations', uwdvar=uwd, hexvar=hexp) - self.__blues = StripWidget(switchboard, self.__frame, + self.__blues = StripWidget(switchboard, frame1, generator=constant_yellow_generator, axis=2, label='Blue Variations', uwdvar=uwd, hexvar=hexp) - frame = self.__frame1 = Frame(self.__frame) - frame.pack() - - self.__uwd = Checkbutton(frame, - text='Update while dragging', - variable=uwd) - self.__uwd.grid(row=0, column=0, sticky=W) - - self.__hex = Checkbutton(frame, - text='Hexadecimal', - variable=hexp, - command=self.__togglehex) - self.__hex.grid(row=1, column=0, sticky=W) + # create a frame to contain the controls + frame2 = Frame(frame) + frame2.pack(expand=YES, fill=BOTH) + frame2.columnconfigure(0, weight=20) + frame2.columnconfigure(2, weight=20) + + padx = 8 + + # create the black button + blackbtn = Button(frame2, + text='<- Black', + command=self.__toblack) + blackbtn.grid(row=0, column=0, rowspan=2, sticky=W, padx=padx) + + # create the controls + uwdbtn = Checkbutton(frame2, + text='Update while dragging', + variable=uwd) + uwdbtn.grid(row=0, column=1, sticky=W) + hexbtn = Checkbutton(frame2, + text='Hexadecimal', + variable=hexp, + command=self.__togglehex) + hexbtn.grid(row=1, column=1, sticky=W) + + # XXX: ignore this feature for now; it doesn't work quite right yet + +## gentypevar = self.__gentypevar = IntVar() +## self.__variations = Radiobutton(frame, +## text='Variations', +## variable=gentypevar, +## value=0, +## command=self.__togglegentype) +## self.__variations.grid(row=0, column=1, sticky=W) +## self.__constants = Radiobutton(frame, +## text='Constants', +## variable=gentypevar, +## value=1, +## command=self.__togglegentype) +## self.__constants.grid(row=1, column=1, sticky=W) + + # create the white button + whitebtn = Button(frame2, + text='White ->', + command=self.__towhite) + whitebtn.grid(row=0, column=2, rowspan=2, sticky=E, padx=padx) def update_yourself(self, red, green, blue): self.__reds.update_yourself(red, green, blue) @@ -346,6 +401,32 @@ class StripViewer: red, green, blue = self.__sb.current_rgb() self.update_yourself(red, green, blue) + def __togglegentype(self, event=None): + which = self.__gentypevar.get() + if which == 0: + self.__reds.set(label='Red Variations', + generator=constant_cyan_generator) + self.__greens.set(label='Green Variations', + generator=constant_magenta_generator) + self.__blues.set(label='Blue Variations', + generator=constant_yellow_generator) + elif which == 1: + self.__reds.set(label='Red Constant', + generator=constant_red_generator) + self.__greens.set(label='Green Constant', + generator=constant_green_generator) + self.__blues.set(label='Blue Constant', + generator=constant_blue_generator) + else: + assert 0 + self.__sb.update_views_current() + + def __toblack(self, event=None): + self.__sb.update_views(0, 0, 0) + + def __towhite(self, event=None): + self.__sb.update_views(255, 255, 255) + def save_options(self, optiondb): optiondb['UPWHILEDRAG'] = self.__uwdvar.get() optiondb['HEXSTRIP'] = self.__hexpvar.get() |