Launcher.st
changeset 406 d0caca90e889
parent 404 4960628225e9
child 410 5564d9d6d063
--- a/Launcher.st	Tue Feb 27 01:26:17 1996 +0100
+++ b/Launcher.st	Tue Feb 27 02:08:29 1996 +0100
@@ -777,82 +777,12 @@
 !
 
 fontSettings
-    |box defaultFont y b
-     labelDef buttonDef listDef menuDef textDef
-     models|
-
-    models := OrderedCollection new.
-
-    models add:(labelDef := Label defaultFont asValue).
-    models add:(buttonDef := Button defaultFont asValue).
-    models add:(listDef := SelectionInListView defaultFont asValue).
-    models add:(menuDef := MenuView defaultFont asValue).
-    models add:(textDef := TextView defaultFont asValue).
-
-    box := Dialog new.
-    box label:(resources string:'Font settings').
-
-    models
-    with:(resources array:#('labels' 'buttons' 'lists' 'menus' 'edit text'))
-    do:[:model :title |
-        |y2 lbl|
-
-        (box addTextLabel:title)
-            adjust:#left.
-
-        y := box yPosition.
-        b := box addComponent:(Button label:(resources string:'change')).
-        b relativeExtent:nil; extent:(b preferredExtent).
-        y2 := box yPosition.
-        box yPosition:y.
-        box leftIndent:(b widthIncludingBorder + View viewSpacing).
-        (lbl := box addTextLabel:'')
-            adjust:#left;
-            font:(model value);
-            labelChannel:(BlockValue with:[:v |
-                                v value userFriendlyName] argument:model).
-        box leftIndent:0.
-        box yPosition:(box yPosition max:y2).
-        box addVerticalSpace.
-        box addHorizontalLine.
-        box addVerticalSpace.
-
-        b action:[
-            |f|
-
-            f := FontPanel fontFromUserInitial:(model value) 
-                                         title:(resources string:'font for %1' with:title).
-            f notNil ifTrue:[
-                model value:f.
-                lbl font:f.
-            ]
-        ].
-    ].
-
-    box addAbortButton; addOkButton.
-    box open.
-    box accepted ifTrue:[
-        Label defaultFont:labelDef value.
-        Button defaultFont:buttonDef value.
-        Toggle defaultFont:buttonDef value.
-        SelectionInListView defaultFont:listDef value.
-        MenuView defaultFont:menuDef value.
-        PullDownMenu defaultFont:menuDef value.
-        TextView defaultFont:textDef value.
-        EditTextView defaultFont:textDef value.
-        CodeView defaultFont:textDef value.
-    ].
-
-"/    defaultFont := FontPanel fontFromUser.
-"/    defaultFont notNil ifTrue:[
-"/        GraphicsContext defaultFont:defaultFont.
-"/        GraphicsContext allSubclassesDo:[:cls |
-"/            cls defaultFont:defaultFont.
-"/        ]
-"/    ]
+    (self fontBoxForEncoding:nil) ifTrue:[
+        self reopenLauncher.
+    ]
 
     "Created: 26.2.1996 / 22:52:51 / cg"
-    "Modified: 27.2.1996 / 01:08:48 / cg"
+    "Modified: 27.2.1996 / 02:05:05 / cg"
 !
 
 keyboardSetting 
@@ -2228,6 +2158,117 @@
 
 !NewLauncher methodsFor:'private'!
 
+fontBoxForEncoding:encodingMatch
+    |box defaultFont y b
+     labelDef buttonDef listDef menuDef textDef
+     models labels allOfThem filter|
+
+    encodingMatch notNil ifTrue:[
+        filter := [:f | f encoding notNil 
+                        and:[encodingMatch match:f encoding]].
+    ].
+        
+    models := OrderedCollection new.
+    labels := OrderedCollection new.
+
+    models add:(allOfThem := nil asValue).
+    models add:(labelDef := Label defaultFont asValue).
+    models add:(buttonDef := Button defaultFont asValue).
+    models add:(listDef := SelectionInListView defaultFont asValue).
+    models add:(menuDef := MenuView defaultFont asValue).
+    models add:(textDef := TextView defaultFont asValue).
+
+    box := Dialog new.
+    box label:(resources string:'Font settings').
+
+    models
+    with:(resources array:#('all' 'labels' 'buttons' 'lists' 'menus' 'edit text'))
+    do:[:model :title |
+        |y2 lbl f|
+
+        f := model value.
+
+        (box addTextLabel:title) adjust:#left.
+
+        y := box yPosition.
+        b := box addComponent:(Button label:(resources string:'change')).
+        b relativeExtent:nil; extent:(b preferredExtent).
+        y2 := box yPosition.
+        box yPosition:y.
+        box leftIndent:(b widthIncludingBorder + View viewSpacing).
+        (lbl := box addTextLabel:'')
+            adjust:#left;
+            font:(model value);
+            labelChannel:(BlockValue 
+                            with:[:v | |f|
+                                f := v value.
+                                f isNil ifTrue:[
+                                    ''
+                                ] ifFalse:[
+                                    f userFriendlyName
+                                ]
+                            ]
+                            argument:model).
+        labels add:lbl.
+
+        box leftIndent:0.
+        box yPosition:(box yPosition max:y2).
+        box addVerticalSpace.
+        box addHorizontalLine.
+        box addVerticalSpace.
+
+        b action:[
+            |f|
+
+            f := FontPanel 
+                fontFromUserInitial:(model value) 
+                              title:(resources string:'font for %1' with:title)
+                             filter:filter.
+            f notNil ifTrue:[
+                model == allOfThem ifTrue:[
+                    models do:[:m | m value:f].
+                    labels do:[:l | l font:f]
+                ] ifFalse:[
+                    model value:f.
+                    lbl font:f.
+                ].
+            ]
+        ].
+        model == allOfThem ifTrue:[
+            box addVerticalSpace
+        ]
+    ].
+
+    box addAbortButton; addOkButton.
+    (box addButton:(Button label:(resources string:'defaults')) before:nil)
+        action:[
+            "/ fetch defaults
+            View updateAllStyleCaches.
+            labelDef value: Label defaultFont.
+            buttonDef value: Button defaultFont.
+            listDef value: SelectionInListView defaultFont.
+            menuDef value: MenuView defaultFont.
+            textDef value: TextView defaultFont.
+        ].
+
+    box open.
+    box accepted ifTrue:[
+        Label defaultFont:labelDef value.
+        Button defaultFont:buttonDef value.
+        Toggle defaultFont:buttonDef value.
+        SelectionInListView defaultFont:listDef value.
+        MenuView defaultFont:menuDef value.
+        PullDownMenu defaultFont:menuDef value.
+        TextView defaultFont:textDef value.
+        EditTextView defaultFont:textDef value.
+        CodeView defaultFont:textDef value.
+    ].
+    ^ box accepted
+
+    "Created: 27.2.1996 / 01:44:16 / cg"
+    "Modified: 27.2.1996 / 02:06:28 / cg"
+!
+
 pickAView
     |v|
 
@@ -2251,7 +2292,7 @@
     (fontPref match:enc) ifFalse:[
         (self confirm:'menu font is not ' , fontPref , '-encoded.\\Change it ?' withCRs)
         ifTrue:[
-            self fontSettings.
+            self fontBoxForEncoding:fontPref
         ]
     ].
 
@@ -2259,7 +2300,7 @@
     self class open.
     Transcript contents:contents; hideCursor; scrollToBottom; cursorToEnd; showCursor
 
-    "Modified: 27.2.1996 / 00:04:01 / cg"
+    "Modified: 27.2.1996 / 01:45:45 / cg"
 !
 
 saveAllViews
@@ -2300,5 +2341,5 @@
 !NewLauncher class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libtool/Launcher.st,v 1.92 1996-02-27 00:22:11 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/Launcher.st,v 1.93 1996-02-27 01:08:29 cg Exp $'
 ! !