home *** CD-ROM | disk | FTP | other *** search
/ Practical Programming in Tcl & Tk (4th Edition) / TCLBOOK4.BIN / pc / exsource.old / 33_2.tcl < prev    next >
Text File  |  2003-04-15  |  1KB  |  51 lines

  1. #
  2. # Example 33-2
  3. # Choosing items from a listbox.
  4. #
  5.  
  6. proc List_Select { parent values } {
  7.     # Create two lists side by side
  8.     frame $parent
  9.     set choices [Scrolled_Listbox $parent.choices \
  10.         -width 20 -height 5 ]
  11.     set picked [Scrolled_Listbox $parent.picked \
  12.         -width 20 -height 5]
  13.     pack $parent.choices $parent.picked -side left \
  14.         -expand true -fill both
  15.  
  16.     # Selecting in choices moves items into picked
  17.     bind $choices <ButtonRelease-1> \
  18.         [list ListTransferSel %W $picked]
  19.  
  20.     # Selecting in picked deletes items
  21.     bind $picked <ButtonRelease-1> \
  22.         {ListDeleteSel %W %y}
  23.  
  24.     # Insert all the choices
  25.     foreach x $values {
  26.         $choices insert end $x
  27.     }
  28. }
  29. proc ListTransferSel {src dst} {
  30.     foreach i [$src curselection] {
  31.         $dst insert end [$src get $i]
  32.     }
  33. }
  34. proc ListDeleteSel {w y} {
  35.     foreach i [lsort -integer -decreasing [$w curselection]] {
  36.         $w delete $i
  37.     }
  38. }
  39. proc List_SelectValues {parent} {
  40.     set picked $parent.picked.list
  41.     set result {}
  42.     foreach i [$w curselection] {
  43.         lappend result [$w get $i]
  44.     }
  45. }
  46. List_Select .f {apples oranges bananas \
  47.                 grapes mangos peaches pears}
  48. pack .f -expand true -fill both
  49.  
  50.  
  51.