︙ | | |
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
|
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
|
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
|
lsort -dictionary $l
}
# Compare two files or dirs
# Return true if equal
proc CompareFiles {file1 file2} {
global Pref
if {[catch {file stat $file1 stat1}]} {
if {[catch {file lstat $file1 stat1}]} {
return 0
}
if {[catch {file stat $file2 stat2}]} {
if {[catch {file lstat $file2 stat2}]} {
return 0
}
# Same type?
set isdir1 [FileIsDirectory $file1]
set isdir2 [FileIsDirectory $file2]
if {$isdir1 != $isdir2} {
return 0
}
# Handle links
if {$stat1(type) eq "link" && $stat2(type) eq "link"} {
set l1 [file link $file1]
set l2 [file link $file2]
# Equal links are considered equal, otherwise check contents
if {$l1 eq $l2} {
return 1
}
file stat $file1 stat1
file stat $file2 stat2
}
# If contents is not checked, same size is enough to be equal
if {$stat1(size) == $stat2(size) && $Pref(dir,comparelevel) == 0} {
return 1
}
set ignorekey $Pref(dir,ignorekey)
# Different size is enough when doing binary compare
if {$stat1(size) != $stat2(size) && $Pref(dir,comparelevel) == 2 \
|
︙ | | |
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
|
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
|
-
+
+
|
-command "$tree xview"
# Use demo images from Tablelist
set dir $::eskil(thisDir)/../lib/tablelist/demos
set img(clsd) [image create photo -file [file join $dir clsdFolder.gif]]
set img(open) [image create photo -file [file join $dir openFolder.gif]]
set img(file) [image create photo -file [file join $dir file.gif]]
# Arrow images
# Local images
set dir $::eskil(thisDir)/images
set img(link) [image create photo -file [file join $dir link.gif]]
set img(left) [image create photo -file [file join $dir arrow_left.gif]]
set img(right) [image create photo -file [file join $dir arrow_right.gif]]
set AfterId ""
set IdleQueue {}
$tree configure -yscrollcommand "$vsb set" -xscrollcommand "$hsb set"
|
︙ | | |
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
|
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
|
+
+
+
-
-
+
+
+
|
}
set id [$tree insertchild $node end $values]
$tree rowattrib $id type $type
$tree rowattrib $id status unknown
$tree rowattrib $id leftfull $df1
$tree rowattrib $id rightfull $df2
if {$type ne "directory"} {
if {$type eq "link"} {
$tree cellconfigure $id,structure -image $img(link)
} else {
$tree cellconfigure $id,structure -image $img(file)
$tree cellconfigure $id,command -window [mymethod addCmdCol]
$tree cellconfigure $id,structure -image $img(file)
$tree cellconfigure $id,command -window [mymethod addCmdCol]
}
}
if {$type eq "directory"} {
## Make it so that this node is openable
$tree collapse $id
#$tree insertchild $id end dummy ;# a dummy
$tree cellconfigure $id,structure -text $name/
|
︙ | | |
903
904
905
906
907
908
909
910
911
912
913
914
915
916
|
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
|
+
+
+
+
+
+
+
+
|
variable statusVar
constructor {args} {
eskilRegisterToplevel $win
wm title $win "Eskil Dir"
wm protocol $win WM_DELETE_WINDOW [list cleanupAndExit $win]
set dir $::eskil(thisDir)/images
set img(open) [image create photo -file [file join $dir folderopen1.gif]]
set img(up) [image create photo -file [file join $dir arrow_up.gif]]
set h [image height $img(up)]
set w [image width $img(up)]
set img(upup) [image create photo -height $h -width [expr {2 * $w}]]
$img(upup) copy $img(up) -to 0 0 [expr {2 * $w - 1}] [expr {$h - 1}]
install tree using DirCompareTree $win.dc \
-leftdirvariable ::dirdiff(leftDir) \
-rightdirvariable ::dirdiff(rightDir) \
-statusvar [myvar statusVar]
ttk::frame $win.fe1
ttk::frame $win.fe2
|
︙ | | |
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
|
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
|
-
+
-
-
-
+
+
+
-
-
-
-
+
+
+
+
-
+
-
+
|
}
$win.m.md add command -label "Reread Source" -underline 0 \
-command {EskilRereadSource}
$win.m.md add separator
$win.m.md add command -label "Redraw Window" -command {makeDirDiffWin 1}
}
ttk::button $win.bu -text "Up Both" -command [mymethod UpDir] \
ttk::button $win.bu -image $img(upup) -command [mymethod UpDir] \
-underline 0
bind $win <Alt-u> "$win.bu invoke"
#catch {font delete myfont}
#font create myfont -family $Pref(fontfamily) -size $Pref(fontsize)
ttk::entryX $win.e1 -textvariable dirdiff(leftDir)
ttk::button $win.bu1 -text "Up" -command [mymethod UpDir 1]
ttk::button $win.bb1 -text "Browse" \
ttk::entryX $win.e1 -textvariable dirdiff(leftDir) -width 30
ttk::button $win.bu1 -image $img(up) -command [mymethod UpDir 1]
ttk::button $win.bb1 -image $img(open) \
-command "[list BrowseDir dirdiff(leftDir) $win.e1]
[mymethod DoDirCompare]"
$win.e1 xview end
ttk::entryX $win.e2 -textvariable dirdiff(rightDir)
ttk::button $win.bu2 -text "Up" -command [mymethod UpDir 2]
ttk::button $win.bb2 -text "Browse" \
after 50 [list after idle [list $win.e1 xview end]]
ttk::entryX $win.e2 -textvariable dirdiff(rightDir) -width 30
ttk::button $win.bu2 -image $img(up) -command [mymethod UpDir 2]
ttk::button $win.bb2 -image $img(open) \
-command "[list BrowseDir dirdiff(rightDir) $win.e2]
[mymethod DoDirCompare]"
$win.e2 xview end
after 50 [list after idle [list $win.e2 xview end]]
bind $win.e1 <Return> [mymethod DoDirCompare]
bind $win.e2 <Return> [mymethod DoDirCompare]
ttk::label $win.sl -anchor w -textvariable [myvar statusVar]
pack $win.bb1 $win.bu1 -in $win.fe1 -side right -pady 1 -ipadx 10
pack $win.bb1 $win.bu1 -in $win.fe1 -side left -pady 1 -ipadx 10
pack $win.bu1 -padx 6
pack $win.e1 -in $win.fe1 -side left -fill x -expand 1
pack $win.bb2 $win.bu2 -in $win.fe2 -side right -pady 1 -ipadx 10
pack $win.bu2 -padx 6
pack $win.e2 -in $win.fe2 -side left -fill x -expand 1
grid $win.fe1 $win.bu $win.fe2 -sticky we
|
︙ | | |