mirror of https://github.com/python/cpython.git
Interface changes, delegate chaining, type in widget addition
This commit is contained in:
parent
f4562a7a0a
commit
a6f591ac6b
|
@ -5,13 +5,16 @@
|
|||
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 @@ def __init__(self, colordb, parent=None, **kw):
|
|||
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)
|
||||
|
||||
#
|
||||
# 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):
|
||||
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)
|
||||
self.__nearest.configure(color=nearest)
|
||||
self.set_color(self, self['color'])
|
||||
|
|
Loading…
Reference in New Issue