AbstractSettingsApplication.st
branchjv
changeset 13530 2269bce1636d
parent 13491 b3afe831ff0a
parent 13497 47a292f5d956
child 13609 8b400fde34ef
--- a/AbstractSettingsApplication.st	Fri Sep 06 12:08:37 2013 +0100
+++ b/AbstractSettingsApplication.st	Fri Sep 06 15:49:08 2013 +0100
@@ -101,7 +101,7 @@
                 enforceContentsDropForFiles selectAllWhenClickingBeyondEnd
                 showAcceptCancelBarInBrowser useCodeView2InTools
                 autoIndentInCodeView immediateCodeCompletion
-                codeCompletionOnControlKey'
+                codeCompletionOnControlKey codeCompletionOnTabKey'
 	classVariableNames:''
 	poolDictionaries:''
 	privateIn:AbstractSettingsApplication
@@ -109,11 +109,12 @@
 
 AbstractSettingsApplication subclass:#FontSettingsAppl
 	instanceVariableNames:'filter allOfThem labelDef buttonDef listDef menuDef textDef
-		allFontLabelHolder buttonsFontLabelHolder textFontLabelHolder
-		labelsFontLabelHolder listsFontLabelHolder menusFontLabelHolder
-		allLabel buttonsLabel textLabel labelLabel listsLabel menuLabel
-		inputFieldLabel inputFieldDef inputFieldFontLabelHolder
-		linuxFontWorkaround'
+		othersDef allFontLabelHolder buttonsFontLabelHolder
+		textFontLabelHolder labelsFontLabelHolder listsFontLabelHolder
+		menusFontLabelHolder otherFontLabelHolder allLabel buttonsLabel
+		textLabel labelLabel listsLabel menuLabel inputFieldLabel
+		inputFieldDef inputFieldFontLabelHolder otherLabel
+		linuxFontWorkaround otherDef'
 	classVariableNames:''
 	poolDictionaries:''
 	privateIn:AbstractSettingsApplication
@@ -3676,7 +3677,10 @@
 'Show code completion suggestions as you type.\This is an experimental feature, please disable it if you encounter problems.\(CTRL-Space still works as usual, even if this is disabled)'
 
 #codeCompletionOnControlKey
-'Show code completion suggestions when you hit the CTRL key.\This is an experimental feature, please disable it if you encounter problems.\(CTRL-Space still works as usual, even if this is disabled)'
+'Show code completion suggestions when you hit the CTRL key, and the character before the cursor is non-blank.\This is an experimental feature, please disable it if you encounter problems.\(CTRL-Space still works as usual, even if this is disabled)'
+
+#codeCompletionOnTabKey
+'Show code completion suggestions when you hit the TAB key, and the character before the cursor is non-blank.\This is an experimental feature, please disable it if you encounter problems.\(CTRL-Space still works as usual, even if this is disabled)'
 
 #alwaysPasteFileContents
 'When pasting a file (from the Filebrowser or Explorer), always paste the file''s contents\without asking. If off, a dialog appears to ask the name or the contents of the file should be pasted'
@@ -3791,8 +3795,12 @@
                    translateLabel: true
                    extent: (Point 600 25)
                  )
+                (DividerSpec
+                   name: 'Separator6'
+                   extent: (Point 600 4)
+                 )
                 (CheckBoxSpec
-                   label: 'Code Completion Suggestions as you Type (experimental)'
+                   label: 'Code Completion as you Type (experimental)'
                    name: 'CheckBox5'
                    activeHelpKey: immediateCodeCompletion
                    model: immediateCodeCompletion
@@ -3800,13 +3808,21 @@
                    extent: (Point 600 25)
                  )
                 (CheckBoxSpec
-                   label: 'Code Completion Suggestions on CTRL Key (experimental)'
-                   name: 'CheckBox5'
+                   label: 'Code Completion on CTRL Key (experimental)'
+                   name: 'CheckBox6'
                    activeHelpKey: codeCompletionOnControlKey
                    model: codeCompletionOnControlKey
                    translateLabel: true
                    extent: (Point 600 25)
                  )
+                (CheckBoxSpec
+                   label: 'Code Completion on TAB Key (experimental)'
+                   name: 'CheckBox7'
+                   activeHelpKey: codeCompletionOnControlKey
+                   model: codeCompletionOnTabKey
+                   translateLabel: true
+                   extent: (Point 600 25)
+                 )
                 (DividerSpec
                    name: 'Separator5'
                    extent: (Point 600 4)
@@ -3954,6 +3970,7 @@
          #autoIndentInCodeView
          #immediateCodeCompletion
          #codeCompletionOnControlKey
+         #codeCompletionOnTabKey
     )
 
     "Modified: / 07-03-2012 / 14:33:40 / cg"
@@ -3977,6 +3994,14 @@
     ^ codeCompletionOnControlKey.
 !
 
+codeCompletionOnTabKey
+    codeCompletionOnTabKey isNil ifTrue:[
+        codeCompletionOnTabKey := false asValue.
+        codeCompletionOnTabKey onChangeSend:#updateModifiedChannel to:self.
+    ].
+    ^ codeCompletionOnTabKey.
+!
+
 enforceContentsDropForFiles
     enforceContentsDropForFiles isNil ifTrue:[
 	enforceContentsDropForFiles := true asValue.
@@ -4107,12 +4132,13 @@
 widgetList
 
     ^  #(
-	'All'
-	'Labels'
-	'Buttons'
-	'Lists'
-	'Menus'
-	'Edited Text'
+        'All' 
+        'Labels' 
+        'Buttons' 
+        'Lists' 
+        'Menus' 
+        'Edited Text'
+        'Others'
        )
 ! !
 
@@ -4218,408 +4244,438 @@
 
     <resource: #canvas>
 
-    ^
-     #(FullSpec
-	name: windowSpec
-	window:
-       (WindowSpec
-	  label: 'Font Settings'
-	  name: 'Font Settings'
-	  min: (Point 10 10)
-	  bounds: (Rectangle 0 0 512 657)
-	)
-	component:
-       (SpecCollection
-	  collection: (
-	   (VerticalPanelViewSpec
-	      name: 'VerticalPanel1'
-	      layout: (LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
-	      horizontalLayout: fitSpace
-	      verticalLayout: topSpace
-	      horizontalSpace: 3
-	      verticalSpace: 3
-	      component:
-	     (SpecCollection
-		collection: (
-		 (LabelSpec
-		    label: 'Label'
-		    name: 'Label3'
-		    style: labelFont
-		    translateLabel: true
-		    labelChannel: infoText
-		    resizeForLabel: false
-		    adjust: left
-		    extent: (Point 506 132)
-		  )
-		 (ViewSpec
-		    name: 'CodeBox'
-		    component:
-		   (SpecCollection
-		      collection: (
-		       (LabelSpec
-			  label: 'Code'
-			  name: 'Label1'
-			  layout: (LayoutFrame 0 0.0 0 0 0 1.0 20 0)
-			  translateLabel: true
-			  adjust: left
-			)
-		       (LabelSpec
-			  label: 'Text Font'
-			  name: 'Label2'
-			  layout: (LayoutFrame 110 0 22 0 -5 1 44 0)
-			  translateLabel: true
-			  labelChannel: textFontLabelHolder
-			  adjust: left
-			  postBuildCallback: postBuildTextFontLabel:
-			)
-		       (ActionButtonSpec
-			  label: 'Change...'
-			  name: 'Button1'
-			  layout: (LayoutFrame 0 0.0 22 0 105 0 44 0)
-			  translateLabel: true
-			  tabable: true
-			  model: changeTextFont
-			)
-		       (DividerSpec
-			  name: 'Separator11'
-			  layout: (LayoutFrame 0 0.0 -3 1 0 1.0 0 1)
-			)
-		       )
-
-		    )
-		    extent: (Point 506 50)
-		  )
-		 (ViewSpec
-		    name: 'InputFieldsBox'
-		    component:
-		   (SpecCollection
-		      collection: (
-		       (LabelSpec
-			  label: 'Input Fields'
-			  name: 'Input Fields'
-			  layout: (LayoutFrame 0 0.0 0 0 0 1.0 20 0)
-			  translateLabel: true
-			  adjust: left
-			)
-		       (LabelSpec
-			  label: 'InputFields Font'
-			  name: 'InputFieldsFont'
-			  layout: (LayoutFrame 110 0 22 0 -5 1 44 0)
-			  translateLabel: true
-			  labelChannel: inputFieldFontLabelHolder
-			  adjust: left
-			  postBuildCallback: postBuildInputFieldFontLabel:
-			)
-		       (ActionButtonSpec
-			  label: 'Change...'
-			  name: 'ChangeText'
-			  layout: (LayoutFrame 0 0.0 22 0 105 0 44 0)
-			  translateLabel: true
-			  tabable: true
-			  model: changeInputFieldFont
-			)
-		       (DividerSpec
-			  name: 'Separator10'
-			  layout: (LayoutFrame 0 0.0 -3 1 0 1.0 0 1)
-			)
-		       )
-
-		    )
-		    extent: (Point 506 50)
-		  )
-		 (ViewSpec
-		    name: 'ListsBox'
-		    component:
-		   (SpecCollection
-		      collection: (
-		       (LabelSpec
-			  label: 'Lists'
-			  name: 'Lists'
-			  layout: (LayoutFrame 0 0.0 0 0 0 1.0 20 0)
-			  translateLabel: true
-			  adjust: left
-			)
-		       (LabelSpec
-			  label: 'Lists Font'
-			  name: 'ListsFont'
-			  layout: (LayoutFrame 110 0 22 0 -5 1 44 0)
-			  translateLabel: true
-			  labelChannel: listsFontLabelHolder
-			  adjust: left
-			  postBuildCallback: postBuildListsFontLabel:
-			)
-		       (ActionButtonSpec
-			  label: 'Change...'
-			  name: 'ChangeLists'
-			  layout: (LayoutFrame 0 0.0 22 0 105 0 44 0)
-			  translateLabel: true
-			  tabable: true
-			  model: changeListsFont
-			)
-		       (DividerSpec
-			  name: 'Separator8'
-			  layout: (LayoutFrame 0 0.0 -3 1 0 1.0 0 1)
-			)
-		       )
-
-		    )
-		    extent: (Point 506 50)
-		  )
-		 (ViewSpec
-		    name: 'MenusBox'
-		    component:
-		   (SpecCollection
-		      collection: (
-		       (LabelSpec
-			  label: 'Menus'
-			  name: 'Menus'
-			  layout: (LayoutFrame 0 0.0 0 0 0 1.0 20 0)
-			  translateLabel: true
-			  adjust: left
-			)
-		       (LabelSpec
-			  label: 'Menus Font'
-			  name: 'MenusFont'
-			  layout: (LayoutFrame 110 0 22 0 -5 1 44 0)
-			  translateLabel: true
-			  labelChannel: menusFontLabelHolder
-			  adjust: left
-			  postBuildCallback: postBuildMenuesFontLabel:
-			)
-		       (ActionButtonSpec
-			  label: 'Change...'
-			  name: 'ChangeMenus'
-			  layout: (LayoutFrame 0 0.0 22 0 105 0 44 0)
-			  translateLabel: true
-			  tabable: true
-			  model: changeMenusFont
-			)
-		       (DividerSpec
-			  name: 'Separator9'
-			  layout: (LayoutFrame 0 0.0 -3 1 0 1.0 0 1)
-			)
-		       )
-
-		    )
-		    extent: (Point 506 50)
-		  )
-		 (ViewSpec
-		    name: 'LabelsBox'
-		    component:
-		   (SpecCollection
-		      collection: (
-		       (LabelSpec
-			  label: 'Labels'
-			  name: 'Labels'
-			  layout: (LayoutFrame 0 0.0 0 0 0 1.0 20 0)
-			  translateLabel: true
-			  adjust: left
-			)
-		       (LabelSpec
-			  label: 'Labels'
-			  name: 'LabelsFont'
-			  layout: (LayoutFrame 110 0 22 0 -5 1 44 0)
-			  translateLabel: true
-			  labelChannel: labelsFontLabelHolder
-			  adjust: left
-			  postBuildCallback: postBuildLabelsFontLabel:
-			)
-		       (ActionButtonSpec
-			  label: 'Change...'
-			  name: 'ChangeLabels'
-			  layout: (LayoutFrame 0 0.0 22 0 105 0 44 0)
-			  translateLabel: true
-			  tabable: true
-			  model: changeLabelsFont
-			)
-		       (DividerSpec
-			  name: 'Separator6'
-			  layout: (LayoutFrame 0 0.0 -3 1 0 1.0 0 1)
-			)
-		       )
-
-		    )
-		    extent: (Point 506 50)
-		  )
-		 (ViewSpec
-		    name: 'ButtonsBox'
-		    component:
-		   (SpecCollection
-		      collection: (
-		       (LabelSpec
-			  label: 'Buttons'
-			  name: 'Buttons'
-			  layout: (LayoutFrame 0 0.0 0 0 0 1.0 20 0)
-			  translateLabel: true
-			  adjust: left
-			)
-		       (LabelSpec
-			  label: 'Buttons Font'
-			  name: 'ButtonsFont'
-			  layout: (LayoutFrame 110 0 22 0 -5 1 44 0)
-			  translateLabel: true
-			  labelChannel: buttonsFontLabelHolder
-			  adjust: left
-			  postBuildCallback: postBuildButtonsFontLabel:
-			)
-		       (ActionButtonSpec
-			  label: 'Change...'
-			  name: 'Change Buttons'
-			  layout: (LayoutFrame 0 0.0 22 0 105 0 44 0)
-			  translateLabel: true
-			  tabable: true
-			  model: changeButtonsFont
-			)
-		       (DividerSpec
-			  name: 'Separator7'
-			  layout: (LayoutFrame 0 0.0 -3 1 0 1.0 0 1)
-			)
-		       )
-
-		    )
-		    extent: (Point 506 50)
-		  )
-		 (ViewSpec
-		    name: 'AllBox'
-		    component:
-		   (SpecCollection
-		      collection: (
-		       (LabelSpec
-			  label: 'All (Others)'
-			  name: 'All'
-			  layout: (LayoutFrame 0 0.0 0 0 0 1.0 20 0)
-			  translateLabel: true
-			  adjust: left
-			)
-		       (LabelSpec
-			  label: 'Label'
-			  name: 'AllFont'
-			  layout: (LayoutFrame 110 0 22 0 -5 1 44 0)
-			  translateLabel: true
-			  labelChannel: allFontLabelHolder
-			  adjust: left
-			  postBuildCallback: postBuildAllFontLabel:
-			)
-		       (ActionButtonSpec
-			  label: 'Change...'
-			  name: 'ChangeAll'
-			  layout: (LayoutFrame 0 0.0 22 0 105 0 44 0)
-			  translateLabel: true
-			  tabable: true
-			  model: changeAllFont
-			)
-		       (DividerSpec
-			  name: 'Separator1'
-			  layout: (LayoutFrame 0 0.0 -3 1 0 1.0 0 1)
-			)
-		       )
-
-		    )
-		    extent: (Point 506 50)
-		  )
-		 (CheckBoxSpec
-		    label: 'Linux font workaround: do not reset fonts on snapshot restart'
-		    name: 'LinuxFontWorkaroundBox'
-		    visibilityChannel: linuxFontWorkaroundVisible
-		    model: linuxFontWorkaround
-		    translateLabel: true
-		    extent: (Point 506 22)
-		  )
-		 (DividerSpec
-		    name: 'Separator12'
-		    visibilityChannel: linuxFontWorkaroundVisible
-		    extent: (Point 506 3)
-		  )
-		 (ViewSpec
-		    name: 'SpecialsBox'
-		    component:
-		   (SpecCollection
-		      collection: (
-		       (LabelSpec
-			  label: 'Common Settings:'
-			  name: 'Label4'
-			  layout: (LayoutFrame 0 0.0 11 0 0 1.0 33 0)
-			  translateLabel: true
-			  adjust: left
-			)
-		       (ActionButtonSpec
-			  label: 'Default'
-			  name: 'Button2'
-			  layout: (LayoutFrame 0 0.0 35 0 105 0 57 0)
-			  activeHelpKey: resetToDefault
-			  translateLabel: true
-			  tabable: true
-			  model: changeToDefault
-			)
-		       (ActionButtonSpec
-			  label: 'High Contrast'
-			  name: 'Button3'
-			  layout: (LayoutFrame 148 0.0 35 0 255 0 57 0)
-			  translateLabel: true
-			  tabable: true
-			  model: changeToHighContrast
-			  activeHelpKey: changeToHighContrast
-			)
-		       (ActionButtonSpec
-			  label: 'Big Fonts'
-			  name: 'Button4'
-			  layout: (LayoutFrame 260 0.0 35 0 365 0 57 0)
-			  translateLabel: true
-			  tabable: true
-			  model: changeToBigFonts
-			  activeHelpKey: changeToBigFonts
-			)
-		       (ActionButtonSpec
-			  label: 'Huge Fonts'
-			  name: 'Button5'
-			  layout: (LayoutFrame 370 0.0 35 0 475 0 57 0)
-			  translateLabel: true
-			  tabable: true
-			  model: changeToHugeFonts
-			  activeHelpKey: changeToHugeFonts
-			)
-		       (ActionButtonSpec
-			  label: 'ST/X Look'
-			  name: 'Button8'
-			  layout: (LayoutFrame 148 0.0 67 0 255 0 89 0)
-			  translateLabel: true
-			  tabable: true
-			  model: changeToSTXLook
-			  activeHelpKey: changeToSTXLook
-			)
-		       (ActionButtonSpec
-			  label: 'Squeak Look'
-			  name: 'Button6'
-			  layout: (LayoutFrame 260 0.0 67 0 367 0 89 0)
-			  translateLabel: true
-			  tabable: true
-			  model: changeToSqueakLook
-			  activeHelpKey: changeToSqueakLook
-			)
-		       (ActionButtonSpec
-			  label: 'V''Age Look'
-			  name: 'Button7'
-			  layout: (LayoutFrame 370 0.0 67 0 475 0 89 0)
-			  translateLabel: true
-			  tabable: true
-			  model: changeToVisualAgeLook
-			  activeHelpKey: changeToVisualAgeLook
-			)
-		       )
-
-		    )
-		    extent: (Point 506 94)
-		  )
-		 )
-
-	      )
-	    )
-	   )
-
-	)
-      )
-
-    "Modified: / 17-03-2012 / 11:44:29 / cg"
+    ^ 
+    #(FullSpec
+       name: windowSpec
+       window: 
+      (WindowSpec
+         label: 'Font Settings'
+         name: 'Font Settings'
+         min: (Point 10 10)
+         bounds: (Rectangle 0 0 572 663)
+       )
+       component: 
+      (SpecCollection
+         collection: (
+          (VerticalPanelViewSpec
+             name: 'VerticalPanel1'
+             layout: (LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
+             horizontalLayout: fitSpace
+             verticalLayout: topSpace
+             horizontalSpace: 3
+             verticalSpace: 3
+             component: 
+            (SpecCollection
+               collection: (
+                (TextEditorSpec
+                   name: 'TextEditor1'
+                   style: labelFont
+                   model: infoText
+                   hasHorizontalScrollBar: true
+                   hasVerticalScrollBar: true
+                   miniScrollerHorizontal: true
+                   miniScrollerVertical: true
+                   isReadOnly: true
+                   hasKeyboardFocusInitially: false
+                   extent: (Point 566 132)
+                   viewClassName: 'ListView'
+                 )
+                (ViewSpec
+                   name: 'CodeBox'
+                   component: 
+                  (SpecCollection
+                     collection: (
+                      (LabelSpec
+                         label: 'Code'
+                         name: 'Label1'
+                         layout: (LayoutFrame 0 0.0 0 0 0 1.0 20 0)
+                         translateLabel: true
+                         adjust: left
+                       )
+                      (LabelSpec
+                         label: 'Text Font'
+                         name: 'Label2'
+                         layout: (LayoutFrame 110 0 22 0 -5 1 44 0)
+                         translateLabel: true
+                         labelChannel: textFontLabelHolder
+                         adjust: left
+                         postBuildCallback: postBuildTextFontLabel:
+                       )
+                      (ActionButtonSpec
+                         label: 'Change...'
+                         name: 'Button1'
+                         layout: (LayoutFrame 0 0.0 22 0 105 0 44 0)
+                         translateLabel: true
+                         tabable: true
+                         model: changeTextFont
+                       )
+                      (DividerSpec
+                         name: 'Separator11'
+                         layout: (LayoutFrame 0 0.0 -3 1 0 1.0 0 1)
+                       )
+                      )
+                    
+                   )
+                   extent: (Point 566 50)
+                 )
+                (ViewSpec
+                   name: 'InputFieldsBox'
+                   component: 
+                  (SpecCollection
+                     collection: (
+                      (LabelSpec
+                         label: 'Input Fields'
+                         name: 'Input Fields'
+                         layout: (LayoutFrame 0 0.0 0 0 0 1.0 20 0)
+                         translateLabel: true
+                         adjust: left
+                       )
+                      (LabelSpec
+                         label: 'InputFields Font'
+                         name: 'InputFieldsFont'
+                         layout: (LayoutFrame 110 0 22 0 -5 1 44 0)
+                         translateLabel: true
+                         labelChannel: inputFieldFontLabelHolder
+                         adjust: left
+                         postBuildCallback: postBuildInputFieldFontLabel:
+                       )
+                      (ActionButtonSpec
+                         label: 'Change...'
+                         name: 'ChangeText'
+                         layout: (LayoutFrame 0 0.0 22 0 105 0 44 0)
+                         translateLabel: true
+                         tabable: true
+                         model: changeInputFieldFont
+                       )
+                      (DividerSpec
+                         name: 'Separator10'
+                         layout: (LayoutFrame 0 0.0 -3 1 0 1.0 0 1)
+                       )
+                      )
+                    
+                   )
+                   extent: (Point 566 50)
+                 )
+                (ViewSpec
+                   name: 'ListsBox'
+                   component: 
+                  (SpecCollection
+                     collection: (
+                      (LabelSpec
+                         label: 'Lists'
+                         name: 'Lists'
+                         layout: (LayoutFrame 0 0.0 0 0 0 1.0 20 0)
+                         translateLabel: true
+                         adjust: left
+                       )
+                      (LabelSpec
+                         label: 'Lists Font'
+                         name: 'ListsFont'
+                         layout: (LayoutFrame 110 0 22 0 -5 1 44 0)
+                         translateLabel: true
+                         labelChannel: listsFontLabelHolder
+                         adjust: left
+                         postBuildCallback: postBuildListsFontLabel:
+                       )
+                      (ActionButtonSpec
+                         label: 'Change...'
+                         name: 'ChangeLists'
+                         layout: (LayoutFrame 0 0.0 22 0 105 0 44 0)
+                         translateLabel: true
+                         tabable: true
+                         model: changeListsFont
+                       )
+                      (DividerSpec
+                         name: 'Separator8'
+                         layout: (LayoutFrame 0 0.0 -3 1 0 1.0 0 1)
+                       )
+                      )
+                    
+                   )
+                   extent: (Point 566 50)
+                 )
+                (ViewSpec
+                   name: 'MenusBox'
+                   component: 
+                  (SpecCollection
+                     collection: (
+                      (LabelSpec
+                         label: 'Menus'
+                         name: 'Menus'
+                         layout: (LayoutFrame 0 0.0 0 0 0 1.0 20 0)
+                         translateLabel: true
+                         adjust: left
+                       )
+                      (LabelSpec
+                         label: 'Menus Font'
+                         name: 'MenusFont'
+                         layout: (LayoutFrame 110 0 22 0 -5 1 44 0)
+                         translateLabel: true
+                         labelChannel: menusFontLabelHolder
+                         adjust: left
+                         postBuildCallback: postBuildMenuesFontLabel:
+                       )
+                      (ActionButtonSpec
+                         label: 'Change...'
+                         name: 'ChangeMenus'
+                         layout: (LayoutFrame 0 0.0 22 0 105 0 44 0)
+                         translateLabel: true
+                         tabable: true
+                         model: changeMenusFont
+                       )
+                      (DividerSpec
+                         name: 'Separator9'
+                         layout: (LayoutFrame 0 0.0 -3 1 0 1.0 0 1)
+                       )
+                      )
+                    
+                   )
+                   extent: (Point 566 50)
+                 )
+                (ViewSpec
+                   name: 'LabelsBox'
+                   component: 
+                  (SpecCollection
+                     collection: (
+                      (LabelSpec
+                         label: 'Labels'
+                         name: 'Labels'
+                         layout: (LayoutFrame 0 0.0 0 0 0 1.0 20 0)
+                         translateLabel: true
+                         adjust: left
+                       )
+                      (LabelSpec
+                         label: 'Labels'
+                         name: 'LabelsFont'
+                         layout: (LayoutFrame 110 0 22 0 -5 1 44 0)
+                         translateLabel: true
+                         labelChannel: labelsFontLabelHolder
+                         adjust: left
+                         postBuildCallback: postBuildLabelsFontLabel:
+                       )
+                      (ActionButtonSpec
+                         label: 'Change...'
+                         name: 'ChangeLabels'
+                         layout: (LayoutFrame 0 0.0 22 0 105 0 44 0)
+                         translateLabel: true
+                         tabable: true
+                         model: changeLabelsFont
+                       )
+                      (DividerSpec
+                         name: 'Separator6'
+                         layout: (LayoutFrame 0 0.0 -3 1 0 1.0 0 1)
+                       )
+                      )
+                    
+                   )
+                   extent: (Point 566 50)
+                 )
+                (ViewSpec
+                   name: 'ButtonsBox'
+                   component: 
+                  (SpecCollection
+                     collection: (
+                      (LabelSpec
+                         label: 'Buttons'
+                         name: 'Buttons'
+                         layout: (LayoutFrame 0 0.0 0 0 0 1.0 20 0)
+                         translateLabel: true
+                         adjust: left
+                       )
+                      (LabelSpec
+                         label: 'Buttons Font'
+                         name: 'ButtonsFont'
+                         layout: (LayoutFrame 110 0 22 0 -5 1 44 0)
+                         translateLabel: true
+                         labelChannel: buttonsFontLabelHolder
+                         adjust: left
+                         postBuildCallback: postBuildButtonsFontLabel:
+                       )
+                      (ActionButtonSpec
+                         label: 'Change...'
+                         name: 'Change Buttons'
+                         layout: (LayoutFrame 0 0.0 22 0 105 0 44 0)
+                         translateLabel: true
+                         tabable: true
+                         model: changeButtonsFont
+                       )
+                      (DividerSpec
+                         name: 'Separator7'
+                         layout: (LayoutFrame 0 0.0 -3 1 0 1.0 0 1)
+                       )
+                      )
+                    
+                   )
+                   extent: (Point 566 50)
+                 )
+                (ViewSpec
+                   name: 'OtherBox'
+                   component: 
+                  (SpecCollection
+                     collection: (
+                      (LabelSpec
+                         label: 'All Others'
+                         name: 'Label5'
+                         layout: (LayoutFrame 0 0.0 0 0 0 1.0 20 0)
+                         translateLabel: true
+                         adjust: left
+                       )
+                      (LabelSpec
+                         label: 'Label'
+                         name: 'Label6'
+                         layout: (LayoutFrame 110 0 22 0 -5 1 44 0)
+                         translateLabel: true
+                         labelChannel: otherFontLabelHolder
+                         adjust: left
+                         postBuildCallback: postBuildOtherFontLabel:
+                       )
+                      (ActionButtonSpec
+                         label: 'Change...'
+                         name: 'Button9'
+                         layout: (LayoutFrame 0 0.0 22 0 105 0 44 0)
+                         translateLabel: true
+                         tabable: true
+                         model: changeOtherFont
+                       )
+                      (DividerSpec
+                         name: 'Separator13'
+                         layout: (LayoutFrame 0 0.0 -3 1 0 1.0 0 1)
+                       )
+                      )
+                    
+                   )
+                   extent: (Point 566 49)
+                 )
+                (ViewSpec
+                   name: 'AllBox'
+                   component: 
+                  (SpecCollection
+                     collection: (
+                      (LabelSpec
+                         label: 'All'
+                         name: 'All'
+                         layout: (LayoutFrame 0 0.0 0 0 0 1.0 20 0)
+                         translateLabel: true
+                         adjust: left
+                       )
+                      (ActionButtonSpec
+                         label: 'Change...'
+                         name: 'ChangeAll'
+                         layout: (LayoutFrame 0 0.0 22 0 105 0 44 0)
+                         translateLabel: true
+                         tabable: true
+                         model: changeAllFont
+                       )
+                      (DividerSpec
+                         name: 'Separator1'
+                         layout: (LayoutFrame 0 0.0 -3 1 0 1.0 0 1)
+                       )
+                      )
+                    
+                   )
+                   extent: (Point 566 50)
+                 )
+                (CheckBoxSpec
+                   label: 'Linux font workaround: do not reset fonts on snapshot restart'
+                   name: 'LinuxFontWorkaroundBox'
+                   visibilityChannel: linuxFontWorkaroundVisible
+                   model: linuxFontWorkaround
+                   translateLabel: true
+                   extent: (Point 566 22)
+                 )
+                (DividerSpec
+                   name: 'Separator12'
+                   visibilityChannel: linuxFontWorkaroundVisible
+                   extent: (Point 566 3)
+                 )
+                (ViewSpec
+                   name: 'SpecialsBox'
+                   component: 
+                  (SpecCollection
+                     collection: (
+                      (LabelSpec
+                         label: 'Common Settings:'
+                         name: 'Label4'
+                         layout: (LayoutFrame 0 0.0 11 0 0 1.0 33 0)
+                         translateLabel: true
+                         adjust: left
+                       )
+                      (ActionButtonSpec
+                         label: 'Default'
+                         name: 'Button2'
+                         layout: (LayoutFrame 0 0.0 35 0 130 0 57 0)
+                         activeHelpKey: resetToDefault
+                         translateLabel: true
+                         tabable: true
+                         model: changeToDefault
+                       )
+                      (ActionButtonSpec
+                         label: 'High Contrast'
+                         name: 'Button3'
+                         layout: (LayoutFrame 148 0.0 35 0 278 0 57 0)
+                         activeHelpKey: changeToHighContrast
+                         translateLabel: true
+                         tabable: true
+                         model: changeToHighContrast
+                       )
+                      (ActionButtonSpec
+                         label: 'Big Fonts'
+                         name: 'Button4'
+                         layout: (LayoutFrame 283 0.0 35 0 413 0 57 0)
+                         activeHelpKey: changeToBigFonts
+                         translateLabel: true
+                         tabable: true
+                         model: changeToBigFonts
+                       )
+                      (ActionButtonSpec
+                         label: 'Huge Fonts'
+                         name: 'Button5'
+                         layout: (LayoutFrame 418 0.0 35 0 548 0 57 0)
+                         activeHelpKey: changeToHugeFonts
+                         translateLabel: true
+                         tabable: true
+                         model: changeToHugeFonts
+                       )
+                      (ActionButtonSpec
+                         label: 'ST/X Look'
+                         name: 'Button8'
+                         layout: (LayoutFrame 148 0.0 67 0 278 0 89 0)
+                         activeHelpKey: changeToSTXLook
+                         translateLabel: true
+                         tabable: true
+                         model: changeToSTXLook
+                       )
+                      (ActionButtonSpec
+                         label: 'Squeak Look'
+                         name: 'Button6'
+                         layout: (LayoutFrame 283 0.0 67 0 413 0 89 0)
+                         activeHelpKey: changeToSqueakLook
+                         translateLabel: true
+                         tabable: true
+                         model: changeToSqueakLook
+                       )
+                      (ActionButtonSpec
+                         label: 'V''Age Look'
+                         name: 'Button7'
+                         layout: (LayoutFrame 418 0.0 67 0 548 0 89 0)
+                         activeHelpKey: changeToVisualAgeLook
+                         translateLabel: true
+                         tabable: true
+                         model: changeToVisualAgeLook
+                       )
+                      )
+                    
+                   )
+                   extent: (Point 566 94)
+                 )
+                )
+              
+             )
+           )
+          )
+        
+       )
+     )
 ! !
 
 !AbstractSettingsApplication::FontSettingsAppl methodsFor:'accessing'!
@@ -4637,6 +4693,7 @@
 basicReadFontSettings
 "/    View readStyleSheetAndUpdateAllStyleCaches.
     self allOfThem value:View defaultFont.
+    self otherDef value:View defaultFont.
     self labelDef value:Label defaultFont.
     self buttonDef value:Button defaultFont.
     self listDef value:SelectionInListView defaultFont.
@@ -4660,8 +4717,12 @@
 basicSaveSettings
     |fn|
 
-    View defaultFont:self allOfThem value.
-    Label defaultFont:self labelDef value.
+    fn := self otherDef value.
+    View withAllSubclasses do:[:cls | cls defaultFont:fn].
+
+    fn := self labelDef value.
+    Label defaultFont:fn.
+    CheckBox defaultFont:fn.
 
     fn := self buttonDef value.
     Button defaultFont:fn.
@@ -4691,18 +4752,19 @@
 changeAllFont
     |f|
 
-    f := FontPanel
-	fontFromUserInitial:(self allOfThem value)
-		      title:(resources string:'Font for %1' with:'All')
-		     filter:filter.
+    f := FontPanel 
+        fontFromUserInitial:(self allOfThem value) 
+                      title:(resources string:'Font for %1' with:'All')
+                     filter:filter.
     f notNil ifTrue:[
-	self allOfThem value:(f onDevice:allLabel device).
-	self labelDef value:(f onDevice:labelLabel device).
-	self buttonDef value:(f onDevice:buttonsLabel device).
-	self listDef value:(f onDevice:listsLabel device).
-	self menuDef value:(f onDevice:menuLabel device).
-	self textDef value:(f onDevice:textLabel device).
-	self inputFieldDef value:(f onDevice:inputFieldLabel device).
+        "/ self allOfThem value:(f onDevice:allLabel device).
+        self otherDef value:(f onDevice:otherLabel device).
+        self labelDef value:(f onDevice:labelLabel device).
+        self buttonDef value:(f onDevice:buttonsLabel device).
+        self listDef value:(f onDevice:listsLabel device).
+        self menuDef value:(f onDevice:menuLabel device).
+        self textDef value:(f onDevice:textLabel device).
+        self inputFieldDef value:(f onDevice:inputFieldLabel device).
     ]
 !
 
@@ -4767,6 +4829,18 @@
     ]
 !
 
+changeOtherFont
+    |f|
+
+    f := FontPanel 
+        fontFromUserInitial:(self otherDef value) 
+                      title:(resources string:'Font for %1' with:'All Others')
+                     filter:filter.
+    f notNil ifTrue:[
+        self otherDef value:(f onDevice:otherLabel device).
+    ]
+!
+
 changeTextFont
     |f|
 
@@ -4807,6 +4881,8 @@
     self listDef value:variableFont.
     self labelDef value:variableFont.
     self buttonDef value:variableFont.
+    self otherDef value:variableFont.
+
     self allOfThem value:variableFont.
 
     "Created: / 06-02-2012 / 12:18:34 / cg"
@@ -4829,8 +4905,8 @@
 
 "/    fixFont := (Font family:'Courier New' face:'bold' style:'roman' size:16).
 "/    variableFont := (Font family:'Arial' face:'bold' style:'roman' size:16).
-    fixFont := (TextView defaultFont asSize:16) asFace:'bold'.
-    variableFont := (Label defaultFont asSize:16) asFace:'bold'.
+    fixFont := (TextView defaultFont asSize:18) asFace:'bold'.
+    variableFont := (Label defaultFont asSize:18) asFace:'bold'.
     self changeToFix:fixFont variable:variableFont.
 
     "Created: / 17-03-2012 / 09:06:18 / cg"
@@ -5008,6 +5084,22 @@
     ^ menusFontLabelHolder.
 !
 
+otherDef
+    otherDef isNil ifTrue:[
+        otherDef := ValueHolder new.
+        otherDef addDependent:self.
+    ].
+    ^ otherDef
+!
+
+otherFontLabelHolder
+
+    otherFontLabelHolder isNil ifTrue:[
+        otherFontLabelHolder := '' asValue.
+    ].
+    ^ otherFontLabelHolder.
+!
+
 textDef
     "return/create the 'textDef' value holder (automatically generated)"
 
@@ -5029,41 +5121,52 @@
 !AbstractSettingsApplication::FontSettingsAppl methodsFor:'change & update'!
 
 update:something with:aParameter from:changedObject
+    |whichLabel whichFontLabelHolder|
+
     builder notNil ifTrue:[
-	changedObject == self allOfThem ifTrue:[
-	    self updateFontOfLabel:allLabel andFontNameHolder:(self allFontLabelHolder) from:changedObject.
-	    ^ self.
-	].
-	changedObject == self labelDef ifTrue:[
-	    self updateFontOfLabel:labelLabel andFontNameHolder:(self labelsFontLabelHolder) from:changedObject.
-	    ^ self.
-	].
-	changedObject == self buttonDef ifTrue:[
-	    self updateFontOfLabel:buttonsLabel andFontNameHolder:(self buttonsFontLabelHolder) from:changedObject.
-	    ^ self.
-	].
-	changedObject == self listDef ifTrue:[
-	    self updateFontOfLabel:listsLabel andFontNameHolder:(self listsFontLabelHolder) from:changedObject.
-	    ^ self.
-	].
-	changedObject == self menuDef ifTrue:[
-	    self updateFontOfLabel:menuLabel andFontNameHolder:(self menusFontLabelHolder) from:changedObject.
-	    ^ self.
-	].
-	changedObject == self textDef ifTrue:[
-	    self updateFontOfLabel:textLabel andFontNameHolder:(self textFontLabelHolder) from:changedObject.
-	    ^ self.
-	].
-	changedObject == self inputFieldDef ifTrue:[
-	    self updateFontOfLabel:inputFieldLabel andFontNameHolder:(self inputFieldFontLabelHolder) from:changedObject.
-	    ^ self.
-	].
+        changedObject == self allOfThem ifTrue:[
+            whichLabel := allLabel.
+            whichFontLabelHolder := self allFontLabelHolder.
+        ].
+        changedObject == self otherDef ifTrue:[
+            whichLabel := otherLabel.
+            whichFontLabelHolder := self otherFontLabelHolder.
+        ].
+        changedObject == self labelDef ifTrue:[
+            whichLabel := labelLabel.
+            whichFontLabelHolder := self labelsFontLabelHolder.
+        ].
+        changedObject == self buttonDef ifTrue:[
+            whichLabel := buttonsLabel.
+            whichFontLabelHolder := self buttonsFontLabelHolder.
+        ].
+        changedObject == self listDef ifTrue:[
+            whichLabel := listsLabel.
+            whichFontLabelHolder := self listsFontLabelHolder.
+        ].
+        changedObject == self menuDef ifTrue:[
+            whichLabel := menuLabel.
+            whichFontLabelHolder := self menusFontLabelHolder.
+        ].
+        changedObject == self textDef ifTrue:[
+            whichLabel := textLabel.
+            whichFontLabelHolder := self textFontLabelHolder.
+        ].
+        changedObject == self inputFieldDef ifTrue:[
+            whichLabel := inputFieldLabel.
+            whichFontLabelHolder := self inputFieldFontLabelHolder.
+        ].
+        whichLabel notNil ifTrue:[
+            self updateFontOfLabel:whichLabel andFontNameHolder:whichFontLabelHolder from:changedObject.
+            ^ self.
+        ]
     ].
     super update:something with:aParameter from:changedObject
 !
 
 updateAllFontLabels
     self update:#value with:nil from:self allOfThem.
+    self update:#value with:nil from:self otherDef.
     self update:#value with:nil from:self labelDef.
     self update:#value with:nil from:self buttonDef.
     self update:#value with:nil from:self listDef.
@@ -5124,6 +5227,11 @@
     menuLabel := aWidget.
 !
 
+postBuildOtherFontLabel:aWidget
+
+    otherLabel := aWidget.
+!
+
 postBuildTextFontLabel:aWidget
 
     textLabel := aWidget.
@@ -5138,6 +5246,7 @@
 !AbstractSettingsApplication::FontSettingsAppl methodsFor:'queries'!
 
 hasUnsavedChanges
+    self otherDef value ~= View defaultFont ifTrue:[^ true].
     self labelDef value ~= Label defaultFont ifTrue:[^ true].
     self buttonDef value ~= Button defaultFont ifTrue:[^ true].
     self listDef value ~= SelectionInListView defaultFont ifTrue:[^ true].
@@ -6137,93 +6246,98 @@
 
     <resource: #canvas>
 
-    ^
-     #(FullSpec
-	name: windowSpec
-	window:
-       (WindowSpec
-	  label: 'Keyboard Mapping Settings'
-	  name: 'Keyboard Mapping Settings'
-	  min: (Point 10 10)
-	  bounds: (Rectangle 0 0 491 653)
-	)
-	component:
-       (SpecCollection
-	  collection: (
-	   (VariableVerticalPanelSpec
-	      name: 'VariableVerticalPanel1'
-	      layout: (LayoutFrame 0 0.0 80 0 0 1.0 0 1.0)
-	      component:
-	     (SpecCollection
-		collection: (
-		 (VariableHorizontalPanelSpec
-		    name: 'VariableHorizontalPanel1'
-		    component:
-		   (SpecCollection
-		      collection: (
-		       (SequenceViewSpec
-			  name: 'RawKeyList'
-			  model: selectedRawKey
-			  hasHorizontalScrollBar: true
-			  hasVerticalScrollBar: true
-			  useIndex: false
-			  sequenceList: rawKeyList
-			)
-		       (SequenceViewSpec
-			  name: 'FunctionKeyList'
-			  model: selectedFunctionKey
-			  hasHorizontalScrollBar: true
-			  hasVerticalScrollBar: true
-			  useIndex: false
-			  sequenceList: functionKeyList
-			)
-		       )
-
-		    )
-		    handles: (Any 0.5 1.0)
-		  )
-		 (ViewSpec
-		    name: 'Box1'
-		    component:
-		   (SpecCollection
-		      collection: (
-		       (TextEditorSpec
-			  name: 'MacroText'
-			  layout: (LayoutFrame 0 0.0 20 0 0 1.0 0 1.0)
-			  model: macroTextHolder
-			  hasHorizontalScrollBar: true
-			  hasVerticalScrollBar: true
-			  isReadOnly: true
-			)
-		       (LabelSpec
-			  label: 'Macro text (if any):'
-			  name: 'MacroTextLabel'
-			  layout: (LayoutFrame 0 0.0 0 0 0 1.0 20 0)
-			  translateLabel: true
-			  adjust: left
-			)
-		       )
-
-		    )
-		  )
-		 )
-
-	      )
-	      handles: (Any 0.5 1.0)
-	    )
-	   (LabelSpec
-	      label: 'NoticeText'
-	      name: 'Text'
-	      layout: (LayoutFrame 0 0.0 0 0.0 0 1.0 80 0)
-	      translateLabel: true
-	      labelChannel: labelTextHolder
-	      resizeForLabel: true
-	      adjust: left
-	    )
-	   )
-
-	)
-      )
+    ^ 
+    #(FullSpec
+       name: windowSpec
+       window: 
+      (WindowSpec
+         label: 'Keyboard Mapping Settings'
+         name: 'Keyboard Mapping Settings'
+         min: (Point 10 10)
+         bounds: (Rectangle 0 0 491 653)
+       )
+       component: 
+      (SpecCollection
+         collection: (
+          (TextEditorSpec
+             name: 'Text'
+             layout: (LayoutFrame 0 0.0 0 0.0 0 1.0 100 0)
+             enableChannel: false
+             model: labelTextHolder
+             hasHorizontalScrollBar: true
+             hasVerticalScrollBar: true
+             miniScrollerHorizontal: true
+             miniScrollerVertical: true
+             isReadOnly: true
+             hasKeyboardFocusInitially: false
+             viewClassName: 'TextView'
+           )
+          (VariableVerticalPanelSpec
+             name: 'VariableVerticalPanel1'
+             layout: (LayoutFrame 0 0.0 100 0 0 1.0 0 1.0)
+             component: 
+            (SpecCollection
+               collection: (
+                (VariableHorizontalPanelSpec
+                   name: 'VariableHorizontalPanel1'
+                   component: 
+                  (SpecCollection
+                     collection: (
+                      (SequenceViewSpec
+                         name: 'RawKeyList'
+                         model: selectedRawKey
+                         hasHorizontalScrollBar: true
+                         hasVerticalScrollBar: true
+                         useIndex: false
+                         sequenceList: rawKeyList
+                       )
+                      (SequenceViewSpec
+                         name: 'FunctionKeyList'
+                         model: selectedFunctionKey
+                         hasHorizontalScrollBar: true
+                         hasVerticalScrollBar: true
+                         useIndex: false
+                         sequenceList: functionKeyList
+                       )
+                      )
+                    
+                   )
+                   handles: (Any 0.5 1.0)
+                 )
+                (ViewSpec
+                   name: 'Box1'
+                   component: 
+                  (SpecCollection
+                     collection: (
+                      (TextEditorSpec
+                         name: 'MacroText'
+                         layout: (LayoutFrame 0 0.0 20 0 0 1.0 0 1.0)
+                         model: macroTextHolder
+                         hasHorizontalScrollBar: true
+                         hasVerticalScrollBar: true
+                         isReadOnly: true
+                         hasKeyboardFocusInitially: false
+                       )
+                      (LabelSpec
+                         label: 'Macro text (if any):'
+                         name: 'MacroTextLabel'
+                         layout: (LayoutFrame 0 0.0 0 0 0 1.0 20 0)
+                         translateLabel: true
+                         adjust: left
+                       )
+                      )
+                    
+                   )
+                 )
+                )
+              
+             )
+             handles: (Any 0.5 1.0)
+           )
+          )
+        
+       )
+     )
 ! !
 
 !AbstractSettingsApplication::KbdMappingSettingsAppl methodsFor:'actions'!
@@ -18872,11 +18986,11 @@
 !AbstractSettingsApplication class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libtool/AbstractSettingsApplication.st,v 1.495 2013-09-03 13:14:52 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/AbstractSettingsApplication.st,v 1.498 2013-09-04 21:50:52 cg Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libtool/AbstractSettingsApplication.st,v 1.495 2013-09-03 13:14:52 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/AbstractSettingsApplication.st,v 1.498 2013-09-04 21:50:52 cg Exp $'
 !
 
 version_HG