class: FontMenu stable
authorStefan Vogel <sv@exept.de>
Fri, 16 May 2014 18:00:34 +0200
changeset 4583 6674ba919908
parent 4582 7192cf4f92ae
child 4584 f65232667eea
class: FontMenu class definition added: #helpSpec #symbolicFontsMenu changed: #fontSymbol: #initialize #menu fetch and show symbolic fonts from application
FontMenu.st
--- a/FontMenu.st	Fri May 16 09:12:53 2014 +0200
+++ b/FontMenu.st	Fri May 16 18:00:34 2014 +0200
@@ -13,7 +13,8 @@
 
 MenuPanel subclass:#FontMenu
 	instanceVariableNames:'fontAspects enabledChannel labelsAreEmphasized
-		fontIsSymbolicHolder fontSymbol allowSymbolicFontsHolder'
+		fontIsSymbolicHolder fontSymbol allowSymbolicFontsHolder
+		applicationClass'
 	classVariableNames:''
 	poolDictionaries:''
 	category:'Interface-UIPainter'
@@ -87,6 +88,29 @@
 "
 ! !
 
+!FontMenu class methodsFor:'help specs'!
+
+helpSpec
+    "This resource specification was automatically generated
+     by the UIHelpTool of ST/X."
+
+    "Do not manually edit this!! If it is corrupted,
+     the UIHelpTool may not be able to read the specification."
+
+    "
+     UIHelpTool openOnClass:FontMenu    
+    "
+
+    <resource: #help>
+
+    ^ super helpSpec addPairsFrom:#(
+
+#openFontChooser
+''
+
+)
+! !
+
 !FontMenu class methodsFor:'menu specs'!
 
 menu
@@ -96,6 +120,7 @@
     "Do not manually edit this!! If it is corrupted,
      the MenuEditor may not be able to read the specification."
 
+
     "
      MenuEditor new openOnClass:FontMenu andSelector:#menu
      (Menu new fromLiteralArrayEncoding:(FontMenu menu)) startUp
@@ -110,98 +135,41 @@
             activeHelpKey: useDefaultFontToggle
             label: 'enabled'
             itemValue: updateModel
-            translateLabel: true
             indication: enabledChannel
             labelImage: (ResourceRetriever SystemBrowser emptyIcon)
           )
          (MenuItem
             activeHelpKey: toggleSymbolicFont
             label: 'Symbolic'
-            translateLabel: true
             isVisible: allowSymbolicFontsAndEnabledHolder
             indication: fontIsSymbolicHolder
           )
          (MenuItem
             label: '-'
-            translateLabel: true
             isVisible: allowSymbolicFontsAndEnabledHolder
           )
          (MenuItem
-            activeHelpKey: symbolicFontName
             enabled: enabledChannel
             label: 'Symbolic Name'
             nameKey: fontSymbol
-            translateLabel: true
             isButton: true
             isVisible: allowSymbolicFontsAndFontIsSymbolicHolder
-            submenu: 
-           (Menu
-              (
-               (MenuItem
-                  label: 'labelFont'
-                  itemValue: fontSymbol:
-                  translateLabel: true
-                  argument: labelFont
-                )
-               (MenuItem
-                  label: 'textFont'
-                  itemValue: fontSymbol:
-                  translateLabel: true
-                  argument: textFont
-                )
-               (MenuItem
-                  label: 'inputFont'
-                  itemValue: fontSymbol:
-                  translateLabel: true
-                  argument: inputFont
-                )
-               (MenuItem
-                  label: 'buttonFont'
-                  itemValue: fontSymbol:
-                  translateLabel: true
-                  argument: buttonFont
-                )
-               (MenuItem
-                  label: 'listFont'
-                  itemValue: fontSymbol:
-                  translateLabel: true
-                  argument: listFont
-                )
-               (MenuItem
-                  label: 'menuFont'
-                  itemValue: fontSymbol:
-                  translateLabel: true
-                  argument: menuFont
-                )
-               (MenuItem
-                  label: '-'
-                )
-               (MenuItem
-                  label: 'Other...'
-                  itemValue: launchFontSymbolDialog
-                  translateLabel: true
-                )
-               )
-              nil
-              nil
-            )
+            submenuChannel: symbolicFontsMenu
           )
          (MenuItem
             activeHelpKey: openFontChooser
             enabled: enabledChannel
             label: 'Choose...'
             itemValue: openFontChooser
-            translateLabel: true
+            isButton: true
             isVisible: enabledAndFontIsNotSymbolicHolder
             labelImage: (ResourceRetriever XPToolbarIconLibrary fontIcon)
-            isButton: true
           )
          (MenuItem
             activeHelpKey: concreteFontsFamily
             enabled: enabledChannel
             label: 'Family'
             nameKey: fontFamily
-            translateLabel: true
             isButton: true
             isVisible: fontIsNotSymbolicHolder
             submenu: 
@@ -210,37 +178,31 @@
                (MenuItem
                   label: 'helvetica'
                   itemValue: fontFamily:
-                  translateLabel: true
                   argument: helvetica
                 )
                (MenuItem
                   label: 'courier'
                   itemValue: fontFamily:
-                  translateLabel: true
                   argument: courier
                 )
                (MenuItem
                   label: 'times'
                   itemValue: fontFamily:
-                  translateLabel: true
                   argument: times
                 )
                (MenuItem
                   label: 'clean'
                   itemValue: fontFamily:
-                  translateLabel: true
                   argument: clean
                 )
                (MenuItem
                   label: 'fixed'
                   itemValue: fontFamily:
-                  translateLabel: true
                   argument: fixed
                 )
                (MenuItem
                   label: 'lucida'
                   itemValue: fontFamily:
-                  translateLabel: true
                   argument: lucida
                 )
                (MenuItem
@@ -249,7 +211,6 @@
                (MenuItem
                   label: 'Other...'
                   itemValue: launchFontFamilyDialog
-                  translateLabel: true
                 )
                )
               nil
@@ -261,7 +222,6 @@
             enabled: enabledChannel
             label: 'Face'
             nameKey: fontFace
-            translateLabel: true
             isButton: true
             isVisible: fontIsNotSymbolicHolder
             submenu: 
@@ -270,13 +230,11 @@
                (MenuItem
                   label: 'bold'
                   itemValue: fontFace:
-                  translateLabel: true
                   argument: bold
                 )
                (MenuItem
                   label: 'medium'
                   itemValue: fontFace:
-                  translateLabel: true
                   argument: medium
                 )
                (MenuItem
@@ -285,7 +243,6 @@
                (MenuItem
                   label: 'Other...'
                   itemValue: launchFontFaceDialog
-                  translateLabel: true
                 )
                )
               nil
@@ -297,7 +254,6 @@
             enabled: enabledChannel
             label: 'Style'
             nameKey: fontStyle
-            translateLabel: true
             isButton: true
             isVisible: fontIsNotSymbolicHolder
             submenu: 
@@ -306,19 +262,16 @@
                (MenuItem
                   label: 'roman'
                   itemValue: fontStyle:
-                  translateLabel: true
                   argument: roman
                 )
                (MenuItem
                   label: 'italic'
                   itemValue: fontStyle:
-                  translateLabel: true
                   argument: italic
                 )
                (MenuItem
                   label: 'oblique'
                   itemValue: fontStyle:
-                  translateLabel: true
                   argument: oblique
                 )
                (MenuItem
@@ -327,7 +280,6 @@
                (MenuItem
                   label: 'Other...'
                   itemValue: launchFontStyleDialog
-                  translateLabel: true
                 )
                )
               nil
@@ -339,7 +291,6 @@
             enabled: enabledChannel
             label: 'Size'
             nameKey: fontSize
-            translateLabel: true
             isButton: true
             isVisible: fontIsNotSymbolicHolder
             submenu: 
@@ -348,55 +299,46 @@
                (MenuItem
                   label: '6'
                   itemValue: fontSize:
-                  translateLabel: true
                   argument: 6
                 )
                (MenuItem
                   label: '8'
                   itemValue: fontSize:
-                  translateLabel: true
                   argument: 8
                 )
                (MenuItem
                   label: '10'
                   itemValue: fontSize:
-                  translateLabel: true
                   argument: 10
                 )
                (MenuItem
                   label: '12'
                   itemValue: fontSize:
-                  translateLabel: true
                   argument: 12
                 )
                (MenuItem
                   label: '14'
                   itemValue: fontSize:
-                  translateLabel: true
                   argument: 14
                 )
                (MenuItem
                   label: '16'
                   itemValue: fontSize:
-                  translateLabel: true
                   argument: 16
                 )
                (MenuItem
                   label: '18'
                   itemValue: fontSize:
-                  translateLabel: true
                   argument: 18
                 )
                (MenuItem
                   label: '24'
                   itemValue: fontSize:
-                  translateLabel: true
                   argument: 24
                 )
                (MenuItem
                   label: '32'
                   itemValue: fontSize:
-                  translateLabel: true
                   argument: 32
                 )
                (MenuItem
@@ -405,7 +347,6 @@
                (MenuItem
                   label: 'Other...'
                   itemValue: launchFontSizeDialog
-                  translateLabel: true
                 )
                )
               nil
@@ -416,7 +357,6 @@
             enabled: enabledChannel
             label: 'Encoding'
             nameKey: fontEncoding
-            translateLabel: true
             isButton: true
             isVisible: fontIsNotSymbolicHolder
             submenu: 
@@ -425,13 +365,11 @@
                (MenuItem
                   label: 'latin-1'
                   itemValue: fontEncoding:
-                  translateLabel: true
                   argument: #'iso8859-1'
                 )
                (MenuItem
                   label: 'unicode'
                   itemValue: fontEncoding:
-                  translateLabel: true
                   argument: #'iso10646-1'
                 )
                (MenuItem
@@ -440,7 +378,6 @@
                (MenuItem
                   label: 'Other...'
                   itemValue: launchFontEncodingDialog
-                  translateLabel: true
                 )
                )
               nil
@@ -531,8 +468,12 @@
     ^ fontSymbol
 !
 
-fontSymbol:aSymbol
-    fontSymbol := aSymbol.
+fontSymbol:aSymbolOrMenuItem
+    aSymbolOrMenuItem isSymbol ifTrue:[
+        fontSymbol := aSymbolOrMenuItem.
+    ] ifFalse:[
+        fontSymbol := aSymbolOrMenuItem label asSymbol.
+    ].
 
     (self itemAt:#fontSymbol) label:fontSymbol.
     self updateModel.
@@ -725,7 +666,7 @@
     labelsAreEmphasized := false.
     self allowSymbolicFonts:false.
 
-    #( #fontFamily #fontFace #fontStyle #fontSize #fontEncoding) do:[:k|
+    #(fontFamily fontFace fontStyle fontSize fontEncoding) do:[:k|
         fontAspects at:k put:(nil asValue)
     ].
     self verticalLayout:false.
@@ -733,7 +674,30 @@
     enabledChannel := false asValue.
     receiver := self.
 
-    self fontDescription:(self font).
+    self fontDescription:self font.
+    applicationClass := UIPainter applicationClassQuery query ? ApplicationModel.
+! !
+
+!FontMenu methodsFor:'menu spec'!
+
+symbolicFontsMenu
+    |symbolicFontSelectors selectors menu menuLabels menuItems|
+
+    symbolicFontSelectors := (applicationClass methodsWithAnyResource:#(fontSpec)) collect:[:each| each selector].
+
+    symbolicFontSelectors sort.
+
+    selectors := Array new:symbolicFontSelectors size withAll:#fontSymbol:.
+    menuLabels := symbolicFontSelectors, #('-' 'Other...').
+    selectors add:nil; add:#launchFontSymbolDialog.
+
+    menu := Menu labelArray:menuLabels values:selectors.
+    menuItems := menu items.
+    symbolicFontSelectors keysAndValuesDo:[:eachIndex :eachFontSelector|
+        (menuItems at:eachIndex) font:(applicationClass resolveFont:eachFontSelector)
+    ].
+
+    ^ menu
 ! !
 
 !FontMenu methodsFor:'user actions'!
@@ -839,9 +803,10 @@
 !FontMenu class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libwidg2/FontMenu.st,v 1.29 2011-11-29 10:27:41 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libwidg2/FontMenu.st,v 1.30 2014-05-16 16:00:34 stefan Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libwidg2/FontMenu.st,v 1.29 2011-11-29 10:27:41 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libwidg2/FontMenu.st,v 1.30 2014-05-16 16:00:34 stefan Exp $'
 ! !
+