'From etoys2.1 of 26 July 2007 [latest update: #1607] on 10 September 2007 at 3:04:58 am'! "Change Set: eToyButtonFont-sw Date: 10 September 2007 Author: Scott Wallace Add separate system-font preferences specifically for etoys buttons and for etoys textual code, thus allowing non-etoy buttons and code in the IDE to be governed by non-competing conventions; this helps the IDE and the etoy environment co-exist better with regard to fonts."! !BasicButton methodsFor: 'initialization' stamp: 'sw 9/5/2007 15:31'! label: aString font: aFontOrNil "Set the receiver's label and font as indicated." | oldLabel m aFont | (oldLabel _ self findA: StringMorph) ifNotNil: [oldLabel delete]. aFont _ aFontOrNil ifNil: [Preferences standardEToysButtonFont]. m _ StringMorph contents: aString font: aFont. self extent: (m width + 6) @ (m height + 6). m position: self center - (m extent // 2). self addMorph: m. m lock ! ! !Debugger methodsFor: '*green' stamp: 'sw 9/10/2007 02:59'! buttonRowForPreDebugWindow: aDebugWindow "Answer a morph that will serve as the button row in a pre-debug window." | aRow aButton quads aFont | aRow _ AlignmentMorph newRow hResizing: #spaceFill. aRow beSticky. aRow on: #mouseDown send: #yourself to: self. "Avoid dragging window." aRow addMorphBack: AlignmentMorph newVariableTransparentSpacer. quads _ OrderedCollection withAll: self preDebugButtonQuads. ((self interruptedContext selector == #doesNotUnderstand:) and: [Preferences eToyFriendly not]) ifTrue: [quads add: { 'Create'. #createMethod. #magenta. 'create the missing method' }]. aFont := Preferences eToyFriendly ifFalse: [Preferences standardButtonFont] ifTrue: [Preferences standardEToysButtonFont]. quads do: [:quad | aButton _ SimpleButtonMorph new target: aDebugWindow. aButton color: Color transparent; borderWidth: 1. aButton actionSelector: quad second. aButton label: quad first font: aFont. aButton submorphs first color: (Color colorFrom: quad third). aButton setBalloonText: quad fourth. Preferences alternativeWindowLook ifTrue:[aButton borderWidth: 2; borderColor: #raised]. aRow addMorphBack: aButton. aRow addMorphBack: AlignmentMorph newVariableTransparentSpacer]. ^ aRow! ! !MethodMorph methodsFor: 'model access' stamp: 'sw 9/10/2007 02:20'! setText: aText "Copied down from PluggableTextMorph, to override font." scrollBar setValue: 0.0. textMorph ifNil: [textMorph _ self textMorphClass new contents: aText wrappedTo: self innerBounds width-6. textMorph setEditView: self. textMorph beAllFont: Preferences standardEToysCodeFont. scroller addMorph: textMorph] ifNotNil: [textMorph newContents: aText]. self hasUnacceptedEdits: false. self setScrollDeltas.! ! !MPEGMoviePlayerMorph methodsFor: 'private' stamp: 'sw 9/5/2007 15:26'! addPositionSliderIn: anExtent "private - add the position slider" | r | positionSlider _ SimpleSliderMorph new color: (Color r: 0.653 g: 0.802 b: 0.92); extent: ((anExtent x*0.8)@(anExtent y * 0.5)) asIntegerPoint; target: moviePlayer; actionSelector: #moviePosition:; adjustToValue: 0. r _ AlignmentMorph newRow color: Color transparent; layoutInset: 0; wrapCentering: #center; cellPositioning: #leftCenter; listCentering: #center; hResizing: #shrinkWrap; vResizing: #rigid; height: anExtent y. r addMorphBack: (StringMorph contents: 'start ' translated font: Preferences standardEToysButtonFont). r addMorphBack: positionSlider. r addMorphBack: (StringMorph contents: ' end' translated font: Preferences standardEToysButtonFont). self addMorphBack: r. ! ! !MPEGMoviePlayerMorph methodsFor: 'private' stamp: 'sw 9/5/2007 15:26'! addVolumeSliderIn: anExtent "private - add the volume slider" | r | volumeSlider _ SimpleSliderMorph new color: (Color r: 0.653 g: 0.802 b: 0.92); extent: ((anExtent x*0.8)@(anExtent y * 0.5)) asIntegerPoint; target: moviePlayer; actionSelector: #volume:; adjustToValue: 0.5. r _ AlignmentMorph newRow color: Color transparent; layoutInset: 0; wrapCentering: #center; cellPositioning: #leftCenter; listCentering: #center; hResizing: #shrinkWrap; vResizing: #rigid; height: anExtent y. r addMorphBack: (StringMorph contents: ' soft ' translated font: Preferences standardEToysButtonFont). r addMorphBack: volumeSlider. r addMorphBack: (StringMorph contents: ' loud' translated font: Preferences standardEToysButtonFont). self addMorphBack: r. ! ! !MPEGMoviePlayerMorph methodsFor: 'private' stamp: 'sw 9/5/2007 15:26'! buttonName: aString target: anObject action: selector "private - create a button" ^ SimpleButtonMorph new target: anObject; label: aString font: Preferences standardEToysButtonFont; actionSelector: selector; color: (Color gray: 0.8); "old color" fillStyle: self buttonFillStyle; borderWidth: 0; borderColor: #raised. ! ! !NebraskaServerMorph methodsFor: 'initialization' stamp: 'sw 9/5/2007 15:29'! rebuild | myServer toggle closeBox font | font _ StrikeFont familyName: #Palatino size: 14. self removeAllMorphs. self setColorsAndBorder. self updateCurrentStatusString. toggle _ SimpleHierarchicalListMorph new perform: ( fullDisplay ifTrue: [#expandedForm] ifFalse: [#notExpandedForm] ). closeBox _ SimpleButtonMorph new borderWidth: 0; label: 'X' font: Preferences standardEToysButtonFont; color: Color transparent; actionSelector: #delete; target: self; extent: 14@14; setBalloonText: 'End Nebrasks session'. self addARow: { self inAColumn: {closeBox}. self inAColumn: { UpdatingStringMorph new useStringFormat; target: self; font: font; getSelector: #currentStatusString; contents: self currentStatusString; stepTime: 2000; lock. }. self inAColumn: { toggle asMorph on: #mouseUp send: #toggleFull to: self; setBalloonText: 'Show more or less of Nebraska Status' }. }. myServer _ self server. (myServer isNil or: [fullDisplay not]) ifTrue: [ ^World startSteppingSubmorphsOf: self ]. "--- the expanded display ---" self addARow: { self inAColumn: { UpdatingStringMorph new useStringFormat; target: self; font: font; getSelector: #currentBacklogString; contents: self currentBacklogString; stepTime: 2000; lock. }. }. self addARow: { self inAColumn: { (StringMorph contents: '--clients--' translated) lock; font: font. }. }. myServer clients do: [ :each | self addARow: { UpdatingStringMorph new useStringFormat; target: each; font: font; getSelector: #currentStatusString; contents: each currentStatusString; stepTime: 2000; lock. } ]. World startSteppingSubmorphsOf: self.! ! !ObjectsTool methodsFor: 'alphabetic' stamp: 'sw 9/5/2007 15:24'! alphabeticTabs "Answer a list of buttons which, when hit, will trigger the choice of a morphic category" | buttonList aButton tabLabels | tabLabels _ (($a to: $z) collect: [:ch | ch asString]) asOrderedCollection. buttonList _ tabLabels collect: [:catName | aButton _ SimpleButtonMorph new label: catName font: Preferences standardEToysButtonFont. aButton actWhen: #buttonDown. aButton target: self; actionSelector: #showAlphabeticCategory:fromButton:; arguments: {catName. aButton}]. ^ buttonList "ObjectsTool new tabsForMorphicCategories"! ! !ObjectsTool methodsFor: 'categories' stamp: 'sw 9/5/2007 15:25'! tabsForCategories "Answer a list of buttons which, when hit, will trigger the choice of a category" | buttonList aButton classes categoryList basic | classes _ Morph withAllSubclasses. categoryList _ Set new. classes do: [:aClass | (aClass class includesSelector: #descriptionForPartsBin) ifTrue: [categoryList addAll: aClass descriptionForPartsBin translatedCategories]. (aClass class includesSelector: #supplementaryPartsDescriptions) ifTrue: [aClass supplementaryPartsDescriptions do: [:aDescription | categoryList addAll: aDescription translatedCategories]]]. categoryList _ OrderedCollection withAll: (categoryList asSortedArray). basic := categoryList remove: ' Basic' translated ifAbsent: [ ]. basic ifNotNil: [ categoryList addFirst: basic ]. basic := categoryList remove: 'Basic' translated ifAbsent: [ ]. basic ifNotNil: [ categoryList addFirst: basic ]. buttonList _ categoryList collect: [:catName | aButton _ SimpleButtonMorph new label: catName font: Preferences standardEToysButtonFont. aButton actWhen: #buttonDown. aButton target: self; actionSelector: #showCategory:fromButton:; arguments: {catName. aButton}]. ^ buttonList "ObjectsTool new tabsForCategories"! ! !ObjectsTool methodsFor: 'major modes' stamp: 'sw 9/5/2007 15:25'! modeTabs "Answer a list of buttons which, when hit, will trigger the choice of mode of the receiver" | buttonList aButton tupleList | tupleList _ { {'alphabetic' translatedNoop. #alphabetic. #showAlphabeticTabs. 'A separate tab for each letter of the alphabet' translatedNoop}. {'find' translatedNoop. #search. #showSearchPane. 'Provides a type-in pane allowing you to match' translatedNoop}. {'categories' translatedNoop. #categories. #showCategories. 'Grouped by category' translatedNoop} "('standard' standard showStandardPane 'Standard Squeak tools supplies for building')" }. buttonList _ tupleList collect: [:tuple | aButton _ SimpleButtonMorph new label: tuple first translated font: Preferences standardEToysButtonFont. aButton actWhen: #buttonUp. aButton setProperty: #modeSymbol toValue: tuple second. aButton target: self; actionSelector: tuple third. aButton setBalloonText: tuple fourth translated. aButton]. ^ buttonList "ObjectsTool new modeTabs"! ! !PreDebugWindow methodsFor: 'initialization' stamp: 'sw 9/5/2007 15:29'! initialize | aFont proceedLabel debugLabel aWidth | super initialize. true ifFalse: ["Preferences optionalMorphicButtons" (aWidth := self widthOfFullLabelText) > 280 ifTrue: [^self]. "No proceed/debug buttons if title too long" debugLabel := aWidth > 210 ifTrue: ["Abbreviated buttons if title pretty long" proceedLabel := 'p'. 'd'] ifFalse: ["Full buttons if title short enough" proceedLabel := 'proceed'. 'debug']. aFont := Preferences standardEToysButtonFont. self addMorph: (proceedButton := (SimpleButtonMorph new) borderWidth: 0; label: proceedLabel font: aFont; color: Color transparent; actionSelector: #proceed; target: self). proceedButton setBalloonText: 'continue execution'. self addMorph: (debugButton := (SimpleButtonMorph new) borderWidth: 0; label: debugLabel font: aFont; color: Color transparent; actionSelector: #debug; target: self). debugButton setBalloonText: 'bring up a debugger'. proceedButton submorphs first color: Color blue. debugButton submorphs first color: Color red]. self adjustBookControls! ! !Preferences class methodsFor: 'fonts' stamp: 'sw 9/5/2007 15:13'! chooseEToysButtonFont "present a menu with the possible fonts for the eToys buttons" self chooseFontWithPrompt: 'Choose the etoy button font' translated andSendTo: self withSelector: #setEToysButtonFontTo: highlight: self standardEToysButtonFont! ! !Preferences class methodsFor: 'fonts' stamp: 'sw 9/10/2007 02:23'! chooseEToysCodeFont "present a menu with the possible fonts for etoy textual code" self chooseFontWithPrompt: 'Choose the etoy code font' translated andSendTo: self withSelector: #setEToysCodeFontTo: highlight: self standardEToysCodeFont! ! !Preferences class methodsFor: 'fonts' stamp: 'sw 9/10/2007 02:16'! eToysCodeFont "Answer the font to use in the etoy environment to view textual code." ^ Parameters at: #eToysCodeFont ifAbsentPut: self standardEToysFont! ! !Preferences class methodsFor: 'fonts' stamp: 'sw 9/10/2007 02:27'! printStandardSystemFonts "self printStandardSystemFonts" | string | string := String streamContents: [ :s | #(standardDefaultTextFont standardListFont standardFlapFont standardEToysFont standardEToysButtonFont standardEToysCodeFont standardMenuFont windowTitleFont standardBalloonHelpFont standardCodeFont standardButtonFont) do: [:selector | | font | font _ Preferences perform: selector. s nextPutAll: selector; space; nextPutAll: font familyName; space; nextPutAll: (AbstractFont emphasisStringFor: font emphasis); nextPutAll: ' points: '; print: font pointSize; nextPutAll: ' height: '; print: font height; cr ]]. (StringHolder new) contents: string; openLabel: 'Current system font settings' translated. ! ! !Preferences class methodsFor: 'fonts' stamp: 'sw 9/10/2007 02:18'! restoreDefaultFonts "Since this is called from menus, we can take the opportunity to prompt for missing font styles." " Preferences restoreDefaultFonts " Preferences setDefaultFonts: #( (setListFontTo: BitstreamVeraSans 15) (setFlapsFontTo: BitstreamVeraSansBold 15) (setEToysButtonFontTo: BitstreamVeraSans 15) (setEToysFontTo: BitstreamVeraSansBold 15) (setEToysCodeFontTo: BitstreamVeraSansSerif 24) (setPaintBoxButtonFontTo: BitstreamVeraSans 9) (setMenuFontTo: BitstreamVeraSans 15) (setWindowTitleFontTo: BitstreamVeraSans 15) (setBalloonHelpFontTo: BitstreamVeraSans 15) ). ! ! !Preferences class methodsFor: 'fonts' stamp: 'sw 9/10/2007 02:40'! restoreDefaultFontsForSqueakland "Since this is called from menus, we can take the opportunity to prompt for missing font styles." " Preferences restoreDefaultFontsForSqueakland " Preferences setDefaultFonts: #( (setListFontTo: BitstreamVeraSans 12) (setFlapsFontTo: BitstreamVeraSansBold 12) (setEToysButtonFontTo: BitstreamVeraSans 12) (setEToysFontTo: BitstreamVeraSansBold 12) (setEToysCodeFontTo: BitstreamVeraSansSerif 12) (setPaintBoxButtonFontTo: BitstreamVeraSans 9) (setMenuFontTo: BitstreamVeraSans 12) (setWindowTitleFontTo: BitstreamVeraSans 15) (setBalloonHelpFontTo: BitstreamVeraSans 12) ). ! ! !Preferences class methodsFor: 'fonts' stamp: 'sw 9/5/2007 15:15'! setEToysButtonFontTo: aFont "change the font used on buttons in the eToys environment" Parameters at: #eToysButtonFont put: aFont! ! !Preferences class methodsFor: 'fonts' stamp: 'sw 9/8/2007 02:04'! setEToysCodeFontTo: aFont "change the code font used in eToys environment" Parameters at: #eToysCodeFont put: aFont! ! !Preferences class methodsFor: 'fonts' stamp: 'sw 9/5/2007 15:12'! standardEToysButtonFont "Answer the font to be used on buttons in the eToys environment" ^ Parameters at: #eToysButtonFont ifAbsentPut: [self standardButtonFont]! ! !Preferences class methodsFor: 'fonts' stamp: 'sw 9/10/2007 03:01'! standardEToysCodeFont "Answer the font to be used for textual code in the eToys environment" ^ Parameters at: #eToysCodeFont ifAbsentPut: [self standardEToysFont]! ! !Preferences class methodsFor: 'fonts' stamp: 'sw 9/10/2007 02:48'! standardEToysFont "Answer the font to be used in the eToys environment. This is primarily the tile font. See also #standardEToysButtonFont and #standardEToysCodeFont." ^ Parameters at: #eToysFont ifAbsentPut: [self standardButtonFont]! ! !Preferences class methodsFor: '*green' stamp: 'sw 9/10/2007 02:23'! fontConfigurationMenu "Answer a menu that lets the user set system fonts" | aMenu | aMenu := MenuMorph new defaultTarget: Preferences. aMenu addTitle: 'Standard System Fonts' translated. aMenu addStayUpIcons. aMenu add: 'default text font...' translated action: #chooseSystemFont. aMenu balloonTextForLastItem: 'Choose the default font to be used for code and in workspaces, transcripts, etc.' translated. aMenu lastItem font: Preferences standardDefaultTextFont. aMenu add: 'list font...' translated action: #chooseListFont. aMenu lastItem font: Preferences standardListFont. aMenu balloonTextForLastItem: 'Choose the font to be used in list panes' translated. aMenu add: 'flaps font...' translated action: #chooseFlapsFont. aMenu lastItem font: Preferences standardFlapFont. aMenu balloonTextForLastItem: 'Choose the font to be used on textual flap tabs' translated. aMenu add: 'etoy tile font...' translated action: #chooseEToysFont. aMenu lastItem font: Preferences standardEToysFont. aMenu balloonTextForLastItem: 'Choose the font to be used on etoy tiles' translated. aMenu add: 'etoy button font...' translated action: #chooseEToysButtonFont. aMenu lastItem font: Preferences standardEToysButtonFont. aMenu balloonTextForLastItem: 'Choose the font to be used on etoy buttons' translated. aMenu add: 'etoy code font...' translated action: #chooseEToysCodeFont. aMenu lastItem font: Preferences standardEToysCodeFont. aMenu balloonTextForLastItem: 'Choose the font to be used for textual code in etoys' translated. aMenu add: 'halo label font...' translated action: #chooseHaloLabelFont. aMenu lastItem font: Preferences standardHaloLabelFont. aMenu balloonTextForLastItem: 'Choose the font to be used on labels in halo' translated. aMenu add: 'object name font...' translated action: #chooseObjectNameFont. aMenu lastItem font: Preferences standardObjectNameFont. aMenu balloonTextForLastItem: 'Choose the font to be used for object names' translated. aMenu add: 'menu font...' translated action: #chooseMenuFont. aMenu lastItem font: Preferences standardMenuFont. aMenu balloonTextForLastItem: 'Choose the font to be used in menus' translated. aMenu add: 'window-title font...' translated action: #chooseWindowTitleFont. aMenu lastItem font: Preferences windowTitleFont emphasis: 1. aMenu balloonTextForLastItem: 'Choose the font to be used in window titles.' translated. aMenu add: 'balloon-help font...' translated action: #chooseBalloonHelpFont. aMenu lastItem font: Preferences standardBalloonHelpFont. aMenu balloonTextForLastItem: 'choose the font to be used when presenting balloon help.' translated. aMenu add: 'button font...' translated action: #chooseButtonFont. aMenu lastItem font: Preferences standardButtonFont. aMenu balloonTextForLastItem: 'Choose the font to be used for (some) buttons.' translated. aMenu add: 'code font...' translated action: #chooseCodeFont. aMenu lastItem font: Preferences standardCodeFont. aMenu balloonTextForLastItem: 'Choose the font to be used in code panes.' translated. aMenu addLine. aMenu add: 'restore default font choices' translated action: #restoreDefaultFonts. aMenu balloonTextForLastItem: 'Use the standard system font defaults' translated. aMenu add: 'show current font choices' translated action: #printStandardSystemFonts. aMenu balloonTextForLastItem: 'Open a window showing the current font settings' translated. ^ aMenu! ! !PreferencesPanel methodsFor: 'initialization' stamp: 'sw 9/5/2007 15:28'! findPreferencesMatching: incomingTextOrString "find all preferences matching incomingTextOrString" | result aList aPalette controlPage cc | result := incomingTextOrString asString asLowercase. result := result asLowercase withBlanksTrimmed. result isEmptyOrNil ifTrue: [^ self]. aList := Preferences allPreferenceObjects select: [:aPreference | (aPreference name includesSubstring: result caseSensitive: false) or: [aPreference helpString includesSubstring: result caseSensitive: false]]. aPalette := (self containingWindow ifNil: [^ self]) findDeeplyA: TabbedPalette. aPalette ifNil: [^ self]. aPalette selectTabNamed: 'search results'. aPalette currentPage ifNil: [^ self]. "bkwd compat" controlPage := aPalette currentPage. controlPage removeAllMorphs. controlPage addMorph: (StringMorph contents: ('Preferences matching "', self searchString, '"') font: Preferences standardEToysButtonFont). Preferences alternativeWindowLook ifTrue:[ cc := Color transparent. controlPage color: cc]. aList := aList asSortedCollection: [:a :b | a name < b name]. aList do: [:aPreference | | button | button _ aPreference representativeButtonWithColor: cc inPanel: self. button ifNotNil: [controlPage addMorphBack: button]]. aPalette world startSteppingSubmorphsOf: aPalette! ! !ScriptActivationButton methodsFor: 'label' stamp: 'sw 9/5/2007 15:28'! establishLabelWording "Set the label wording, unless it has already been manually edited" | itsName | itsName _ target externalName. (self hasProperty: #labelManuallyEdited) ifFalse: [self label: (itsName, ' ', arguments first) font: Preferences standardEToysButtonFont]. self setBalloonText: ('click to run the script "{1}" in player named "{2}"' translated format: {arguments first. itsName}). ! ! !ScriptableButton methodsFor: 'accessing' stamp: 'sw 9/5/2007 15:27'! label: aString "Set the receiver's label as indicated" | aLabel | (aLabel _ self findA: StringMorph) ifNotNil: [aLabel contents: aString] ifNil: [aLabel _ StringMorph contents: aString font: Preferences standardEToysButtonFont. self addMorph: aLabel]. self extent: aLabel extent + (borderWidth + 6). aLabel position: self center - (aLabel extent // 2). aLabel lock! ! !ScriptInstantiation methodsFor: 'misc' stamp: 'sw 9/5/2007 15:27'! statusControlRowIn: aStatusViewer "Answer an object that reports my status and lets the user change it" | aRow aMorph buttonWithPlayerName | aRow _ ScriptStatusLine newRow beTransparent. buttonWithPlayerName _ UpdatingSimpleButtonMorph new. buttonWithPlayerName font: Preferences standardEToysButtonFont. buttonWithPlayerName on: #mouseEnter send: #menuButtonMouseEnter: to: buttonWithPlayerName; on: #mouseLeave send: #menuButtonMouseLeave: to: buttonWithPlayerName. buttonWithPlayerName target: self; wordingSelector: #playersExternalName; actionSelector: #offerMenuIn:; arguments: {aStatusViewer}; beTransparent; actWhen: #buttonDown. buttonWithPlayerName setBalloonText: 'This is the name of the player to which this script belongs; if you click here, you will get a menu of interesting options pertaining to this player and script' translated. buttonWithPlayerName borderWidth: 1; borderColor: Color blue. aRow addMorphBack: buttonWithPlayerName. aRow addTransparentSpacerOfSize: 10@0. aRow addMorphBack: AlignmentMorph newVariableTransparentSpacer. aMorph _ UpdatingStringMorph on: self selector: #selector. aMorph font: Preferences standardEToysButtonFont. aMorph color: Color brown lighter; useStringFormat. aMorph setBalloonText: 'This is the name of the script to which this entry pertains.' translated. aRow addMorphBack: aMorph. aRow addMorphBack: AlignmentMorph newVariableTransparentSpacer. aRow addTransparentSpacerOfSize: 10@0. aRow addMorphBack: self statusControlMorph. aRow submorphsDo: [:m | m wantsSteps ifTrue: [m step]]. ^ aRow! ! !SpectrumAnalyzerMorph methodsFor: 'private' stamp: 'sw 9/5/2007 15:26'! addLevelSliderIn: aPoint | levelSlider r | levelSlider _ SimpleSliderMorph new color: color; extent: (aPoint x * 0.75) asInteger@(aPoint y*0.6) asInteger; target: soundInput; actionSelector: #recordLevel:; adjustToValue: soundInput recordLevel. r _ AlignmentMorph newRow color: color; layoutInset: 0; wrapCentering: #center; cellPositioning: #leftCenter; hResizing: #shrinkWrap; vResizing: #rigid; height: aPoint y + 2. r addMorphBack: (StringMorph contents: '0 ' font: Preferences standardEToysButtonFont). r addMorphBack: levelSlider. r addMorphBack: (StringMorph contents: ' 10' font: Preferences standardEToysButtonFont). self addMorphBack: r. ! ! !SpectrumAnalyzerMorph methodsFor: 'private' stamp: 'sw 9/5/2007 15:26'! buttonName: aString action: aSymbol ^ SimpleButtonMorph new target: self; label: aString font: Preferences standardEToysButtonFont; actionSelector: aSymbol ! ! !StandardScriptingSystem methodsFor: 'font & color choices' stamp: 'sw 9/5/2007 15:16'! fontForEToyButtons "Answer the font to be used for the status buttons affiliated with a ScriptInstantiation in a Viewer or Scriptor, and with other buttons that are part of the basic etoy UI." " ^ StrikeFont familyName: 'KomikaText' size: 28" ^ Preferences standardEToysButtonFont! ! !StandardScriptingSystem methodsFor: 'olpc' stamp: 'sw 9/5/2007 15:18'! fontForViewerCategoryPopups "Answer the font to be used for the category-name at the top of each category-viewer pane." ^ Preferences standardEToysButtonFont! ! !WsPhonePadMorph methodsFor: 'others' stamp: 'sw 9/5/2007 15:26'! buttonName: aString ^ SimpleButtonMorph new target: self; label: aString font: Preferences standardEToysButtonFont; actionSelector: #dial:; arguments: (Array with: aString); hResizing: #spaceFill; vResizing: #spaceFill. ! ! !WsWorldStethoscopeMorph methodsFor: 'private' stamp: 'sw 9/5/2007 15:26'! buttonName: aString action: aSymbol ^ SimpleButtonMorph new target: self; label: aString font: Preferences standardEToysButtonFont; actionSelector: aSymbol ! !