Update of /cvsroot/pure-data/pd/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv14539
Modified Files: Tag: devel_0_39 desire.tk Log Message: new Ctrl+D duplicate
Index: desire.tk =================================================================== RCS file: /cvsroot/pure-data/pd/src/Attic/desire.tk,v retrieving revision 1.1.2.312 retrieving revision 1.1.2.313 diff -C2 -d -r1.1.2.312 -r1.1.2.313 *** desire.tk 11 Aug 2006 01:58:01 -0000 1.1.2.312 --- desire.tk 11 Aug 2006 02:08:21 -0000 1.1.2.313 *************** *** 195,198 **** --- 195,199 ---- # we might also use "man 3tk clipboard" in this specific case.
+ # uses system clipboard class_new Clipboard {Observable Thing} def Clipboard init {{value ""}} {super; $self value= $value} *************** *** 202,205 **** --- 203,213 ---- set clipboard [Clipboard new]
+ # uses string buffer (not system clipboard) + class_new Clipboard2 {Observable Thing} + def Clipboard2 init {{value ""}} {super; $self value= $value} + def Clipboard2 value= {value} {set @value $value; $self changed} + def Clipboard2 << {value} {append @value $value; $self changed} + def Clipboard2 value {} {return $@value} + #-----------------------------------------------------------------------------------# # adapted from matju's MetaRuby (UndoQueue.rb) *************** *** 2068,2111 **** }
- #-----------------------------------------------------------------------------------# - # duplication turns out to be somehow similar to file loading, where the duplicates - # got added as children before they were born.... so be aware - def* Canvas duplicate {} { - global _ canvas - set canvas(dup_wire_num) 0 - if {$@selection != ""} { - # store the selected objects in canvas(dup_orig), which later will - # be linked to the cuplicated object - set canvas(dup_orig) $@selection - set dups $@selection - set @selection {} - foreach item $dups { - $item selected?= 0 - mset {x1 y1} [$item xy] - set x1 [expr $x1+15] - set y1 [expr $y1+15] - puts "dup class :::: $_($item:_class) :::: $_($item:class)" - - if {$_($item:_class) == "ObjectBox"} { - set name $_($item:text) - } else { - set name $_($item:class) - } - set @duplicating 1 - # not quite pretty, will rewrite when something better comes up - switch $_($item:_class) { - FloatAtom {pd .$self floatatom $x1 $y1 $_($item:text)} - SymbolAtom {pd .$self symbolatom $x1 $y1} - MessageBox {pd .$self msg $x1 $y1 $item:text)} - default {pd .$self obj $x1 $y1 $name} - } - - #set dup_wires $_($item:wires) - } - - } - - } - def* Canvas duplicate_wire {} { global _ canvas --- 2076,2079 ---- *************** *** 2138,2142 **** }
! def* Canvas copy {} { global clipboard obj_index_sel if {$@selection == ""} {return} --- 2106,2110 ---- }
! def Canvas copy {} { global clipboard obj_index_sel if {$@selection == ""} {return} *************** *** 2145,2149 **** #$clipboard canvas= $self #$clipboard copy_times= 0 - #$self deconstruct_to $clipboard array unset obj_index_sel $self:* foreach child $@selection { --- 2113,2116 ---- *************** *** 2160,2164 **** }
! def* Canvas paste {} { global clipboard set n [llength $@children] ;# is a racecondition --- 2127,2132 ---- }
! # todo: reimplement copy-count with 15px offset ! def Canvas paste {} { global clipboard set n [llength $@children] ;# is a racecondition *************** *** 2185,2238 **** } # part two ! def* Canvas paste2 {n} {$self selection= [lrange [$self children] $n end]} ! ! def* Canvas paste_OLD {} { ! global clipboard ! puts "***************************************" ! set windowx [winfo width .$self.c] ! set windowy [winfo height .$self.c] ! mset {x1off x2off } [.$self.c xview] ! mset {y1off y2off } [.$self.c yview] ! set offx [expr ($windowx * $x1off) / [expr $x2off - $x1off]] ! set offy [expr ($windowy * $y1off) / [expr $y2off - $y1off]] ! $self deselect_all ! set clipboard(copied_obj) "" ! if {$clipboard(orig_cpcanvas) != $self} { set clipboard(copy_times) 0 } else {incr clipboard(copy_times)} ! set notvisiblex 0 ! set notvisibley 0 ! set n 0 ! ! foreach item $clipboard(objs) { ! mset {x1 y1} [$item xy] ! if {$x1 < $offx | $x1 > [expr $offx+$windowx]} {set notvisiblex 1} ! if {$y1 < $offx | $y1 > [expr $offx+$windowy]} {set notvisibley 1} ! if {$notvisiblex && $notvisibley} {incr n} ! } ! ! foreach item $clipboard(objs) { ! mset {x1 y1} [$item xy] ! if {$clipboard(orig_cpcanvas) != $self} { ! if {$n == [llength $clipboard(objs)]} { ! set x1 [expr $x1 + $offx +($clipboard(copy_times)*15)] ! set y1 [expr $y1 + $offy +($clipboard(copy_times)*15)] ! } ! ! } else { ! if {$n == [llength $clipboard(objs)]} { ! set x1 [expr $x1 + $offx +($clipboard(copy_times)*15)] ! set y1 [expr $y1 + $offy +($clipboard(copy_times)*15)] ! } else { ! set x1 [expr $x1+($clipboard(copy_times)*15)] ! set y1 [expr $y1+($clipboard(copy_times)*15)] ! } ! } ! if {$_($item:_class) == "Objectbox"} { ! set name $_($item:text) } else { ! set name $_($item:class) ! } ! set clipboard(copying) 1 ! pd .$self obj $x1 $y1 $name ! } ! }
def* Canvas paste_wires {} { --- 2153,2157 ---- } # part two ! def Canvas paste2 {n} {$self selection= [lrange [$self children] $n end]}
def* Canvas paste_wires {} { *************** *** 2263,2268 **** }
! def* Canvas cut {} { ! puts "history::: $@history" $@history atomically { $self copy --- 2182,2186 ---- }
! def Canvas cut {} { $@history atomically { $self copy *************** *** 2271,2275 **** }
! def* Canvas select_all {} { foreach o $@children {$o selected?= 1} foreach w $@wires {$w selected?= 1} --- 2189,2202 ---- }
! def Canvas duplicate {} { ! global clipboard ! set backup $clipboard ! set clipboard [Clipboard2 new] ! $self copy ! $self paste ! set clipboard $backup ! } ! ! def Canvas select_all {} { foreach o $@children {$o selected?= 1} foreach w $@wires {$w selected?= 1} *************** *** 2279,2283 **** }
! def* Canvas deselect_all {} { foreach o $@selection {$o selected?= 0; puts "----------- deselecte $o"} foreach w $@selection_wire {$w selected?= 0} --- 2206,2210 ---- }
! def Canvas deselect_all {} { foreach o $@selection {$o selected?= 0; puts "----------- deselecte $o"} foreach w $@selection_wire {$w selected?= 0}