AbstractLauncherApplication.st
changeset 4311 678275825ead
parent 4291 bad45a9d27e3
child 4312 319d9902cc5e
--- a/AbstractLauncherApplication.st	Mon Nov 25 17:25:13 2002 +0100
+++ b/AbstractLauncherApplication.st	Mon Nov 25 17:25:43 2002 +0100
@@ -28,7 +28,7 @@
 !
 
 HierarchicalItem subclass:#HierarchicalSettingsApplItem
-	instanceVariableNames:'label icon'
+	instanceVariableNames:'label icon applClass application'
 	classVariableNames:''
 	poolDictionaries:''
 	privateIn:AbstractLauncherApplication::HierarchicalSettingsApplList
@@ -42,17 +42,8 @@
 !
 
 ApplicationModel subclass:#SettingsDialog
-	instanceVariableNames:'canvasHolder appList selectionHolder selection requestor
-		colOfInstances'
-	classVariableNames:'ApplicationList'
-	poolDictionaries:''
-	privateIn:AbstractLauncherApplication
-!
-
-ApplicationModel subclass:#SettingsDialogV2
-	instanceVariableNames:'canvasHolder appList selectionHolder selection requestor
-		colOfInstances selectionInApplList subCanvasApplicationHolder
-		help applList'
+	instanceVariableNames:'appList requestor selectionInApplList subCanvasApplicationHolder
+		help applList appIsCategory enableButtons doReload doSave'
 	classVariableNames:'ApplicationList'
 	poolDictionaries:''
 	privateIn:AbstractLauncherApplication
@@ -1680,43 +1671,83 @@
     ]
 ! !
 
-!AbstractLauncherApplication::HierarchicalSettingsApplList methodsFor:'initialize'!
-
-initialize
-
-    | rootItem |
-    super initialize.
-    rootItem := HierarchicalSettingsApplItem labeled:(Text string:'New List/Tree' emphasis:#bold) icon:ResourceSelectionBrowser iconPrivateClass.
-
-    self root:rootItem.
+!AbstractLauncherApplication::HierarchicalSettingsApplList class methodsFor:'accessing'!
+
+itemClass
+
+    ^ HierarchicalSettingsApplItem
 ! !
 
-!AbstractLauncherApplication::HierarchicalSettingsApplList::HierarchicalSettingsApplItem class methodsFor:'instance creation'!
-
-labeled:aLabel icon:anIcon
-
-    ^ self new setLabel:aLabel icon:anIcon
+!AbstractLauncherApplication::HierarchicalSettingsApplList class methodsFor:'queries'!
+
+recursiveGetParentFor:aCategory
 ! !
 
 !AbstractLauncherApplication::HierarchicalSettingsApplList::HierarchicalSettingsApplItem methodsFor:'accessing'!
 
+applClass
+    "return the value of the instance variable 'applClass' (automatically generated)"
+
+    ^ applClass
+!
+
+applClass:something
+    "set the value of the instance variable 'applClass' (automatically generated)"
+
+    applClass := something.
+!
+
+application
+    "return the value of the instance variable 'application' (automatically generated)"
+
+    ^ application
+!
+
+application:something
+    "set the value of the instance variable 'application' (automatically generated)"
+
+    application := something.
+!
+
 icon
     "returns the icon
     "
+    icon isNil ifTrue:[
+        ^ super icon
+    ].
     ^ icon
 !
 
+icon:something
+    "set the value of the instance variable 'icon' (automatically generated)"
+
+    icon := something.
+!
+
 label
     "returns the label
     "
     ^ label
 !
 
-setLabel:aLabel icon:anIcon
-    "set the label and icon without any change notification
-    "
-    label := aLabel.
-    icon  := anIcon.
+label:something
+    "set the value of the instance variable 'label' (automatically generated)"
+
+    label := something.
+! !
+
+!AbstractLauncherApplication::HierarchicalSettingsApplList::HierarchicalSettingsApplItem methodsFor:'printing & storing'!
+
+printString
+
+    ^ self label ? '???'
+! !
+
+!AbstractLauncherApplication::HierarchicalSettingsApplList::HierarchicalSettingsApplItem methodsFor:'queries'!
+
+isCategory
+
+    ^ self applClass isNil
 ! !
 
 !AbstractLauncherApplication::LauncherDialogs class methodsFor:'dialogs'!
@@ -6516,6 +6547,412 @@
       )
 ! !
 
+!AbstractLauncherApplication::SettingsDialog class methodsFor:'application icons'!
+
+communicationIcon
+    "This resource specification was automatically generated
+     by the ImageEditor of ST/X."
+
+    "Do not manually edit this!! If it is corrupted,
+     the ImageEditor may not be able to read the specification."
+
+    "
+     self communicationIcon inspect
+     ImageEditor openOnClass:self andSelector:#communicationIcon
+     Icon flushCachedIcons
+    "
+
+    <resource: #image>
+
+    ^Icon
+        constantNamed:#'AbstractLauncherApplication::SettingsDialog class communicationIcon'
+        ifAbsentPut:[(Depth8Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#(8 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
+@@@@_$RA@@@@@@@@@@@@@HED_ @@@@@@ U2+UX\@@@@@@@@@@H]U*52A@@@@ U*9^S-A  @@@@@@@HIT.HD4O8D@_%29^#6JZE"B@@@@@HIX-(@9!!&-\_"Z+
+.+QKZ(0@J @@@@@*@K*5SV2B*2XDQ+":,XR5WP8@@@@@BDJ5.+V@.E4KEA46-+*5U9TVHRD!!HP<+JKV:-%*SG1@Y@R8@WYV)I@A/@@@SH D$@E>K*BP-$PUH
+QH60)2U0[$:]KYPJN$RK,JX''[TFW]BB*)*4Z\K)[Q''L6''GD *JZ.HF4UV;H_**U6\+)%T7,WDUB3G:^%_E<@WB%RG*)8\+*BL(=Q#@(!!R!!2-_P5-@@AUNA!!4
+BGV:.(IQ)I<LQS@R^VE([P@@(E9OZQT/[[*:-9=YO8M''S6B ZF4@@@@@[0@[M0I5.)!!!!(4NE@F<@&$&C@@@@@@@@G&PCBGYV&;@<!!P@@#$^P@@@@@@@@@FN@
+[R<#+J2,PHT@%$2E@@@@@@@@@@BEA7>"I;B/''$*H%$"I@@@@@@@@@@@@$#D]^RF''*F]5$D2I@@@@@@@@@@@@@@BIKB<F(VHIHSNE@@@@@@@@@@@@@@@@@I$>
+MVY7@@@@@@@@@@@@@@@@@@@@@@@@!!3Y9@@@@@@@@@@@@@@@a') ; colorMapFromArray:#[0 0 0 0 0 0 7 7 7 12 12 12 20 20 20 23 23 23 24 24 24 28 28 28 30 30 30 32 32 32 35 35 35 40 40 40 41 41 41 43 43 43 45 45 45 48 47 48 50 49 50 51 50 51 52 52 52 54 53 54 55 54 55 56 56 56 58 57 58 58 58 58 59 59 59 60 59 60 60 60 60 61 61 61 62 62 62 66 65 66 66 66 66 67 66 67 68 67 68 69 69 69 70 69 70 70 70 70 71 71 71 72 71 72 73 73 73 74 73 74 75 75 75 76 75 76 76 76 76 77 76 77 78 78 78 79 79 79 80 80 80 85 84 85 86 84 86 86 85 86 87 86 87 87 87 87 88 87 88 89 88 89 89 89 89 90 88 90 90 89 90 93 91 93 93 93 93 94 92 94 94 93 94 96 94 96 97 96 97 98 97 98 99 98 99 99 99 99 100 99 100 100 100 100 102 102 102 103 103 103 104 103 104 104 104 104 105 105 105 106 106 106 108 107 108 109 109 109 110 110 110 111 110 111 113 113 113 114 113 114 114 114 114 115 115 115 116 116 116 117 115 117 118 118 118 120 120 120 121 121 121 122 121 122 122 122 122 123 122 123 123 123 123 124 124 124 125 125 125 127 127 127 128 128 128 129 129 129 130 130 130 131 131 131 132 131 132 132 132 132 133 132 133 134 134 134 135 135 135 136 136 136 137 137 137 138 138 138 140 139 140 142 142 142 147 147 147 151 151 151 153 153 153 154 154 154 155 155 155 156 155 156 156 156 156 159 159 159 164 163 164 165 165 165 167 167 167 168 168 168 170 170 170 172 172 172 174 174 174 175 174 175 177 177 177 178 178 178 181 181 181 182 182 182 183 183 183 185 185 185 189 189 189 190 190 190 191 191 191 192 192 192 194 192 194 194 194 194 195 195 195 196 196 196 198 196 198 199 198 199 200 200 200 201 200 201 201 201 201 202 201 202 202 202 202 203 203 203 204 204 204 205 204 205 205 205 205 206 205 206 206 206 206 209 209 209 210 210 210 211 211 211 212 212 212 213 212 213 213 213 213 214 214 214 215 213 215 215 215 215 216 216 216 217 216 217 217 217 217 218 217 218 219 219 219 221 219 221 222 221 222 224 222 224 224 223 224 225 223 225 225 224 225 225 225 225 226 224 226 226 225 226 227 226 227 228 226 228 229 228 229 231 231 231 232 231 232 235 234 235 237 237 237 239 239 239 241 241 241 244 244 244 247 247 247 248 248 248 255 255 255]; mask:((ImageMask new) width: 22; height: 22; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'G@C O G0_0O8?8_<?(W<?8_<???<=:^<???<???<???<_??<O??<O??<B?=\@?<8@?=0@?? @??@@_>@@O @@G@@') ; yourself); yourself]
+!
+
+compilerIcon
+    "This resource specification was automatically generated
+     by the ImageEditor of ST/X."
+
+    "Do not manually edit this!! If it is corrupted,
+     the ImageEditor may not be able to read the specification."
+
+    "
+     self compilerIcon inspect
+     ImageEditor openOnClass:self andSelector:#compilerIcon
+     Icon flushCachedIcons
+    "
+
+    <resource: #image>
+
+    ^Icon
+        constantNamed:#'AbstractLauncherApplication::SettingsDialog class compilerIcon'
+        ifAbsentPut:[(Depth8Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#(8 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
+@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@H@@@@@@@@@@@@@@@@@@@@@@@@@@@@B@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@H@
+@@DA@PD@@PDA@@DA@PD@@PDA@@@B@@@A@PDA@@DA@P@A@PDA@@DA@P@@@ @@@P@@@P@A@@D@@P@@@P@A@@D@@@H@@@DA@PD@@PDA@@DA@PD@@PDA@@@B@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@ @@@PDA@PDA@PDA@PDA@PD@@PD@@@H@@@D@@@@@@PDA@@@@@PDA@@DA@@@B@@@A@PDA@PDA@@DA@P@A@P@A@P@@@ @@@P@@
+@@@A@P@A@PDA@PD@@PD@@@H@@@DA@PDA@PD@@PDA@PDA@@DA@@@B@@@A@@@@@@DA@@DA@PDA@P@A@P@@@ @@@PDA@PDA@P@A@PD@@PD@@PD@@@H@@@D@@@@@
+@PDA@@@@@PDA@@DA@@@B@@@A@PDA@PDA@PDA@PDA@P@A@P@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@a') ; colorMapFromArray:#[0 0 0 255 255 255 0 0 0]; mask:((ImageMask new) width: 22; height: 22; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@@@@@@O??8O??8O??8O??8O??8O??8O??8O??8O??8O??8O??8O??8O??8O??8O??8O??8@@@@@@@@@@@@') ; yourself); yourself]
+!
+
+debuggerIcon
+    "This resource specification was automatically generated
+     by the ImageEditor of ST/X."
+
+    "Do not manually edit this!! If it is corrupted,
+     the ImageEditor may not be able to read the specification."
+
+    "
+     self debuggerIcon inspect
+     ImageEditor openOnClass:self andSelector:#debuggerIcon
+     Icon flushCachedIcons
+    "
+
+    <resource: #image>
+
+    ^Icon
+        constantNamed:#'AbstractLauncherApplication::SettingsDialog class debuggerIcon'
+        ifAbsentPut:[(Depth4Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#(4 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
+@@@@@@@@@@@@@@@@@@@ADQDQDQDP@@@@@@@@@@@@@A@@@@@ADQDQDQDPD@@@@@@@@@@@@A@P@@@DQDQDQDQ@DA@@@@@@@@@@@D@PD@@DQDQDQ@Q@PA@@@@PQ
+DTPDP@A@@@@@ADQDQD@D@@@@@@@DPTEAQ@@BH"H @@QAPPH H#L3L3L @@@BH3LCL3L3L3H@@@H#L0L3L3L3L @@@BL3@@@@@@@@@@@BH3LBL3L3L3H@@@@"
+L H#L3L3H @@@@@@@"H"H"H@@@@@@@@@@BH"H@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@b') ; colorMapFromArray:#[0 0 0 170 170 170 128 0 0 255 0 0 255 255 255]; mask:((Depth1Image new) width: 22; height: 22; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@??0@??0C??0C??0O??0O??0???0???0???8??? ???0???<???<???<A??<_??<O??<@[?8@C?0@F? @I#X@BA ') ; yourself); yourself]
+!
+
+defaultSettingsAppIcon
+
+    ^ self settingsIcon
+!
+
+editorIcon
+    "This resource specification was automatically generated
+     by the ImageEditor of ST/X."
+
+    "Do not manually edit this!! If it is corrupted,
+     the ImageEditor may not be able to read the specification."
+
+    "
+     self editorIcon inspect
+     ImageEditor openOnClass:self andSelector:#editorIcon
+     Icon flushCachedIcons
+    "
+
+    <resource: #image>
+
+    ^Icon
+        constantNamed:#'AbstractLauncherApplication::SettingsDialog class editorIcon'
+        ifAbsentPut:[(Depth8Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#(8 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@JB (JB (JB (JB (JB (@@@TE@@@@B (IBP$IBPXIBP$IBP$IAPTE@0@@
+@@(JBP$IBP$FBP$IBP$IAPTE@0L@@@@JB $IBP$IA $IBP$IBPTEAPLC@@@@B (FA XFA XFA XFA TE@0LC@0@@@@(JBP$IBP$FBP$IAPTE@0LC@0P@@@@J
+B $IBP$IA $IAPTE@0LC@0PK@@@@B (IBP$IBPXIBPTEAPLC@0LDB0@@@@(JA XFA XFA TH@0LC@0PD@ @@@@@JB $IBP$I@@ HB@LC@0PB@ @@@@@@B (I
+BP$IBPXHB@ HB@ K@PD@@@@@@@(JA XFA @HB@ HB@ F@@DA@@@@@@@JB XFA X@B@ HB@ FA @A@P@@@@@@B (IBP$I@P HB@XFA (I@PD@@@@@@@(JBP$I
+@PHKA XJBP$IBPDA@@@@@@@JB @@@@D@@@@@@@@@@@@A@P@@@@@@B (@@@D@@@@@@@@@@@@@@PD@@@@@@@(JBP$IBP$@BP$IBP$IBPDA@@@@@@HA@PDA@PDA
+@PDA@PDA@PDA@P@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@a') ; colorMapFromArray:#[160 160 160 0 0 0 48 48 48 255 128 0 192 88 0 255 168 88 195 195 195 88 88 88 255 220 168 255 255 255 220 220 220 64 0 0]; mask:((Depth1Image new) width: 22; height: 22; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@@G??LG??<G??<G??<G??<G??<G??<G??<G??8G??0G??0G??0G??0G??0G??0G??0G??0G??0O??0@@@@') ; yourself); yourself]
+!
+
+httpServerIcon
+    "This resource specification was automatically generated
+     by the ImageEditor of ST/X."
+
+    "Do not manually edit this!! If it is corrupted,
+     the ImageEditor may not be able to read the specification."
+
+    "
+     self httpServerIcon inspect
+     ImageEditor openOnClass:self andSelector:#httpServerIcon
+     Icon flushCachedIcons
+    "
+
+    <resource: #image>
+
+    ^Icon
+        constantNamed:#'AbstractLauncherApplication::SettingsDialog class httpServerIcon'
+        ifAbsentPut:[(Depth8Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#(8 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
+@@@@@HQ-M!!T6M&5-\@@@@@@@@@@@@@@@@GT4HB,1DS$9NUQ0@@@@@@@@@@@@@F<3JP\MG X9NSL9RG@@@@@@@@@@@GT2GQ\C@0LIJ%L3O11J\@@@@@@@(XP4
+LA$C@0LCAA<''F"8,F4V3@KT@+0A-JCD]@0LCNT-MSEAPS49V$7L@@@@@MQ@XFPLCNE!!XVE!!XVE!!XVE!!X@@@@@AT$APLC@5"9-K6?1LSD1LFJQ@@@@@@KEBT&
+CPMX**R-+Z2+(JZX\DP@@@@@@RL1LR,NVJ8:.K"7-%&I%GAD@@@@@D$OK3D1HU"[%IRT%IRT%I]0Q@@@@@A=@!!L1KQYX*J"(*J"(.8:T\DP@@@@@)THRLQ$C
+VJ"(*J"(*IBO%''AD@@@@@@B:P2HL@5"K"8.K"8.K"8M0Q@@@@@@@@J]FB@MX0K0:N#(:N,B2\DP@@@@@@@@@,T\;VJ#B0<OC0<N>&GAD@@@@@@@@@@@@*U"(
+0<OC0<OC0I!!0Q@@@@@@@@@@@@@AX*LU<#HVF$,BX\DP@@@@@@@@@@@@@VJ#C@@@@@@CC&GAD@@@@@@@@@@@@@E"(''92\''I2\(9!!0Q@@@@@@@@@@@@@AX*IVO
+#8>O#9*X\DP@@@@@@@@@@@@@VJ!!>&Y:B"I:M&GAD@@@@@@@a') ; colorMapFromArray:#[0 0 0 0 0 80 0 0 159 0 0 255 0 2 253 0 7 248 0 8 235 0 8 247 0 14 223 0 16 239 0 20 55 0 20 60 0 32 223 0 35 220 0 47 207 0 50 205 0 60 195 0 64 175 0 64 181 0 64 191 0 74 181 0 80 0 0 87 167 0 90 164 0 92 163 0 97 157 0 102 142 0 103 133 0 107 112 0 111 143 0 114 140 0 115 139 0 127 79 0 127 127 0 150 76 0 159 95 0 165 89 0 184 71 0 191 64 0 200 33 0 207 0 0 208 45 0 213 0 0 225 30 0 235 20 0 240 15 0 243 0 0 244 11 0 245 8 0 255 0 6 132 42 6 168 6 10 149 10 17 41 72 17 96 17 25 25 25 25 25 232 28 28 227 30 30 30 33 32 152 35 35 35 35 35 133 40 40 40 42 131 42 45 45 45 50 50 50 51 51 111 51 55 105 52 52 52 54 60 76 54 116 54 60 60 88 60 60 103 62 61 141 62 62 125 65 64 193 65 104 153 65 112 145 65 136 121 65 160 97 65 192 65 68 68 68 71 111 71 76 121 76 77 76 205 80 80 80 85 100 85 95 95 95 97 97 97 98 207 98 103 103 103 104 104 104 107 105 186 107 106 235 109 108 236 109 109 109 111 109 147 111 111 111 111 111 255 114 113 162 114 114 210 116 116 116 117 117 117 118 116 165 118 117 245 118 118 118 119 117 158 119 119 119 120 120 120 120 159 120 127 127 127 130 146 130 131 129 131 132 131 191 135 135 135 136 135 136 138 138 246 142 142 142 143 143 143 143 143 255 147 145 147 147 146 174 147 146 227 150 148 230 151 149 151 151 151 151 153 150 153 155 153 155 156 154 156 156 155 240 157 156 157 159 157 86 159 159 159 162 160 162 162 161 162 162 162 242 163 161 163 164 163 164 165 164 165 166 164 76 166 164 166 168 165 168 168 166 168 172 169 172 173 170 173 173 171 222 174 172 174 175 174 175 176 173 176 178 175 178 181 178 181 182 179 182 184 181 184 184 182 184 186 183 186 187 184 187 187 187 251 188 186 188 189 188 189 189 188 237 189 197 189 190 190 190 191 189 191 192 191 220 194 192 194 194 194 194 195 193 195 196 196 196 197 194 197 197 197 197 198 195 198 200 191 194 200 192 195 200 197 200 201 199 201 202 202 202 203 202 203 204 204 204 205 203 205 206 206 206 207 204 207 207 207 207 208 147 148 208 157 158 208 207 208 211 208 211 211 211 211 214 213 214 215 213 224 217 215 217 218 217 218 219 217 219 222 220 222 223 222 223 224 223 229 228 227 236 229 228 229 233 232 233]; mask:((ImageMask new) width: 22; height: 22; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'C? @G?0@O?8@_?<D??>(???@???@???@???@???@???@???@???@_??@O??@G??@A??@@??@@??@@??@@??@@??@') ; yourself); yourself]
+!
+
+keyboardIcon
+    "This resource specification was automatically generated
+     by the ImageEditor of ST/X."
+
+    "Do not manually edit this!! If it is corrupted,
+     the ImageEditor may not be able to read the specification."
+
+    "
+     self keyboardIcon inspect
+     ImageEditor openOnClass:self andSelector:#keyboardIcon
+     Icon flushCachedIcons
+    "
+
+    <resource: #image>
+
+    ^Icon
+        constantNamed:#'AbstractLauncherApplication::SettingsDialog class keyboardIcon'
+        ifAbsentPut:[(Depth8Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#(8 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@HB@ @@@@@@@@@@@@@@@@@@@@@@@@HBA@PD@@@@@@@@@@@@@@@@@@@@@@HBA@PDA@P@@@@@@@@@@@@@@@@@@@HBA@PD@@@DA@@@@@@@@@@@@@@@
+@@HDA@PDA@@D@@PD@@@@@@@@@@@@@@PDA@P@A@P@A@@DA@L@@@@@@@@@@@@B@ PD@@PD@@PDA@LC@0@@@@@@@@@@@ HBA@@@@@@DA@LC@0@@@@@@@@@@@@@B
+@ HDA@PDA@LC@0@@@@@@@@@@@@@@@@HB@ PDA@LC@0@@@@@@@@@@@@@@@@@@@ HBA@LC@0@@@@@@@@@@@@@@@@@@@@@B@ PC@0@@@@@@@@@@@@@@@@@@@@@@
+@@HD@0@@@@@@@@@@@@@@@@@@@@@@@@@@A@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@a') ; colorMapFromArray:#[0 0 0 0 0 0 128 128 128 192 192 192 255 255 255]; mask:((Depth1Image new) width: 22; height: 22; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@@@@@@@G@@@O @@_0@@?8@A?<@C?>@G??@G?? G??@C?>@A?<@@?8@@_0@@O @@G@@@B@@@@@@@@@@@@@@') ; yourself); yourself]
+!
+
+languageIcon
+    "This resource specification was automatically generated
+     by the ImageEditor of ST/X."
+
+    "Do not manually edit this!! If it is corrupted,
+     the ImageEditor may not be able to read the specification."
+
+    "
+     self languageIcon inspect
+     ImageEditor openOnClass:self andSelector:#languageIcon
+     Icon flushCachedIcons
+    "
+
+    <resource: #image>
+
+    ^Icon
+        constantNamed:#'AbstractLauncherApplication::SettingsDialog class languageIcon'
+        ifAbsentPut:[(Depth8Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#(8 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@PDA@PD@@@@@@@@A@PD@@@@@@@@A@R,+J2,+@PDA@PDAF1@P@P@@@@@@@PD[J2,+GQ4]GQ4+J2,WE0D@@@@@@@DA
+F2,+J14]GQ4]GR,+E1\A@@@@@@@A@Q,+J14]GQ4]GQ4]J1,[@P@@@@@@@PD[J2,]GQ4]GQ4]GR,+J0DA@PD@@@DAF2,+@PX]GPXAGQ4+J2,B@PDA@@@A@Q,+
+J0DFB0,F@P(J@P(J@ DA@P@@@PD[J2,A@PXFB0XA@PTEAPTE@PDA@@DAF2,+@QPFA!!8T@0LBAPTEB@DA@P@A@QXA@PD^IBP$G <OD!!PTHBDXF@$@@PDV@PDA
+G"@ HB@OC1HTEB@ FA I@@DAA@@@@QP^G"PTD1LNGA0 HB@ BP@A@P@@@@DTF!!(*JR (EQPTH"T_G0$@@PD@@@@AEA(#H2L(JATTEBH%G2LI@@DA@@@@@QT#
+H2$#H2L#H2L#H2L#A0@A@P@@@@DQFQ$LA2L#CBL#JR(#H00@@@@@@@@AC@0L@@@GA00GA00LA0\@@@@@@@@@@P@@@@@@@@@@@@@@@@@@@@@@@@@@@@D@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@A@@@@@@@@@@@@@@@@@@@@@@@a') ; colorMapFromArray:#[0 0 0 0 0 0 32 32 32 48 48 48 49 48 49 54 54 54 69 69 69 75 67 22 82 82 82 85 14 14 89 89 89 105 105 105 106 88 25 107 107 107 110 19 19 113 19 19 131 129 131 134 122 39 149 25 25 149 26 26 158 27 27 158 140 45 164 161 164 164 161 172 165 43 43 177 161 52 196 175 0 197 194 197 204 36 36 204 75 75 205 36 36 205 113 38 212 66 66 216 81 81 223 72 72 227 202 66 231 120 120 231 123 123 233 135 135 235 146 146 255 129 0 255 238 162 255 251 229 255 255 255]; mask:((ImageMask new) width: 22; height: 22; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@O \@??>@??>@??>@??>@???0???0???0???8???8???8???89??81??81??81??81??8A9?0A@@@A@@@A@@@') ; yourself); yourself]
+!
+
+memoryIcon
+    "This resource specification was automatically generated
+     by the ImageEditor of ST/X."
+
+    "Do not manually edit this!! If it is corrupted,
+     the ImageEditor may not be able to read the specification."
+
+    "
+     self memoryIcon inspect
+     ImageEditor openOnClass:self andSelector:#memoryIcon
+     Icon flushCachedIcons
+    "
+
+    <resource: #image>
+
+    ^Icon
+        constantNamed:#'AbstractLauncherApplication::SettingsDialog class memoryIcon'
+        ifAbsentPut:[(Depth8Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#(8 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@RD\@@@@@@@@@@@@@@@@@@@@@@@ARIT(*IRL]R0@@@@@@@@@@@@@@@@@@M2-VUQ<UD4QV@@@@@@@@
+@@@@@@AURQ<WI!!<UEQTVS%@@@@@@@@@@@@AXI3=CH!!4QDA!!DJAT[SP@@@@@@@@AXRDQSI1,OC <QE1TRHQ @@@@@@@AUR2XWGQ MCP<OC <QHATEN0@@@@@@
+RC-VGQ\JB0,MCP0NGQPEUQ4@@@ARM14>IA\HB $JB0,MF!!TGO%,6T0@@RSMAF!!TGA0 HB $JFQL@AR9ZRTX@RDAWHALEAPTGA0 HE1HGPA<;FC@@@B$&I1LA
+@ LEA@TGE1L@NU1EOQ=M@@@''L LXB@@A@ LEEQDHB1!!ERC!!U@@@@P#,@AQ\G@@@AEA@@OB5FGT!!T@@@@@@AYF0@EE0\AD1D@G5D4S%UG@@@@@@@@@C(F@@PW
+E1@@GQYHH"1ET @@@@@@@@@@M0\@B!!$GMTP8S"EO@@@@@@@@@@@@@@@:B@@UET$1H$D/@@@@@@@@@@@@@@@@@C OD14\G$9ST@@@@@@@@@@@@@@@@@@@@@@@
+SAMM@@@@@@@@@@@@@@@@@@@@@@@@@@@V@@@@@@@@@@@@@@@a') ; colorMapFromArray:#[0 0 0 1 1 1 3 3 3 5 5 5 9 9 9 10 10 10 14 14 14 15 15 15 20 20 20 23 23 23 25 25 25 30 30 30 34 34 34 35 35 35 39 39 39 40 40 40 44 44 44 45 45 45 49 49 49 50 50 50 57 57 57 60 60 60 69 69 69 70 70 70 80 80 80 82 82 82 83 83 83 84 84 84 89 89 89 90 90 90 93 93 93 94 94 94 95 95 95 98 98 98 99 99 99 101 101 101 106 106 106 109 109 109 113 113 113 114 114 114 119 119 120 128 128 128 134 134 134 137 137 137 137 137 139 139 139 139 143 143 143 144 144 144 145 145 145 146 146 146 147 147 147 147 147 148 148 148 148 149 149 149 150 150 150 155 155 155 156 156 156 157 157 157 158 158 158 160 160 160 162 162 162 163 163 164 165 165 165 166 166 168 167 167 167 168 168 168 172 172 172 173 173 173 175 175 175 177 177 177 178 178 178 179 179 179 180 180 180 182 182 182 182 182 184 192 192 192 193 193 196 198 198 198 200 200 200 200 200 201 201 201 201 202 202 202 203 203 203 204 204 204 204 204 206 205 205 205 206 206 206 207 207 207 209 209 209 213 213 213 225 225 225 247 247 247 255 255 255]; mask:((ImageMask new) width: 22; height: 22; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@A @@G>@@G?@@_? @??0A??0C??8C??8O??<O??<_??8_??8_??0_?? O??@G??@C?<@A?8@@?8@@C @@A@@') ; yourself); yourself]
+!
+
+monitorIcon
+    "This resource specification was automatically generated
+     by the ImageEditor of ST/X."
+
+    "Do not manually edit this!! If it is corrupted,
+     the ImageEditor may not be able to read the specification."
+
+    "
+     self monitorIcon inspect
+     ImageEditor openOnClass:self andSelector:#monitorIcon
+     Icon flushCachedIcons
+    "
+
+    <resource: #image>
+
+    ^Icon
+        constantNamed:#'AbstractLauncherApplication::SettingsDialog class monitorIcon'
+        ifAbsentPut:[(Depth8Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#(8 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@JB (JB (JB (JB (JB (I2\@@@@@
+@B (JB (JB (JB (JB (JB\''@@@@@@@(JA@ZFA YE@,KC@,KA0P''I1T@@@@@JB RH2D!!HRD HA(MCP\DI2\U@@@@@B (GRT#H2D"H2L^C0<HAB\''EP@@@@@(
+JA4%H2L!!H"L#G <OB@P''I1T@@@@@JB ZH2P$H1<_G1$OC0XDI2\U@@@@@B (C!!$ HA,\FQ$OC0<FAB\''EP@@@@@(JA@WE!!XWFQ XC <OBPT''I1T@@@@@JB P
+E1XVE1$XF@8OC0$EI2\U@@@@@B (A!!DSD0(CB (B@PDAAB\''EP@@@@@''I2\''I"X''I2\''I2\''I2\''I1T@@@@@I2\''I2X&I2\''I2\''I2\''I2\U@@@@@@@@EQTU
+ER ''I2\''EQTUEQTUEP@@@@@@@@@@@@@(I2\''I1TU@@@@@@@@@@@@@@@@JB\''I2\''I2\''I2\U@@@@@@@@@@@@@B ''I2\''I2\''I2\''EP@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@a') ; colorMapFromArray:#[0 0 0 60 78 83 61 77 82 63 79 84 63 81 86 66 83 87 66 84 89 66 85 91 67 86 92 68 86 91 69 87 92 69 88 94 70 90 95 71 91 96 71 92 98 72 93 99 73 94 100 74 92 97 74 95 101 75 93 98 75 96 102 76 76 76 76 97 103 77 98 104 77 99 106 79 101 108 80 103 109 81 104 110 82 105 111 83 106 112 83 107 114 86 110 117 87 111 118 88 113 121 89 114 122 90 116 123 91 117 124 92 118 125 126 126 126 127 127 127 139 139 139]; mask:((ImageMask new) width: 22; height: 22; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@@@@@@G??0G??0G??8G??8G??8G??8G??8G??8G??8G??8G??8G??8G??8A??8@G<@@??@@??@@@@@@@@@') ; yourself); yourself]
+!
+
+printerIcon
+    "This resource specification was automatically generated
+     by the ImageEditor of ST/X."
+
+    "Do not manually edit this!! If it is corrupted,
+     the ImageEditor may not be able to read the specification."
+
+    "
+     self printerIcon inspect
+     ImageEditor openOnClass:self andSelector:#printerIcon
+     Icon flushCachedIcons
+    "
+
+    <resource: #image>
+
+    ^Icon
+        constantNamed:#'AbstractLauncherApplication::SettingsDialog class printerIcon'
+        ifAbsentPut:[(Depth8Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#(8 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@A@PDA@PDA@PDA@PDA@P@@@@@@@@@A@@@@@@@@@@@@@@@@@P@@@@@@@@@@@P@@@PDA@P@@@PDA@@D@@@@@@@@@
+@P@@@@@@@@@@@@@@@@D@@@@@@@@@@@D@@PDA@@DA@@DA@@DA@PD@@@@@@@D@@@@@@@@@@@@@@@@AA@DD@P@@@@DA@PDA@PDA@PDA@PDAA@DD@PD@@@DDA@PD
+A@PDA@PDA@PDA@DD@PTA@@@A@PDA@PDA@PDA@PDA@PDA@PTE@P@@@PTEAPTEAPTEAPTB@ HEAPDE@P@@@@DEAPTEAPTEAPTE@ HBAPTA@P@@@@@A@PDA@PDA
+@PDA@PDA@PDA@P@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@a') ; colorMapFromArray:#[255 255 255 0 0 0 255 255 0 129 129 129 194 194 194 105 133 190]; mask:((Depth1Image new) width: 22; height: 22; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@@@@@@@@@@@@@@@??0A?? A?? C??@C??0G??8O??8_??8_??8_??0_?? _??@@@@@@@@@@@@@@@@@@@@@') ; yourself); yourself]
+!
+
+rDoItServerIcon
+    "This resource specification was automatically generated
+     by the ImageEditor of ST/X."
+
+    "Do not manually edit this!! If it is corrupted,
+     the ImageEditor may not be able to read the specification."
+
+    "
+     self rDoItServerIcon inspect
+     ImageEditor openOnClass:self andSelector:#rDoItServerIcon
+     Icon flushCachedIcons
+    "
+
+    <resource: #image>
+
+    ^Icon
+        constantNamed:#'AbstractLauncherApplication::SettingsDialog class rDoItServerIcon'
+        ifAbsentPut:[(Depth8Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#(8 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@JB (JB (JB (JB (JB (I2\@@@@@
+@B (JB (JB (JB (JB (JB\''@@@@@@@(JA@ZFA YE@,KC@,KA0P''I1T@@@@@JB RH2D!!HRD HA(MCP\DI2\U@@@@@B (GRT#H2D"H2L^C0<HAB\''EP@@@@@(
+JA4%H2L!!H"L#G <OB@P''I1T@@@@@JB ZH2H"H"H)JP@@E!!XWJ"\U@@@@@B (C!!$"H"$)JR,)@@@@E2X''EP@@@@@(JA@WH"$+@B$,@B0)JP@&I1T@@@@@JB P
+E1 )KB,,J20+JR$@I"\U@@@@@B (A!!DXJR,,JP@+J @@@BX''EP@@@@@''I2\''JR,,JR0)@B,,JR$@I1T@@@@@I2\''I2$,J2$+JP@,J2$)@B\U@@@@@@@@EQTB
+JR0+JP@,JP@@@@HUEP@@@@@@@@@@@B$+KB,,J20)JP@@@@@@@@@@@@@@@@@)K@@)J0@+JR$@@@@@@@@@@@@@@@@@@@@@JR0)@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@a') ; colorMapFromArray:#[0 0 0 60 78 83 61 77 82 63 79 84 63 81 86 66 83 87 66 84 89 66 85 91 67 86 92 68 86 91 69 87 92 69 88 94 70 90 95 71 91 96 71 92 98 72 93 99 73 94 100 74 92 97 74 95 101 75 93 98 75 96 102 76 76 76 76 97 103 77 98 104 77 99 106 79 101 108 80 103 109 81 104 110 82 105 111 83 106 112 83 107 114 86 110 117 87 111 118 88 113 121 89 114 122 90 116 123 91 117 124 92 118 125 126 126 126 127 127 127 139 139 139 131 129 0 131 129 131 255 255 0 255 255 255]; mask:((ImageMask new) width: 22; height: 22; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@@@@@@G??0G??0G??8G??8G??8G??8G??8G??8G??8G??8G??8G??8G??8A??8@O?@@O?@@G>@@A0@@@@@') ; yourself); yourself]
+!
+
+settingsIcon
+    "This resource specification was automatically generated
+     by the ImageEditor of ST/X."
+
+    "Do not manually edit this!! If it is corrupted,
+     the ImageEditor may not be able to read the specification."
+
+    "
+     self settingsIcon inspect
+     ImageEditor openOnClass:self andSelector:#settingsIcon
+     Icon flushCachedIcons
+    "
+
+    <resource: #image>
+
+    ^Icon
+        constantNamed:#'AbstractLauncherApplication::SettingsDialog class settingsIcon'
+        ifAbsentPut:[(Depth8Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#(8 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
+@@BP#8>O#8>M  @@@@@@@@@@@@@@@@BJ%9&Y&Y&Y%R^B@@@@@@@@@@@@@@BI&J^(*J"(*JZTIIFQ$YFQ$YH@@@@@ JN#(:N#(:N#(9.V%)ZV%)ZKZP@@@HOU
+4=OS4=OL3,''I0<B;/]F3*TE?@@BC5MKR4-KM,\^:.MJ:-;21/:1D_@@@ =SR4-KM3<+K/<J01,R20+R+QG0@@HOT4-KR/,^?-\[H1(Q^WW"1*4Q<@@BC5MKR
+,-CO1<>/+(X*F1(S,Z1D_@@@ =SR4-J:2,[J0X  TU!!BE+F$GS!!=@HOT,+WK.\J/28\&TV=EKAV1RELG  BC5L7H0-KB/HT TV-CKA8>TG@=_H8M ;[H1+::
+-;8\TWECKBD9)T=0]R40AXOE2;F5-;:/G6)EKBD?ZF5KV#ITJ0M>''*B_''ZF]''5,(KA8)X8ENU#XR@ )L^1$YFQ$YFQ$WBA PE@QMVSDON82S@@@@@@@@@@@@
+@@A_@F)IU#DQMWH@@@@@@@@@@@@@@@@@@F1JWC\LMJI''^ @@@@@@@@@@@@@@@F9GU28ROGI%+VY4@@@@@@@@@@@@@GIFXC(IL9(@^VR*X''\@@@@@@@@@@@AU
+IPXKP@@@@@A3XZ4#@@@@@@@@@@@@# 8AK90@@@@@@GX"T @a') ; colorMapFromArray:#[0 0 0 0 60 60 0 84 84 4 45 45 21 20 15 38 38 38 38 192 192 43 43 43 45 45 45 45 151 151 46 99 99 46 147 147 46 151 151 47 47 47 47 88 88 47 151 151 48 48 48 48 144 144 48 145 145 56 53 38 57 57 49 59 52 40 62 56 43 65 65 53 65 65 65 67 67 54 68 68 68 70 70 70 72 64 47 72 72 35 72 72 72 73 69 48 73 73 73 74 74 74 80 44 10 80 62 43 81 81 24 84 132 132 85 85 76 86 86 36 86 86 86 87 87 49 87 87 77 87 193 193 88 88 88 91 101 101 92 193 193 94 117 117 97 97 97 97 193 193 98 195 195 99 120 120 101 75 31 101 107 89 101 193 193 102 193 193 103 103 103 104 86 69 106 193 193 107 120 120 107 121 121 109 109 109 110 96 70 111 78 42 111 119 119 113 113 60 113 113 113 115 115 115 116 116 56 116 116 116 116 145 145 118 147 147 119 121 85 121 150 150 122 151 151 122 152 148 124 124 124 124 146 139 124 151 149 127 118 78 127 119 78 128 128 128 129 120 112 133 157 157 135 216 216 137 137 137 139 207 207 140 206 206 141 141 141 141 201 201 141 202 202 142 136 75 142 201 201 143 128 88 143 143 88 144 144 144 144 204 204 145 85 24 146 126 100 147 82 13 148 83 17 148 86 24 148 123 91 148 127 98 149 122 89 150 150 150 151 151 151 152 152 152 152 155 155 153 129 100 154 154 154 156 156 156 156 199 199 157 157 157 158 158 158 159 159 159 160 160 160 162 179 179 163 161 159 163 163 162 164 151 101 164 160 156 164 163 161 165 165 150 165 165 165 168 168 168 169 169 62 171 171 171 172 172 71 174 117 58 177 177 177 178 178 89 185 174 113 186 178 115 186 186 115 189 179 116 189 189 115 189 189 132 190 190 139 192 192 142 192 192 192 193 193 154 194 194 194 196 196 155 197 197 159 200 200 168 202 202 174 202 202 202 204 204 102 205 205 97 206 206 149 210 210 144 210 210 149 213 213 103 213 213 213 215 215 164 215 215 215 227 212 124 227 213 140 227 217 124 227 220 124 227 227 124 234 156 79 236 236 197 239 214 144 243 201 148 243 243 146 243 243 155 244 244 147 245 232 157 247 165 83 248 215 149 248 231 149 255 170 86 255 227 156 255 228 156 255 229 156 255 230 156 255 231 156 255 233 168 255 234 156 255 235 156 255 235 193 255 236 156 255 237 156 255 238 156 255 239 156 255 239 168 255 240 156 255 240 168 255 241 156 255 242 156 255 242 168 255 243 156 255 244 156 255 244 168 255 245 156 255 245 193 255 246 156 255 247 156 255 248 156 255 248 168 255 249 156 255 250 156 255 250 168 255 251 156 255 251 168 255 252 156 255 253 156 255 253 168 255 255 156 255 255 168 255 255 193 255 255 200]; mask:((ImageMask new) width: 22; height: 22; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'O<@@_>@@???@??? ???0???0???0???0???0???8???8???<???<???<???<???8@B? @A?0@C?8@G=<@G0<@G0\') ; yourself); yourself]
+!
+
+systemMessagesIcon
+    "This resource specification was automatically generated
+     by the ImageEditor of ST/X."
+
+    "Do not manually edit this!! If it is corrupted,
+     the ImageEditor may not be able to read the specification."
+
+    "
+     self systemMessagesIcon inspect
+     ImageEditor openOnClass:self andSelector:#systemMessagesIcon
+     Icon flushCachedIcons
+    "
+
+    <resource: #image>
+
+    ^Icon
+        constantNamed:#'AbstractLauncherApplication::SettingsDialog class systemMessagesIcon'
+        ifAbsentPut:[(Depth8Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#(8 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
+@@@@@@@@@@@@A XFA @@@@@@@@@@@@@@@@@@@@@@A!!HRCPX@@@@@@@@@@@@@@@@@@@@@A!!H.KP4MA @@@@@@@@@@@@@@@@@@@@XRPB<#H0L@@@@@@@@@@@@@
+@@@@@@@FD$@/H2LC@@@@@@@@@@@@@@@@@@@@A!!H6LRH"@P@@@@@@@@@@@@@@@@@@@@XFC#LKB0D@@@@@@@@@@@@@@@@@@@@@@@XZ@PD@@@@@@@@@@@@@@@@@
+@@@@@@@FF DA@@@@@@@@@@@@@@@@@@@@@@@@A!!(A@P@@@@@@@@@@@@@@@@@@@@\GA3@ZDQDAAPT@@@@@@@@@@@@@@@\;QDP''EQ@PE@$IAP@@@@@@@@@@@@@G
+N4QDI1TPDAPIBPT@@@@@@@@@@@@@A31CP3(UJ"( B (D@@@@@@@@@@@@@@\>Q4\8IR0,J1@PA@@@@@@@@@@@@@@GO$]GNBT,KB,PD@P@@@@@@@@@@@@@A35H
+RC$&I2\(D1LA@@@@@@@@@@@@@@\?Q$X7G2D!!IATU@P@@@@@@@@@@A0\2P$UEMQ VE!!$WE00B@@@@@@@@@@\GL$IEQSTXE!!XYE1\L@ @@@@@@@@@GA0=CPTD4
+GA4]G!!,[B@D@@@@@@@@@@@@GAPPD@ HB@ DA@PD@@@@@@@@a') ; colorMapFromArray:#[0 0 0 2 2 4 38 38 12 58 34 14 60 60 20 74 70 28 78 46 20 82 82 28 94 94 36 95 95 38 107 107 50 110 62 20 114 114 52 118 58 12 122 82 44 122 122 60 125 123 72 130 74 20 133 101 52 135 134 78 142 134 68 145 144 88 146 146 92 152 152 98 153 153 106 158 158 108 162 114 44 162 162 116 163 163 120 163 164 116 165 164 116 165 165 120 167 165 116 167 166 118 168 90 24 168 98 26 168 167 124 170 169 124 170 170 128 170 170 130 170 171 128 171 168 122 172 170 128 172 171 130 172 172 130 178 106 36 178 122 60 181 121 48 182 122 52 184 116 49 184 184 140 187 122 43 187 186 148 188 188 150 196 141 89 198 198 162 203 203 172 204 203 170 205 202 168 210 210 178 219 217 188 219 219 190 220 220 188 220 220 190 222 174 132 232 231 214 233 233 216 234 234 212 236 231 208 236 236 220 241 241 232 243 243 232 243 243 234]; mask:((ImageMask new) width: 22; height: 22; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@G @@O @@_0@@_0@@_0@@_0@@_0@@G @@G @@G @@?<@A?>@A?>@A?>@A?>@A?>@A?>@A?>@G??@G??@G??@A?>@') ; yourself); yourself]
+!
+
+toolsIcon
+    "This resource specification was automatically generated
+     by the ImageEditor of ST/X."
+
+    "Do not manually edit this!! If it is corrupted,
+     the ImageEditor may not be able to read the specification."
+
+    "
+     self toolsIcon inspect
+     ImageEditor openOnClass:self andSelector:#toolsIcon
+     Icon flushCachedIcons
+    "
+
+    <resource: #image>
+
+    ^Icon
+        constantNamed:#'AbstractLauncherApplication::SettingsDialog class toolsIcon'
+        ifAbsentPut:[(Depth8Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#(8 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
+@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ HB@@@@@@@@@@@@@@@@@@@@@@@@@@@B@ @@@@@@@@@@@@@@@@@@@@@@@@@@@ H@
+@@@@@@@D@ XFA @@@@@@@@@@@@HB@@@@@@@@@@HC@ XFA @@@@@@@@@B@ @@@@@@@@@@@@\BCPXF@@@@@@@@@ H@@@@RB @@@@@@@ <MA @@@@@@@@HB@@@@
+D <MB@@B@  MC0X@@@@@@@@B@ @@@@LCD@4OCP<MC08FA X@@@@@@ H@@@DR@0LCD@<MC08FA  FA @@@@HB@@@@D!!HR@0LC@0LCA <LBPXF@@@B@ @@@@@@
+D!!HRD!!HC@0LCC04KBP@@@ H@@@@@@@@@@AHRD!!HR@0LCDP<@@@HB@@@@@@@@@@@@@@@@D!!HR@0LC@@@B@ @@@@@@@@@@@@X@@@@@D!!HR@0@@@ H@@@@@@@@@
+@@@@@@@@@@@@D 4@@@HB@@@@@@@@@@@@@@@@@@@@@@@@@@@B@ @@@@@@@@@@@@@@@@@@@@@@@@@@@ H@@@@@@@@@@@@@@@@@@@@@@@@@@@HB@ HB@ HB@ HB
+@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ @a') ; colorMapFromArray:#[0 0 0 48 48 48 96 100 96 120 120 120 128 128 128 248 172 168 168 172 168 184 184 184 192 192 192 192 196 192 200 196 200 200 204 200 208 208 208 224 220 224 232 232 232 232 236 232 240 236 240 240 240 240 248 252 248]; mask:((Depth1Image new) width: 22; height: 22; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@@@@@@@?@@@?0@@_8@GO<@G3<@G?>@G??@G?? G?? C?? @?? @G? @B_ @@G @@A @@@@@@@@@@@@@@@@') ; yourself); yourself]
+!
+
+winStyleIcon
+    "This resource specification was automatically generated
+     by the ImageEditor of ST/X."
+
+    "Do not manually edit this!! If it is corrupted,
+     the ImageEditor may not be able to read the specification."
+
+    "
+     self winStyleIcon inspect
+     ImageEditor openOnClass:self andSelector:#winStyleIcon
+     Icon flushCachedIcons
+    "
+
+    <resource: #image>
+
+    ^Icon
+        constantNamed:#'AbstractLauncherApplication::SettingsDialog class winStyleIcon'
+        ifAbsentPut:[(Depth8Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#(8 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
+@@@@@@@@@@@@@@DA@@@@@@@@@@@@@@@@@@@@@@@@@@DBAPD@@@@@@@@@@@@@@@@@@@@@@@DBAPTF@P@@@@@@@@@@@@@@@@@@@@DBAPTFA DA@@@@@@@@@@@@
+@@@@@@LB@ HFA \G@PD@@@@@@@@@@@@@@@LB@ HB@  GA0(J@P@@@@@@@@@@@@LB@ HB@ HBB \IB ,A@@@@@@@@@@LB@ HB@ HB@ 4NB ,OC0DE@@@@@@LB
+@ HB@ HB@ HB@ 8OC0TE@P@@@@@@@0HB@ HB@ HBCQDQC0TEAPHP@AHRD!!HRD!!HRD!!HRD!!HRD!!HAA@HC@@@RD HED1LTEQXVE1 BAPTR@ DC@@@@D!!HBAQLS
+EATVE!!\X@ TED HC@@@@@AHRAPPYFQ([GA0]G TDAAHC@@@@@@@C@0HB@ HB@ HB@!!<MDQDC@@@@@@@@@0LB@ HB@ HB@ H_CQDQ@0@@@@@@@@LC@ HB@ HB
+@ HBCP4QDPL@@@@@@@@C@0HB@ HB@ HB@ 4MDQDC@@@@@@@@@0LB@ HB@ HB@!!<MDQDQ@0@@@@@@@@LC@ HB@ HB@ H_CQDQDPL@@@@@@@@C@0HB@ HB@ HB
+CP4QDQDC@@@@@@@@@0LC@0LC@0LC@0LC@0LC@0@@@@@@@@@a') ; colorMapFromArray:#[0 0 0 32 96 88 248 248 248 80 80 80 128 128 128 192 192 192 64 144 136 48 120 112 56 136 128 56 128 120 40 104 96 40 104 104 32 96 96 232 232 232 32 88 88 32 88 80 64 104 104 224 224 224 0 88 128 24 152 192 16 136 184 16 128 168 8 120 160 8 112 152 8 104 144 16 120 152 16 112 144 8 104 136 8 96 128 8 88 120 0 80 112 240 240 240]; mask:((ImageMask new) width: 22; height: 22; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@C@@@G @@O0@@_8@@?<@A?>@C??@G??0O??0G??8???0??? ???@??>@??<@??<@??<@??<@??<@??<@??<@??<@') ; yourself); yourself]
+! !
+
+!AbstractLauncherApplication::SettingsDialog class methodsFor:'application list access'!
+
+settingsAppListClasses
+
+    ^ self applList collect:[:entry | entry at:2].
+!
+
+settingsAppListNames
+
+    ^ self applList collect:[:entry | entry first].
+! !
+
 !AbstractLauncherApplication::SettingsDialog class methodsFor:'applications'!
 
 addApplClass:aClass withName:aName
@@ -6523,7 +6960,26 @@
     ApplicationList isNil ifTrue:[
         self initialize.
     ].
-    ApplicationList add:(Array with:aName with:aClass asString asSymbol)
+    ApplicationList add:(Array with:aName with:aClass asString asSymbol with:nil with:nil)
+!
+
+addApplClass:aClass withName:aName inCategory:aCategory icon:icon
+
+    ApplicationList isNil ifTrue:[
+        self initialize.
+    ].
+    ApplicationList add:(Array with:aName with:aClass asString asSymbol with:aCategory with:icon)
+!
+
+addCategory:aCatString inCategory:aInCatStringOrNil icon:aIcon
+
+" add a new category aCatString under categorie aInCatStringOrNil with icon 
+  if aInCatStringOrNil is nil the category is inserted under root "
+
+    ApplicationList isNil ifTrue:[
+        self initialize.
+    ].
+    ApplicationList add:(Array with:aCatString with:nil with:aInCatStringOrNil with:aIcon)
 !
 
 applList
@@ -6535,25 +6991,43 @@
 
 defaultAppList                                                                 
     " list of settings applications                        
-      format: nameString applicationClassNameMethod"
-
-    ^ #(          
-        #('Tools'    #'AbstractSettingsApplication::ToolsSettingsAppl')
-        #('Language' #'AbstractSettingsApplication::LanguageSettingsAppl')
-        #('Keyboard Mappings' #'AbstractSettingsApplication::KbdMappingSettingsAppl')
-        #('Style Selection' #'AbstractSettingsApplication::StyleSettingsAppl')
-        #('System Messages' #'AbstractSettingsApplication::SystemMessageSettingsAppl')
-        #('Compiler' #'AbstractSettingsApplication::CompilerSettingsAppl')
-        #('Memory' #'AbstractSettingsApplication::MemorySettingsAppl')
-        #('SourceCode && Debugger' #'AbstractSettingsApplication::SourceAndDebuggerSettingsAppl')
-        #('Printer' #'AbstractSettingsApplication::PrinterSettingsAppl')
-        #('Display' #'AbstractSettingsApplication::DisplaySettingsAppl')
-        #('Editor' #'AbstractSettingsApplication::EditSettingsAppl')
-        #('Other' #'AbstractSettingsApplication::MiscSettingsAppl')
-    ).
-!
-
-removeApplClass:aClass
+      format: nameString applicationClassNameMethodOrNil inCategory iconClass iconSelector"
+    
+    | appList |
+    appList := OrderedCollection new.
+    #(          
+        #('Tools'    #'AbstractSettingsApplication::ToolsSettingsAppl' nil #'AbstractLauncherApplication::SettingsDialog' #toolsIcon)
+        #('Language' #'AbstractSettingsApplication::LanguageSettingsAppl' nil #'AbstractLauncherApplication::SettingsDialog' #languageIcon)
+        #('Keyboard Mappings' #'AbstractSettingsApplication::KbdMappingSettingsAppl' nil #'AbstractLauncherApplication::SettingsDialog' #keyboardIcon)
+        #('Style Selection' #'AbstractSettingsApplication::StyleSettingsAppl' nil #'AbstractLauncherApplication::SettingsDialog' #winStyleIcon)
+        #('System Messages' #'AbstractSettingsApplication::SystemMessageSettingsAppl' nil #'AbstractLauncherApplication::SettingsDialog' #systemMessagesIcon)
+        #('Compiler' #'AbstractSettingsApplication::CompilerSettingsAppl' nil #'AbstractLauncherApplication::SettingsDialog' #compilerIcon)
+        #('Memory' #'AbstractSettingsApplication::MemorySettingsAppl' nil #'AbstractLauncherApplication::SettingsDialog' #memoryIcon)
+        #('SourceCode & Debugger' #'AbstractSettingsApplication::SourceAndDebuggerSettingsAppl' nil #'AbstractLauncherApplication::SettingsDialog' #debuggerIcon)
+        #('Printer' #'AbstractSettingsApplication::PrinterSettingsAppl' nil #'AbstractLauncherApplication::SettingsDialog' #printerIcon)
+        #('Display' #'AbstractSettingsApplication::DisplaySettingsAppl' nil #'AbstractLauncherApplication::SettingsDialog' #monitorIcon)
+        #('Editor' #'AbstractSettingsApplication::EditSettingsAppl' nil #'AbstractLauncherApplication::SettingsDialog' #editorIcon)
+        #('Misc' #'AbstractSettingsApplication::MiscSettingsAppl' nil nil nil)
+        #('Communication' nil nil #'AbstractLauncherApplication::SettingsDialog' #communicationIcon)
+        #('RDoIt' #'AbstractSettingsApplication::RDoItServerSettingsAppl' 'Communication' #'AbstractLauncherApplication::SettingsDialog' #rDoItServerIcon)
+        #('HTTP Server' #'AbstractSettingsApplication::HTTPServerSettingsAppl' 'Communication' #'AbstractLauncherApplication::SettingsDialog' #httpServerIcon)
+        #('OSI Protocol' #'AbstractSettingsApplication::OsiSettingsAppl' 'Communication' #'AbstractLauncherApplication::SettingsDialog' #communicationIcon)
+        #('Misc' #'AbstractSettingsApplication::MiscCommunicationSettingsAppl' 'Communication' #'AbstractLauncherApplication::SettingsDialog' #communicationIcon)
+    ) do:[ :entry| | nameString applicationClassNameMethodOrNil inCategory iconClass iconSelector icon |
+        nameString := entry at:1.
+        applicationClassNameMethodOrNil := entry at:2.
+        inCategory := entry at:3.
+        iconClass := entry at:4.
+        iconSelector := entry at:5.
+        (iconClass notNil and:[iconSelector notNil]) ifTrue:[
+            icon := ((Smalltalk classNamed:iconClass) perform:iconSelector)
+        ].
+        appList add:(Array with:nameString with:applicationClassNameMethodOrNil with:inCategory with:icon).
+    ].
+    ^ appList
+!
+
+removeApplByClass:aClass
 
     |index|
 
@@ -6568,14 +7042,19 @@
     ].
 !
 
-settingsAppListClasses
-
-    ^ self applList collect:[:entry | entry last].
-!
-
-settingsAppListNames
-
-    ^ self applList collect:[:entry | entry first].
+removeCategoryByName:aCatName
+
+    |index|
+
+    ApplicationList isNil ifTrue:[
+        self initialize.
+    ].
+    index := ApplicationList findFirst:[:el |
+        el first == aCatName
+    ].
+    index ~~ 0 ifTrue:[
+        ApplicationList removeIndex:index.
+    ].
 ! !
 
 !AbstractLauncherApplication::SettingsDialog class methodsFor:'initialize'!
@@ -6615,20 +7094,138 @@
           #name: 'Settings Dialog'
           #min: #(#Point 10 10)
           #max: #(#Point 1024 768)
-          #bounds: #(#Rectangle 16 42 616 662)
+          #bounds: #(#Rectangle 16 42 816 662)
           #menu: #mainMenu
         )
         #component: 
        #(#SpecCollection
           #collection: #(
-           #(#NoteBookViewSpec
-              #name: 'SettingsNoteBook'
+           #(#VariableHorizontalPanelSpec
+              #name: 'VariableHorizontalPanel1'
               #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
-              #model: #selectionHolder
-              #menu: #settingsAppList
-              #useIndex: true
-              #canvas: #canvasHolder
-              #keepCanvasAlive: true
+              #showHandle: true
+              #snapMode: #both
+              #component: 
+             #(#SpecCollection
+                #collection: #(
+                 #(#ViewSpec
+                    #name: 'Box1'
+                    #component: 
+                   #(#SpecCollection
+                      #collection: #(
+                       #(#HierarchicalListViewSpec
+                          #name: 'HierarchicalListView1'
+                          #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 -34 1)
+                          #model: #selectionInApplList
+                          #hasHorizontalScrollBar: true
+                          #hasVerticalScrollBar: true
+                          #listModel: #applList
+                          #useIndex: false
+                          #highlightMode: #label
+                          #showLeftIndicators: false
+                          #indicatorSelector: #doIndicatorClick:
+                        )
+                       #(#HorizontalPanelViewSpec
+                          #name: 'HorizontalPanel2'
+                          #layout: #(#LayoutFrame 0 0.0 -34 1 0 1.0 0 1)
+                          #horizontalLayout: #fitSpace
+                          #verticalLayout: #center
+                          #horizontalSpace: 3
+                          #verticalSpace: 3
+                          #component: 
+                         #(#SpecCollection
+                            #collection: #(
+                             #(#ActionButtonSpec
+                                #label: 'Save to Disc ...'
+                                #name: 'Button1'
+                                #translateLabel: true
+                                #model: #saveSettings
+                                #enableChannel: #enableButtons
+                                #extent: #(#Point 128 22)
+                              )
+                             #(#ActionButtonSpec
+                                #label: 'Load from Disc ...'
+                                #name: 'Button2'
+                                #translateLabel: true
+                                #model: #loadSettings
+                                #enableChannel: #enableButtons
+                                #extent: #(#Point 128 22)
+                              )
+                             )
+                           
+                          )
+                        )
+                       )
+                     
+                    )
+                  )
+                 #(#ViewSpec
+                    #name: 'Box2'
+                    #component: 
+                   #(#SpecCollection
+                      #collection: #(
+                       #(#SubCanvasSpec
+                          #name: 'SubCanvas'
+                          #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 -34 1)
+                          #level: -1
+                          #hasHorizontalScrollBar: false
+                          #hasVerticalScrollBar: false
+                          #clientHolder: #subCanvasApplicationHolder
+                          #postBuildCallback: #postBuildSubCanvas:
+                        )
+                       #(#HorizontalPanelViewSpec
+                          #name: 'HorizontalPanel1'
+                          #layout: #(#LayoutFrame 0 0.0 -34 1 0 1.0 0 1)
+                          #horizontalLayout: #fitSpace
+                          #verticalLayout: #center
+                          #horizontalSpace: 3
+                          #verticalSpace: 3
+                          #component: 
+                         #(#SpecCollection
+                            #collection: #(
+                             #(#ActionButtonSpec
+                                #label: 'OK'
+                                #name: 'OK'
+                                #translateLabel: true
+                                #model: #doSave
+                                #enableChannel: #enableButtons
+                                #extent: #(#Point 127 22)
+                              )
+                             #(#ActionButtonSpec
+                                #label: 'Reload'
+                                #name: 'Reload'
+                                #translateLabel: true
+                                #model: #doReload
+                                #enableChannel: #enableButtons
+                                #extent: #(#Point 128 22)
+                              )
+                             #(#ActionButtonSpec
+                                #label: 'Cancel'
+                                #name: 'Cancel'
+                                #translateLabel: true
+                                #model: #closeRequest
+                                #extent: #(#Point 127 22)
+                              )
+                             #(#ActionButtonSpec
+                                #label: 'Help'
+                                #name: 'Help'
+                                #translateLabel: true
+                                #model: #help
+                                #enableChannel: #enableButtons
+                                #extent: #(#Point 128 22)
+                              )
+                             )
+                           
+                          )
+                        )
+                       )
+                     
+                    )
+                  )
+                 )
+               
+              )
+              #handles: #(#Any 0.3375 1.0)
             )
            )
          
@@ -6703,22 +7300,65 @@
 
 !AbstractLauncherApplication::SettingsDialog methodsFor:'actions'!
 
-sendLoadRequest
-
-    colOfInstances do:[:settInst|
-        settInst loadRequest.
-    ].
-!
-
-sendSaveRequest
-
-    |oldClient canvas|
-
-    canvas := self canvasHolder value.
-    canvas notNil ifTrue:[
-        oldClient := canvas application.
-        oldClient notNil ifTrue:[
-            oldClient saveRequest ifFalse:[^ false].
+destroyAll
+
+    self applList do:[ : applItem |
+        (applItem isCategory not and:[applItem application notNil]) ifTrue:[
+            applItem application closeRequest.
+        ].
+    ].
+    ^ true
+!
+
+doIndicatorClick:index 
+    "handle a click on the indicator
+    "
+
+    (applList at:index) toggleExpand
+!
+
+doReload
+
+    | item |
+
+    item := self selectionInApplList value.
+    (item isNil or:[item isCategory or:[item application isNil]]) ifTrue:[ ^ self].
+    item application loadRequest.
+!
+
+doSave
+    | item |
+
+    item := self selectionInApplList value.
+    (item isNil or:[item isCategory or:[item application isNil]]) ifTrue:[ ^ self].
+    item application saveRequest.
+!
+
+help
+
+    | item |
+
+    item := self selectionInApplList value.
+    (item isNil or:[item isCategory or:[item application isNil]]) ifTrue:[ ^ self].
+    item application help.
+!
+
+sendLoadRequestToAll
+
+    self applList do:[ : applItem |
+        (applItem isCategory not and:[applItem application notNil]) ifTrue:[
+            applItem application loadRequest 
+        ].
+    ].
+!
+
+sendSaveRequestToAll
+
+    self applList do:[ : applItem |
+        (applItem isCategory not and:[applItem application notNil]) ifTrue:[
+            applItem application saveRequest ifFalse:[
+                ^ false
+            ].
         ].
     ].
     ^ true
@@ -6726,44 +7366,85 @@
 
 !AbstractLauncherApplication::SettingsDialog methodsFor:'aspects'!
 
-canvasHolder
-
-    canvasHolder isNil ifTrue:[
-        canvasHolder := ValueHolder new.
-    ].
-    ^ canvasHolder.
-!
-
-selection
-    "get the selection
-    "
-    ^ selection
-!
-
-selection:something
-    "set the selection; update canvas
-    "
-    selection ~~ something ifTrue:[
-
-        self sendSaveRequest ifFalse:[ ^ self].
-        selection := something.
-        selection ~~ 0 ifTrue:[
-            self canvasHolder value:((colOfInstances at:selection) window).
-        ].
-    ].
-!
-
-selectionHolder
-
-    selectionHolder isNil ifTrue:[
-        selectionHolder := AspectAdaptor new subject:self; forAspect:#selection.
-    ].
-    ^ selectionHolder.
+appIsCategory
+
+    appIsCategory isNil ifTrue:[
+        appIsCategory := false asValue.
+    ].
+    ^ appIsCategory.
+!
+
+applList
+
+    applList isNil ifTrue:[
+        applList := AbstractLauncherApplication::HierarchicalSettingsApplList new.
+    ].
+    ^ applList.
+!
+
+enableButtons
+
+    enableButtons isNil ifTrue:[
+        enableButtons := true asValue.
+    ].
+    ^ enableButtons.
+!
+
+selectionInApplList
+
+    selectionInApplList isNil ifTrue:[
+        selectionInApplList := ValueHolder new.
+        selectionInApplList addDependent:self.
+    ].
+    ^ selectionInApplList.
 !
 
 settingsAppList
 
     ^ self class settingsAppListNames.
+!
+
+subCanvasApplicationHolder
+
+    subCanvasApplicationHolder isNil ifTrue:[
+        subCanvasApplicationHolder := ValueHolder new.
+    ].
+    ^ subCanvasApplicationHolder.
+! !
+
+!AbstractLauncherApplication::SettingsDialog methodsFor:'change & update'!
+
+selectionChanged
+
+    | item isCat oldAppl|
+
+    oldAppl := self subCanvasApplicationHolder value.
+    oldAppl notNil ifTrue:[
+        oldAppl saveRequest.
+    ].
+    item := self selectionInApplList value.
+    isCat := item isCategory.
+    self enableButtons value:(isCat not).
+    isCat ifTrue:[
+        self subCanvasApplicationHolder value:nil.
+        ^ self
+    ].
+    item application isNil ifTrue:[
+        item application:((Smalltalk classNamed:(item applClass)) new).
+    ].
+    self subCanvasApplicationHolder value:item application.
+!
+
+update:something with:aParameter from:changedObject
+    "Invoked when an object that I depend upon sends a change notification."
+
+    "stub code automatically generated - please change as required"
+
+    changedObject == self selectionInApplList ifTrue:[
+        self selectionChanged.
+        ^ self
+    ].
+    super update:something with:aParameter from:changedObject
 ! !
 
 !AbstractLauncherApplication::SettingsDialog methodsFor:'initialization & release'!
@@ -6791,55 +7472,73 @@
      closed (this method has a chance to suppress the close).
      See also #closeDownViews, which is invoked when the close is really done."
 
-    self sendSaveRequest ifFalse:[ ^ self].
+    self sendSaveRequestToAll ifFalse:[ ^ self].
+    self destroyAll.
     ^ super closeRequest
 !
 
 initialize
 
     resources := self class owningClass resources.
-    selectionHolder := AspectAdaptor new subject:self; forAspect:#selection.
+    self initializeApplList.
     super initialize.
 !
 
-postBuildWith:aBuilder
-    "This is a hook method generated by the Browser.
-     It will be invoked during the initialization of your app/dialog,
-     after all of the visual components have been built, 
-     but BEFORE the top window is made visible.
-     Add any app-specific actions here (reading files, setting up values etc.)
-     See also #postOpenWith:, which is invoked after opening."
-
-    "/ add any code here ...
-
-    ^ super postBuildWith:aBuilder
-!
-
-postOpenWith:aBuilder
-    "This is a hook method generated by the Browser.
-     It will be invoked right after the applications window has been opened.
-     Add any app-specific actions here (starting background processes etc.).
-     See also #postBuildWith:, which is invoked before opening."
-
-    "/ add any code here ...
-
-    colOfInstances := OrderedCollection new.
-    self class settingsAppListClasses do:[:cls| | className |
-        className := Smalltalk classNamed:cls.
-        cls isNil ifTrue:[
-            Transcript showCR:'no class named:' , className
+initializeApplList
+
+    | rootItem itemClass parent|
+    applList := AbstractLauncherApplication::HierarchicalSettingsApplList new.
+    itemClass := applList class itemClass.
+    rootItem := itemClass new.
+    rootItem label:(Text string:(resources string:'Settings') emphasis:#bold).
+    rootItem icon:self class settingsIcon.
+    self class applList do:[:entry |
+        |newItem nameString applicationClassNameMethodOrNil icon inCategory|
+        nameString := entry at:1.
+        applicationClassNameMethodOrNil := entry at:2.
+        inCategory := entry at:3.
+        icon       := entry at:4.
+
+        newItem := itemClass new.                                   
+        newItem label:(Text string:(resources string:nameString) emphasis:#bold).
+        newItem applClass:applicationClassNameMethodOrNil.
+        (icon isNil) ifTrue:[
+            icon := self class defaultSettingsAppIcon.
+        ].
+        newItem icon:icon.
+        inCategory notNil ifTrue:[
+            parent := self recursiveGetParentFor:inCategory fromItem:rootItem.
+            parent isNil ifTrue:[self error:'category for listentry doesnt exist'].
+            parent children isNil ifTrue:[
+                parent children:(OrderedCollection with:newItem)
+            ] ifFalse:[
+                | newColl |
+                newColl := parent children copy.
+                newColl add:newItem.
+                parent children:newColl.
+            ]
         ] ifFalse:[
-            | appl window|
-            appl := className new.
-            window := ApplicationSubView new.
-            appl createBuilder.
-            window client:appl.
-            
-            colOfInstances add:appl.
+            rootItem children isNil ifTrue:[
+                rootItem children:(OrderedCollection with:newItem)
+            ] ifFalse:[
+                | newColl |
+                newColl := rootItem children copy.
+                newColl add:newItem.
+                rootItem children:newColl.
+            ]
         ]
     ].
-    self selectionHolder value:1.
-    ^ super postOpenWith:aBuilder
+
+"/    applList showLeftIndicators:true.
+"/    applList showRoot:true.
+    self selectionInApplList value:rootItem.
+    applList root:rootItem.
+    rootItem expand.
+!
+
+postBuildSubCanvas:aWidget
+
+    aWidget keepClientView:true. 
 ! !
 
 !AbstractLauncherApplication::SettingsDialog methodsFor:'menu actions'!
@@ -6869,7 +7568,7 @@
     self withWaitCursorDo:[
         Smalltalk fileIn:fileName.
         Transcript current topView model reOpen.
-        self sendLoadRequest.
+        self sendLoadRequestToAll.
     ].
 !
 
@@ -6879,6 +7578,8 @@
 
     resources := self class owningClass classResources.
 
+    self sendLoadRequestToAll ifFalse:[^ self].
+
     fileName := Dialog 
         requestFileName:(resources string:'Save settings in:') 
         default:'settings.stx'
@@ -7145,759 +7846,26 @@
     "Modified: / 6.1.1999 / 14:24:16 / cg"
 ! !
 
-!AbstractLauncherApplication::SettingsDialogV2 class methodsFor:'applications'!
-
-addApplClass:aClass withName:aName
-
-    ApplicationList isNil ifTrue:[
-        self initialize.
-    ].
-    ApplicationList add:(Array with:aName with:aClass asString asSymbol)
-!
-
-applList
-    ApplicationList isNil ifTrue:[
-        self initialize.
-    ].
-    ^ ApplicationList 
-!
-
-defaultAppList                                                                 
-    " list of settings applications                        
-      format: nameString applicationClassNameMethod"
-
-    ^ #(          
-        #('Tools'    #'AbstractSettingsApplication::ToolsSettingsAppl')
-        #('Language' #'AbstractSettingsApplication::LanguageSettingsAppl')
-        #('Keyboard Mappings' #'AbstractSettingsApplication::KbdMappingSettingsAppl')
-        #('Style Selection' #'AbstractSettingsApplication::StyleSettingsAppl')
-        #('System Messages' #'AbstractSettingsApplication::SystemMessageSettingsAppl')
-        #('Compiler' #'AbstractSettingsApplication::CompilerSettingsAppl')
-        #('Memory' #'AbstractSettingsApplication::MemorySettingsAppl')
-        #('SourceCode && Debugger' #'AbstractSettingsApplication::SourceAndDebuggerSettingsAppl')
-        #('Printer' #'AbstractSettingsApplication::PrinterSettingsAppl')
-        #('Display' #'AbstractSettingsApplication::DisplaySettingsAppl')
-        #('Editor' #'AbstractSettingsApplication::EditSettingsAppl')
-        #('Other' #'AbstractSettingsApplication::MiscSettingsAppl')
-    ).
-!
-
-removeApplClass:aClass
-
-    |index|
-
-    ApplicationList isNil ifTrue:[
-        self initialize.
-    ].
-    index := ApplicationList findFirst:[:el |
-        el second == aClass asSymbol
-    ].
-    index ~~ 0 ifTrue:[
-        ApplicationList removeIndex:index.
-    ].
-!
-
-settingsAppListClasses
-
-    ^ self applList collect:[:entry | entry last].
-!
-
-settingsAppListNames
-
-    ^ self applList collect:[:entry | entry first].
-! !
-
-!AbstractLauncherApplication::SettingsDialogV2 class methodsFor:'initialize'!
-
-initialize
-
-    ApplicationList := self defaultAppList asOrderedCollection.
-
-"
-    self initialize
-"
-! !
-
-!AbstractLauncherApplication::SettingsDialogV2 class methodsFor:'interface specs'!
-
-windowSpec
-    "This resource specification was automatically generated
-     by the UIPainter of ST/X."
-
-    "Do not manually edit this!! If it is corrupted,
-     the UIPainter may not be able to read the specification."
-
-    "
-     UIPainter new openOnClass:AbstractLauncherApplication::SettingsDialogV2 andSelector:#windowSpec
-     AbstractLauncherApplication::SettingsDialogV2 new openInterface:#windowSpec
-     AbstractLauncherApplication::SettingsDialogV2 open
-    "
-
-    <resource: #canvas>
-
-    ^ 
-     #(#FullSpec
-        #name: #windowSpec
-        #window: 
-       #(#WindowSpec
-          #label: 'Settings Dialog'
-          #name: 'Settings Dialog'
-          #min: #(#Point 10 10)
-          #max: #(#Point 1024 768)
-          #bounds: #(#Rectangle 22 184 622 804)
-          #menu: #mainMenu
-        )
-        #component: 
-       #(#SpecCollection
-          #collection: #(
-           #(#NoteBookViewSpec
-              #name: 'SettingsNoteBook'
-              #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
-              #model: #selectionHolder
-              #menu: #settingsAppList
-              #useIndex: true
-              #canvas: #canvasHolder
-              #keepCanvasAlive: true
-            )
-           #(#VariableHorizontalPanelSpec
-              #name: 'VariableHorizontalPanel1'
-              #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 -34 1)
-              #component: 
-             #(#SpecCollection
-                #collection: #(
-                 #(#HierarchicalListViewSpec
-                    #name: 'HierarchicalListView1'
-                    #model: #selectionInApplList
-                    #hasHorizontalScrollBar: true
-                    #hasVerticalScrollBar: true
-                    #listModel: #applList
-                    #useIndex: false
-                    #highlightMode: #line
-                  )
-                 #(#SubCanvasSpec
-                    #name: 'SubCanvas1'
-                    #hasHorizontalScrollBar: true
-                    #hasVerticalScrollBar: true
-                    #clientHolder: #subCanvasApplicationHolder
-                  )
-                 )
-               
-              )
-              #handles: #(#Any 0.305 1.0)
-            )
-           #(#HorizontalPanelViewSpec
-              #name: 'HorizontalPanel1'
-              #layout: #(#LayoutFrame 0 0.0 -34 1 0 1.0 0 1)
-              #horizontalLayout: #center
-              #verticalLayout: #center
-              #horizontalSpace: 3
-              #verticalSpace: 3
-              #component: 
-             #(#SpecCollection
-                #collection: #(
-                 #(#ActionButtonSpec
-                    #label: 'OK'
-                    #name: 'Button1'
-                    #translateLabel: true
-                    #extent: #(#Point 125 22)
-                  )
-                 #(#ActionButtonSpec
-                    #label: 'Reload'
-                    #name: 'Button2'
-                    #translateLabel: true
-                    #extent: #(#Point 125 22)
-                  )
-                 #(#ActionButtonSpec
-                    #label: 'Cancel'
-                    #name: 'Button3'
-                    #translateLabel: true
-                    #model: #doCancel
-                    #extent: #(#Point 125 22)
-                  )
-                 #(#ActionButtonSpec
-                    #label: 'Help'
-                    #name: 'Button4'
-                    #translateLabel: true
-                    #model: #help
-                    #extent: #(#Point 125 22)
-                  )
-                 )
-               
-              )
-            )
-           )
-         
-        )
-      )
-! !
-
-!AbstractLauncherApplication::SettingsDialogV2 class methodsFor:'menu specs'!
-
-mainMenu
-    "This resource specification was automatically generated
-     by the MenuEditor of ST/X."
-
-    "Do not manually edit this!! If it is corrupted,
-     the MenuEditor may not be able to read the specification."
-
-    "
-     MenuEditor new openOnClass:SettingsDialog andSelector:#mainMenu
-     (Menu new fromLiteralArrayEncoding:(SettingsDialog mainMenu)) startUp
-    "
-
-    <resource: #menu>
-
-    ^ 
-     #(#Menu
-        #(
-         #(#MenuItem
-            #label: 'File'
-            #translateLabel: true
-            #submenu: 
-           #(#Menu
-              #(
-               #(#MenuItem
-                  #label: 'Load Settings...'
-                  #itemValue: #loadSettings
-                  #translateLabel: true
-                )
-               #(#MenuItem
-                  #label: 'Save Settings...'
-                  #itemValue: #saveSettings
-                  #translateLabel: true
-                )
-               #(#MenuItem
-                  #label: 'Exit'
-                  #itemValue: #closeRequest
-                  #translateLabel: true
-                )
-               )
-              nil
-              nil
-            )
-          )
-         )
-        nil
-        nil
-      )
-! !
-
-!AbstractLauncherApplication::SettingsDialogV2 methodsFor:'accessing'!
-
-requestor
-    "return the 'requestor' of the SettingsDialog"
-
-    ^ requestor
-!
-
-requestor:something
-    "set the value of the instance variable 'requestor' (automatically generated)"
-
-    requestor := something.
-! !
-
-!AbstractLauncherApplication::SettingsDialogV2 methodsFor:'actions'!
-
-help
-    "automatically generated by UIPainter ..."
-
-    "*** the code below performs no action"
-    "*** (except for some feedback on the Transcript)"
-    "*** Please change as required and accept in the browser."
-
-    "action to be added ..."
-
-    Transcript showCR:self class name, ': action for help ...'.
-!
-
-sendLoadRequest
-
-    colOfInstances do:[:settInst|
-        settInst loadRequest.
-    ].
-!
-
-sendSaveRequest
-
-    |oldClient canvas|
-
-    canvas := self canvasHolder value.
-    canvas notNil ifTrue:[
-        oldClient := canvas application.
-        oldClient notNil ifTrue:[
-            oldClient saveRequest ifFalse:[^ false].
-        ].
-    ].
-    ^ true
-! !
-
-!AbstractLauncherApplication::SettingsDialogV2 methodsFor:'aspects'!
-
-applList
-
-    applList isNil ifTrue:[
-        applList := AbstractLauncherApplication::HierarchicalSettingsApplList new initialize.
-    ].
-    ^ applList.
-!
-
-canvasHolder
-
-    canvasHolder isNil ifTrue:[
-        canvasHolder := ValueHolder new.
-    ].
-    ^ canvasHolder.
-!
-
-selection
-    "get the selection
-    "
-    ^ selection
-!
-
-selection:something
-    "set the selection; update canvas
-    "
-    selection ~~ something ifTrue:[
-
-        self sendSaveRequest ifFalse:[ ^ self].
-        selection := something.
-        selection ~~ 0 ifTrue:[
-            self canvasHolder value:((colOfInstances at:selection) window).
+!AbstractLauncherApplication::SettingsDialog methodsFor:'queries'!
+
+recursiveGetParentFor:aCategory fromItem:aItem
+
+    | children |
+    children := aItem children.
+    children notNil ifTrue:[
+        children do:[:aChildItem | | newItem |
+            aChildItem label string = aCategory ifTrue:[ ^ aChildItem].
+            newItem := self recursiveGetParentFor:aCategory fromItem:aChildItem.
+            newItem notNil ifTrue:[^ newItem].
         ].
     ].
-!
-
-selectionHolder
-
-    selectionHolder isNil ifTrue:[
-        selectionHolder := AspectAdaptor new subject:self; forAspect:#selection.
-    ].
-    ^ selectionHolder.
-!
-
-selectionInApplList
-    "automatically generated by UIPainter ..."
-
-    "*** the code below creates a default model when invoked."
-    "*** (which may not be the one you wanted)"
-    "*** Please change as required and accept it in the browser."
-    "*** (and replace this comment by something more useful ;-)"
-
-    selectionInApplList isNil ifTrue:[
-        selectionInApplList := ValueHolder new.
-"/ if your app needs to be notified of changes, uncomment one of the lines below:
-"/       selectionInApplList addDependent:self.
-"/       selectionInApplList onChangeSend:#selectionInApplListChanged to:self.
-    ].
-    ^ selectionInApplList.
-!
-
-settingsAppList
-
-    ^ self class settingsAppListNames.
-!
-
-subCanvasApplicationHolder
-    "automatically generated by UIPainter ..."
-
-    "*** the code below creates a default model when invoked."
-    "*** (which may not be the one you wanted)"
-    "*** Please change as required and accept it in the browser."
-    "*** (and replace this comment by something more useful ;-)"
-
-    subCanvasApplicationHolder isNil ifTrue:[
-        subCanvasApplicationHolder := ValueHolder new.
-"/ if your app needs to be notified of changes, uncomment one of the lines below:
-"/       subCanvasApplicationHolder addDependent:self.
-"/       subCanvasApplicationHolder onChangeSend:#subCanvasApplicationHolderChanged to:self.
-    ].
-    ^ subCanvasApplicationHolder.
-! !
-
-!AbstractLauncherApplication::SettingsDialogV2 methodsFor:'initialization & release'!
-
-closeDownViews
-    "This is a hook method generated by the Browser.
-     It will be invoked when your app/dialog-window is really closed.
-     See also #closeDownViews, which is invoked before and may suppress the close
-     or ask the user for confirmation."
-
-    "/ change the code below as required ...
-    "/ This should cleanup any leftover resources
-    "/ (for example, temporary files)
-    "/ super closeRequest will initiate the closeDown
-
-    "/ add your code here
-
-    "/ do not remove the one below ...
-    ^ super closeDownViews
-!
-
-closeRequest
-    "This is a hook method generated by the Browser.
-     It will be invoked when your app/dialog-window is about to be
-     closed (this method has a chance to suppress the close).
-     See also #closeDownViews, which is invoked when the close is really done."
-
-    self sendSaveRequest ifFalse:[ ^ self].
-    ^ super closeRequest
-!
-
-initialize
-
-    resources := self class owningClass resources.
-    super initialize.
-!
-
-postBuildWith:aBuilder
-    "This is a hook method generated by the Browser.
-     It will be invoked during the initialization of your app/dialog,
-     after all of the visual components have been built, 
-     but BEFORE the top window is made visible.
-     Add any app-specific actions here (reading files, setting up values etc.)
-     See also #postOpenWith:, which is invoked after opening."
-
-    "/ add any code here ...
-
-    ^ super postBuildWith:aBuilder
-!
-
-postOpenWith:aBuilder
-    "This is a hook method generated by the Browser.
-     It will be invoked right after the applications window has been opened.
-     Add any app-specific actions here (starting background processes etc.).
-     See also #postBuildWith:, which is invoked before opening."
-
-    "/ add any code here ...
-
-    colOfInstances := OrderedCollection new.
-    self class settingsAppListClasses do:[:cls| | className |
-        className := Smalltalk classNamed:cls.
-        cls isNil ifTrue:[
-            Transcript showCR:'no class named:' , className
-        ] ifFalse:[
-            | appl window|
-            appl := className new.
-            window := ApplicationSubView new.
-            appl createBuilder.
-            window client:appl.
-            
-            colOfInstances add:appl.
-        ]
-    ].
-    self selectionHolder value:1.
-    ^ super postOpenWith:aBuilder
-! !
-
-!AbstractLauncherApplication::SettingsDialogV2 methodsFor:'menu actions'!
-
-loadSettings
-
-    "restore settings from a settings-file."
-
-    "a temporary kludge - we need a central systemSettings object for this,
-     which can be saved/restored with a single store/read."
-
-    |fileName|
-
-    fileName := Dialog 
-        requestFileName:(resources string:'Load Settings From:') 
-        default:'settings.stx'
-        ok:(resources string:'Load') 
-        abort:(resources string:'Cancel') 
-        pattern:'*.stx'
-        fromDirectory:nil.
-
-    (fileName size == 0) ifTrue:[
-        "/ canceled
-        ^ self
-    ].
-
-    self withWaitCursorDo:[
-        Smalltalk fileIn:fileName.
-        Transcript current topView model reOpen.
-        self sendLoadRequest.
-    ].
-!
-
-saveSettings
-
-    |fileName resources|
-
-    resources := self class owningClass classResources.
-
-    fileName := Dialog 
-        requestFileName:(resources string:'Save settings in:') 
-        default:'settings.stx'
-        ok:(resources string:'Save') 
-        abort:(resources string:'Cancel') 
-        pattern:'*.stx'
-        fromDirectory:'.'.
-
-    fileName size ~~ 0 ifTrue:[
-        "not canceled"
-        self saveSettingsIn:fileName.
-    ]
-!
-
-saveSettingsIn:fileName
-    "save settings to a settings-file."
-
-    "a temporary kludge - we need a central systemSettings object for this,
-     which can be saved/restored with a single store/read.
-     Will move entries over to UserPreferences over time;
-     new items should always go there."
-
-    |resources s screen currentUserPrefs|
-
-    resources := self class owningClass classResources.
-
-    s := fileName asFilename writeStream.
-    s isNil ifTrue:[
-        self warn:(resources string:'Cannot write the %1 file !!' with:fileName).
-        ^ self
-    ].
-
-    currentUserPrefs := UserPreferences current.
-    screen := Screen current.
-
-    s nextPutLine:'"/ ST/X saved settings';
-      nextPutLine:'"/ DO NOT MODIFY MANUALLY';
-      nextPutLine:'"/ (modifications would be lost with next save-settings)';
-      nextPutLine:'"/';
-      nextPutLine:'"/ this file was automatically generated by the';
-      nextPutLine:'"/ ''save settings'' function of the Launcher';
-      nextPutLine:'"/'.
-    s cr.
-
-    s nextPutLine:'"/'.
-    s nextPutLine:'"/ saved by ' , OperatingSystem getLoginName , '@' , OperatingSystem getHostName , ' at ' , AbsoluteTime now printString.
-    s nextPutLine:'"/'.
-    s cr.
-
-    s nextPutLine:'"/'.
-    s nextPutLine:'"/ Display settings:'.
-    s nextPutLine:'"/'.
-    s nextPutLine:'"/ only restore the display settings, if on the same Display ...'.
-    s nextPutLine:'Display notNil ifTrue:['.
-    s nextPutLine:' Display displayName = ' , (screen displayName storeString) , ' ifTrue:['.
-      screen fixColors notNil ifTrue:[
-        s nextPutLine:'  Image flushDeviceImages.'.
-        s nextPutLine:'  Color colorAllocationFailSignal catch:['.
-        s nextPutLine:'    Color getColorsRed:6 green:6 blue:4 on:Display'.
-        s nextPutLine:'  ].'.
-      ] ifFalse:[
-        s nextPutLine:'  Display releaseFixColors.'.
-      ].
-      s nextPutLine:'  Display hasColors: ' , (screen hasColors storeString) , '.'.
-      s nextPutLine:'  Display widthInMillimeter: ' , (screen widthInMillimeter storeString) , '.'.
-      s nextPutLine:'  Display heightInMillimeter: ' , (screen heightInMillimeter storeString) , '.'.
-      s nextPutLine:'  Display supportsDeepIcons: ' , (screen supportsDeepIcons storeString) , '.'.
-      s nextPutLine:'  Image ditherAlgorithm: ' , (Image ditherAlgorithm storeString) , '.'.
-      s nextPutLine:'  View defaultStyle:' , View defaultStyle storeString , '.'.
-    s nextPutLine:' ].'.
-    s nextPutLine:'].'.
-    s cr.
-
-    s nextPutLine:'"/'.
-    s nextPutLine:'"/ Compiler settings:'.
-    s nextPutLine:'"/'.
-    s nextPutLine:'Compiler warnSTXSpecials: ' , (Compiler warnSTXSpecials storeString) , '.';
-      nextPutLine:'Compiler warnUnderscoreInIdentifier: ' , (Compiler warnUnderscoreInIdentifier storeString) , '.';
-      nextPutLine:'Compiler warnOldStyleAssignment: ' , (Compiler warnOldStyleAssignment storeString) , '.';
-      nextPutLine:'Compiler warnCommonMistakes: ' , (Compiler warnCommonMistakes storeString) , '.';
-      nextPutLine:'Compiler warnPossibleIncompatibilities: ' , (Compiler warnPossibleIncompatibilities storeString) , '.';
-      nextPutLine:'Compiler allowUnderscoreInIdentifier: ' , (Compiler allowUnderscoreInIdentifier storeString) , '.';
-      nextPutLine:'Compiler allowSqueakExtensions: ' , (Compiler allowSqueakExtensions storeString) , '.';
-      nextPutLine:'Compiler allowDolphinExtensions: ' , (Compiler allowDolphinExtensions storeString) , '.';
-      nextPutLine:'Compiler arraysAreImmutable: ' , (Compiler arraysAreImmutable storeString) , '.';
-      nextPutLine:'Compiler lineNumberInfo: ' , (Compiler lineNumberInfo storeString) , '.';
-
-      nextPutLine:'Compiler foldConstants: ' , (Compiler foldConstants storeString) , '.';
-      nextPutLine:'Compiler stcCompilation: ' , (Compiler stcCompilation storeString) , '.';
-      nextPutLine:'OperatingSystem getOSType = ' , (OperatingSystem getOSType storeString) , ' ifTrue:[';
-      nextPutLine:'  Compiler stcCompilationIncludes: ' , (Compiler stcCompilationIncludes storeString) , '.';
-      nextPutLine:'  Compiler stcCompilationDefines: ' , (Compiler stcCompilationDefines storeString) , '.';
-      nextPutLine:'  Compiler stcCompilationOptions: ' , (Compiler stcCompilationOptions storeString) , '.';
-      nextPutLine:'  ' , (Compiler stcModulePath storeString) , ' asFilename exists ifTrue:[';
-      nextPutLine:'    Compiler stcModulePath: ' , (Compiler stcModulePath storeString) , '.';
-      nextPutLine:'  ].';
-      nextPutLine:'  Compiler stcPath: ' , (Compiler stcPath storeString) , '.';
-      nextPutLine:'  Compiler ccCompilationOptions: ' , (Compiler ccCompilationOptions storeString) , '.';
-      nextPutLine:'  Compiler ccPath: ' , (Compiler ccPath storeString) , '.';
-      nextPutLine:'  ObjectFileLoader linkArgs: ' , (ObjectFileLoader linkArgs storeString) , '.';
-      nextPutLine:'  ObjectFileLoader linkCommand: ' , (ObjectFileLoader linkCommand storeString) , '.';
-      nextPutLine:'  ObjectFileLoader libPath: ' , (ObjectFileLoader libPath storeString) , '.';
-      nextPutLine:'  ObjectFileLoader searchedLibraries: ' , (ObjectFileLoader searchedLibraries storeString) , '.';
-      nextPutLine:'].';
-
-      nextPutLine:'ObjectMemory justInTimeCompilation: ' , (ObjectMemory justInTimeCompilation storeString) , '.';
-      nextPutLine:'ObjectMemory fullSingleStepSupport: ' , (ObjectMemory fullSingleStepSupport storeString) , '.'.
-
-    HistoryManager notNil ifTrue:[
-        HistoryManager isActive ifTrue:[
-            s nextPutLine:'HistoryManager notNil ifTrue:[HistoryManager activate].'.
-            s nextPutLine:'HistoryManager notNil ifTrue:[HistoryManager fullHistoryUpdate:' , HistoryManager fullHistoryUpdate storeString , '].'.
-        ] ifFalse:[
-            s nextPutLine:'HistoryManager notNil ifTrue:[HistoryManager deactivate].'.
-        ].
-    ].
-
-    ObjectFileLoader notNil ifTrue:[
-        s nextPutLine:'ObjectFileLoader searchedLibraries: ' , (ObjectFileLoader searchedLibraries storeString) , '.'.
-        s nextPutLine:'ObjectFileLoader libPath: ' , (ObjectFileLoader libPath storeString) , '.'.
-    ].
-
-    s nextPutLine:'Class catchMethodRedefinitions: ' , (Class catchMethodRedefinitions storeString) , '.'.
-    s nextPutLine:'ClassCategoryReader sourceMode: ' , (ClassCategoryReader sourceMode storeString) , '.'.
-
-    s cr.
-    s nextPutLine:'"/'.
-    s nextPutLine:'"/ Info & Debug Messages:'.
-    s nextPutLine:'"/'.
-    s nextPutLine:'ObjectMemory infoPrinting: ' , (ObjectMemory infoPrinting storeString) , '.';
-      nextPutLine:'ObjectMemory debugPrinting: ' , (ObjectMemory debugPrinting storeString) , '.';
-      nextPutLine:'Object infoPrinting: ' , (Object infoPrinting storeString) , '.';
-      nextPutLine:'DeviceWorkstation errorPrinting: ' , (DeviceWorkstation errorPrinting storeString) , '.'.
-
-    FlyByHelp isActive ifTrue:[
-        s nextPutLine:'FlyByHelp start.'
-    ].
-
-    s cr.
-    s nextPutLine:'"/'.
-    s nextPutLine:'"/ Edit settings:'.
-    s nextPutLine:'"/'.
-    "/ s nextPutLine:'EditTextView st80Mode: ' , (EditTextView st80Mode storeString) , '.'.
-    s nextPutLine:'TextView st80SelectMode: ' , (TextView st80SelectMode storeString) , '.'.
-    s nextPutLine:'UserPreferences current syntaxColoring: ' , (currentUserPrefs syntaxColoring storeString) , '.'.
-    (ListView userDefaultTabPositions = ListView tab4Positions) ifTrue:[
-        s nextPutLine:'ListView userDefaultTabPositions:(ListView tab4Positions).'.
-    ] ifFalse:[
-        s nextPutLine:'ListView userDefaultTabPositions:(ListView tab8Positions).'.
-    ].
-
-    s nextPutLine:'"/'.
-    s nextPutLine:'"/ User preference values:'.
-    s nextPutLine:'"/'.
-    currentUserPrefs keysAndValuesDo:[:k :v |
-        (UserPreferences includesSelector:(k , ':') asSymbol) ifTrue:[
-            s nextPutLine:'UserPreferences current ' , k , ':' , v storeString , '.'.
-        ] ifFalse:[
-            s nextPutLine:'UserPreferences current at:' , k storeString , ' put:' , v storeString , '.'.
-        ]
-    ].
-
-    s cr.
-    s nextPutLine:'"/'.
-    s nextPutLine:'"/ Misc settings:'.
-    s nextPutLine:'"/'.
-    s nextPutLine:'Class keepMethodHistory: ' , (Class methodHistory notNil storeString) , '.';
-      nextPutLine:'Smalltalk logDoits: ' , (Smalltalk logDoits storeString) , '.';
-      nextPutLine:'Autoload compileLazy: ' , (Autoload compileLazy storeString) , '.';
-      nextPutLine:'Smalltalk loadBinaries: ' , (Smalltalk loadBinaries storeString) , '.';
-      nextPutLine:'StandardSystemView includeHostNameInLabel: ' , (StandardSystemView includeHostNameInLabel storeString) , '.';
-
-      "/ claus - I dont think its a good idea to save those ...
-      nextPutLine:'"/ Class updateChanges: ' , (Class updatingChanges storeString) , '.';
-      nextPutLine:'"/ ObjectMemory nameForChanges: ' , (ObjectMemory nameForChanges storeString) , '.';
-
-      nextPutLine:'StandardSystemView returnFocusWhenClosingModalBoxes: ' , (StandardSystemView returnFocusWhenClosingModalBoxes storeString) , '.';
-      nextPutLine:'StandardSystemView takeFocusWhenMapped: ' , (StandardSystemView takeFocusWhenMapped storeString) , '.';
-      nextPutLine:'Display notNil ifTrue:[';
-      nextPutLine:' Display activateOnClick: ' , ((screen activateOnClick:nil) storeString) , '.';
-      nextPutLine:'].';
-      nextPutLine:'MenuView showAcceleratorKeys: ' , (MenuView showAcceleratorKeys storeString) , '.';
-      nextPutLine:'Class tryLocalSourceFirst: ' , (Class tryLocalSourceFirst storeString) , '.'.
-    (Exception emergencyHandler == AbstractLauncherApplication notifyingEmergencyHandler) ifTrue:[
-        s nextPutLine:'Exception emergencyHandler:(AbstractLauncherApplication notifyingEmergencyHandler).'.
-    ].
-    Processor isTimeSlicing ifTrue:[
-        s nextPutLine:'Processor startTimeSlicing.'.
-        s nextPutLine:('Processor supportDynamicPriorities:' , (Processor supportDynamicPriorities ? false) storeString , '.').
-    ] ifFalse:[
-        s nextPutLine:'Processor stopTimeSlicing.'.
-    ].
-
-    s cr.
-    s nextPutLine:'"/'.
-    s nextPutLine:'"/ Printer settings:'.
-    s nextPutLine:'"/'.
-    s nextPutLine:'Printer := ' , (Printer name) , '.';
-      nextPutLine:'Printer printCommand: ' , (Printer printCommand storeString) , '.'.
-
-    Printer supportsPageSizes ifTrue:[
-        s nextPutLine:'Printer pageFormat: ' , (Printer pageFormat storeString) , '.'.
-        s nextPutLine:'Printer landscape: ' , (Printer landscape storeString) , '.'.
-    ].
-    Printer supportsMargins ifTrue:[
-        s nextPutLine:'Printer topMargin: ' , (Printer topMargin storeString) , '.'.
-        s nextPutLine:'Printer leftMargin: ' , (Printer leftMargin storeString) , '.'.
-        s nextPutLine:'Printer rightMargin: ' , (Printer rightMargin storeString) , '.'.
-        s nextPutLine:'Printer bottomMargin: ' , (Printer bottomMargin storeString) , '.'.
-    ].
-    Printer supportsPostscript ifTrue:[
-        s nextPutLine:'Printer supportsColor: ' , (Printer supportsColor storeString) , '.'.
-    ].
-
-    s cr.
-    s nextPutLine:'"/'.
-    s nextPutLine:'"/ Font settings:'.
-    s nextPutLine:'"/ (only restored, if image is restarted on the same display)'.
-    s nextPutLine:'"/'.
-    s nextPutLine:'Display notNil ifTrue:['.
-    s nextPutLine:' Display displayName = ' , (screen displayName storeString) , ' ifTrue:['.
-    s nextPutLine:'  View defaultFont: ' , (View defaultFont storeString) , '.'.
-    s nextPutLine:'  Label defaultFont: ' , (Label defaultFont storeString) , '.'.
-    s nextPutLine:'  Button defaultFont: ' , (Button defaultFont storeString) , '.'.
-    s nextPutLine:'  Toggle defaultFont: ' , (Toggle defaultFont storeString) , '.'.
-    s nextPutLine:'  SelectionInListView defaultFont: ' , (SelectionInListView defaultFont storeString) , '.'.
-    s nextPutLine:'  MenuView defaultFont: ' , (MenuView defaultFont storeString) , '.'.
-    s nextPutLine:'  PullDownMenu defaultFont: ' , (PullDownMenu defaultFont storeString) , '.'.
-    s nextPutLine:'  TextView defaultFont: ' , (TextView defaultFont storeString) , '.'.
-    s nextPutLine:'  EditTextView defaultFont: ' , (EditTextView defaultFont storeString) , '.'.
-    s nextPutLine:'  CodeView defaultFont: ' , (CodeView defaultFont storeString) , '.'.
-    s nextPutLine:' ].'.
-    s nextPutLine:'].'.
-
-    s cr.
-    s nextPutLine:'"/'.
-    s nextPutLine:'"/ Language setting:'.
-    s nextPutLine:'"/'.
-    s nextPutLine:'Smalltalk language: ' , (Smalltalk language storeString) , '.'.
-    s nextPutLine:'Smalltalk languageTerritory: ' , (Smalltalk languageTerritory storeString) , '.'.
-
-    s cr.
-    s nextPutLine:'"/'.
-    s nextPutLine:'"/ SourceCodeManager settings:'.
-    s nextPutLine:'"/ (only restored, if image is restarted on the same host)'.
-    s nextPutLine:'"/'.
-    s nextPutLine:'OperatingSystem getHostName = ' , (OperatingSystem getHostName storeString) , ' ifTrue:['.
-    s nextPutLine:'  Class tryLocalSourceFirst:' , Class tryLocalSourceFirst storeString , '.'.
-    (Smalltalk at:#SourceCodeManager) == CVSSourceCodeManager ifTrue:[
-    s nextPutLine:'  Smalltalk at:#SourceCodeManager put: CVSSourceCodeManager.'.
-    s nextPutLine:'  AbstractSourceCodeManager cacheDirectoryName:' , AbstractSourceCodeManager cacheDirectoryName storeString , '.'.
-    s nextPutLine:'  CVSSourceCodeManager cvsBinDirectory:' , CVSSourceCodeManager cvsBinDirectory storeString , '.'.
-    s nextPutLine:'  CVSSourceCodeManager repositoryNamesPerModule:' , CVSSourceCodeManager repositoryNamesPerModule storeString , '.'.
-    s nextPutLine:'  CVSSourceCodeManager initializeForRepository:' , CVSSourceCodeManager repositoryName storeString , '.'.
-    ].
-    s nextPutLine:'].'.
-
-    s close.
-
-    "
-     Transcript topView application saveSettings
-    "
-
-    "Modified: / 6.1.1999 / 14:24:16 / cg"
+    ^ nil
 ! !
 
 !AbstractLauncherApplication class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libtool/AbstractLauncherApplication.st,v 1.234 2002-11-19 15:53:16 penk Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/AbstractLauncherApplication.st,v 1.235 2002-11-25 16:25:43 penk Exp $'
 ! !
 
 AbstractLauncherApplication::SettingsDialog initialize!
-AbstractLauncherApplication::SettingsDialogV2 initialize!