Better initial color choosing

This commit is contained in:
Barry Warsaw 1998-10-06 19:50:33 +00:00
parent 45c8d34216
commit e7f4a47bbf
2 changed files with 37 additions and 17 deletions

View File

@ -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)

View File

@ -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('<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