Un PMW-ified

This commit is contained in:
Barry Warsaw 1998-09-28 16:28:04 +00:00
parent 987fb9225f
commit 04c7886764
1 changed files with 40 additions and 26 deletions

View File

@ -6,35 +6,38 @@ Pynche is based largely on a similar color editor I wrote years ago for the
Sunview window system. That editor was called ICE: the Interactive Color Sunview window system. That editor was called ICE: the Interactive Color
Editor. I'd always wanted to port the editor to X but didn't feel like Editor. I'd always wanted to port the editor to X but didn't feel like
hacking X and C code to do it. Fast forward many years, to where Python + hacking X and C code to do it. Fast forward many years, to where Python +
Tkinter + Pmw provides such a nice programming environment, with enough Tkinter provides such a nice programming environment, with enough power, that
power, that I finally buckled down and implemented it. I changed the name I finally buckled down and implemented it. I changed the name because these
because these days, too many other systems have the acronym `ICE'. days, too many other systems have the acronym `ICE'.
This program currently requires Python 1.5 with Tkinter. It also requires at This program currently requires Python 1.5 with Tkinter. It has only been
least Pmw 0.6.1. It has only been tested on Solaris 2.6. Feedback is greatly tested on Solaris 2.6. Feedback is greatly appreciated. Send email to
appreciated. Send email to bwarsaw@python.org bwarsaw@python.org
Usage: %(PROGRAM)s [-c color] [-h] Usage: %(PROGRAM)s [-d file] [-h] [initialcolor]
Where: Where:
--color color --database file
-c color -d file
initial color, as an X color name or #RRGGBB format Alternate location of a color database file
--help --help
-h -h
print this message print this message
initialcolor
initial color, as a color name or #RRGGBB format
""" """
__version__ = '1.0' __version__ = '1.0'
import sys import sys
import getopt import getopt
import Pmw
import ColorDB import ColorDB
from Tkinter import * from Tkinter import *
from PyncheWidget import PyncheWidget from PyncheWidget import PyncheWidget
from Switchboard import Switchboard
@ -43,10 +46,6 @@ PROGRAM = sys.argv[0]
# Milliseconds between interrupt checks # Milliseconds between interrupt checks
KEEPALIVE_TIMER = 500 KEEPALIVE_TIMER = 500
RGBCOLOR = 1
HSICOLOR = 2
NAMEDCOLOR = 3
# Default locations of rgb.txt or other textual color database # Default locations of rgb.txt or other textual color database
RGB_TXT = [ RGB_TXT = [
# Solaris OpenWindows # Solaris OpenWindows
@ -67,30 +66,38 @@ def usage(status, msg=''):
app = None app = None
def keepalive(): def keepalive():
# Exercise the Python interpreter regularly so keybard interrupts get # Exercise the Python interpreter regularly so keyboard interrupts get
# through. # through.
app.tk.createtimerhandler(KEEPALIVE_TIMER, keepalive) app.tk.createtimerhandler(KEEPALIVE_TIMER, keepalive)
def finished(event=None):
sys.exit(0)
def main(): def main():
global app global app
initialcolor = 'grey50'
try: try:
opts, args = getopt.getopt(sys.argv[1:], opts, args = getopt.getopt(
'hc:', sys.argv[1:],
['color=', 'help']) 'hd:',
['database=', 'help'])
except getopt.error, msg: except getopt.error, msg:
usage(1, msg) usage(1, msg)
if args: if len(args) == 0:
initialcolor = 'grey50'
elif len(args) == 1:
initialcolor = args[0]
else:
usage(1) usage(1)
for opt, arg in opts: for opt, arg in opts:
if opt in ('-h', '--help'): if opt in ('-h', '--help'):
usage(0) usage(0)
elif opt in ('-c', '--color'): elif opt in ('-d', '--database'):
initialcolor = arg RGB_TXT.insert(0, arg)
# create the windows and go # create the windows and go
for f in RGB_TXT: for f in RGB_TXT:
@ -102,8 +109,10 @@ def main():
else: else:
raise IOError('No color database file found') raise IOError('No color database file found')
app = Pmw.initialise(fontScheme='pmw1') app = Tk(className='Pynche')
app.protocol('WM_DELETE_WINDOW', finished)
app.title('Pynche %s' % __version__) app.title('Pynche %s' % __version__)
app.iconname('Pynche')
app.tk.createtimerhandler(KEEPALIVE_TIMER, keepalive) app.tk.createtimerhandler(KEEPALIVE_TIMER, keepalive)
# get triplet for initial color # get triplet for initial color
@ -114,9 +123,14 @@ def main():
try: try:
red, green, blue = ColorDB.rrggbb_to_triplet(initialcolor) red, green, blue = ColorDB.rrggbb_to_triplet(initialcolor)
except ColorDB.BadColor: except ColorDB.BadColor:
usage(1, 'Bad initial color: %s' % initialcolor) print 'Bad initial color, using default: %s' % initialcolor
initialcolor = 'grey50'
try:
red, green, blue = ColorDB.rrggbb_to_triplet(initialcolor)
except ColorDB.BadColor:
usage(1, 'Cannot find an initial color to use')
p = PyncheWidget(colordb, app, color=(red, green, blue)) s = Switchboard(app, colordb, red, green, blue)
try: try:
keepalive() keepalive()
app.mainloop() app.mainloop()