1 #!/usr/local/bin/wish -f
 
   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.
 
   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
 
  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}
 
  15 # Create the message widget and arrange for it to be centered in the
 
  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}
 
  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.
 
  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}
 
  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
 
  41     puts stdout "You pressed the \"$button\" button;  bye-bye!"
 
  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}
 
  54 bind . <Return> {quit save}