diff options
Diffstat (limited to 'Tools')
-rw-r--r-- | Tools/pynche/PyncheWidget.py | 50 |
1 files changed, 37 insertions, 13 deletions
diff --git a/Tools/pynche/PyncheWidget.py b/Tools/pynche/PyncheWidget.py index d40a6ed..b6bd8f7 100644 --- a/Tools/pynche/PyncheWidget.py +++ b/Tools/pynche/PyncheWidget.py @@ -5,13 +5,16 @@ from Tkinter import * import Pmw import ColorDB from ChipWidget import ChipWidget +from TypeinWidget import TypeinWidget class PyncheWidget(Pmw.MegaWidget): def __init__(self, colordb, parent=None, **kw): self.__colordb = colordb - optionsdefs = (('color', 'grey50', self.__set_color),) - self.defineoptions(kw, optionsdefs) + options = (('color', (128, 128, 128), self.__set_color), + ('delegate', None, None), + ) + self.defineoptions(kw, options) # initialize base class -- after defining options Pmw.MegaWidget.__init__(self, parent) @@ -32,20 +35,41 @@ class PyncheWidget(Pmw.MegaWidget): self.__nearest.grid(row=0, column=1) # create the options window - options = Pmw.Group(parent, tag_text='Options') - options.pack(expand=YES, fill=BOTH) + group = Pmw.Group(parent, tag_text='Options') + group.pack(expand=YES, fill=BOTH) + self.__typein = TypeinWidget(group.interior()) + self.__typein.grid() # Check keywords and initialize options self.initialiseoptions(PyncheWidget) + self.__typein.configure(delegate=self) - def __set_color(self): - color = self['color'] - try: - red, green, blue, rrggbb = self.__colordb.find_byname(color) - except ColorDB.BadColor: - red, green, blue = ColorDB.rrggbb_to_triplet(color) - - nearest = self.__colordb.nearest(red, green, blue) - self.__selected.configure(color=color) + # + # PUBLIC INTERFACE + # + + + def set_color(self, obj, rgbtuple): + print 'setting color to:', rgbtuple + nearest = self.__colordb.nearest(rgbtuple) + red, green, blue, rrggbb = self.__colordb.find_byname(nearest) + # for an exact match, use the color name + if (red, green, blue) == rgbtuple: + self.__selected.configure(color=nearest) + # otherwise, use the #rrggbb name + else: + rrggbb = ColorDB.triplet_to_rrggbb(rgbtuple) + self.__selected.configure(color=rrggbb) self.__nearest.configure(color=nearest) + self.__typein.configure(color=rgbtuple) + delegate = self['delegate'] + if delegate: + delegate.set_color(self, rgbtuple) + + # + # PRIVATE INTERFACE + # + + def __set_color(self): + self.set_color(self, self['color']) |