summaryrefslogtreecommitdiffstats
path: root/Tools/pynche/PyncheWidget.py
blob: 3f15702b62f159f6c0bcd209aa173c2523538138 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
"""Main Pynche (Pythonically Natural Color and Hue Editor) widget.
"""

import sys
from Tkinter import *

# Milliseconds between interrupt checks
KEEPALIVE_TIMER = 500



class PyncheWidget:
    def __init__(self, version):
        # 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.pack(fill=X)
        #
        # 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)
        #
        # Edit Menu
        #
	editbtn = Menubutton(menubar, text='Edit',
                             underline=0)
        editbtn.pack(side=LEFT)
        editmenu = Menu(editbtn, tearoff=0)
        editbtn['menu'] = editmenu
	editmenu.add_command(label='Options...',
                             command=self.__popup_options,
                             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_options(self, event=None):
        print 'Options...'

    def __popup_about(self, event=None):
        print 'About...'

##	# create chip window
##	group = Pmw.Group(parent, tag_text='Current Color')
##        interior = group.interior()
##	group.pack(side=LEFT, expand=YES, fill=BOTH)
##	self.__selected = ChipWidget(interior,
##				     label_text='Selected')
##	self.__selected.grid()
##	self.__nearest = ChipWidget(interior,
##				    label_text='Nearest')
##	self.__nearest.grid(row=0, column=1)

##	# TBD: this is somewhat bogus, as the code should be in a derived
##	# class of ChipWidget.
##	self.__chip = self.__nearest.component('chip')
##	self.__chip.bind('<ButtonPress-1>', self.__buttonpress)
##	self.__chip.bind('<ButtonRelease-1>', self.__buttonrelease)

##	# create the type-in window
##	self.__typein = TypeinWidget(interior)
##	self.__typein.grid(row=0, column=2)

##	# Check keywords and initialize options
##	self.initialiseoptions(PyncheWidget)

##	self.__typein.configure(delegate=self)
##	self.__reds.configure(delegate=self)
##	self.__greens.configure(delegate=self)
##	self.__blues.configure(delegate=self)

##    def __popup_about(self, event=None):
##	if not self.__about_dialog:
##	    Pmw.aboutversion('1.0')
##	    Pmw.aboutcopyright('Copyright (C) 1998 Barry A. Warsaw\n'
##			       'All rights reserved')
##	    Pmw.aboutcontact('For information about Pynche contact:\n'
##			     'Barry A. Warsaw\n'
##			     'email: bwarsaw@python.org')
##	    self.__about_dialog = Pmw.AboutDialog(
##		applicationname='Pynche -- the PYthonically Natural\n'
##		'Color and Hue Editor')
##	self.__about_dialog.show()