Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Pass dirdiff preferences as a dict |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
2895f46ba096bebd5a4622f4058547bc |
User & Date: | peter 2014-07-20 23:50:50.238 |
Context
2014-07-21
| ||
00:17 | Use dicts down to ListFiles method. check-in: e1a6e25443 user: peter tags: trunk | |
2014-07-20
| ||
23:50 | Pass dirdiff preferences as a dict check-in: 2895f46ba0 user: peter tags: trunk | |
23:35 | Started to refactor dirdiff code check-in: 03d4b03550 user: peter tags: trunk | |
Changes
Changes to src/dirdiff.tcl.
︙ | ︙ | |||
145 146 147 148 149 150 151 | } return $eq } # Returns the contents of a directory as a sorted list of file dicts # By collecting as much as possible in one place, this prepares for a # future expansion into revision control support in dirdiff. | | | | > > > > > | | 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 | } return $eq } # Returns the contents of a directory as a sorted list of file dicts # By collecting as much as possible in one place, this prepares for a # future expansion into revision control support in dirdiff. proc DirContentsDRaw {dir prefsD} { if {$::tcl_platform(platform) eq "windows"} { # .-files are not treated specially on windows. * is enough to get all set files [glob -directory $dir -nocomplain *] } else { set files [glob -directory $dir -nocomplain * {.[a-zA-Z]*}] } set result {} foreach file [lsort -dictionary $files] { set fD [dict create "full" $file] dict set fD tail [file tail $file] dict set fD "dir" [FileIsDirectory $file] if {[catch {file stat $file stat}]} { dict set fD size "" dict set fD mtime "" dict set fD type "" } else { dict set fD size $stat(size) dict set fD mtime $stat(mtime) dict set fD type $stat(type) } lappend result $fD } return $result } # Returns the contents of a directory as a sorted list of dicts, after applying # filter preferences. proc DirContentsD {dir prefsD} { set pIncDirs [dict get $prefsD incdirs] set pExDirs [dict get $prefsD exdirs] set pIncFiles [dict get $prefsD incfiles] set pExFiles [dict get $prefsD exfiles] set filesD [DirContentsDRaw $dir $prefsD] if {$::Pref(dir,onlyrev)} { # FIXA: move to rev and make general for other systems # FIXA: obsolete, not updated since before dictinaries were used #set entries [file join $dir CVS Entries] #if {[file exists $entries]} { # set ch [open $entries r] |
︙ | ︙ | |||
205 206 207 208 209 210 211 | set filesD2 {} foreach fileD $filesD { set full [dict get $fileD full] set tail [dict get $fileD tail] set isDir [dict get $fileD "dir"] # Apply filters if {$isDir} { | | | | | | | | 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 | set filesD2 {} foreach fileD $filesD { set full [dict get $fileD full] set tail [dict get $fileD tail] set isDir [dict get $fileD "dir"] # Apply filters if {$isDir} { if {[llength $pIncDirs] == 0} { set allowed 1 } else { set allowed 0 foreach pat $pIncDirs { if {[string match $pat $tail]} { set allowed 1 break } } } if {$allowed} { foreach pat $pExDirs { if {[string match $pat $tail]} { set allowed 0 break } } } if {!$allowed} continue } else { if {[llength $pIncFiles] == 0} { set allowed 1 } else { set allowed 0 foreach pat $pIncFiles { if {[string match $pat $tail]} { set allowed 1 break } } } if {$allowed} { foreach pat $pExFiles { if {[string match $pat $tail]} { set allowed 0 break } } } if {!$allowed} continue |
︙ | ︙ | |||
874 875 876 877 878 879 880 881 882 883 | if {$rf eq ""} { $w.bl configure -state disabled } } # Compare two directories. method CompareDirs {dir1 dir2 node} { if {$dir1 eq ""} { set filesD1 {} } else { | > > > > > > > | | | 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 | if {$rf eq ""} { $w.bl configure -state disabled } } # Compare two directories. method CompareDirs {dir1 dir2 node} { # Collect preferences to a dict. # FIXA: Maybe move this to a more cnetral place dict set prefsD incdirs $::Pref(dir,incdirs) dict set prefsD exdirs $::Pref(dir,exdirs) dict set prefsD incfiles $::Pref(dir,incfiles) dict set prefsD exfiles $::Pref(dir,exfiles) if {$dir1 eq ""} { set filesD1 {} } else { set filesD1 [DirContentsD $dir1 $prefsD] } if {$dir2 eq ""} { set filesD2 {} } else { set filesD2 [DirContentsD $dir2 $prefsD] } set len1 [llength $filesD1] set len2 [llength $filesD2] set p1 0 set p2 0 |
︙ | ︙ | |||
1206 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 | ttk::entryX $filter.e1 -width 20 -textvariable ::TmpPref(dir,incfiles) ttk::label $filter.l2 -text "Exclude Files" -anchor w ttk::entryX $filter.e2 -width 20 -textvariable ::TmpPref(dir,exfiles) ttk::label $filter.l3 -text "Include Dirs" -anchor w ttk::entryX $filter.e3 -width 20 -textvariable ::TmpPref(dir,incdirs) ttk::label $filter.l4 -text "Exclude Dirs" -anchor w ttk::entryX $filter.e4 -width 20 -textvariable ::TmpPref(dir,exdirs) ttk::checkbutton $filter.cb1 -text "Only revision controlled" \ -variable ::TmpPref(dir,onlyrev) grid $filter.l1 $filter.e1 -sticky we -padx 3 -pady 3 grid $filter.l2 $filter.e2 -sticky we -padx 3 -pady 3 grid $filter.l3 $filter.e3 -sticky we -padx 3 -pady 3 grid $filter.l4 $filter.e4 -sticky we -padx 3 -pady 3 grid $filter.cb1 - -sticky w -padx 3 -pady 3 | > | 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 | ttk::entryX $filter.e1 -width 20 -textvariable ::TmpPref(dir,incfiles) ttk::label $filter.l2 -text "Exclude Files" -anchor w ttk::entryX $filter.e2 -width 20 -textvariable ::TmpPref(dir,exfiles) ttk::label $filter.l3 -text "Include Dirs" -anchor w ttk::entryX $filter.e3 -width 20 -textvariable ::TmpPref(dir,incdirs) ttk::label $filter.l4 -text "Exclude Dirs" -anchor w ttk::entryX $filter.e4 -width 20 -textvariable ::TmpPref(dir,exdirs) # FIXA: onlyrev currently does nothing ttk::checkbutton $filter.cb1 -text "Only revision controlled" \ -variable ::TmpPref(dir,onlyrev) grid $filter.l1 $filter.e1 -sticky we -padx 3 -pady 3 grid $filter.l2 $filter.e2 -sticky we -padx 3 -pady 3 grid $filter.l3 $filter.e3 -sticky we -padx 3 -pady 3 grid $filter.l4 $filter.e4 -sticky we -padx 3 -pady 3 grid $filter.cb1 - -sticky w -padx 3 -pady 3 |
︙ | ︙ |