--- a/DirectoryView.st Sat Feb 14 22:51:19 1998 +0100
+++ b/DirectoryView.st Sun Feb 15 17:47:59 1998 +0100
@@ -21,7 +21,8 @@
!
Object subclass:#FileRow
- instanceVariableNames:'fileName size modified iconKey group owner permissions baseName'
+ instanceVariableNames:'fileName size modified iconKey imageFromFile group owner
+ permissions baseName'
classVariableNames:''
poolDictionaries:''
privateIn:DirectoryView
@@ -363,14 +364,14 @@
[:file :name|
list do:
[:filter|
- (filter match: name)
+ ((filter match: name) and: [(foundFiles includes: file) not])
ifTrue:
[
- foundFiles add: (FileRow new fileName: file)
+ foundFiles add: file
].
].
].
- self listOfFiles contents: foundFiles
+ self listOfFiles contents: (foundFiles collect: [:file| FileRow new fileName: file])
]
!
@@ -665,43 +666,18 @@
iconOn:aGC
- (aGC registeredImageAt:iconKey) isNil
- ifTrue:
+ |icon|
+ iconKey isNil
+ ifTrue:
[
self validateAttributes.
- ((iconKey == #imageFileIcon) and: [size < 5000])
- ifTrue:
- [
- Object errorSignal handle: [:ex|]
- do:
- [
- |image|
- (image := Image fromFile: fileName name) notNil
- ifTrue:
- [
- image extent y > 22
- ifTrue:
- [
- image := image magnifiedBy: 22/image extent y
- ].
- (aGC registeredImageAt: (iconKey := fileName name asSymbol)) isNil
- ifTrue:
- [
- aGC registerImage: image key: iconKey
- ]
- ]
- ]
- ]
- ifFalse:
- [
- aGC registerImage: (self class perform: iconKey) key: iconKey
- ]
+ (imageFromFile isNil and: [iconKey == #imageFileIcon])
+ ifTrue: [icon := self retrieveImageFromFileAndRegisterOn: aGC]
].
- ^aGC registeredImageAt: iconKey
-
-
-
-
+ imageFromFile
+ ifFalse: [icon := aGC registerImage: (self class perform: iconKey) key: iconKey]
+ ifTrue: [icon := aGC registeredImageAt: iconKey].
+ ^icon
!
modified
@@ -719,6 +695,39 @@
^permissions
!
+retrieveImageFromFileAndRegisterOn: aGC
+
+ |image|
+ imageFromFile := false.
+ (image := aGC registeredImageAt: fileName name asSymbol) isNil
+ ifTrue:
+ [
+ size < 5000
+ ifTrue:
+ [
+ Object errorSignal handle: [:ex|]
+ do:
+ [
+ (image := Image fromFile: fileName name) notNil
+ ifTrue:
+ [
+ image extent y > 22
+ ifTrue:
+ [
+ image := image magnifiedBy: 22/image extent y
+ ].
+ image := aGC registerImage: image key: fileName name asSymbol.
+ ]
+ ]
+ ].
+ ].
+ image notNil ifTrue: [imageFromFile := true. iconKey := fileName name asSymbol].
+ ^image
+
+
+
+!
+
size
size isNumber ifFalse:[^ size].
size < 1000 ifTrue: [^ size printString].
@@ -733,7 +742,8 @@
validateAttributes
- |info mode|
+ |info mode|
+
permissions := String new:9 withAll:$-.
(info := fileName info) isNil