diff options
-rw-r--r-- | Tools/pynche/PyncheWidget.py | 64 |
1 files changed, 60 insertions, 4 deletions
diff --git a/Tools/pynche/PyncheWidget.py b/Tools/pynche/PyncheWidget.py index 44398d7..f266755 100644 --- a/Tools/pynche/PyncheWidget.py +++ b/Tools/pynche/PyncheWidget.py @@ -8,6 +8,15 @@ from ChipWidget import ChipWidget from TypeinWidget import TypeinWidget from StripWidget import StripWidget + + +ABOUTTEXT = '''Pynche 1.0 -- The Pythonically Natural Color and Hue Editor +Copyright (C) 1998 Barry A. Warsaw + +Pynche is based on ICE 1.2 (Interactive Color Editor), written by +Barry A. Warsaw for the SunView window system in 1987.''' + + def constant(numchips): step = 255.0 / (numchips - 1) @@ -42,6 +51,8 @@ def constant_yellow_generator(numchips, rgbtuple): class PyncheWidget(Pmw.MegaWidget): def __init__(self, colordb, parent=None, **kw): self.__colordb = colordb + self.__parent = parent + self.__about = None options = (('color', (128, 128, 128), self.__set_color), ('delegate', None, None), @@ -50,7 +61,28 @@ class PyncheWidget(Pmw.MegaWidget): # initialize base class -- after defining options Pmw.MegaWidget.__init__(self, parent) - interiorarg = (self.interior(),) + + # create menubar + self.__menubar = Pmw.MenuBar(parent, + hull_relief=RAISED, + hull_borderwidth=1) + self.__menubar.pack(side=TOP, expand=YES, fill=BOTH) + self.__menubar.addmenu('File', None) + self.__menubar.addmenuitem('File', + type=COMMAND, + label='Quit', + command=self.__quit, + accelerator='Alt-Q') + self.__menubar.addmenu('Help', None, side=RIGHT) + self.__menubar.addmenuitem('Help', + type=COMMAND, + label='About...', + command=self.__popup_about, + accelerator='Alt-A') + parent.bind('<Alt-q>', self.__quit) + parent.bind('<Alt-Q>', self.__quit) + parent.bind('<Alt-a>', self.__popup_about) + parent.bind('<Alt-A>', self.__popup_about) # create color selectors group = Pmw.Group(parent, tag_text='Variations') @@ -77,8 +109,12 @@ class PyncheWidget(Pmw.MegaWidget): self.__nearest = ChipWidget(group.interior(), label_text='Nearest') self.__nearest.grid(row=0, column=1) - chip = self.__nearest.component('chip') - chip.bind('<ButtonRelease-1>', self.__set_color_to_chip) + + # TBD: this is somewhat bogus, as the code should be in a derived + # class of ChipWidget. + self.__chip = self.__nearest.component('chip') + self.__chip.bind('<ButtonPress-1>', self.__buttonpress) + self.__chip.bind('<ButtonRelease-1>', self.__buttonrelease) # create the options window self.__typein = TypeinWidget(group.interior()) @@ -125,7 +161,27 @@ class PyncheWidget(Pmw.MegaWidget): def __set_color(self): self.set_color(self, self['color']) - def __set_color_to_chip(self, event=None): + def __buttonpress(self, event=None): + self.__chip.configure(relief=SUNKEN) + + def __buttonrelease(self, event=None): + self.__chip.configure(relief=RAISED) color = self.__nearest['color'] rgbtuple = self.__colordb.find_byname(color) self.set_color(self, rgbtuple) + + def __quit(self, event=None): + self.__parent.quit() + + def __popup_about(self, event=None): + if not self.__about: + Pmw.aboutversion('1.0') + Pmw.aboutcopyright('Copyright (C) 1998 Barry A. Warsaw\n' + 'All rights reserved') + Pmw.aboutcontact('For information about Pynche contact:\n' + 'Barry A. Warsaw\n' + 'email: bwarsaw@python.org') + self.__about = Pmw.AboutDialog( + applicationname='Pynche -- the PYthonically Natural\n' + 'Color and Hue Editor') + self.__about.show() |