diff -r 8fa6afe1b929 -r 45cf0af38948 FileSelectionBrowser.st --- a/FileSelectionBrowser.st Mon Dec 08 18:55:19 1997 +0100 +++ b/FileSelectionBrowser.st Mon Dec 08 22:35:24 1997 +0100 @@ -6,7 +6,7 @@ ! Object subclass:#Row - instanceVariableNames:'fileName size iconKey group owner permissions baseName' + instanceVariableNames:'fileName size modified iconKey group owner permissions baseName' classVariableNames:'' poolDictionaries:'' privateIn:FileSelectionBrowser @@ -27,12 +27,26 @@ fileName: aFileName; listOfFileFilters: fileFilters; open +! + +title: aTitle requestFileName: aFileName fileFilters: fileFilters + + ^self new + title: aTitle; + fileName: aFileName; + listOfFileFilters: fileFilters; + open ! ! !FileSelectionBrowser class methodsFor:'accessing'! -lastFileSelectionDirectory - "^ LastFileSelectionDirectory" +loadImageFileNameFilters + ^self saveImageFileNameFilters addAll: #('*.jpeg' '*.jpg'); yourself + +! + +saveImageFileNameFilters + ^Array withAll: #('*.xpm' '*.xbm' '*.gif' '*.tif' '*.tiff') ! ! @@ -58,11 +72,11 @@ #'window:' #(#WindowSpec #'name:' 'File Selection Browser' - #'layout:' #(#LayoutFrame 410 0 282 0 809 0 581 0) + #'layout:' #(#LayoutFrame 301 0 222 0 700 0 521 0) #'label:' 'File Selection Browser' #'min:' #(#Point 10 10) #'max:' #(#Point 1152 900) - #'bounds:' #(#Rectangle 410 282 810 582) + #'bounds:' #(#Rectangle 301 222 701 522) #'usePreferredExtent:' false ) #'component:' @@ -145,6 +159,10 @@ #'canSelect:' false ) #(#DataSetColumnSpec + #'label:' 'modified' + #'model:' #modified + ) + #(#DataSetColumnSpec #'label:' 'permissions' #'width:' 85 #'model:' #permissions @@ -199,13 +217,13 @@ #( #(#ActionButtonSpec #'name:' 'cancelButton' - #'label:' 'cancel' + #'label:' 'Cancel' #'model:' #cancel #'extent:' #(#Point 100 22) ) #(#ActionButtonSpec #'name:' 'okButton' - #'label:' 'ok' + #'label:' 'OK' #'model:' #accept #'extent:' #(#Point 100 22) ) @@ -301,14 +319,14 @@ list addAll:lst beforeIndex:1]. self selectionOfFile value: (self listOfFiles detect: [:r| r fileName = fileName] ifNone: [nil]). self setLabel. - ] forkAt: 4 + ] forkAt: Processor userBackgroundPriority ! ! !FileSelectionBrowser methodsFor:'aspects'! listOfFileFilters + |holder| - (holder := builder bindingAt:#listOfFileFilters) isNil ifTrue:[ builder aspectAt:#listOfFileFilters put:(holder := List with: '*.*'). ]. @@ -332,7 +350,6 @@ rootOfDirectory |holder| - (holder := builder bindingAt:#rootOfDirectory) isNil ifTrue:[ builder aspectAt:#rootOfDirectory put: (holder := ValueHolder with: Filename rootDirectory name). ]. @@ -361,8 +378,8 @@ ! selectionOfFileFilter + |holder| - (holder := builder bindingAt:#selectionOfFileFilter) isNil ifTrue:[ builder aspectAt:#selectionOfFileFilter put: (holder := AspectAdaptor new subject:self; forAspect:#selectedFileFilter). @@ -401,7 +418,7 @@ (fileName notNil and: [fileName asFilename exists]) ifTrue: [ - self class lastSelection: fileName asFilename directoryName. + self class lastSelection: fileName asFilename asAbsoluteFilename directoryName. self valueOfFileName value: fileName asFilename baseName ]. (builder componentAt: #directoryTreeView) selectPathname: self class lastSelection. @@ -421,8 +438,13 @@ selectedFileFilter: aString selectedFileFilter := aString. + self valueOfFileName value: (fileName := + ((self valueOfFileName value ? 'unknown') readStream upTo: $.), '.', + (selectedFileFilter reversed readStream upTo: $.) reversed). - self readDirectory + self readDirectory. + + ! ! !FileSelectionBrowser::Row methodsFor:'accessing'! @@ -480,6 +502,11 @@ ! +modified + ^ modified + +! + owner owner isNil ifTrue:[ self validateAttributes @@ -540,9 +567,10 @@ iconKey := #fileLocked. size := owner := group := '?'. ^ self - ]. + ]. size := info size. - owner := OperatingSystem getUserNameFromID:(info uid). + modified := info modified printString. + owner := OperatingSystem getUserNameFromID:(info uid). group := OperatingSystem getGroupNameFromID:(info gid). mode := info mode.