summaryrefslogtreecommitdiffstats
path: root/Tools/pynche
diff options
context:
space:
mode:
Diffstat (limited to 'Tools/pynche')
-rw-r--r--Tools/pynche/Main.py43
-rw-r--r--Tools/pynche/PyncheWidget.py11
2 files changed, 37 insertions, 17 deletions
diff --git a/Tools/pynche/Main.py b/Tools/pynche/Main.py
index 64cd579..4877adc 100644
--- a/Tools/pynche/Main.py
+++ b/Tools/pynche/Main.py
@@ -62,6 +62,34 @@ def usage(status, msg=''):
+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:
opts, args = getopt.getopt(
@@ -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 85008ac..a5560cc 100644
--- a/Tools/pynche/PyncheWidget.py
+++ b/Tools/pynche/PyncheWidget.py
@@ -40,7 +40,7 @@ class PyncheWidget:
#
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 @@ class PyncheWidget:
# 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('<Alt-q>', tkroot.quit)
- root.bind('<Alt-Q>', tkroot.quit)
+ root.bind('<Alt-q>', self.__quit)
+ root.bind('<Alt-Q>', self.__quit)
+
+ def __quit(self, event=None):
+ self.__root.quit()
def __keepalive(self):
# Exercise the Python interpreter regularly so keyboard interrupts get