215 (SpecCollection |
218 (SpecCollection |
216 collection: ( |
219 collection: ( |
217 (LabelSpec |
220 (LabelSpec |
218 label: 'Directory:' |
221 label: 'Directory:' |
219 name: 'DirectoryLabel' |
222 name: 'DirectoryLabel' |
220 layout: (LayoutFrame 2 0 7 0 154 0 24 0) |
223 layout: (LayoutFrame 2 0 7 0 180 0 24 0) |
221 activeHelpKey: searchDirectory |
224 activeHelpKey: searchDirectory |
222 translateLabel: true |
225 translateLabel: true |
223 adjust: right |
226 adjust: right |
224 ) |
227 ) |
225 (FilenameInputFieldSpec |
228 (FilenameInputFieldSpec |
226 name: 'DirectoryEntryField' |
229 name: 'DirectoryEntryField' |
227 layout: (LayoutFrame 156 0 4 0 -315 1 24 0) |
230 layout: (LayoutFrame 180 0 4 0 -350 1 24 0) |
228 activeHelpKey: searchDirectory |
231 activeHelpKey: searchDirectory |
229 model: searchDirectoryHolder |
232 model: searchDirectoryHolder |
230 immediateAccept: true |
233 immediateAccept: true |
231 acceptOnPointerLeave: false |
234 acceptOnPointerLeave: false |
232 ) |
235 ) |
233 (LabelSpec |
236 (LabelSpec |
234 label: 'Search Files Named:' |
237 label: 'Search Files Named:' |
235 name: 'FileNameLabel' |
238 name: 'FileNameLabel' |
236 layout: (LayoutFrame 2 0 31 0 154 0 48 0) |
239 layout: (LayoutFrame 2 0 31 0 180 0 48 0) |
237 activeHelpKey: namePattern |
240 activeHelpKey: namePattern |
238 translateLabel: true |
241 translateLabel: true |
239 adjust: right |
242 adjust: right |
240 ) |
243 ) |
241 (InputFieldSpec |
244 (InputFieldSpec |
242 name: 'FileNameEntryField' |
245 name: 'FileNameEntryField' |
243 layout: (LayoutFrame 156 0 28 0 -315 1 48 0) |
246 layout: (LayoutFrame 180 0 28 0 -350 1 48 0) |
244 activeHelpKey: namePattern |
247 activeHelpKey: namePattern |
245 tabable: true |
248 tabable: true |
246 model: namePatternHolder |
249 model: namePatternHolder |
247 immediateAccept: true |
250 immediateAccept: true |
248 acceptOnLeave: false |
251 acceptOnLeave: false |
249 acceptOnPointerLeave: false |
252 acceptOnPointerLeave: false |
250 ) |
253 ) |
251 (LabelSpec |
254 (LabelSpec |
252 label: 'But not Named:' |
255 label: 'But not Named:' |
253 name: 'Label1' |
256 name: 'Label1' |
254 layout: (LayoutFrame 2 0 55 0 154 0 72 0) |
257 layout: (LayoutFrame 2 0 55 0 180 0 72 0) |
255 activeHelpKey: excludedNamePattern |
258 activeHelpKey: excludedNamePattern |
256 translateLabel: true |
259 translateLabel: true |
257 adjust: right |
260 adjust: right |
258 ) |
261 ) |
259 (InputFieldSpec |
262 (InputFieldSpec |
260 name: 'EntryField1' |
263 name: 'EntryField1' |
261 layout: (LayoutFrame 156 0 52 0 -315 1 72 0) |
264 layout: (LayoutFrame 180 0 52 0 -350 1 72 0) |
262 activeHelpKey: excludedNamePattern |
265 activeHelpKey: excludedNamePattern |
263 tabable: true |
266 tabable: true |
264 model: excludedNamePatternHolder |
267 model: excludedNamePatternHolder |
265 immediateAccept: true |
268 immediateAccept: true |
266 acceptOnLeave: false |
269 acceptOnLeave: false |
267 acceptOnPointerLeave: false |
270 acceptOnPointerLeave: false |
268 ) |
271 ) |
269 (LabelSpec |
272 (LabelSpec |
270 label: 'Containing:' |
273 label: 'Containing:' |
271 name: 'ContentsLabel' |
274 name: 'ContentsLabel' |
272 layout: (LayoutFrame 2 0 79 0 154 0 96 0) |
275 layout: (LayoutFrame 2 0 79 0 180 0 96 0) |
273 activeHelpKey: contentsPattern |
276 activeHelpKey: contentsPattern |
274 translateLabel: true |
277 translateLabel: true |
275 adjust: right |
278 adjust: right |
276 ) |
279 ) |
277 (ComboBoxSpec |
280 (ComboBoxSpec |
278 name: 'ComboBox1' |
281 name: 'ComboBox1' |
279 layout: (LayoutFrame 156 0 76 0 -315 1 96 0) |
282 layout: (LayoutFrame 180 0 76 0 -350 1 96 0) |
280 activeHelpKey: contentsPattern |
283 activeHelpKey: contentsPattern |
281 enableChannel: notSearchForSameContents |
284 enableChannel: notSearchForSameContents |
282 tabable: true |
285 tabable: true |
283 model: contentsPatternHolder |
286 model: contentsPatternHolder |
284 immediateAccept: true |
287 immediateAccept: true |
285 acceptOnPointerLeave: false |
288 acceptOnPointerLeave: false |
286 comboList: searchStringHistory |
289 comboList: searchStringHistory |
|
290 useIndex: false |
287 ) |
291 ) |
288 (LabelSpec |
292 (LabelSpec |
289 label: 'Not Containing:' |
293 label: 'Not Containing:' |
290 name: 'NotContentsLabel' |
294 name: 'NotContentsLabel' |
291 layout: (LayoutFrame 2 0 103 0 154 0 120 0) |
295 layout: (LayoutFrame 2 0 103 0 180 0 120 0) |
292 activeHelpKey: notContentsPattern |
296 activeHelpKey: notContentsPattern |
293 translateLabel: true |
297 translateLabel: true |
294 adjust: right |
298 adjust: right |
295 ) |
299 ) |
296 (InputFieldSpec |
300 (InputFieldSpec |
297 name: 'NotContentsEntryField' |
301 name: 'NotContentsEntryField' |
298 layout: (LayoutFrame 156 0 100 0 -315 1 120 0) |
302 layout: (LayoutFrame 180 0 100 0 -350 1 120 0) |
299 activeHelpKey: notContentsPattern |
303 activeHelpKey: notContentsPattern |
300 enableChannel: notSearchForSameContents |
304 enableChannel: notSearchForSameContents |
301 tabable: true |
305 tabable: true |
302 model: notContentsPatternHolder |
306 model: notContentsPatternHolder |
303 immediateAccept: true |
307 immediateAccept: true |
304 acceptOnPointerLeave: false |
308 acceptOnPointerLeave: false |
305 ) |
309 ) |
306 (LabelSpec |
310 (LabelSpec |
307 label: 'Same Contents As:' |
311 label: 'Same Contents As:' |
308 name: 'SameContentsAsLabel' |
312 name: 'SameContentsAsLabel' |
309 layout: (LayoutFrame 2 0 127 0 154 0 144 0) |
313 layout: (LayoutFrame 2 0 127 0 180 0 144 0) |
310 activeHelpKey: sameContents |
314 activeHelpKey: sameContents |
311 translateLabel: true |
315 translateLabel: true |
312 adjust: right |
316 adjust: right |
313 ) |
317 ) |
314 (InputFieldSpec |
318 (InputFieldSpec |
315 name: 'SameContentsAsEntryField' |
319 name: 'SameContentsAsEntryField' |
316 layout: (LayoutFrame 156 0 124 0 -339 1 144 0) |
320 layout: (LayoutFrame 180 0 124 0 -367 1 144 0) |
317 activeHelpKey: sameContents |
321 activeHelpKey: sameContents |
318 enableChannel: searchForSameContents |
322 enableChannel: searchForSameContents |
319 tabable: true |
323 tabable: true |
320 model: sameContentsAsHolder |
324 model: sameContentsAsHolder |
321 immediateAccept: true |
325 immediateAccept: true |
322 acceptOnPointerLeave: false |
326 acceptOnPointerLeave: false |
323 ) |
327 ) |
324 (CheckToggleSpec |
328 (CheckToggleSpec |
325 name: 'EnableSameContentsCheckToggle' |
329 name: 'EnableSameContentsCheckToggle' |
326 layout: (LayoutOrigin -334 1 128 0) |
330 layout: (LayoutOrigin -366 1 128 0) |
327 activeHelpKey: sameContents |
331 activeHelpKey: sameContents |
|
332 translateLabel: true |
328 model: searchForSameContents |
333 model: searchForSameContents |
329 isTriggerOnDown: true |
334 isTriggerOnDown: true |
330 showLamp: false |
335 showLamp: false |
331 lampColor: (Color 100.0 100.0 0.0) |
336 lampColor: (Color 100.0 100.0 0.0) |
332 ) |
337 ) |
333 (LabelSpec |
338 (LabelSpec |
334 label: 'File Size:' |
339 label: 'File Size:' |
335 name: 'FileSizeLabel' |
340 name: 'FileSizeLabel' |
336 layout: (LayoutFrame 2 0 151 0 154 0 168 0) |
341 layout: (LayoutFrame 2 0 151 0 180 0 168 0) |
337 activeHelpKey: fileSize |
342 activeHelpKey: fileSize |
338 translateLabel: true |
343 translateLabel: true |
339 adjust: right |
344 adjust: right |
340 ) |
345 ) |
341 (PopUpListSpec |
346 (PopUpListSpec |
342 label: 'PopUp List' |
347 label: 'PopUp List' |
343 name: 'FileSizeOperatorPopUpList' |
348 name: 'FileSizeOperatorPopUpList' |
344 layout: (LayoutFrame 157 0 148 0 212 0 168 0) |
349 layout: (LayoutFrame 180 0 148 0 260 0 168 0) |
345 activeHelpKey: fileSize |
350 activeHelpKey: fileSize |
|
351 translateLabel: true |
346 tabable: true |
352 tabable: true |
347 model: fileSizeOperatorHolder |
353 model: fileSizeOperatorHolder |
348 enableChannel: enableFileSizeFilterAndNotSearchForSameContents |
354 enableChannel: enableFileSizeFilterAndNotSearchForSameContents |
349 menu: |
355 menu: |
350 (Array |
356 (Array |
366 acceptOnLostFocus: true |
372 acceptOnLostFocus: true |
367 acceptOnPointerLeave: true |
373 acceptOnPointerLeave: true |
368 ) |
374 ) |
369 (CheckToggleSpec |
375 (CheckToggleSpec |
370 name: 'EnableSizeCheckToggle' |
376 name: 'EnableSizeCheckToggle' |
371 layout: (LayoutOrigin -334 1 151 0) |
377 layout: (LayoutOrigin -366 1 151 0) |
372 activeHelpKey: fileSize |
378 activeHelpKey: fileSize |
|
379 translateLabel: true |
373 model: enableFileSizeFilter |
380 model: enableFileSizeFilter |
374 enableChannel: notSearchForSameContents |
381 enableChannel: notSearchForSameContents |
375 isTriggerOnDown: true |
382 isTriggerOnDown: true |
376 showLamp: false |
383 showLamp: false |
377 lampColor: (Color 100.0 100.0 0.0) |
384 lampColor: (Color 100.0 100.0 0.0) |
378 ) |
385 ) |
379 (LabelSpec |
386 (LabelSpec |
380 label: 'Modified:' |
387 label: 'Modified:' |
381 name: 'Label2' |
388 name: 'Label2' |
382 layout: (LayoutFrame 2 0 175 0 154 0 192 0) |
389 layout: (LayoutFrame 2 0 175 0 180 0 192 0) |
383 activeHelpKey: modificationTime |
390 activeHelpKey: modificationTime |
384 translateLabel: true |
391 translateLabel: true |
385 adjust: right |
392 adjust: right |
386 ) |
393 ) |
387 (PopUpListSpec |
394 (PopUpListSpec |
388 label: 'PopUp List' |
395 label: 'PopUp List' |
389 name: 'PopUpList1' |
396 name: 'PopUpList1' |
390 layout: (LayoutFrame 157 0 172 0 212 0 192 0) |
397 layout: (LayoutFrame 180 0 172 0 260 0 192 0) |
391 activeHelpKey: modificationTime |
398 activeHelpKey: modificationTime |
|
399 translateLabel: true |
392 tabable: true |
400 tabable: true |
393 model: modificationTimeOperatorHolder |
401 model: modificationTimeOperatorIndexHolder |
394 enableChannel: enableModificationTimeFilter |
402 enableChannel: enableModificationTimeFilter |
395 menu: |
403 menu: modificationTimeOperatorLabelList |
396 (Array |
404 useIndex: true |
397 ' before' ' after ' |
|
398 ) |
|
399 ) |
405 ) |
400 (InputFieldSpec |
406 (InputFieldSpec |
401 name: 'EntryField2' |
407 name: 'ModifiedEntryField' |
402 layout: (LayoutFrame 219 0 172 0 -349 1 192 0) |
408 layout: (LayoutFrame 260 0 172 0 -367 1 192 0) |
403 activeHelpKey: modificationTime |
409 activeHelpKey: modificationTime |
404 enableChannel: enableModificationTimeFilter |
410 enableChannel: enableModificationTimeFilter |
405 tabable: true |
411 tabable: true |
406 model: modificationTimeHolder |
412 model: modificationTimeHolder |
407 type: timestamp |
413 type: timestamp |
410 acceptOnLostFocus: true |
416 acceptOnLostFocus: true |
411 acceptOnPointerLeave: true |
417 acceptOnPointerLeave: true |
412 ) |
418 ) |
413 (CheckToggleSpec |
419 (CheckToggleSpec |
414 name: 'CheckToggle1' |
420 name: 'CheckToggle1' |
415 layout: (LayoutOrigin -334 1 175 0) |
421 layout: (LayoutOrigin -366 1 175 0) |
416 activeHelpKey: modificationTime |
422 activeHelpKey: modificationTime |
|
423 translateLabel: true |
417 model: enableModificationTimeFilter |
424 model: enableModificationTimeFilter |
418 isTriggerOnDown: true |
425 isTriggerOnDown: true |
419 showLamp: false |
426 showLamp: false |
420 lampColor: (Color 100.0 100.0 0.0) |
427 lampColor: (Color 100.0 100.0 0.0) |
421 ) |
428 ) |
422 (CheckBoxSpec |
429 (CheckBoxSpec |
423 label: 'Use ''locate'' Cmd' |
430 label: 'Use ''locate'' Cmd' |
424 name: 'UseLocateCheckBox' |
431 name: 'UseLocateCheckBox' |
425 layout: (LayoutFrame -309 1 5 0 -167 1 28 0) |
432 layout: (LayoutFrame -350 1 5 0 -167 1 28 0) |
426 activeHelpKey: useLocate |
433 activeHelpKey: useLocate |
427 visibilityChannel: canUseLocate |
434 visibilityChannel: canUseLocate |
428 tabable: true |
435 tabable: true |
429 model: useLocate |
436 model: useLocate |
430 translateLabel: true |
437 translateLabel: true |
431 ) |
438 ) |
432 (CheckBoxSpec |
439 (CheckBoxSpec |
433 label: 'Recursive' |
440 label: 'Recursive' |
434 name: 'RecursiveSearchCheckBox' |
441 name: 'RecursiveSearchCheckBox' |
435 layout: (LayoutFrame -169 1 5 0 -4 1 28 0) |
442 layout: (LayoutFrame -200 1 5 0 -4 1 28 0) |
436 activeHelpKey: recursiveSearch |
443 activeHelpKey: recursiveSearch |
437 tabable: true |
444 tabable: true |
438 model: searchRecursively |
445 model: searchRecursively |
439 translateLabel: true |
446 translateLabel: true |
440 ) |
447 ) |
441 (CheckBoxSpec |
448 (CheckBoxSpec |
442 label: 'Directories' |
449 label: 'Directories' |
443 name: 'SearchDirectoriesCheckBox' |
450 name: 'SearchDirectoriesCheckBox' |
444 layout: (LayoutFrame -309 1 29 0 -167 1 52 0) |
451 layout: (LayoutFrame -350 1 29 0 -167 1 52 0) |
445 enableChannel: notSearchForSameContents |
452 enableChannel: notSearchForSameContents |
446 tabable: true |
453 tabable: true |
447 model: searchDirectories |
454 model: searchDirectories |
448 translateLabel: true |
455 translateLabel: true |
449 ) |
456 ) |
450 (CheckBoxSpec |
457 (CheckBoxSpec |
451 label: 'Ignore Case' |
458 label: 'Ignore Case' |
452 name: 'IgnoreCaseInNameCheckBox' |
459 name: 'IgnoreCaseInNameCheckBox' |
453 layout: (LayoutFrame -169 1 29 0 -4 1 52 0) |
460 layout: (LayoutFrame -200 1 29 0 -4 1 52 0) |
454 activeHelpKey: ignoreCase |
461 activeHelpKey: ignoreCase |
455 tabable: true |
462 tabable: true |
456 model: ignoreCaseInName |
463 model: ignoreCaseInName |
457 translateLabel: true |
464 translateLabel: true |
458 ) |
465 ) |
459 (CheckBoxSpec |
466 (CheckBoxSpec |
460 label: 'Ignore Case' |
467 label: 'Ignore Case' |
461 name: 'CheckBox1' |
468 name: 'CheckBox1' |
462 layout: (LayoutFrame -169 1 53 0 -4 1 76 0) |
469 layout: (LayoutFrame -200 1 53 0 -4 1 76 0) |
463 activeHelpKey: ignoreCase |
470 activeHelpKey: ignoreCase |
464 tabable: true |
471 tabable: true |
465 model: ignoreCaseInExcludedName |
472 model: ignoreCaseInExcludedName |
466 translateLabel: true |
473 translateLabel: true |
467 ) |
474 ) |
468 (CheckBoxSpec |
475 (CheckBoxSpec |
469 label: 'Use ''grep'' Cmd' |
476 label: 'Use ''grep'' Cmd' |
470 name: 'UseGrepCheckBox' |
477 name: 'UseGrepCheckBox' |
471 layout: (LayoutFrame -309 1 77 0 -167 1 100 0) |
478 layout: (LayoutFrame -350 1 77 0 -167 1 100 0) |
472 visibilityChannel: canUseGrep |
479 visibilityChannel: canUseGrep |
473 enableChannel: notSearchForSameContents |
480 enableChannel: notSearchForSameContents |
474 tabable: true |
481 tabable: true |
475 model: useGrep |
482 model: useGrep |
476 translateLabel: true |
483 translateLabel: true |
477 ) |
484 ) |
478 (CheckBoxSpec |
485 (CheckBoxSpec |
479 label: 'Ignore Case' |
486 label: 'Ignore Case' |
480 name: 'IgnoreCaseInContentsCheckBox' |
487 name: 'IgnoreCaseInContentsCheckBox' |
481 layout: (LayoutFrame -169 1 77 0 -4 1 100 0) |
488 layout: (LayoutFrame -200 1 77 0 -4 1 100 0) |
482 activeHelpKey: ignoreCase |
489 activeHelpKey: ignoreCase |
483 enableChannel: notSearchForSameContents |
490 enableChannel: notSearchForSameContents |
484 tabable: true |
491 tabable: true |
485 model: ignoreCaseInContents |
492 model: ignoreCaseInContents |
486 translateLabel: true |
493 translateLabel: true |
487 ) |
494 ) |
488 (CheckBoxSpec |
495 (CheckBoxSpec |
489 label: 'Ignore Case' |
496 label: 'Ignore Case' |
490 name: 'IgnoreCaseInNotContentsCheckBox' |
497 name: 'IgnoreCaseInNotContentsCheckBox' |
491 layout: (LayoutFrame -169 1 101 0 -4 1 124 0) |
498 layout: (LayoutFrame -200 1 101 0 -4 1 124 0) |
492 activeHelpKey: ignoreCase |
499 activeHelpKey: ignoreCase |
493 enableChannel: notSearchForSameContents |
500 enableChannel: notSearchForSameContents |
494 tabable: true |
501 tabable: true |
495 model: ignoreCaseInNotContents |
502 model: ignoreCaseInNotContents |
496 translateLabel: true |
503 translateLabel: true |
497 ) |
504 ) |
498 (CheckBoxSpec |
505 (CheckBoxSpec |
499 label: 'Cache Info' |
506 label: 'Cache Info' |
500 name: 'RememberInCacheCheckBox' |
507 name: 'RememberInCacheCheckBox' |
501 layout: (LayoutFrame -309 1 125 0 -167 1 148 0) |
508 layout: (LayoutFrame -350 1 125 0 -167 1 148 0) |
502 visibilityChannel: canUseGrep |
509 visibilityChannel: canUseGrep |
503 enableChannel: searchForSameContents |
510 enableChannel: searchForSameContents |
504 tabable: true |
511 tabable: true |
505 model: rememberInCache |
512 model: rememberInCache |
506 translateLabel: true |
513 translateLabel: true |
1886 ! |
1959 ! |
1887 |
1960 |
1888 modificationTimeWrapperFor:aFileMatchBlock |
1961 modificationTimeWrapperFor:aFileMatchBlock |
1889 "possibly wrap the search-match block into a modification time matcher" |
1962 "possibly wrap the search-match block into a modification time matcher" |
1890 |
1963 |
1891 |timeToCompare timeMatch op compare| |
1964 |timeToCompare timeMatch idx op compare| |
1892 |
1965 |
1893 self enableModificationTimeFilter value ifFalse:[ ^ aFileMatchBlock ]. |
1966 self enableModificationTimeFilter value ifFalse:[ ^ aFileMatchBlock ]. |
1894 |
1967 |
1895 timeToCompare := self modificationTimeHolder value. |
1968 timeToCompare := self modificationTimeHolder value. |
1896 op := self modificationTimeOperatorHolder value withoutSeparators. |
1969 idx := self modificationTimeOperatorIndexHolder value. |
1897 op = 'after' ifTrue:[ |
1970 op := self modificationTimeOperatorValueList at:idx. |
|
1971 op = #after ifTrue:[ |
1898 compare := [:t | t > timeToCompare ]. |
1972 compare := [:t | t > timeToCompare ]. |
1899 ] ifFalse:[ |
1973 ] ifFalse:[ |
1900 compare := [:t | t < timeToCompare ]. |
1974 op = #before ifTrue:[ |
|
1975 compare := [:t | t < timeToCompare ]. |
|
1976 ] ifFalse:[ |
|
1977 op = #inDay ifTrue:[ |
|
1978 timeToCompare := timeToCompare asDate. |
|
1979 compare := [:t | t asDate = timeToCompare ]. |
|
1980 ] ifFalse:[ |
|
1981 op = #inMonth ifTrue:[ |
|
1982 timeToCompare := timeToCompare asDate. |
|
1983 compare := [:t | t month = timeToCompare month |
|
1984 and:[t year = timeToCompare year] ]. |
|
1985 ] ifFalse:[ |
|
1986 op = #inYear ifTrue:[ |
|
1987 timeToCompare := timeToCompare asDate. |
|
1988 compare := [:t | t year = timeToCompare year ]. |
|
1989 ] ifFalse:[ |
|
1990 self halt. |
|
1991 ]. |
|
1992 ]. |
|
1993 ]. |
|
1994 ]. |
1901 ]. |
1995 ]. |
1902 |
1996 |
1903 timeMatch := [:f | |
1997 timeMatch := [:f | |
1904 |t| |
1998 |t| |
1905 |
1999 |