home *** CD-ROM | disk | FTP | other *** search
/ Practical Programming in Tcl & Tk (4th Edition) / TCLBOOK4.BIN / pc / exsource.old / 36_5.tcl < prev    next >
Text File  |  2003-04-15  |  910b  |  37 lines

  1. #
  2. # Example 36-5
  3. # A canvas selection handler.
  4. #
  5.  
  6. proc CanvasSelectHandle { w offset maxbytes } {
  7.     # Handle a selection request
  8.     global canvas
  9.     if ![info exists canvas(select,$w)] {
  10.         error "No selected item"
  11.     }
  12.     set id $canvas(select,$w)
  13.     # Return the requested chunk of data.
  14.     return [string range [CanvasDescription $w $id] \
  15.         $offset [expr $offset+$maxbytes]]
  16. }
  17. proc CanvasDescription { w id } {
  18.     # Generate a description of the object that can
  19.     # be used to recreate it later.
  20.     set type [$w type $id]
  21.     set coords [$w coords $id]
  22.     set config {}
  23.     # Bundle up non-default configuration settings
  24.     foreach conf [$w itemconfigure $id] {
  25.         # itemconfigure returns a list like
  26.         # -fill {} {} {} red
  27.         set default [lindex $conf 3]
  28.         set value [lindex $conf 4]
  29.         if {[string compare $default $value] != 0} {
  30.             lappend config [lindex $conf 0] $value
  31.         }
  32.     }
  33.     return [concat CanvasObject $type $coords $config]
  34. }
  35.  
  36.  
  37.