summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Tools/pynche/PyncheWidget.py51
1 files changed, 51 insertions, 0 deletions
diff --git a/Tools/pynche/PyncheWidget.py b/Tools/pynche/PyncheWidget.py
new file mode 100644
index 0000000..d40a6ed
--- /dev/null
+++ b/Tools/pynche/PyncheWidget.py
@@ -0,0 +1,51 @@
+"""Main Pynche (Pythonically Natural Color and Hue Editor) widget.
+"""
+
+from Tkinter import *
+import Pmw
+import ColorDB
+from ChipWidget import ChipWidget
+
+class PyncheWidget(Pmw.MegaWidget):
+ def __init__(self, colordb, parent=None, **kw):
+ self.__colordb = colordb
+
+ optionsdefs = (('color', 'grey50', self.__set_color),)
+ self.defineoptions(kw, optionsdefs)
+
+ # initialize base class -- after defining options
+ Pmw.MegaWidget.__init__(self, parent)
+ interiorarg = (self.interior(),)
+
+ # create color selectors
+ self.__selectors = Pmw.Group(parent, tag_text='Color Selectors')
+ self.__selectors.pack(side=TOP, expand=YES, fill=BOTH)
+
+ # create chip window
+ group = Pmw.Group(parent, tag_text='Current Color')
+ group.pack(side=LEFT, fill=Y)
+ self.__selected = ChipWidget(group.interior(),
+ label_text='Selected')
+ self.__selected.grid()
+ self.__nearest = ChipWidget(group.interior(),
+ label_text='Nearest')
+ self.__nearest.grid(row=0, column=1)
+
+ # create the options window
+ options = Pmw.Group(parent, tag_text='Options')
+ options.pack(expand=YES, fill=BOTH)
+
+ # Check keywords and initialize options
+ self.initialiseoptions(PyncheWidget)
+
+
+ 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)