size-search filter added
authorClaus Gittinger <cg@exept.de>
Wed, 29 Jun 2005 18:21:17 +0200
changeset 6330 24949170ff90
parent 6329 e33e3e64069e
child 6331 0818ed0959c4
size-search filter added
FindFileApplication.st
--- a/FindFileApplication.st	Tue Jun 28 19:50:25 2005 +0200
+++ b/FindFileApplication.st	Wed Jun 29 18:21:17 2005 +0200
@@ -22,7 +22,9 @@
 		hasListEntries targetApplication useLocate useGrep
 		rememberInCache searchOnlyInCache searchForSameContents
 		matchedFilesList shownListHolder contentsInfoCache
-		contentsInfoCacheAccessLock autoSelectInBrowserHolder'
+		contentsInfoCacheAccessLock autoSelectInBrowserHolder
+		fileSizeOperatorHolder fileSizeHolder enableFileSizeFilter
+		fileSizeUnitHolder'
 	classVariableNames:'ContentsInfoCache ContentsInfoCacheAccessLock LastRememberInCache'
 	poolDictionaries:''
 	category:'Interface-Tools-File'
@@ -126,7 +128,7 @@
             )
            (ViewSpec
               name: 'Box1'
-              layout: (LayoutFrame 0 0.0 32 0 0 1.0 156 0)
+              layout: (LayoutFrame 0 0.0 32 0 0 1.0 180 0)
               component: 
              (SpecCollection
                 collection: (
@@ -295,13 +297,52 @@
                     translateLabel: true
                     model: clearCache
                   )
+                 (LabelSpec
+                    label: 'File Size:'
+                    name: 'Label1'
+                    layout: (LayoutFrame 2 0 127 0 154 0 144 0)
+                    translateLabel: true
+                    adjust: right
+                  )
+                 (PopUpListSpec
+                    label: 'PopUp List'
+                    name: 'OperatorPopUpList'
+                    layout: (LayoutFrame 157 0 124 0 212 0 144 0)
+                    tabable: true
+                    model: fileSizeOperatorHolder
+                    enableChannel: enableFileSizeFilterAndNotSearchForSameContents
+                    menu: 
+                   ('>'
+                      '=' '!!='
+                      '~' '<'
+                    )
+                  )
+                 (InputFieldSpec
+                    name: 'EntryField1'
+                    layout: (LayoutFrame 219 0 124 0 -430 1 144 0)
+                    enableChannel: enableFileSizeFilterAndNotSearchForSameContents
+                    tabable: true
+                    model: fileSizeHolder
+                    type: fileSize
+                    immediateAccept: true
+                    acceptOnPointerLeave: false
+                  )
+                 (CheckToggleSpec
+                    name: 'EnableSizeCheckToggle'
+                    layout: (LayoutOrigin -334 1 127 0)
+                    model: enableFileSizeFilter
+                    enableChannel: notSearchForSameContents
+                    isTriggerOnDown: true
+                    showLamp: false
+                    lampColor: (Color 100.0 100.0 0.0)
+                  )
                  )
                
               )
             )
            (SequenceViewSpec
               name: 'List1'
-              layout: (LayoutFrame 0 0.0 156 0 0 1.0 0 1)
+              layout: (LayoutFrame 0 0.0 180 0 0 1.0 0 1)
               model: selectionHolder
               menu: menu
               hasHorizontalScrollBar: true
@@ -315,7 +356,7 @@
               name: 'ProgressIndicator1'
               layout: (LayoutFrame 125 0 11 0 231 0 21 0)
               visibilityChannel: enableStop
-              backgroundColor: (Color 0.0 66.9993 66.9993)
+              backgroundColor: (Color 0.0 66.999313344015 66.999313344015)
               showPercentage: false
               isActivityIndicator: true
             )
@@ -323,6 +364,7 @@
          
         )
       )
+
 ! !
 
 !FindFileApplication class methodsFor:'menu specs'!
@@ -811,7 +853,7 @@
 !FindFileApplication methodsFor:'aspects'!
 
 autoSelectInBrowser
-    ^ autoSelectInBrowserHolder value.
+    ^ self autoSelectInBrowserHolder value.
 !
 
 autoSelectInBrowserHolder
@@ -847,6 +889,17 @@
     ^ contentsPatternHolder.
 !
 
+enableFileSizeFilter
+    enableFileSizeFilter isNil ifTrue:[
+        enableFileSizeFilter := false asValue.
+    ].
+    ^ enableFileSizeFilter.
+!
+
+enableFileSizeFilterAndNotSearchForSameContents
+    ^ BlockValue forLogical:self notSearchForSameContents and:self enableFileSizeFilter
+!
+
 enableSearch
 
     enableSearch isNil ifTrue:[
@@ -863,6 +916,27 @@
     ^ enableStop.
 !
 
+fileSizeHolder
+    fileSizeHolder isNil ifTrue:[
+        fileSizeHolder := 0 asValue.
+    ].
+    ^ fileSizeHolder.
+!
+
+fileSizeOperatorHolder
+    fileSizeOperatorHolder isNil ifTrue:[
+        fileSizeOperatorHolder := '>' asValue.
+    ].
+    ^ fileSizeOperatorHolder.
+!
+
+fileSizeUnitHolder
+    fileSizeUnitHolder isNil ifTrue:[
+        fileSizeUnitHolder := 'b' asValue.
+    ].
+    ^ fileSizeUnitHolder.
+!
+
 hasListEntries
 
     hasListEntries isNil ifTrue:[
@@ -911,7 +985,6 @@
 !
 
 notContentsPatternHolder
-
     notContentsPatternHolder isNil ifTrue:[
         notContentsPatternHolder := nil asValue.
     ].
@@ -1420,6 +1493,20 @@
                     ].
             ].
         ].
+        self enableFileSizeFilter value ifTrue:[
+            |fileSizeToCompare sizeMatch op oldDoesFileMatch|
+
+            fileSizeToCompare := self fileSizeHolder value.
+            op := self fileSizeOperatorHolder value.
+            op = '~' ifTrue:[
+                sizeMatch := [:f | |sz| sz := f fileSize. sz between:fileSizeToCompare*0.9 and:fileSizeToCompare*1.1].
+            ] ifFalse:[
+                op := op asSymbol.
+                sizeMatch := [:f | f fileSize perform:op with:fileSizeToCompare].
+            ].
+            oldDoesFileMatch := doesFileMatch.
+            doesFileMatch := [:f | (sizeMatch value:f) and:[ oldDoesFileMatch value:f ]]    
+        ].
     ].
 
 
@@ -1628,5 +1715,5 @@
 !FindFileApplication class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libtool/FindFileApplication.st,v 1.70 2005-04-14 09:12:17 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/FindFileApplication.st,v 1.71 2005-06-29 16:21:17 cg Exp $'
 ! !