/usr/lib64/python2.6/site-packages/pynche
NameSizeModeActions
X/-0755rm
ChipViewer.py49980644editdlrm
ChipViewer.pyc55050644editdlrm
ChipViewer.pyo55050644editdlrm
ColorDB.py89410644editdlrm
ColorDB.pyc97510644editdlrm
ColorDB.pyo97510644editdlrm
DetailsViewer.py101150644editdlrm
DetailsViewer.pyc106410644editdlrm
DetailsViewer.pyo106410644editdlrm
html40colors.txt2450644editdlrm
ListViewer.py66480644editdlrm
ListViewer.pyc72220644editdlrm
ListViewer.pyo72220644editdlrm
Main.py64000644editdlrm
Main.pyc63410644editdlrm
Main.pyo63410644editdlrm
namedcolors.txt57160644editdlrm
pyColorChooser.py37680644editdlrm
pyColorChooser.pyc44530644editdlrm
pyColorChooser.pyo44530644editdlrm
pynche1790755editdlrm
PyncheWidget.py105010644editdlrm
PyncheWidget.pyc111460644editdlrm
PyncheWidget.pyo111460644editdlrm
README157840644editdlrm
StripViewer.py154650644editdlrm
StripViewer.pyc139040644editdlrm
StripViewer.pyo137480644editdlrm
Switchboard.py48170644editdlrm
Switchboard.pyc60910644editdlrm
Switchboard.pyo60910644editdlrm
TextViewer.py68690644editdlrm
TextViewer.pyc74100644editdlrm
TextViewer.pyo74100644editdlrm
TypeinViewer.py61020644editdlrm
TypeinViewer.pyc64700644editdlrm
TypeinViewer.pyo64700644editdlrm
webcolors.txt30880644editdlrm
websafe.txt17490644editdlrm
__init__.py470644editdlrm
__init__.pyc1400644editdlrm
__init__.pyo1400644editdlrm
Edit: /usr/lib64/python2.6/site-packages/pynche/ListViewer.py (6648B)
"""ListViewer class. This class implements an input/output view on the color model. It lists every unique color (e.g. unique r/g/b value) found in the color database. Each color is shown by small swatch and primary color name. Some colors have aliases -- more than one name for the same r/g/b value. These aliases are displayed in the small listbox at the bottom of the screen. Clicking on a color name or swatch selects that color and updates all other windows. When a color is selected in a different viewer, the color list is scrolled to the selected color and it is highlighted. If the selected color is an r/g/b value without a name, no scrolling occurs. You can turn off Update On Click if all you want to see is the alias for a given name, without selecting the color. """ from Tkinter import * import ColorDB ADDTOVIEW = 'Color %List Window...' class ListViewer: def __init__(self, switchboard, master=None): self.__sb = switchboard optiondb = switchboard.optiondb() self.__lastbox = None self.__dontcenter = 0 # GUI root = self.__root = Toplevel(master, class_='Pynche') root.protocol('WM_DELETE_WINDOW', self.withdraw) root.title('Pynche Color List') root.iconname('Pynche Color List') root.bind('', self.__quit) root.bind('', self.__quit) root.bind('', self.withdraw) root.bind('', self.withdraw) # # create the canvas which holds everything, and its scrollbar # frame = self.__frame = Frame(root) frame.pack() canvas = self.__canvas = Canvas(frame, width=160, height=300, borderwidth=2, relief=SUNKEN) self.__scrollbar = Scrollbar(frame) self.__scrollbar.pack(fill=Y, side=RIGHT) canvas.pack(fill=BOTH, expand=1) canvas.configure(yscrollcommand=(self.__scrollbar, 'set')) self.__scrollbar.configure(command=(canvas, 'yview')) self.__populate() # # Update on click self.__uoc = BooleanVar() self.__uoc.set(optiondb.get('UPONCLICK', 1)) self.__uocbtn = Checkbutton(root, text='Update on Click', variable=self.__uoc, command=self.__toggleupdate) self.__uocbtn.pack(expand=1, fill=BOTH) # # alias list self.__alabel = Label(root, text='Aliases:') self.__alabel.pack() self.__aliases = Listbox(root, height=5, selectmode=BROWSE) self.__aliases.pack(expand=1, fill=BOTH) def __populate(self): # # create all the buttons colordb = self.__sb.colordb() canvas = self.__canvas row = 0 widest = 0 bboxes = self.__bboxes = [] for name in colordb.unique_names(): exactcolor = ColorDB.triplet_to_rrggbb(colordb.find_byname(name)) canvas.create_rectangle(5, row*20 + 5, 20, row*20 + 20, fill=exactcolor) textid = canvas.create_text(25, row*20 + 13, text=name, anchor=W) x1, y1, textend, y2 = canvas.bbox(textid) boxid = canvas.create_rectangle(3, row*20+3, textend+3, row*20 + 23, outline='', tags=(exactcolor, 'all')) canvas.bind('', self.__onrelease) bboxes.append(boxid) if textend+3 > widest: widest = textend+3 row += 1 canvheight = (row-1)*20 + 25 canvas.config(scrollregion=(0, 0, 150, canvheight)) for box in bboxes: x1, y1, x2, y2 = canvas.coords(box) canvas.coords(box, x1, y1, widest, y2) def __onrelease(self, event=None): canvas = self.__canvas # find the current box x = canvas.canvasx(event.x) y = canvas.canvasy(event.y) ids = canvas.find_overlapping(x, y, x, y) for boxid in ids: if boxid in self.__bboxes: break else: ## print 'No box found!' return tags = self.__canvas.gettags(boxid) for t in tags: if t[0] == '#': break else: ## print 'No color tag found!' return red, green, blue = ColorDB.rrggbb_to_triplet(t) self.__dontcenter = 1 if self.__uoc.get(): self.__sb.update_views(red, green, blue) else: self.update_yourself(red, green, blue) self.__red, self.__green, self.__blue = red, green, blue def __toggleupdate(self, event=None): if self.__uoc.get(): self.__sb.update_views(self.__red, self.__green, self.__blue) def __quit(self, event=None): self.__root.quit() def withdraw(self, event=None): self.__root.withdraw() def deiconify(self, event=None): self.__root.deiconify() def update_yourself(self, red, green, blue): canvas = self.__canvas # turn off the last box if self.__lastbox: canvas.itemconfigure(self.__lastbox, outline='') # turn on the current box colortag = ColorDB.triplet_to_rrggbb((red, green, blue)) canvas.itemconfigure(colortag, outline='black') self.__lastbox = colortag # fill the aliases self.__aliases.delete(0, END) try: aliases = self.__sb.colordb().aliases_of(red, green, blue)[1:] except ColorDB.BadColor: self.__aliases.insert(END, '') return if not aliases: self.__aliases.insert(END, '') else: for name in aliases: self.__aliases.insert(END, name) # maybe scroll the canvas so that the item is visible if self.__dontcenter: self.__dontcenter = 0 else: ig, ig, ig, y1 = canvas.coords(colortag) ig, ig, ig, y2 = canvas.coords(self.__bboxes[-1]) h = int(canvas['height']) * 0.5 canvas.yview('moveto', (y1-h) / y2) def save_options(self, optiondb): optiondb['UPONCLICK'] = self.__uoc.get() def colordb_changed(self, colordb): self.__canvas.delete('all') self.__populate()