Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Rewrote as snidget |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
507ba476ff06f4d9f8014a501e9eccd2 |
User & Date: | peter 2007-12-10 06:56:31.000 |
Context
2007-12-20
| ||
19:15 | First version with working comparison using background processing. check-in: 8037773bcd user: peter tags: trunk | |
2007-12-10
| ||
06:56 | Rewrote as snidget check-in: 507ba476ff user: peter tags: trunk | |
2007-12-09
| ||
18:42 | Initial experiment check-in: f01668f775 user: peter tags: trunk | |
Changes
Changes to dirdifftest.tcl.
︙ | ︙ | |||
18 19 20 21 22 23 24 | option -rightdir variable AfterId variable IdleQueue variable IdleQueueArr constructor {args} { | | > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | < < < < < < < < < < < < < < < < < < < < < < < < | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | > < < | < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < | 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 | option -rightdir variable AfterId variable IdleQueue variable IdleQueueArr constructor {args} { install tree using ttk::treeview $win.tree \ -columns {type status leftfull leftname leftsize leftdate rightfull rightname rightsize rightdate} \ -displaycolumns {leftname leftsize leftdate rightname rightsize rightdate} if {[tk windowingsystem] ne "aqua"} { install vsb using ttk::scrollbar $win.vsb -orient vertical \ -command "$tree yview" install hsb using ttk::scrollbar $win.hsb -orient horizontal \ -command "$tree xview" } else { install vsb using scrollbar $win.vsb -orient vertical \ -command "$tree yview" install hsb using scrollbar $win.hsb -orient horizontal \ -command "$tree xview" } $tree configure -yscroll "$vsb set" -xscroll "$hsb set" $self configurelist $args set AfterId "" set IdleQueue {} $tree heading \#0 -text "Directory" $tree heading leftname -text "Name" $tree heading leftsize -text "Size" $tree heading leftdate -text "Date" $tree heading rightname -text "Name" $tree heading rightsize -text "Size" $tree heading rightdate -text "Date" $tree column leftsize -stretch 0 -width 70 $tree column rightsize -stretch 0 -width 70 $tree column leftdate -stretch 0 -width 70 $tree column rightdate -stretch 0 -width 70 # Fill in root data $tree set {} type directory $tree set {} status empty $tree set {} leftfull $options(-leftdir) $tree set {} leftname [file tail $options(-leftdir)] $tree set {} rightfull $options(-rightdir) $tree set {} rightname [file tail $options(-rightdir)] $self UpdateDirNode {} bind $tree <<TreeviewOpen>> "[mymethod UpdateDirNode] \[%W focus\]" grid $tree $vsb -sticky nsew grid $hsb -sticky nsew grid columnconfigure $win 0 -weight 1 grid rowconfigure $win 0 -weight 1 } destructor { } method AddNodeToIdle {node} { if {[info exists IdleQueueArr($node)]} { return } lappend IdleQueue $node set IdleQueueArr($node) 1 if {$AfterId eq ""} { set AfterId [after idle [mymethod UpdateIdle]] } } method UpdateIdle {} { set AfterId "" if {[llength $IdleQueue] > 0} { set node [lindex $IdleQueue 0] set IdleQueue [lrange $IdleQueue 1 end] unset IdleQueueArr($node) $self UpdateDirNode $node } if {[llength $IdleQueue] > 0} { set AfterId [after idle [mymethod UpdateIdle]] } } method UpdateDirNode {node} { if {[$tree set $node type] ne "directory"} { return } if {[$tree set $node status] ne "empty"} { puts "Dir [$tree set $node leftfull] already done" return } $tree delete [$tree children $node] set leftfull [$tree set $node leftfull] set leftall [lsort -dictionary [glob -nocomplain -dir $leftfull *]] foreach f $leftall { set type [file type $f] set id [$tree insert $node end -text [file tail $f] \ -values [list $type unknown $f [file tail $f] 0 0 $f [file tail $f] 0 0]] if {$type eq "directory"} { ## Make it so that this node is openable $tree set $id status empty $tree insert $id 0 -text dummy ;# a dummy $tree item $id -text [file tail $f]/ $self AddNodeToIdle $id } } $tree set $node status unknown $tree set $node leftfull $tree set $node leftname $tree set $node rightfull $tree set $node rightname } } proc makeWin {} { set w [DirCompare .f -leftdir $::dirdiff(leftDir) -rightdir $::dirdiff(rightDir)] pack $w -fill both -expand 1 } makeWin |