| 1 | #!/usr/local/bin/wish -f |
| 2 | # |
| 3 | # This script generates a sample dialog box that waits for one of three |
| 4 | # buttons to be pressed, then prints a message and exits. |
| 5 | |
| 6 | # Create two frames in the main window. The top frame will hold the |
| 7 | # message and the bottom one will hold the buttons. Arrange them |
| 8 | # on above the other, with any extra vertical space split between |
| 9 | # them. |
| 10 | |
| 11 | frame .top -relief raised -border 1 |
| 12 | frame .bot -relief raised -border 1 |
| 13 | pack append . .top {top fill expand} .bot {top fill expand} |
| 14 | |
| 15 | # Create the message widget and arrange for it to be centered in the |
| 16 | # top frame. |
| 17 | |
| 18 | message .top.msg -text "File main.c hasn't been saved to disk since \ |
| 19 | it was last modified. What should I do?" -justify center \ |
| 20 | -font -Adobe-helvetica-medium-r-normal--*-240* -aspect 200 |
| 21 | pack append .top .top.msg {top padx 5 pady 5 expand} |
| 22 | |
| 23 | # Create the buttons and arrange them from left to right in the bottom |
| 24 | # frame. Embed the left button in an additional sunken frame to indicate |
| 25 | # that it is the default button. |
| 26 | |
| 27 | frame .bot.left -relief sunken -border 1 |
| 28 | pack append .bot .bot.left {left expand padx 20 pady 20} |
| 29 | button .bot.left.button -text "Save File" -command "quit save" |
| 30 | pack append .bot.left .bot.left.button {expand padx 12 pady 12} |
| 31 | button .bot.middle -text "Quit Anyway" -command "quit quit" |
| 32 | pack append .bot .bot.middle {left expand padx 20} |
| 33 | button .bot.right -text "Return To Editor" -command "quit return" |
| 34 | pack append .bot .bot.right {left expand padx 20} |
| 35 | |
| 36 | # The procedure below is invoked as the action for each of the buttons. |
| 37 | # It prints a message and exits by destroying the application's main |
| 38 | # window. |
| 39 | |
| 40 | proc quit button { |
| 41 | puts stdout "You pressed the \"$button\" button; bye-bye!" |
| 42 | destroy . |
| 43 | } |
| 44 | |
| 45 | bind .top <Enter> {.bot.left.button activate} |
| 46 | bind .top.msg <Enter> {.bot.left.button activate} |
| 47 | bind .bot <Enter> {.bot.left.button activate} |
| 48 | bind .top <Leave> {.bot.left.button deactivate} |
| 49 | bind .top.msg <Leave> {.bot.left.button deactivate} |
| 50 | bind .bot <Leave> {.bot.left.button deactivate} |
| 51 | bind . <1> {.bot.left.button config -relief sunken} |
| 52 | bind . <ButtonRelease-1> {quit save} |
| 53 | focus . |
| 54 | bind . <Return> {quit save} |