diff options
author | Ori Bernstein <ori@eigenstate.org> | 2021-06-14 00:00:37 +0000 |
---|---|---|
committer | Ori Bernstein <ori@eigenstate.org> | 2021-06-14 00:00:37 +0000 |
commit | a73a964e51247ed169d322c725a3a18859f109a3 (patch) | |
tree | 3f752d117274d444bda44e85609aeac1acf313f3 /sys/src/cmd/python/Tools/pynche/ChipViewer.py | |
parent | e64efe273fcb921a61bf27d33b230c4e64fcd425 (diff) |
python, hg: tow outside the environment.
they've served us well, and can ride off into the sunset.
Diffstat (limited to 'sys/src/cmd/python/Tools/pynche/ChipViewer.py')
-rw-r--r-- | sys/src/cmd/python/Tools/pynche/ChipViewer.py | 131 |
1 files changed, 0 insertions, 131 deletions
diff --git a/sys/src/cmd/python/Tools/pynche/ChipViewer.py b/sys/src/cmd/python/Tools/pynche/ChipViewer.py deleted file mode 100644 index 05412cec4..000000000 --- a/sys/src/cmd/python/Tools/pynche/ChipViewer.py +++ /dev/null @@ -1,131 +0,0 @@ -"""Chip viewer and widget. - -In the lower left corner of the main Pynche window, you will see two -ChipWidgets, one for the selected color and one for the nearest color. The -selected color is the actual RGB value expressed as an X11 #COLOR name. The -nearest color is the named color from the X11 database that is closest to the -selected color in 3D space. There may be other colors equally close, but the -nearest one is the first one found. - -Clicking on the nearest color chip selects that named color. - -The ChipViewer class includes the entire lower left quandrant; i.e. both the -selected and nearest ChipWidgets. -""" - -from types import StringType -from Tkinter import * -import ColorDB - - -class ChipWidget: - _WIDTH = 150 - _HEIGHT = 80 - - def __init__(self, - master = None, - width = _WIDTH, - height = _HEIGHT, - text = 'Color', - initialcolor = 'blue', - presscmd = None, - releasecmd = None): - # create the text label - self.__label = Label(master, text=text) - self.__label.grid(row=0, column=0) - # create the color chip, implemented as a frame - self.__chip = Frame(master, relief=RAISED, borderwidth=2, - width=width, - height=height, - background=initialcolor) - self.__chip.grid(row=1, column=0) - # create the color name - self.__namevar = StringVar() - self.__namevar.set(initialcolor) - self.__name = Entry(master, textvariable=self.__namevar, - relief=FLAT, justify=CENTER, state=DISABLED, - font=self.__label['font']) - self.__name.grid(row=2, column=0) - # create the message area - self.__msgvar = StringVar() - self.__name = Entry(master, textvariable=self.__msgvar, - relief=FLAT, justify=CENTER, state=DISABLED, - font=self.__label['font']) - self.__name.grid(row=3, column=0) - # set bindings - if presscmd: - self.__chip.bind('<ButtonPress-1>', presscmd) - if releasecmd: - self.__chip.bind('<ButtonRelease-1>', releasecmd) - - def set_color(self, color): - self.__chip.config(background=color) - - def get_color(self): - return self.__chip['background'] - - def set_name(self, colorname): - self.__namevar.set(colorname) - - def set_message(self, message): - self.__msgvar.set(message) - - def press(self): - self.__chip.configure(relief=SUNKEN) - - def release(self): - self.__chip.configure(relief=RAISED) - - - -class ChipViewer: - def __init__(self, switchboard, master=None): - self.__sb = switchboard - self.__frame = Frame(master, relief=RAISED, borderwidth=1) - self.__frame.grid(row=3, column=0, ipadx=5, sticky='NSEW') - # create the chip that will display the currently selected color - # exactly - self.__sframe = Frame(self.__frame) - self.__sframe.grid(row=0, column=0) - self.__selected = ChipWidget(self.__sframe, text='Selected') - # create the chip that will display the nearest real X11 color - # database color name - self.__nframe = Frame(self.__frame) - self.__nframe.grid(row=0, column=1) - self.__nearest = ChipWidget(self.__nframe, text='Nearest', - presscmd = self.__buttonpress, - releasecmd = self.__buttonrelease) - - def update_yourself(self, red, green, blue): - # Selected always shows the #rrggbb name of the color, nearest always - # shows the name of the nearest color in the database. BAW: should - # an exact match be indicated in some way? - # - # Always use the #rrggbb style to actually set the color, since we may - # not be using X color names (e.g. "web-safe" names) - colordb = self.__sb.colordb() - rgbtuple = (red, green, blue) - rrggbb = ColorDB.triplet_to_rrggbb(rgbtuple) - # find the nearest - nearest = colordb.nearest(red, green, blue) - nearest_tuple = colordb.find_byname(nearest) - nearest_rrggbb = ColorDB.triplet_to_rrggbb(nearest_tuple) - self.__selected.set_color(rrggbb) - self.__nearest.set_color(nearest_rrggbb) - # set the name and messages areas - self.__selected.set_name(rrggbb) - if rrggbb == nearest_rrggbb: - self.__selected.set_message(nearest) - else: - self.__selected.set_message('') - self.__nearest.set_name(nearest_rrggbb) - self.__nearest.set_message(nearest) - - def __buttonpress(self, event=None): - self.__nearest.press() - - def __buttonrelease(self, event=None): - self.__nearest.release() - rrggbb = self.__nearest.get_color() - red, green, blue = ColorDB.rrggbb_to_triplet(rrggbb) - self.__sb.update_views(red, green, blue) |