From e7f4a47bbf0e548f45446af661129e8776c965e5 Mon Sep 17 00:00:00 2001 From: Barry Warsaw Date: Tue, 6 Oct 1998 19:50:33 +0000 Subject: [PATCH] Better initial color choosing --- Tools/pynche/Main.py | 43 +++++++++++++++++++++++++----------- Tools/pynche/PyncheWidget.py | 11 +++++---- 2 files changed, 37 insertions(+), 17 deletions(-) diff --git a/Tools/pynche/Main.py b/Tools/pynche/Main.py index 64cd579cc95..4877adc6b03 100644 --- a/Tools/pynche/Main.py +++ b/Tools/pynche/Main.py @@ -61,6 +61,34 @@ def usage(status, msg=''): sys.exit(status) + +def initial_color(s, colordb): + # function called on every color + def scan_color(s, colordb=colordb): + try: + r, g, b = colordb.find_byname(s) + except ColorDB.BadColor: + try: + r, g, b = ColorDB.rrggbb_to_triplet(s) + except ColorDB.BadColor: + return None, None, None + return r, g, b + # + # First try the passed in color + r, g, b = scan_color(s) + if r is None: + # try the same color with '#' prepended, since some shells require + # this to be escaped, which is a pain + r, g, b = scan_color('#' + s) + if r is None: + print 'Bad initial color, using gray50:', s + r, g, b = scan_color('gray50') + if r is None: + usage(1, 'Cannot find an initial color to use') + # does not return + return r, g, b + + def main(): try: @@ -95,19 +123,8 @@ def main(): else: usage(1, 'No color database file found, see the -d option.') - # get triplet for initial color - try: - red, green, blue = colordb.find_byname(initialcolor) - except ColorDB.BadColor: - # must be a #rrggbb style color - try: - red, green, blue = ColorDB.rrggbb_to_triplet(initialcolor) - except ColorDB.BadColor: - try: - red, green, blue = ColorDB.rrggbb_to_triplet('#7f7f7f') - print 'Bad initial color, using gray50:', initialcolor - except ColorDB.BadColor: - usage(1, 'Cannot find an initial color to use') + # get the initial color as components + red, green, blue = initial_color(initialcolor, colordb) # create all output widgets s = Switchboard(colordb) diff --git a/Tools/pynche/PyncheWidget.py b/Tools/pynche/PyncheWidget.py index 85008ac5ced..a5560cc607e 100644 --- a/Tools/pynche/PyncheWidget.py +++ b/Tools/pynche/PyncheWidget.py @@ -40,7 +40,7 @@ def __init__(self, version, switchboard): # filemenu = self.__filemenu = Menu(menubar, tearoff=0) filemenu.add_command(label='Quit', - command=tkroot.quit, + command=self.__quit, accelerator='Alt-Q', underline=0) # @@ -78,12 +78,15 @@ def __init__(self, version, switchboard): # now create the top level window root = self.__root = Toplevel(tkroot, class_='Pynche', menu=menubar) - root.protocol('WM_DELETE_WINDOW', tkroot.quit) + root.protocol('WM_DELETE_WINDOW', self.__quit) root.title('Pynche %s' % version) root.iconname('Pynche') root.tk.createtimerhandler(KEEPALIVE_TIMER, self.__keepalive) - root.bind('', tkroot.quit) - root.bind('', tkroot.quit) + root.bind('', self.__quit) + root.bind('', self.__quit) + + def __quit(self, event=None): + self.__root.quit() def __keepalive(self): # Exercise the Python interpreter regularly so keyboard interrupts get