diff -r ffa851df0825 -r 2fb8b9db1c86 symbian-qemu-0.9.1-12/python-2.6.1/Demo/tkinter/guido/dialog.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/symbian-qemu-0.9.1-12/python-2.6.1/Demo/tkinter/guido/dialog.py Fri Jul 31 15:01:17 2009 +0100 @@ -0,0 +1,109 @@ +#! /usr/bin/env python + +# A Python function that generates dialog boxes with a text message, +# optional bitmap, and any number of buttons. +# Cf. Ousterhout, Tcl and the Tk Toolkit, Figs. 27.2-3, pp. 269-270. + +from Tkinter import * +import sys + + +def dialog(master, title, text, bitmap, default, *args): + + # 1. Create the top-level window and divide it into top + # and bottom parts. + + w = Toplevel(master, class_='Dialog') + w.title(title) + w.iconname('Dialog') + + top = Frame(w, relief=RAISED, borderwidth=1) + top.pack(side=TOP, fill=BOTH) + bot = Frame(w, relief=RAISED, borderwidth=1) + bot.pack(side=BOTTOM, fill=BOTH) + + # 2. Fill the top part with the bitmap and message. + + msg = Message(top, width='3i', text=text, + font='-Adobe-Times-Medium-R-Normal-*-180-*') + msg.pack(side=RIGHT, expand=1, fill=BOTH, padx='3m', pady='3m') + if bitmap: + bm = Label(top, bitmap=bitmap) + bm.pack(side=LEFT, padx='3m', pady='3m') + + # 3. Create a row of buttons at the bottom of the dialog. + + var = IntVar() + buttons = [] + i = 0 + for but in args: + b = Button(bot, text=but, command=lambda v=var,i=i: v.set(i)) + buttons.append(b) + if i == default: + bd = Frame(bot, relief=SUNKEN, borderwidth=1) + bd.pack(side=LEFT, expand=1, padx='3m', pady='2m') + b.lift() + b.pack (in_=bd, side=LEFT, + padx='2m', pady='2m', ipadx='2m', ipady='1m') + else: + b.pack (side=LEFT, expand=1, + padx='3m', pady='3m', ipadx='2m', ipady='1m') + i = i+1 + + # 4. Set up a binding for , if there's a default, + # set a grab, and claim the focus too. + + if default >= 0: + w.bind('', + lambda e, b=buttons[default], v=var, i=default: + (b.flash(), + v.set(i))) + + oldFocus = w.focus_get() + w.grab_set() + w.focus_set() + + # 5. Wait for the user to respond, then restore the focus + # and return the index of the selected button. + + w.waitvar(var) + w.destroy() + if oldFocus: oldFocus.focus_set() + return var.get() + +# The rest is the test program. + +def go(): + i = dialog(mainWidget, + 'Not Responding', + "The file server isn't responding right now; " + "I'll keep trying.", + '', + -1, + 'OK') + print 'pressed button', i + i = dialog(mainWidget, + 'File Modified', + 'File "tcl.h" has been modified since ' + 'the last time it was saved. ' + 'Do you want to save it before exiting the application?', + 'warning', + 0, + 'Save File', + 'Discard Changes', + 'Return To Editor') + print 'pressed button', i + +def test(): + import sys + global mainWidget + mainWidget = Frame() + Pack.config(mainWidget) + start = Button(mainWidget, text='Press Here To Start', command=go) + start.pack() + endit = Button(mainWidget, text="Exit", command=sys.exit) + endit.pack(fill=BOTH) + mainWidget.mainloop() + +if __name__ == '__main__': + test()