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

  1. #
  2. # Example 36-7
  3. # Pasting onto the canvas.
  4. #
  5.  
  6. proc CanvasPaste { w {x {}} {y {}}} {
  7.     # Paste the selection from the CLIPBOARD
  8.     if [catch {selection get -selection CLIPBOARD} sel] {
  9.         # no clipboard data
  10.         return
  11.     }
  12.     if {[string length $x] == 0} {
  13.         # <<Paste>>, get the current mouse coordinates
  14.         set x [expr [winfo pointerx $w] - [winfo rootx $w]]
  15.         set y [expr [winfo pointery $w] - [winfo rooty $w]]
  16.         if {$x < 0 || $y < 0 ||
  17.                 $x > [winfo width $w] ||
  18.                 $y > [winfo height $w]} {
  19.             # Mouse outside the window - center object
  20.             set x [expr [winfo width $w]/2]
  21.             set y [expr [winfo height $w]/2]
  22.         }
  23.     }
  24.     if [regexp {^CanvasObject} $sel] {
  25.         if [catch {eval {$w create} [lrange $sel 1 end]} id] {
  26.             return;
  27.         }
  28.         # look at the first coordinate to see where to
  29.         # move the object. Element 1 is the type, the
  30.         # next two are the first coordinate
  31.         set x1 [lindex $sel 2]
  32.         set y1 [lindex $sel 3]
  33.         $w move $id [expr $x-$x1] [expr $y-$y1]
  34.     }
  35. }
  36.  
  37.  
  38.