comment/format in:
#openSettings
#settingsList
changed: #initializeSettingsList
--- a/AbstractLauncherApplication.st Tue Apr 19 12:58:24 2011 +0200
+++ b/AbstractLauncherApplication.st Tue Apr 19 12:58:46 2011 +0200
@@ -265,29 +265,64 @@
!
initializeSettingsList
- |rawList filteredList settingsList|
+ |rawList cookedList settingsList|
rawList := self defaultSettingsApplicationList.
- filteredList := rawList select:[:eachEntry|
- |className|
-
- className := eachEntry at:2 ifAbsent:nil.
- className isNil
- or:[ (Smalltalk at:className) notNil ]
- ].
-
- settingsList := filteredList collect:[:eachEntry|
- |iconSelector newEntry|
-
- iconSelector := eachEntry at:3 ifAbsent:nil.
- iconSelector isNil ifTrue:[
- eachEntry
- ] ifFalse:[
- newEntry := eachEntry copy.
- newEntry at:3 put:(self perform:iconSelector).
- newEntry
- ].
- ].
+ cookedList := OrderedCollection new.
+
+ rawList do:[:eachEntry|
+ |treeName className newEntry code classList name nameCode nameBlock nameList iconCode iconBlock|
+
+ className := eachEntry at:2 ifAbsent:nil.
+ (className notNil and:[className startsWith:'[']) ifTrue:[
+ code := className copyFrom:2 to:(className size - 1).
+ classList := Parser evaluate:code.
+ name := eachEntry at:1.
+ self assert:(name includesString:'[').
+
+ nameCode := name copyFrom:(name indexOf:$[)+1 to:(name indexOf:$])-1.
+ nameCode := '^ [:each | ' , (nameCode copyReplaceString:'%' withString:'each') ,']'.
+ nameBlock := Parser evaluate:nameCode.
+
+ nameList := classList collect:nameBlock.
+ nameList sortWith:classList.
+ nameList with:classList do:[:eachName :eachClass |
+ |newEntry|
+
+ newEntry := eachEntry copy.
+ newEntry at:1 put:(name copyTo:(name indexOf:$[)-1),eachName.
+ newEntry at:2 put:eachClass name.
+ cookedList add:newEntry.
+ ].
+ ] ifFalse:[
+ (className isNil "a directory entry"
+ or:[ (Smalltalk at:className) notNil "a valid entry"]) ifTrue:[
+ cookedList add:eachEntry.
+ ].
+ ].
+ ].
+
+ settingsList :=
+ cookedList collect:[:eachEntry |
+ |iconCodeOrSelector iconCode iconBlock newEntry|
+
+ iconCodeOrSelector := eachEntry at:3 ifAbsent:nil.
+ iconCodeOrSelector isNil ifTrue:[
+ newEntry := eachEntry
+ ] ifFalse:[
+ newEntry := eachEntry copy.
+ (iconCodeOrSelector startsWith:'[') ifTrue:[
+ iconCode := iconCodeOrSelector copyFrom:(iconCodeOrSelector indexOf:$[)+1 to:(iconCodeOrSelector indexOf:$])-1.
+ iconCode := '^ [:each | ' , (iconCode copyReplaceString:'%' withString:'each') ,']'.
+ iconBlock := Parser evaluate:iconCode.
+ newEntry at:3 put:(iconBlock value:(Smalltalk classNamed:(eachEntry at:2))).
+ ] ifFalse:[
+ newEntry at:3 put:(self perform:iconCodeOrSelector).
+ ].
+ ].
+ newEntry.
+ ].
+
SettingsList := settingsList.
^ settingsList.
@@ -296,7 +331,7 @@
"
"Modified: / 16-12-2002 / 18:12:50 / penk"
- "Modified: / 01-12-2006 / 14:01:12 / cg"
+ "Modified: / 19-04-2011 / 12:53:26 / cg"
!
removeSettingsApplicationByClass:aClass
@@ -325,11 +360,14 @@
settingsList
"/ do NOT cache SettingsList
"/ use UserSettingsList to add settings from loaded libraries
+
SettingsList := nil.
SettingsList isNil ifTrue: [
SettingsList := self initializeSettingsList
].
^ SettingsList
+
+ "Modified: / 19-04-2011 / 12:08:17 / cg"
!
userSettingsList
@@ -1021,6 +1059,7 @@
].
OpenSettingsDialog := nil.
].
+
settingsApp := SettingsDialog new.
settingsApp requestor:self.
settingsApp installSettingsEntries:(self class allSettingsList).
@@ -1029,6 +1068,8 @@
settingsApp allButOpen.
settingsApp window label:(resources string:'ST/X Settings').
settingsApp openWindow.
+
+ "Modified: / 19-04-2011 / 12:09:10 / cg"
!
settingsClosed
@@ -6773,9 +6814,9 @@
!AbstractLauncherApplication class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libtool/AbstractLauncherApplication.st,v 1.401 2011-03-25 18:53:19 stefan Exp $'
+ ^ '$Header: /cvs/stx/stx/libtool/AbstractLauncherApplication.st,v 1.402 2011-04-19 10:58:46 cg Exp $'
!
version_CVS
- ^ '$Header: /cvs/stx/stx/libtool/AbstractLauncherApplication.st,v 1.401 2011-03-25 18:53:19 stefan Exp $'
+ ^ '$Header: /cvs/stx/stx/libtool/AbstractLauncherApplication.st,v 1.402 2011-04-19 10:58:46 cg Exp $'
! !