mirror of https://github.com/python/cpython.git
127 lines
4.1 KiB
Python
127 lines
4.1 KiB
Python
"""Main Pynche (Pythonically Natural Color and Hue Editor) widget.
|
||
|
||
This window provides the basic decorations, primarily including the menubar.
|
||
It is used to bring up other windows.
|
||
"""
|
||
|
||
import sys
|
||
from Tkinter import *
|
||
import tkMessageBox
|
||
|
||
# Milliseconds between interrupt checks
|
||
KEEPALIVE_TIMER = 500
|
||
|
||
|
||
|
||
class PyncheWidget:
|
||
def __init__(self, version, switchboard):
|
||
self.__sb = switchboard
|
||
self.__version = version
|
||
self.__textwin = None
|
||
self.__listwin = None
|
||
self.__detailswin = None
|
||
# create the first and top window
|
||
root = self.__root = Tk(className='Pynche')
|
||
root.protocol('WM_DELETE_WINDOW', self.__quit)
|
||
root.title('Pynche %s' % version)
|
||
root.iconname('Pynche')
|
||
root.tk.createtimerhandler(KEEPALIVE_TIMER, self.__keepalive)
|
||
#
|
||
# create the menubar
|
||
#
|
||
menubar = self.__menubar = Frame(root, relief=RAISED, borderwidth=2)
|
||
menubar.grid(row=0, column=0, columnspan=2, sticky='EW')
|
||
#
|
||
# File menu
|
||
#
|
||
filebtn = Menubutton(menubar, text='File',
|
||
underline=0)
|
||
filebtn.pack(side=LEFT)
|
||
filemenu = Menu(filebtn, tearoff=0)
|
||
filebtn['menu'] = filemenu
|
||
filemenu.add_command(label='Quit',
|
||
command=self.__quit,
|
||
accelerator='Alt-Q',
|
||
underline=0)
|
||
root.bind('<Alt-q>', self.__quit)
|
||
root.bind('<Alt-Q>', self.__quit)
|
||
#
|
||
# View menu
|
||
#
|
||
viewbtn = Menubutton(menubar, text='View',
|
||
underline=0)
|
||
viewbtn.pack(side=LEFT)
|
||
viewmenu = Menu(viewbtn, tearoff=0)
|
||
viewbtn['menu'] = viewmenu
|
||
viewmenu.add_command(label='Text Window...',
|
||
command=self.__popup_text,
|
||
underline=0)
|
||
viewmenu.add_command(label='Color List Window...',
|
||
command=self.__popup_listwin,
|
||
underline=0)
|
||
viewmenu.add_command(label='Details Window...',
|
||
command=self.__popup_details,
|
||
underline=0) #
|
||
# Help menu
|
||
#
|
||
helpbtn = Menubutton(menubar, text='Help',
|
||
underline=0)
|
||
helpbtn.pack(side=RIGHT)
|
||
helpmenu = Menu(helpbtn, tearoff=0)
|
||
helpbtn['menu'] = helpmenu
|
||
helpmenu.add_command(label='About...',
|
||
command=self.__popup_about,
|
||
underline=0)
|
||
|
||
def __keepalive(self):
|
||
# Exercise the Python interpreter regularly so keyboard interrupts get
|
||
# through.
|
||
self.__root.tk.createtimerhandler(KEEPALIVE_TIMER, self.__keepalive)
|
||
|
||
def __quit(self, event=None):
|
||
sys.exit(0)
|
||
|
||
def start(self):
|
||
self.__keepalive()
|
||
self.__root.mainloop()
|
||
|
||
def parent(self):
|
||
return self.__root
|
||
|
||
def __popup_about(self, event=None):
|
||
from pynche import __version__
|
||
tkMessageBox.showinfo('About Pynche ' + __version__,
|
||
'''\
|
||
Pynche %s
|
||
The PYthonically Natural
|
||
Color and Hue Editor
|
||
|
||
Copyright (C) 1998
|
||
Barry A. Warsaw
|
||
All rights reserved
|
||
|
||
For information about Pynche
|
||
contact: Barry A. Warsaw
|
||
email: bwarsaw@python.org''' % __version__)
|
||
|
||
def __popup_text(self, event=None):
|
||
if not self.__textwin:
|
||
from TextViewer import TextViewer
|
||
self.__textwin = TextViewer(self.__sb, self.__root)
|
||
self.__sb.add_view(self.__textwin)
|
||
self.__textwin.deiconify()
|
||
|
||
def __popup_listwin(self, event=None):
|
||
if not self.__listwin:
|
||
from ListViewer import ListViewer
|
||
self.__listwin = ListViewer(self.__sb, self.__root)
|
||
self.__sb.add_view(self.__listwin)
|
||
self.__listwin.deiconify()
|
||
|
||
def __popup_details(self, event=None):
|
||
if not self.__detailswin:
|
||
from DetailsViewer import DetailsViewer
|
||
self.__detailswin = DetailsViewer(self.__sb, self.__root)
|
||
self.__sb.add_view(self.__detailswin)
|
||
self.__detailswin.deiconify()
|