fixed filter for caseless fileSystems (win32)
authorClaus Gittinger <cg@exept.de>
Thu, 24 Sep 1998 12:51:34 +0200
changeset 999 3dc1bc073981
parent 998 ad33f2625598
child 1000 efafa57e0313
fixed filter for caseless fileSystems (win32)
DirectoryView.st
--- a/DirectoryView.st	Thu Sep 24 12:51:02 1998 +0200
+++ b/DirectoryView.st	Thu Sep 24 12:51:34 1998 +0200
@@ -380,8 +380,7 @@
     filterList := self selectedFileFilter asCollectionOfSubstringsSeparatedBy:$;.
     filterList := filterList collect:[:pattern | pattern withoutSeparators].
 
-    Cursor wait showWhile: 
-    [ 
+    self withCursor:Cursor read do:[ 
         (dir := DirectoryContents directoryNamed: directory) notNil ifTrue:[
 "/            dir filesAndBasenamesDo:[:file :name|      
 "/                filterList do:[:filter|
@@ -395,8 +394,23 @@
                 allFiles add: name
             ].
 
-            filterList do:[:filter|
-                foundFiles addAll:(allFiles select:[:name | filter match:name]).
+            Filename isCaseSensitive ifFalse:[
+                filterList do:[:filter|
+                    |lcFilter|
+
+                    lcFilter := filter asLowercase.
+                    foundFiles
+                        addAll:(allFiles 
+                                    select:[:name | lcFilter match:name asLowercase]
+                                ).
+                ]
+            ] ifTrue:[
+                filterList do:[:filter|
+                    foundFiles
+                        addAll:(allFiles 
+                                    select:[:name | filter match:name]
+                                ).
+                ]
             ].
 
             foundFiles := foundFiles asOrderedCollection sort.
@@ -405,7 +419,7 @@
         ]
     ]
 
-    "Modified: / 12.9.1998 / 17:25:25 / cg"
+    "Modified: / 23.9.1998 / 17:00:42 / cg"
 !
 
 readMonitoringDirectory
@@ -473,32 +487,43 @@
 
 !
 
-selectedFileFilter: aString
+selectedFileFilter:aString
+    "change the file filter"
+
+    |listOfFileFilters nArgs|
 
-    aString size = 0 ifTrue: [self listOfFileFilters remove: selectedFileFilter ifAbsent: nil].
-    selectedFileFilter := aString.
-    (self listOfFileFilters includes: selectedFileFilter) not &
-    selectedFileFilter notEmpty
-    ifTrue:
-    [
-        self listOfFileFilters addFirst: selectedFileFilter
+    aString = selectedFileFilter ifTrue:[^ self].
+
+    listOfFileFilters := self listOfFileFilters.
+
+    "/ what is this for ?
+    aString size == 0 ifTrue: [
+        listOfFileFilters remove: selectedFileFilter ifAbsent: nil
     ].
-    (self listOfFileFilters includes: selectedFileFilter) &
-    fileFilterSelectAction notNil 
-    ifTrue: 
-    [
-        fileFilterSelectAction numArgs = 0
-        ifTrue:
-        [
+    selectedFileFilter := aString.
+
+    ((listOfFileFilters includes: selectedFileFilter) not
+    and:[selectedFileFilter notEmpty])
+    ifTrue: [
+        listOfFileFilters addFirst: selectedFileFilter
+    ].
+    ((listOfFileFilters includes: selectedFileFilter)
+    and:[fileFilterSelectAction notNil]) 
+    ifTrue: [
+        (nArgs := fileFilterSelectAction numArgs) == 0
+        ifTrue: [
             fileFilterSelectAction value
-        ].
-        fileFilterSelectAction numArgs = 1
-        ifTrue:
-        [
-            fileFilterSelectAction value: selectedFileFilter
+        ] ifFalse:[
+            nArgs == 1 ifTrue:[
+                fileFilterSelectAction value: selectedFileFilter
+            ] ifFalse:[
+                self error:'bad numArgs of fileFilter action block'
+            ]
         ]
     ].       
     self readDirectory.
+
+    "Modified: / 23.9.1998 / 16:53:05 / cg"
 ! !
 
 !DirectoryView methodsFor:'startup / release'!