Merge jv
authorJan Vrany <jan.vrany@fit.cvut.cz>
Fri, 18 Nov 2016 21:15:56 +0000
branchjv
changeset 5981 50c1bb3e9f98
parent 5980 f729645cc31a (current diff)
parent 5966 45bfdf4465eb (diff)
child 5986 1fa5f049f917
Merge
EditField.st
EditTextView.st
FontPanel.st
GenericToolbarIconLibrary.st
Label.st
ListView.st
ScrollableView.st
SelectionInListView.st
TextCollector.st
TextView.st
stx_libwidg.st
--- a/DialogBox.st	Fri Nov 18 21:10:35 2016 +0000
+++ b/DialogBox.st	Fri Nov 18 21:15:56 2016 +0000
@@ -6255,7 +6255,10 @@
         do:[self warn:warnString]
 
     "
-     Dialog withOptoutOption:[Transcript flash] labelled:'opt out' warn:'some warning'.
+     Dialog 
+        withOptoutOption:[Transcript flash] 
+        labelled:'opt out' 
+        warn:'some warning'.
     "
 ! !
 
@@ -8010,6 +8013,7 @@
     (h := (aButton heightIncludingBorder + (ViewSpacing * 2))) > buttonPanel topInset ifTrue:[
          buttonPanel topInset:h negated
     ].
+    preferredExtent := nil.
     needResize := true.
     ^ aButton
 
@@ -9795,10 +9799,10 @@
     autoAccept := true.
 
     buttonPanel := HorizontalPanelView in:self.
-    buttonPanel 
+    buttonPanel
         origin:(0.0 @ 1.0) corner:(1.0 @ 1.0);
         bottomInset:ViewSpacing; 
-        topInset:((gc font height + ViewSpacing) * 2) negated;
+        topInset:((gc font height + (ViewSpacing*2)) + ViewSpacing) negated;
         borderWidth:0;
         horizontalLayout:#spread.
 
--- a/EditField.st	Fri Nov 18 21:10:35 2016 +0000
+++ b/EditField.st	Fri Nov 18 21:15:56 2016 +0000
@@ -1751,6 +1751,10 @@
     "Modified: / 17-01-2011 / 11:26:08 / cg"
 !
 
+keyboardZoom:larger
+    "/ ignored here
+!
+
 pointerLeave:state
     (acceptOnPointerLeave and:[enabled and:[self modified]]) ifTrue:[
         self accept
@@ -1979,8 +1983,11 @@
 !
 
 initialize
+    |font|
+    
     super initialize.
-    self initialHeight:(gc font height + gc font descent + (topMargin * 2)).
+    font := gc font.
+    self initialHeight:(font height + font descent + (topMargin * 2)).
 
     nFullLinesShown := 1.
     nLinesShown := 1.
--- a/EditTextView.st	Fri Nov 18 21:10:35 2016 +0000
+++ b/EditTextView.st	Fri Nov 18 21:15:56 2016 +0000
@@ -549,7 +549,10 @@
 st80Mode
     "return true, if the st80 editing mode is turned on.
      This setting affects the behavior of the cursor, when positioned
-     beyond the end of a line or the end of the text."
+     beyond the end of a line or the end of the text.
+     This method is here for backward compatibility, when this flag was stored
+     in a class var. It is now in the user's settings.
+     Please do not call it, but go to the prefs directly, to make it easier to find those getters."
 
     ^ UserPreferences current st80EditMode
 
@@ -563,7 +566,10 @@
 
 st80Mode:aBoolean
     "turns on/off st80 behavior, where the cursor cannot be positioned
-     beyond the end of a line or the last line"
+     beyond the end of a line or the last line.
+     This method is here for backward compatibility, when this flag was stored
+     in a class var. It is now in the user's settings.
+     Please do not call it, but go to the prefs directly, to make it easier to find those setters."
 
     UserPreferences current st80EditMode:aBoolean.
 
@@ -1319,7 +1325,14 @@
     ^ self modifiedChannel
 !
 
-st80Mode:aBooleanOrNil
+st80EditMode
+    "If on, the cursor wraps at the line end (like in vi or st80);
+     if off, we have the Rand-editor behavior (random access)"
+
+    ^ st80Mode ? (UserPreferences current st80EditMode)
+!
+
+st80EditMode:aBooleanOrNil
     "set/clear the st80Mode flag.
      If on, the cursor wraps at the line end (like in vi or st80);
      if off, we have the Rand-editor behavior (random access)
@@ -1330,6 +1343,13 @@
     "Created: / 09-11-2010 / 13:55:50 / cg"
 !
 
+st80Mode:aBooleanOrNil
+    self obsoleteMethodWarning.
+    self st80EditMode:aBooleanOrNil
+
+    "Created: / 09-11-2010 / 13:55:50 / cg"
+!
+
 tabMeansNextField:aBoolean
     "set/clear tabbing to the next field.
      If true, Tab is ignored and shifts the keyboard focus.
@@ -1354,6 +1374,20 @@
      to allow for easier text entry"
 
     tabRequiresControl := aBoolean
+!
+
+trimBlankLines
+    "If on, the blank lines are trimmed to zero size;
+     if nil, the setting follows the current userPref setting."
+
+    ^ trimBlankLines ? (UserPreferences current trimBlankLines)
+!
+
+trimBlankLines:aBooleanOrNil
+    "If on, the blank lines are trimmed to zero size;
+     if nil, the setting follows the current userPref setting."
+
+    trimBlankLines := aBooleanOrNil.
 ! !
 
 !EditTextView methodsFor:'accessing-contents'!
@@ -1655,7 +1689,11 @@
 
 accept
     "accept the current contents by executing the accept-action and/or
-     changeMessage."
+     changeMessage.
+     Historically, ST/X used a callBack (acceptAction);
+     and ST80/VW used the model, into which the text is stored.
+     We support both; if there is a mode, it gets a value: message,
+     If there is an acceptAction, it is called."
 
     acceptEnabled == false ifTrue:[
         self beep.
@@ -1679,7 +1717,7 @@
 
     "/
     "/ ST/X way of doing things
-    "/ as a historic (and temporary) leftover,
+    "/ as a historic leftover,
     "/ the block is called with a stringCollection
     "/ - not with the actual string
     "/
@@ -4373,7 +4411,7 @@
             newLine := newLine, (line copyFrom:(stop + 1) to:lineSize)
         ].
 
-        (trimBlankLines and:[newLine isBlank]) ifTrue:[
+        (self trimBlankLines and:[newLine isBlank]) ifTrue:[
             newLine := nil
         ].
 
@@ -4484,7 +4522,7 @@
     lineSize := line size.
 
     self st80EditMode ifFalse:[
-        (trimBlankLines
+        (self trimBlankLines
         and:[colNr > lineSize
         and:[aCharacter == Character space]]) ifTrue:[
             ^ self
@@ -4619,7 +4657,7 @@
         ].
 
         bothParts := leftPart , rightPart.
-        (trimBlankLines and:[bothParts isBlank]) ifTrue:[bothParts := nil].
+        (self trimBlankLines and:[bothParts isBlank]) ifTrue:[bothParts := nil].
         self basicListAt:lineNr put:bothParts.
         self redrawLine:lineNr.
         self deleteLine:nextLineNr
@@ -4645,7 +4683,7 @@
     line := list at:lineNr.
     lineSize := line size.
 
-    (trimBlankLines
+    (self trimBlankLines
     and:[colNr > lineSize
     and:[aCharacter == Character space]]) ifTrue:[
         ^ self
@@ -4765,7 +4803,7 @@
         ]
     ].
     leftRest notNil ifTrue:[
-        (trimBlankLines and:[leftRest isBlank]) ifTrue:[leftRest := nil]
+        (self trimBlankLines and:[leftRest isBlank]) ifTrue:[leftRest := nil]
     ].
     self basicListAt:lineNr put:leftRest.
     self nonUndoableDo:[
@@ -6313,7 +6351,6 @@
     autoIndent := false.
     editMode := ValueHolder with:EditMode insertMode.
     learnMode := ValueHolder with:false.
-    trimBlankLines := self st80EditMode not.
     cursorMovementWhenUpdating := #beginOfText.
     lastReplacementInfo := LastReplacementInfo new.
 
@@ -6418,7 +6455,8 @@
 !EditTextView methodsFor:'menu & menu actions'!
 
 babelFishTranslate:fromToModeString
-    "translate the selected text and paste it after the selection"
+    "translate the selected text and paste it after the selection.
+     This is now obsolete, as that web service no longer exists (sigh)"
 
     |original translated|
 
@@ -6429,7 +6467,8 @@
         (HostNameLookupError , SOAP::SoapImplError) handle:[:ex |
             Dialog warn:('Translation failed - WEB Service error:\\%1.' bindWith:ex description allBold) withCRs
         ] do:[
-            translated := SOAP::BabelFishClient new translate:original mode:fromToModeString.
+            translated := SOAP::BabelFishClient new 
+                            translate:original mode:fromToModeString.
         ]
     ].
 
@@ -7032,7 +7071,7 @@
 
     |unicodePoint unicodeChar unicodeString|
 
-    unicodeString := Dialog request:'Enter unicode (U+01FF or decimal number):'.
+    unicodeString := Dialog request:(resources string:'Enter Unicode (U+01FF or Decimal Number):').
     unicodeString size < 2 ifTrue:[
         ^ self.
     ].
@@ -7792,13 +7831,6 @@
     lastReplacementInfo lastReplaceIgnoredCase: lastReplaceIgnoredCase.
 !
 
-st80EditMode
-    "If on, the cursor wraps at the line end (like in vi or st80);
-     if off, we have the Rand-editor behavior (random access)"
-
-    ^ st80Mode ? (UserPreferences current st80EditMode)
-!
-
 suppressEmphasisInSelection
     "selection is shown without emphasis"
 
--- a/EditTextViewCompletionSupport.st	Fri Nov 18 21:10:35 2016 +0000
+++ b/EditTextViewCompletionSupport.st	Fri Nov 18 21:15:56 2016 +0000
@@ -245,8 +245,14 @@
             "/ protect end-user applications from errors
             Error handle:[:ex |
                 Smalltalk isSmalltalkDevelopmentSystem ifTrue:[ ex reject ]
-            ] do:[    
-                self computeCompletions.
+            ] do:[ 
+                (editView topView isKindOf:DebugView) ifTrue:[
+                    ControlInterrupt ignoreIn:[
+                        self computeCompletions.
+                    ].    
+                ] ifFalse:[    
+                    self computeCompletions.
+                ].
             ].
         ] forkAt:(Processor activePriority - 1).
 
@@ -296,13 +302,24 @@
 openCompletionView: list
     "Makes sure the completion view is opened and with given `list`."
     
-    | cursorPos movePos topView limit |
+    | textCursorPosInTextView textCursorPosOnScreen movePos topView 
+      screenBounds screenBoundsCorner 
+      helpViewsExtent helpViewsWidth helpViewsHeight|
 
-    "/ move the window
-    cursorPos := editView device translatePoint:(editView xOfCursor @ editView yOfCursor) fromView:editView toView:nil.
-    cursorPos := cursorPos - (editView viewOrigin x @ 0).
+    "/ move the window away from the text cursor (to not cover what user types in)
+    "/ get the screen-relative position of the text cursor
+    textCursorPosInTextView := editView xOfCursor @ editView yOfCursor.
+    
+    "/ care for the scroll-offset (xOfCursor/yOFCursor gives me               
+    textCursorPosInTextView := textCursorPosInTextView - (editView viewOrigin x @ 0).
+    
+    textCursorPosOnScreen := editView device 
+                    translatePoint:textCursorPosInTextView 
+                    fromView:editView toView:nil.
+
     "/ currently, we have to stay away a bit, to avoid getting the focus
-    movePos := cursorPos + (60 @ (editView font height)).
+    "/ this will be somewhat to the down-right of the textCursor
+    movePos := textCursorPosOnScreen + (60 @ (editView font height)).
 
     completionView isNil ifTrue:[
         completionView := CodeCompletionHelpMenuView new.
@@ -318,19 +335,28 @@
         completionView list:list.
         topView := completionView topView.
     ].
+    
     topView ~~ completionView ifTrue:[
         topView resizeToFit.
-"/        movePos := editView device 
-"/                        translatePoint:((editView right - topView width) @ (editView top)) 
-"/                        fromView:editView toView:nil.
+
         "/ make sure, the window is visible
-        limit := topView device monitorBoundsAt:topView origin.
-        movePos x + topView extent x > limit corner x ifTrue:[
-            movePos := (cursorPos x - 60 - (topView extent x)) @ movePos y.
+        screenBounds := topView device monitorBoundsAt:topView origin.
+        screenBoundsCorner := screenBounds corner.
+
+        helpViewsExtent := topView extent.
+        helpViewsWidth := helpViewsExtent x.
+        helpViewsHeight := helpViewsExtent y.
+
+        "/ if it does not lie completely inside the screen, move it     
+        (movePos x + helpViewsWidth) > screenBoundsCorner x ifTrue:[
+            movePos := (textCursorPosOnScreen x - 60 - helpViewsWidth) @ movePos y.
         ].
-        movePos y + topView extent y > limit corner y ifTrue:[
-            movePos := movePos x @ (cursorPos y - (topView extent y)).
+        (movePos y + helpViewsHeight) > screenBoundsCorner y ifTrue:[
+            movePos := movePos x @ (textCursorPosOnScreen y - helpViewsHeight).
         ].
+        movePos y < 0 ifTrue:[
+            movePos := movePos x @ 0
+        ].    
         topView origin:movePos.
     ].
 
--- a/EnterFieldGroup.st	Fri Nov 18 21:10:35 2016 +0000
+++ b/EnterFieldGroup.st	Fri Nov 18 21:15:56 2016 +0000
@@ -575,7 +575,10 @@
       outside. However, this info is not used by any view currently)"
 
     currentField notNil ifTrue:[
-        currentField keyPress:key x:nil y:nil
+        "/ in case the currentFIeld was destroyed without telling me... (hack fix).
+        currentField device notNil ifTrue:[
+            currentField keyPress:key x:nil y:nil
+        ]
     ]
 
     "Modified: / 18.9.1998 / 20:00:36 / cg"
--- a/FontPanel.st	Fri Nov 18 21:10:35 2016 +0000
+++ b/FontPanel.st	Fri Nov 18 21:15:56 2016 +0000
@@ -17,7 +17,7 @@
 	instanceVariableNames:'previewField listOfEncodings allFonts fontsPerFamily familyList
 		faceList sizeList revertButton currentFamily currentFace
 		currentStyle currentFaceAndStyle currentSize sizeUnit
-		currentEncoding selectedFont nameLabel encodingFilter
+		currentEncoding initialFont selectedFont nameLabel encodingFilter
 		encodingFilterField encodingLabel combinedFilter encoding
 		sizeLabelHolder pixelPointSwitch xftFontsOnlyHolder
 		changeFontInAllViewsHolder withChangeFontInAllViewsCheckBox
@@ -162,7 +162,7 @@
 defaultLatin1SampleString
     "return the sample latin1 preview text"
 
-    ^ (self defaultAsciiSampleString) , 'äöüÄÖÜßéèêå©'
+    ^ (self defaultAsciiSampleString) , ''
 !
 
 defaultSampleStringForEncoding:enc
@@ -206,8 +206,8 @@
     |t|
 
     t := (self defaultAsciiSampleString) , '
-diaresis: äöüÄÖÜß
-accent: éèêåÅ
+diaresis: 
+accent: 
 special: ' ,  #(16r20AC) asUnicodeString , '
 math: ' ,  #(16r2200 16r2203 16r221E 16r2208 16r2209) asUnicodeString , '
 cyrillic: ' ,  #(16r440 16r443 16r441 16r441 16r43A 16r438 16r439 16r20 16r44F 16r437 16r44B 16r43A) asUnicodeString , '
@@ -230,6 +230,37 @@
         ifAbsent:'The quick brown fox jumps over the lazy dog') withCRs
 ! !
 
+!FontPanel class methodsFor:'help'!
+
+flyByHelpSpec
+    <resource: #help>
+
+    ^ Dictionary new 
+        addPairsFrom:#(
+
+#fontName
+'Shows the full name of the selected font.' 
+
+#fontEncodingFilter
+'Filter fonts by encodings.\Almost any can be used for Latin1 languages (English, German, French, Italian etc.).\For other European languages, it should be a Latin-X or Unicode font;\For most middle and far east languages, a Unicode font is required.\\Notice that although ISO10646 is Unicode, many fonts only contain a subset of the required characters.\Check the preview above.' 
+
+#fontsEncoding
+'Shows the selected font''s encoding.' 
+
+#xftFontsOnlyHolder
+'Filter to only show the nicer looking xft fonts and ignore the ugly X fonts (Linux/OSX only).\\Be aware that if X is used with remote windows via a slow communication line,\it may be preferrable to avoid xft fonts, as they require much more network bandwidth.'
+
+#pixelPointSwitch
+'Switch between point and pixels in the size list.\A point is defined as 1/72th of an inch, and a common unit in typesetting.\Not to confuse with pixels, which are dots on your screen.\It is usually not a good idea, to specify font sizes by pixels.' 
+
+#flushCachedListOfFonts
+'Flush the cached list of fonts, and rescan the system for available fonts.\This may take a long time in some systems,\and is only needed if you install new fonts while ST/X is running.'
+
+#changeInAllTextViews
+'If checked, your font choice is applied to all text views (in ST/X),\and will also be the default for new windows.\Otherwise, it will only affect the current textview.\\To make your choice persistent across sessions, go to the settings dialog and save the settings into your preferences file.'
+)
+! !
+
 !FontPanel class methodsFor:'menu specs'!
 
 previewMenu
@@ -267,7 +298,8 @@
             label: 'Show Character Set (Using xfd)'
             itemValue: previewShowCharacterSetUsingXFD
             translateLabel: true
-            isVisible: osIsUNIX
+            isVisible: osIsUNIXAndXfdIsAvailable
+            enabled: xfdCanBeUsed
           )
          (MenuItem
             label: '-'
@@ -379,6 +411,24 @@
     "Modified: 10.4.1997 / 09:53:03 / cg"
 !
 
+fontFromUserInitial:initialFont title:someTitle filter:aFilterBlock encoding:encoding enabled:enabled onChangeAll:actionToChangeAll
+    "open a fontPanel with title and font-filter
+     and return the selected font, or nil if abort is pressed"
+
+    ^ self new
+        fontFromUserInitial:initialFont title:someTitle 
+        filter:aFilterBlock encoding:encoding 
+        enabled:enabled
+        onChangeAll:actionToChangeAll
+
+    "
+     FontPanel fontFromUserInitial:(Font family:'courier' size:12) title:'select some font'
+    "
+
+    "Created: 27.2.1996 / 00:59:46 / cg"
+    "Modified: 10.4.1997 / 09:53:03 / cg"
+!
+
 openOn:aFont
     "open a fontPanel showing aFont initially.
      This panel is for information only - no font selection is possible."
@@ -511,7 +561,7 @@
 
     |fontEncoding|
 
-    selectedFont := aFont.
+    initialFont := selectedFont := aFont.
     currentFamily := aFont family.
     currentFace := aFont face.
     currentStyle := aFont style.
@@ -586,6 +636,83 @@
 
 !FontPanel methodsFor:'initialization'!
 
+createFontSelectionBrowserIn:aView
+    |topSelectionBox fontLabelAndSizeSelectionBox
+     l hLabel v1 v2 v3 familyLabel faceLabel sizeLabel fH mm|
+
+    mm := ViewSpacing.
+    hLabel := 30.
+    
+    l := (0@0 corner:1@1) asFractionalLayout.
+    l bottomInset:hLabel.
+    topSelectionBox := (View in:aView) layout:l.
+
+    l := (0@1 corner:1@1) asFractionalLayout.
+    l topOffset:hLabel negated.
+    l rightInset:mm.
+    
+    fontLabelAndSizeSelectionBox := (HorizontalPanelView in:aView) layout:l. 
+    fontLabelAndSizeSelectionBox horizontalLayout:#rightFit.
+    
+    v1 := View origin:0.0@0.0 corner:0.3@1.0 in:topSelectionBox.
+
+    familyLabel := Label label:(resources string:'Family') in:v1.
+    familyLabel borderWidth:0.
+    familyLabel origin:(0.0 @ 0.0) extent:(1.0 @ nil).
+    fH := familyLabel preferredHeight.
+
+    familyList := ScrollableView for:SelectionInListView in:v1.
+    familyList origin:(0.0 @ 0.0) corner:(1.0 @ 1.0).
+    familyList inset:mm.
+    familyList topInset:fH.
+
+    familyList := familyList scrolledView.
+    self makeTabable:familyList.
+
+    v2 := View origin:0.3@0.0 corner:0.8@1.0 in:topSelectionBox.
+
+    faceLabel := Label label:(resources string:'Typeface') in:v2.
+    faceLabel borderWidth:0.
+    faceLabel origin:(0.0 @ 0.0) extent:(1.0 @ nil).
+
+    faceList := ScrollableView for:SelectionInListView in:v2.
+    faceList origin:(0.0 @ 0.0) corner:(1.0 @ 1.0).
+    faceList inset:mm.
+    faceList topInset:fH.
+    faceList := faceList scrolledView.
+    self makeTabable:faceList.
+
+    v3 := View origin:0.8@0.0 corner:1.0@1.0 in:topSelectionBox.
+
+    sizeLabelHolder := (resources string:'Size') asValue.
+    sizeLabel := Label in:v3.
+    sizeLabel labelChannel:sizeLabelHolder.
+    sizeLabel borderWidth:0.
+    sizeLabel origin:(0.0 @ 0.0)extent:(1.0 @ nil).
+
+    sizeList := ScrollableView for:SelectionInListView in:v3.
+    sizeList origin:(0.0 @ 0.0) corner:(1.0 @ 1.0).
+    sizeList inset:mm.
+    sizeList topInset:fH.
+    sizeList := sizeList scrolledView.
+    self makeTabable:sizeList.
+
+    familyList action:[:lineNr | self familySelected:(familyList selectionValue)].
+    faceList action:[:lineNr | self faceSelected:(faceList selectionValue)].
+    sizeList action:[:lineNr | self sizeSelected:(sizeList selectionValue)].
+
+    nameLabel := Label label:'' in:fontLabelAndSizeSelectionBox.
+    nameLabel level:0; adjust:#left.
+    nameLabel helpKey:#fontName.
+    
+    pixelPointSwitch := ComboListView in:fontLabelAndSizeSelectionBox.
+    pixelPointSwitch level:-1.
+    pixelPointSwitch contents:'pt'.
+    pixelPointSwitch list:#(#pt #px).
+    pixelPointSwitch action:[:sizeUnit | self sizeUnitSelected:sizeUnit].
+    pixelPointSwitch helpKey:#pixelPointSwitch.
+!
+
 enabled:aBoolean
     familyList enabled:aBoolean.
     faceList enabled:aBoolean.
@@ -611,118 +738,101 @@
 initialize
     "sigh: hand-crafted box creation; TODO: rewrite using UI painter"
     
-    |familyLabel faceLabel sizeLabel panel panel2 fontBrowserView fp v1 v2 v3
-     mm fH l box1 box2 box3 box4 showFontNameLabel xftCheckBox vPanel changeInAllCheckBox
+    |everythingExceptOkCancelButtonsPanel fontBrowserView mm l encodingAndXFTOnlyBox box3 box4 xftCheckBox 
+     previewAndFontSelectionPanel filterBox changeInAllCheckBox updateHeight
      xftFlushFontList decorativeCheckBox nonDecorativeCheckBox monospacedCheckBox nonMonospacedCheckBox|
 
     super initialize.
 
-    showFontNameLabel := device isWindowsPlatform not.
+    label := resources string:'Font dialog'.
     sizeUnit := #pt.
-
     mm := ViewSpacing.
 
     self addAbortAndOkButtons.
 
-    panel := View origin:0.0@0.0 corner:1.0@1.0 in:self.
-    panel bottomInset:(buttonPanel preferredHeight 
-                        + (mm) 
-                        "+ (showFontNameLabel ifTrue:24 ifFalse:0)" ).
-
-    vPanel := VariableVerticalPanel in:panel.
-    vPanel origin:0.0@0.0 corner:1.0@1.0.
-
-    previewField := HVScrollableView for:TextView in:vPanel.
-    fontBrowserView := View in:vPanel.
-    fp := View in:fontBrowserView.
-    fp layout:(0.0@0.0 corner:1.0@1.0) asFractionalLayout. 
-    fp layout bottomOffset:-150.
-
-    label := resources string:'Font dialog'.
+    everythingExceptOkCancelButtonsPanel := View origin:0.0@0.0 corner:1.0@1.0 in:self.
+    everythingExceptOkCancelButtonsPanel bottomInset:(buttonPanel preferredHeight + (mm)). 
 
-    panel2 := VerticalPanelView in:fontBrowserView.
-    panel2 layout:(0.0@1.0 corner:1.0@1.0) asFractionalLayout.
-    panel2 layout topOffset:-150.
-    
-    panel2 horizontalLayout:#fit.
-    panel2 verticalLayout:#top.
-
-    box1 := HorizontalPanelView in:panel2.
-    box1 height:25.
-    box1 horizontalLayout:#rightFit.
-
-        showFontNameLabel ifTrue:[
-            nameLabel := Label label:'' in:box1.
-            "/ nameLabel origin:0.0@1.0 corner:1.0@1.0.
-            "/ nameLabel bottomInset:(buttonPanel preferredHeight + (mm*2)).
-            "/ nameLabel topInset:(buttonPanel preferredHeight + (mm*2) + 24) negated; horizontalInset:mm.
-            nameLabel level:0; adjust:#left.
-        ].
+    previewAndFontSelectionPanel := VariableVerticalPanel in:everythingExceptOkCancelButtonsPanel.
+    previewAndFontSelectionPanel layout:(LayoutFrame
+                    leftFraction:0 offset:0
+                    rightFraction:1 offset:0
+                    topFraction:0 offset:0
+                    bottomFraction:1 offset:-160).
+       
+    filterBox  := VerticalPanelView in:everythingExceptOkCancelButtonsPanel.  
+    filterBox layout:(LayoutFrame
+                    leftFraction:0 offset:0
+                    rightFraction:1 offset:0
+                    topFraction:1 offset:-150
+                    bottomFraction:1 offset:0).
+    filterBox horizontalLayout:#fit verticalLayout:#top.
 
-        pixelPointSwitch := ComboListView in:box1.
-        "/ encodingFilter font:l font.
-        pixelPointSwitch level:-1.
-        pixelPointSwitch contents:'pt'.
-        pixelPointSwitch list:#(#pt #px).
-        pixelPointSwitch action:[:sizeUnit | self sizeUnitSelected:sizeUnit].
-        "/ box2 topInset:(pixelPointSwitch preferredHeight negated-4); horizontalInset:mm.
-        "/ encodingFilter editor font:l font.
+    previewField := HVScrollableView for:TextView in:previewAndFontSelectionPanel.
+    previewField menuHolder:self previewMenu.
+    previewField autoHideScrollBars:true.
+    previewField := previewField scrolledView.
+"/    previewField inset:mm.
+"/    self is3D ifTrue:[
+"/        previewField level:-1.
+"/    ] ifFalse:[
+"/        previewField borderWidth:1.
+"/    ].
 
-    panel2 add:(View new height:8).
-    
-    "/    self showEncodingFilter ifFalse:[
-    "/        encodingFilter beInvisible
-    "/    ].
+    fontBrowserView := View in:previewAndFontSelectionPanel.
+    self createFontSelectionBrowserIn:fontBrowserView.
 
-    box2 := HorizontalPanelView in:panel2.
-    box2 height:25.
-    box2 horizontalLayout:#leftSpace.
+    encodingAndXFTOnlyBox := HorizontalPanelView in:filterBox.
+    encodingAndXFTOnlyBox height:32.
+    encodingAndXFTOnlyBox horizontalLayout:#leftSpace.
 
-        l := Label label:(resources string:'Encoding:') in:box2.
-        l borderWidth:0.
-        l adjust:#left.
+    l := Label label:(resources string:'Encoding:') in:encodingAndXFTOnlyBox.
+    l borderWidth:0.
+    l adjust:#left.
+    l helpKey:#fontEncodingFilter.
 
-        encodingFilterField := ComboBoxView in:box2.
-        "/ encodingFilterField font:l font.
-        encodingFilterField level:-1.
-        encodingFilterField contents:'*'.
-        encodingFilterField list:(self listOfEncodingsInFilterCombo).
-        encodingFilterField action:[:pattern | self encodingFilterSelected:pattern].
-        encodingFilterField immediateAccept:true.
-        "/ encodingFilterField editor font:l font.
+    encodingFilterField := ComboBoxView in:encodingAndXFTOnlyBox.
+    encodingFilterField level:-1.
+    encodingFilterField contents:'*'.
+    encodingFilterField list:(self listOfEncodingsInFilterCombo).
+    encodingFilterField action:[:pattern | self encodingFilterSelected:pattern].
+    encodingFilterField immediateAccept:true.
+    encodingFilterField helpKey:#fontEncodingFilter.
 
-        self showEncodingFilter ifFalse:[
-            encodingFilterField beInvisible
-        ].
-
+    
         "/    encodingFilterField acceptOnReturn:true.
         "/    encodingFilterField acceptOnTab:true.
         "/    encodingFilterField acceptOnLeave:true.
         "/    encodingFilterField acceptOnLostFocus:true.
         "/    encodingFilterField acceptOnPointerLeave:true.
 
-        encodingLabel := Label label:' ' in:box2.
-
-        encodingLabel level:0; adjust:#left.
-        encodingLabel adjust:#right.
-        self showEncodingFilter ifFalse:[
-            encodingLabel beInvisible
-        ].
+    encodingLabel := Label label:' ' in:encodingAndXFTOnlyBox.
+    encodingLabel level:0; adjust:#left.
+    encodingLabel adjust:#right.
+    encodingLabel helpKey:#fontsEncoding.
+    
+    self showEncodingFilter ifFalse:[
+        encodingFilterField beInvisible.
+        encodingLabel beInvisible
+    ].
 
-        device supportsXftFonts ifTrue:[
-            self xftFontsOnlyHolder value: (UserPreferences current useXftFontsOnly).
-            xftCheckBox := CheckBox label:(resources string:'XFT Fonts Only') in:box2.
-            xftCheckBox model:xftFontsOnlyHolder.
-            xftFontsOnlyHolder onChangeEvaluate:[ self xftFontsOnlyChanged ].
+    device supportsXftFonts ifTrue:[
+        self xftFontsOnlyHolder value: (UserPreferences current useXftFontsOnly).
+        xftCheckBox := CheckBox label:(resources string:'XFT Fonts Only') in:encodingAndXFTOnlyBox.
+        xftCheckBox model:xftFontsOnlyHolder.
+        xftCheckBox helpKey:#xftFontsOnlyHolder.
+        xftFontsOnlyHolder onChangeEvaluate:[ self xftFontsOnlyChanged ].
 
-            xftFlushFontList := Button label:(resources string:'Flush Cached List of Fonts') in:box2.
-            xftFlushFontList action:[ self flushListOfAvailableFonts].
-        ].
+        xftFlushFontList := Button label:(resources string:'Flush Cached List of Fonts') in:encodingAndXFTOnlyBox.
+        xftFlushFontList action:[ self flushListOfAvailableFonts].
+        xftFlushFontList helpKey:#flushCachedListOfFonts.
+
+    ].
 
 false ifTrue:[
     decorativeCheckBox := CheckBox label:(resources string:'Decorative Fonts Only').
     box3 := View new height:(decorativeCheckBox preferredHeight).
-    panel2 add:box3.
+    filterBox add:box3.
     
     decorativeCheckBox origin:0.0@0.0 corner:0.5@1.0.
     box3 add:decorativeCheckBox.
@@ -736,7 +846,7 @@
 
     monospacedCheckBox := CheckBox label:(resources string:'Monospaced Fonts Only').
     box4 := View new height:(monospacedCheckBox preferredHeight).
-    panel2 add:box4.
+    filterBox add:box4.
 
     monospacedCheckBox origin:0.0@0.0 corner:0.5@1.0.
     box4 add:monospacedCheckBox.
@@ -749,70 +859,31 @@
     self nonMonospacedOnlyHolder onChangeEvaluate:[ self filterChanged ].
 ].
 
-    changeInAllCheckBox := CheckBox label:(resources string:'Change all Textviews and Default for New Views') in:panel2.
+    changeInAllCheckBox := CheckBox label:(resources string:'Change all Textviews and Default for New Views') in:filterBox.
     changeInAllCheckBox model:self changeFontInAllViewsHolder.
     changeInAllCheckBox visibilityChannel:self withChangeFontInAllViewsCheckBoxVisibleHolder.
-    
-    "/ previewField origin:0.0@0.0 corner:1.0@0.4.
-    previewField autoHideScrollBars:true.
-    previewField := previewField scrolledView.
-    previewField inset:mm.
-
-    self is3D ifTrue:[
-        previewField level:-1.
-    ] ifFalse:[
-        previewField borderWidth:1.
-    ].
-
-    v1 := View origin:0.0@0.0 corner:0.4@1.0 in:fp.
+    changeInAllCheckBox helpKey:#changeInAllTextViews.
     
-    familyLabel := Label label:(resources string:'Family') in:v1.
-    familyLabel borderWidth:0.
-    familyLabel origin:(0.0 @ 0.0) extent:(1.0 @ nil).
-    fH := familyLabel preferredHeight.
-
-    familyList := ScrollableView for:SelectionInListView in:v1.
-    familyList origin:(0.0 @ 0.0) corner:(1.0 @ 1.0).
-    familyList inset:mm.
-    familyList topInset:fH.
-
-    familyList := familyList scrolledView.
-    self makeTabable:familyList.
-
-    v2 := View origin:0.4@0.0 corner:0.8@1.0 in:fp.
+    updateHeight :=
+        [
+            self sensor 
+                pushUserEvent:#value 
+                for:[
+                    |filterBoxHeight|
 
-    faceLabel := Label label:(resources string:'Typeface') in:v2.
-    faceLabel borderWidth:0.
-    faceLabel origin:(0.0 @ 0.0) extent:(1.0 @ nil).
-
-    faceList := ScrollableView for:SelectionInListView in:v2.
-    faceList origin:(0.0 @ 0.0) corner:(1.0 @ 1.0).
-    faceList inset:mm.
-    faceList topInset:fH.
-    faceList := faceList scrolledView.
-    self makeTabable:faceList.
-
-    v3 := View origin:0.8@0.0 corner:1.0@1.0 in:fp.
+                    filterBoxHeight := filterBox preferredHeight.
+                    previewAndFontSelectionPanel layout bottomOffset:(filterBoxHeight negated - 10).
+                    filterBox layout topOffset:(filterBoxHeight negated).
 
-    sizeLabelHolder := (resources string:'Size') asValue.
-    sizeLabel := Label in:v3.
-    sizeLabel labelChannel:sizeLabelHolder.
-    sizeLabel borderWidth:0.
-    sizeLabel origin:(0.0 @ 0.0)extent:(1.0 @ nil).
-
-    sizeList := ScrollableView for:SelectionInListView in:v3.
-    sizeList origin:(0.0 @ 0.0) corner:(1.0 @ 1.0).
-    sizeList inset:mm.
-    sizeList topInset:fH.
-    sizeList := sizeList scrolledView.
-    self makeTabable:sizeList.
-
-    familyList action:[:lineNr | self familySelected:(familyList selectionValue)].
-    faceList action:[:lineNr | self faceSelected:(faceList selectionValue)].
-    sizeList action:[:lineNr | self sizeSelected:(sizeList selectionValue)].
-
-    previewField menuHolder:self previewMenu.
-
+                    previewAndFontSelectionPanel layoutChanged.
+                    filterBox layoutChanged.
+                ]
+        ].
+        
+"/    updateHeight value.
+    self withChangeFontInAllViewsCheckBoxVisibleHolder 
+            onChangeEvaluate:updateHeight.
+    
     "
      FontPanel new showAtPointer
      FontPanel fontFromUser
@@ -929,6 +1000,10 @@
     "Modified: 29.4.1996 / 09:41:47 / cg"
 !
 
+flyByHelpSpec
+    ^ self class flyByHelpSpec
+!
+
 fontForPreview
     "get the preview font"
 
@@ -1160,8 +1235,6 @@
 
     |font deviceFont enc fontName|
 
-    "/ self clearPreview.
-
     "
      show a wait cursor: for some fonts (kanji etc) the
      X-server needs quite some time to load the font
@@ -1187,6 +1260,7 @@
             currentEncoding := nil.
             fontName := nil.
         ].
+        selectedFont := font.
         nameLabel notNil ifTrue:[nameLabel label:fontName].
     ]
 
@@ -1194,10 +1268,12 @@
 !
 
 showSelectedFont
-    |fam face faceAndStyle style sz|
+    |fam face faceAndStyle style sz font|
 
-    fam := selectedFont family.
-    currentEncoding := selectedFont encoding.
+    font := (selectedFont ? initialFont).
+    
+    fam := font family.
+    currentEncoding := font encoding.
 
     fontsPerFamily isNil ifTrue:[
         self updateFamilyList
@@ -1206,13 +1282,13 @@
 
     self familySelected:fam showPreview:false.
     fam notNil ifTrue:[
-        face := selectedFont face.
-        (face notNil and:[(style := selectedFont style) notNil]) ifTrue:[
+        face := font face.
+        (face notNil and:[(style := font style) notNil]) ifTrue:[
             faceAndStyle := face , '-' , style.
         ].
         self faceSelected:faceAndStyle showPreview:false.
         faceAndStyle notNil ifTrue:[
-            sz := sizeUnit == #px ifTrue:[selectedFont pixelSize asString,'px'] ifFalse:[selectedFont size asString].
+            sz := sizeUnit == #px ifTrue:[font pixelSize asString,'px'] ifFalse:[font size asString].
             pixelPointSwitch contents:sizeUnit.
             self sizeSelected:sz showPreview:false. 
         ]
@@ -1319,6 +1395,12 @@
     "Modified: / 11-10-2006 / 21:28:59 / cg"
 !
 
+osIsUNIXAndXfdIsAvailable
+    ^ self osIsUNIX and:[ (OperatingSystem canExecuteCommand:'xfd')]
+
+    "Modified: / 11-10-2006 / 21:28:59 / cg"
+!
+
 preferredExtent
     "return the boxes preferredExtent"
 
@@ -1336,6 +1418,12 @@
     ^ self class defaultExtent.
 
     "Modified: 19.7.1996 / 20:44:08 / cg"
+!
+
+xfdCanBeUsed
+    ^ self osIsUNIXAndXfdIsAvailable 
+        and:[ selectedFont notNil
+        and:[ selectedFont isXftFont not  ]]
 ! !
 
 !FontPanel methodsFor:'startup'!
@@ -1350,6 +1438,7 @@
         filter:nil
         encoding:nil
         enabled:true
+        withChangeAllOption:false
 
     "
      FontPanel fontFromUser
@@ -1372,7 +1461,8 @@
         filter:nil
         encoding:nil
         enabled:true
-
+        withChangeAllOption:false
+        
     "
      FontPanel fontFromUserInitial:(Font family:'courier' size:12)
      FontPanel fontFromUserInitial:MenuPanel defaultFont
@@ -1389,7 +1479,8 @@
         filter:nil
         encoding:nil
         enabled:true
-
+        withChangeAllOption:false
+        
     "
      FontPanel fontFromUserInitial:(Font family:'courier' size:12) title:'select some font'
     "
@@ -1408,7 +1499,8 @@
         filter:aFilterBlock 
         encoding:nil
         enabled:true
-
+        withChangeAllOption:false
+        
     "
      FontPanel fontFromUserInitial:(Font family:'courier' size:12) title:'select some font'
     "
@@ -1427,7 +1519,8 @@
         filter:aFilterBlock 
         encoding:encoding 
         enabled:true
-
+        withChangeAllOption:false
+        
     "
      FontPanel fontFromUserInitial:(Font family:'courier' size:12) title:'select some font'
     "
@@ -1437,7 +1530,27 @@
     "open this fontPanel with title and font-filter
      and return the selected font, or nil if abort is pressed"
 
-    |selectedFont|
+    ^ self 
+        fontFromUserInitial:initialFont title:someTitle filter:aFilterBlock encoding:encoding enabled:enabled
+        withChangeAllOption:false
+
+    "
+     FontPanel fontFromUserInitial:(Font family:'courier' size:12) title:'select some font'.
+     
+     FontPanel new
+        withChangeFontInViewsAllCheckBox:true;
+        fontFromUserInitial:(Font family:'courier' size:12) title:'select some font'
+    "
+
+    "Created: 27.2.1996 / 00:59:46 / cg"
+    "Modified: 10.4.1997 / 09:53:03 / cg"
+!
+
+fontFromUserInitial:initialFont title:someTitle filter:aFilterBlock encoding:encoding enabled:enabled withChangeAllOption:changeAllBoolean
+    "open this fontPanel with title and font-filter
+     and return the selected font, or nil if abort is pressed"
+
+    |selectedFont initialFontsEncoding|
 
     self encodingFilter:aFilterBlock.
     someTitle notNil ifTrue:[
@@ -1451,14 +1564,20 @@
         self encoding:encoding.
     ] ifFalse:[
         initialFont notNil ifTrue:[
-            ((initialFont encoding = #'iso8859-1')
-            or:[ (initialFont encoding = #'iso10646-1') ]) ifFalse:[
-                self encoding:initialFont encoding
+            initialFontsEncoding := initialFont encoding.
+            ((initialFontsEncoding = #'iso8859-1')
+            or:[ (initialFontsEncoding = #'iso10646-1') ]) ifFalse:[
+                self encoding:initialFontsEncoding
             ].
         ].
     ].
     self enabled:enabled.
+    
+    self withChangeFontInAllViewsCheckBoxVisibleHolder 
+            setValue:(enabled and:[changeAllBoolean]);
+            changed.
     self showAtPointer.
+
     self destroy.
     ^ selectedFont
 
@@ -1733,8 +1852,15 @@
 !
 
 previewShowCharacterSetUsingXFD
+    |fullName|
+
+    (fullName := selectedFont fullName) isNil ifTrue:[
+        self warn:('Sorry could not figure out the X-font (aka file) name of: ', selectedFont printString).
+        ^ self.
+    ].
+    
     [
-        OperatingSystem executeCommand:'xfd -fn ' , previewField font fullName.
+        OperatingSystem executeCommand:'xfd -fn ' , fullName.
     ] fork.
 !
 
--- a/GenericToolbarIconLibrary.st	Fri Nov 18 21:10:35 2016 +0000
+++ b/GenericToolbarIconLibrary.st	Fri Nov 18 21:15:56 2016 +0000
@@ -540,6 +540,60 @@
         ]
 !
 
+warn16x16Icon
+    "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 warn16x16Icon inspect
+     ImageEditor openOnClass:self andSelector:#warn16x16Icon
+     Icon flushCachedIcons
+    "
+
+    <resource: #image>
+
+    ^Icon
+        constantNamed:'GenericToolbarIconLibrary class warn16x16Icon'
+        ifAbsentPut:[(Depth4Image width:16 height:16) bits:(ByteArray fromPackedString:'
+@@@@@B@@@@@@@@@BH@@@@@@@@@H"@@@@@@@@H"H@@@@@@@@"D"@@@@@@@"DRH@@@@@@BH@D"@@@@@BHP@RH@@@@@H!!@AD"@@@@H!!D@DRH@@@@"DP@QD"@@@"
+DQDQDRH@@BHQD@DQD"@BHQDP@QDRH@H"H"H"H"H"H"H"H"H"H"Hb')
+            colorMapFromArray:#[0 0 0 255 255 255 255 0 0]
+            mask:((ImageMask width:16 height:16) bits:(ByteArray fromPackedString:'@H@A @G@@<@C8@_ A?@O<@?8G? _?C?<O?9??''????<b'); yourself); yourself]
+!
+
+warn32x32Icon
+    "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 warn32x32Icon inspect
+     ImageEditor openOnClass:self andSelector:#warn32x32Icon
+     Icon flushCachedIcons
+    "
+
+    <resource: #image>
+
+    ^Icon
+        constantNamed:'GenericToolbarIconLibrary class warn32x32Icon'
+        ifAbsentPut:[(Depth4Image width:32 height:32) bits:(ByteArray fromPackedString:'
+@@@@@@@@@@H @@@@@@@@@@@@@@@@@@@BH@@@@@@@@@@@@@@@@@@@H"H@@@@@@@@@@@@@@@@@@BH"@@@@@@@@@@@@@@@@@@H"H"@@@@@@@@@@@@@@@@@BH"H 
+@@@@@@@@@@@@@@@@H"H"H @@@@@@@@@@@@@@@BH"H"H@@@@@@@@@@@@@@@H"HQH"H@@@@@@@@@@@@@@BH"DRH"@@@@@@@@@@@@@@H"HQDRH"@@@@@@@@@@@@
+@BH"D@D"H @@@@@@@@@@@@H"HP@@D"H @@@@@@@@@@@BH"D@@AH"H@@@@@@@@@@@H"HQ@@@QH"H@@@@@@@@@@BH"DP@@DRH"@@@@@@@@@@H"HQD@@ADRH"@@
+@@@@@@@BH"DQ@@@QD"H @@@@@@@@H"HQDP@@DQD"H @@@@@@@BH"DQD@@ADQH"H@@@@@@@H"HQDQ@@@QDQH"H@@@@@@BH"DQDQ@ADQDRH"@@@@@@H"HQDQDQ
+DQDQDRH"@@@@@BH"DQDQD@DQDQD"H @@@@H"HQDQDP@@DQDQD"H @@@BH"DQDQD@@ADQDQH"H@@@H"HQDQDQD@DQDQDQH"H@@BH"DQDQDQDQDQDQDRH"@@H"
+H"H"H"H"H"H"H"H"H"@BH"H"H"H"H"H"H"H"H"H H"H"H"H"H"H"H"H"H"H"H"H"H"H"H"H"H"H"H"H"H"Hb')
+            colorMapFromArray:#[0 0 0 255 255 255 255 0 0]
+            mask:((ImageMask width:32 height:32) bits:(ByteArray fromPackedString:'
+@@F@@@@A @@@@<@@@@O@@@@G8@@@A>@@@@?0@@@O<@@@G? @@A?8@@@??@@@O?0@@G?>@@A?? @@??<@@O??@@G??8@A??>@@???0@O??<@G??? A???8@??
+??@O???0G???>A???? ????<O????G????9????>??????????<b'); yourself); yourself]
+!
+
 worldIcon25_25
     "This resource specification was automatically generated
      by the ImageEditor of ST/X."
@@ -12325,40 +12379,6 @@
 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@a') ; colorMapFromArray:#[0 0 0 255 0 0 255 255 255]; mask:((ImageMask new) width: 32; height: 32; photometric:(#blackIs0); bitsPerSample:(#[1]); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
 @A?0@@A??@@A??<@@??? @_??<@O??? G???<C???? ????8_????G????3????>?????/????;????>?????/????;????>?????/????9????<_????C??
 ?? ????8G???<@???>@G???@@??? @G??0@@_?0@@A?0@@@@@@@b') ; yourself); yourself]
-!
-
-warn32x32Icon
-    "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 warn32x32Icon inspect
-     ImageEditor openOnClass:self andSelector:#warn32x32Icon
-     Icon flushCachedIcons
-    "
-
-    <resource: #image>
-
-    ^Icon
-        constantNamed:#'GenericToolbarIconLibrary class warn32x32Icon'
-        ifAbsentPut:[(Depth8Image new) width: 32; height: 32; photometric:(#palette); bitsPerSample:(#(8)); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
-@@@@@@@@@@@@@@@@@@@@@PD@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@A@P@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@PDA@P@@@@@@@@@@
-@@@@@@@@@@@@@@@@@@@@@@@@@@@A@PDA@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@PDA@PDA@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@A@PDA@PD@
-@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@PDA@PDA@PD@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@A@PDA@PDA@P@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@PDA
-@PHB@PDA@P@@@@@@@@@@@@@@@@@@@@@@@@@@@@@A@PDA@ HA@PDA@@@@@@@@@@@@@@@@@@@@@@@@@@@@@PDA@PHB@ HA@PDA@@@@@@@@@@@@@@@@@@@@@@@@
-@@@A@PDA@ LC@ DA@PD@@@@@@@@@@@@@@@@@@@@@@@@@@PDA@PHC@0LC@ DA@PD@@@@@@@@@@@@@@@@@@@@@@@@A@PDA@ LC@0LB@PDA@P@@@@@@@@@@@@@@
-@@@@@@@@@PDA@PHB@0LC@0HB@PDA@P@@@@@@@@@@@@@@@@@@@@@A@PDA@ HC@0LC@ HA@PDA@@@@@@@@@@@@@@@@@@@@@PDA@PHB@ LC@0LB@ HA@PDA@@@@
-@@@@@@@@@@@@@@@A@PDA@ HB@0LC@0HB@ DA@PD@@@@@@@@@@@@@@@@@@PDA@PHB@ HC@0LC@ HB@ DA@PD@@@@@@@@@@@@@@@@A@PDA@ HB@ LC@0LB@ HB
-@PDA@P@@@@@@@@@@@@@@@PDA@PHB@ HB@0LC@0HB@ HB@PDA@P@@@@@@@@@@@@@A@PDA@ HB@ HB@0LB@ HB@ HA@PDA@@@@@@@@@@@@@PDA@PHB@ HB@ HB
-@ HB@ HB@ HA@PDA@@@@@@@@@@@A@PDA@ HB@ HB@ LC@ HB@ HB@ DA@PD@@@@@@@@@@PDA@PHB@ HB@ HC@0LC@ HB@ HB@ DA@PD@@@@@@@@A@PDA@ HB
-@ HB@ LC@0LB@ HB@ HB@PDA@P@@@@@@@PDA@PHB@ HB@ HB@ LC@ HB@ HB@ HB@PDA@P@@@@@A@PDA@ HB@ HB@ HB@ HB@ HB@ HB@ HA@PDA@@@@@PDA
-@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@@@A@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PD@@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA
-@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@P@a') ; colorMapFromArray:#[0 0 0 255 0 0 255 255 255 0 0 0]; mask:((ImageMask new) width: 32; height: 32; photometric:(#blackIs0); bitsPerSample:(#[1]); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
-@@F@@@@A @@@@<@@@@O@@@@G8@@@A>@@@@?0@@@O<@@@G? @@A?8@@@??@@@O?0@@G?>@@A?? @@??<@@O??@@G??8@A??>@@???0@O??<@G??? A???8@??
-??@O???0G???>A???? ????<O????G????9????>??????????<b') ; yourself); yourself]
 ! !
 
 !GenericToolbarIconLibrary class methodsFor:'image specs-misc'!
--- a/HorizontalPanelView.st	Fri Nov 18 21:10:35 2016 +0000
+++ b/HorizontalPanelView.st	Fri Nov 18 21:15:56 2016 +0000
@@ -1,5 +1,3 @@
-"{ Encoding: utf8 }"
-
 "
  COPYRIGHT (c) 1989 by Claus Gittinger
 	      All Rights Reserved
@@ -1399,7 +1397,7 @@
         bwChild := child borderWidth.
 
         elementsChangeSize ifTrue:[
-            "to avoid a recursion when we change the elements size"
+            "to avoid a recursion when we change the element's size"
             child removeDependent:self.
         ].
         resizeToMaxV ifTrue:[
@@ -1458,8 +1456,7 @@
          or:[hL == #fitSpace
          or:[resizeToMaxH]]) ifTrue:[
 "/cg: removed this (OLD) piece of code,
-"/ which prevents resizing of label-like things if their sizeFixed
-"/ is set to true (I don't remember why I ever added this)
+"/ which prevents resizing of label-like things if its sizeFixed is set to true 
 
 "/            child sizeFixed ifTrue:[
 "/                d := wEach - (child widthIncludingBorder) // 2.
@@ -1542,11 +1539,11 @@
 
         "/ better to use component's preferredExtent ...
 
-"/        child realized ifTrue:[
-"/            childsPreference := child extent.
-"/        ] ifFalse:[
+        child realized ifTrue:[
+            childsPreference := child extent max:child preferredExtent.
+        ] ifFalse:[
             childsPreference := child preferredExtent.
-"/        ].
+        ].
         sumOfWidths := sumOfWidths + childsPreference x.
         maxHeight := maxHeight max:childsPreference y.
         maxWidth := maxWidth max:childsPreference x.
--- a/Label.st	Fri Nov 18 21:10:35 2016 +0000
+++ b/Label.st	Fri Nov 18 21:15:56 2016 +0000
@@ -1441,8 +1441,8 @@
     labelWidth := labelHeight := 0.
     logo := nil.
     fixSize := false.
-    hSpace := (self horizontalPixelPerMillimeter:0.5) rounded.
-    vSpace := (self verticalPixelPerMillimeter:0.25) rounded
+    hSpace := ((self horizontalPixelPerMillimeter:0.5) max:2) rounded.
+    vSpace := ((self verticalPixelPerMillimeter:0.5) max:2) rounded
 !
 
 recreate
@@ -1643,75 +1643,6 @@
     ^ nil
 ! !
 
-!Label methodsFor:'others'!
-
-rawLabelSizeOf:aLogo
-    "compute the extent needed to hold aLogo; aForm or aString"
-
-    |logoUsed numberOfLines w h textHeight textWidth bounds|
-
-    logoUsed := aLogo.
-    aLogo isString ifTrue:[
-        numberOfLines := 1 + (aLogo occurrencesOf:(Character cr)).
-        (numberOfLines ~~ 1) ifTrue:[
-            logoUsed := aLogo asStringCollection
-        ]
-    ] ifFalse:[
-        (aLogo isStringCollection) ifTrue:[
-            numberOfLines := aLogo size.
-            (numberOfLines <= 1) ifTrue:[
-                logoUsed := aLogo asString
-            ]
-        ]
-    ].
-
-    numberOfLines isNil ifTrue:[
-        "logoUsed is neither a String nor a StringCollection"
-        (logoUsed respondsTo:#preferredBounds) ifTrue:[
-            bounds := logoUsed preferredBounds.
-            w := bounds width.
-            h := bounds height.
-        ] ifFalse:[
-            w := logoUsed widthOn:self.
-            h := logoUsed heightOn:self.
-        ].
-
-"/        b := logoUsed bounds.
-"/        labelWidth := b right.
-"/        labelHeight := b bottom.
-        logoUsed isImageOrForm ifFalse:[
-            w := w + (hSpace * 2).
-            h := h + (vSpace * 2).
-        ].
-        ^ w@h
-    ].
-
-    logoUsed isString ifTrue:[
-        "/ a string or Text
-        textHeight := logoUsed heightOn:self.
-        textWidth := logoUsed widthOn:self.
-    ] ifFalse:[
-        "/ a StringCollection
-        textHeight := (gc font height) * numberOfLines.
-
-        textWidth := 0.
-        logoUsed do:[:line |
-            |thisWidth|
-
-            line notNil ifTrue:[
-                thisWidth := line asString widthOn:self.
-                textWidth := textWidth max:thisWidth
-            ]
-        ].
-    ].
-
-    w := textWidth + (hSpace * 2).
-    h := textHeight + (vSpace * 2).
-    ^ w@h
-
-    "Modified: / 05-12-2011 / 22:35:44 / cg"
-! !
-
 !Label methodsFor:'private'!
 
 computeLabelOrigin
@@ -1830,6 +1761,73 @@
     self invalidate
 
     "Modified: / 6.6.1998 / 19:23:45 / cg"
+!
+
+rawLabelSizeOf:aLogo
+    "compute the extent needed to hold aLogo; aForm or aString"
+
+    |logoUsed numberOfLines w h textHeight textWidth bounds|
+
+    logoUsed := aLogo.
+    aLogo isString ifTrue:[
+        numberOfLines := 1 + (aLogo occurrencesOf:(Character cr)).
+        (numberOfLines ~~ 1) ifTrue:[
+            logoUsed := aLogo asStringCollection
+        ]
+    ] ifFalse:[
+        (aLogo isStringCollection) ifTrue:[
+            numberOfLines := aLogo size.
+            (numberOfLines <= 1) ifTrue:[
+                logoUsed := aLogo asString
+            ]
+        ]
+    ].
+
+    numberOfLines isNil ifTrue:[
+        "logoUsed is neither a String nor a StringCollection"
+        (logoUsed respondsTo:#preferredBounds) ifTrue:[
+            bounds := logoUsed preferredBounds.
+            w := bounds width.
+            h := bounds height.
+        ] ifFalse:[
+            w := logoUsed widthOn:self.
+            h := logoUsed heightOn:self.
+        ].
+
+"/        b := logoUsed bounds.
+"/        labelWidth := b right.
+"/        labelHeight := b bottom.
+        logoUsed isImageOrForm ifFalse:[
+            w := w + (hSpace * 2).
+            h := h + (vSpace * 2).
+        ].
+        ^ w@h
+    ].
+
+    logoUsed isString ifTrue:[
+        "/ a string or Text
+        textHeight := logoUsed heightOn:self.
+        textWidth := logoUsed widthOn:self.
+    ] ifFalse:[
+        "/ a StringCollection
+        textHeight := (gc font height) * numberOfLines.
+
+        textWidth := 0.
+        logoUsed do:[:line |
+            |thisWidth|
+
+            line notNil ifTrue:[
+                thisWidth := line asString widthOn:self.
+                textWidth := textWidth max:thisWidth
+            ]
+        ].
+    ].
+
+    w := textWidth + (hSpace * 2).
+    h := textHeight + (vSpace * 2).
+    ^ w@h
+
+    "Modified: / 05-12-2011 / 22:35:44 / cg"
 ! !
 
 !Label methodsFor:'queries'!
@@ -1841,7 +1839,7 @@
 preferredExtent
     "return my preferred extent - this is the minimum size I would like to have"
 
-    |ext m|
+    |ext m2|
 
     "/ If I have an explicit preferredExtent...
     explicitExtent notNil ifTrue:[
@@ -1860,8 +1858,8 @@
         self label:''
     ].
     ext := self rawLabelSizeOf:logo.
-    m := (margin + self extraMarginForBorder) * 2.
-    ^ (m + ext x + hSpace) @ (m + ext y + vSpace)
+    m2 := (margin + self extraMarginForBorder) * 2.
+    ^ (m2 + ext x + hSpace) @ (m2 + vSpace + ext y)
 
     "Modified: 19.7.1996 / 20:44:41 / cg"
 !
--- a/ListSelectionBox.st	Fri Nov 18 21:10:35 2016 +0000
+++ b/ListSelectionBox.st	Fri Nov 18 21:15:56 2016 +0000
@@ -367,10 +367,12 @@
                     [:text | |string index|
                         enterField notNil ifTrue:[
                             string := enterField contents.
-                            "/ find the first list-entry, starting with entered text
-                            index := (selectionList list ? #()) findFirst:[:line | (line ? '') string startsWith:string string].
-                            index ~~ 0 ifTrue:[
-                                selectionList scrollToLine:index "/ makeLineVisible:index.
+                            string notEmptyOrNil ifTrue:[
+                                "/ find the first list-entry, starting with entered text
+                                index := (selectionList list ? #()) findFirst:[:line | (line ? '') string startsWith:string string].
+                                index ~~ 0 ifTrue:[
+                                    selectionList scrollToLine:index "/ makeLineVisible:index.
+                                ].
                             ].
                         ].
                     ].
--- a/ListView.st	Fri Nov 18 21:10:35 2016 +0000
+++ b/ListView.st	Fri Nov 18 21:15:56 2016 +0000
@@ -1348,7 +1348,7 @@
 
 setContents:something
     "set the contents (either a string or a Collection of strings)
-     dont change position (i.e. do not scroll).
+     don't change position (i.e. do not scroll).
      This can be used to update a self-changing list
      (for example: a file list being shown, without disturbing user too much).
      Compare with #contents:, which scrolls to top."
@@ -1357,9 +1357,9 @@
 
     l := something.
     l notNil ifTrue:[
-	l isString ifTrue:[
-	    l := l asStringCollection
-	]
+        l isString ifTrue:[
+            l := l asStringCollection
+        ]
     ].
     self setList:l.
 
@@ -2367,7 +2367,7 @@
     <resource: #keyboard (#PreviousPage #NextPage #HalfPageUp #HalfPageDown
                           #BeginOfText #EndOfText
                           #ScrollUp #ScrollDown 
-                          #ZoomIn #ZoomOut)>
+                          )>
     |n|
 
     (key == #PreviousPage) ifTrue: [^ self pageUp].
@@ -2386,7 +2386,6 @@
         n := 1 + (self sensor compressKeyPressEventsWithKey:#ScrollDown).
         ^ self scrollDown:n
     ].
-    (key == #ZoomIn or:[key == #ZoomOut]) ifTrue:[ self keyboardZoom:(key == #ZoomIn) ].
 
     super keyPress:key x:x y:y
 !
@@ -2397,6 +2396,18 @@
     self fontLargerOrSmaller:larger
 !
 
+keyboardZoom:larger inAllViews:inAllViews
+    "CTRL+/- zoom action"
+
+    inAllViews ifTrue:[
+        SimpleView allSubInstancesDo:[:each |
+            each keyboardZoom:larger 
+        ].    
+    ] ifFalse:[
+        self keyboardZoom:larger 
+    ].
+!
+
 mapped
     self stopAutoScroll.
     super mapped
@@ -2719,8 +2730,7 @@
      for fix fonts, this is easy ...
     "
     (fontIsFixedWidth
-    and:[lineString isNil
-          or:[lineString hasChangeOfEmphasis not]]) ifTrue:[
+    and:[lineString isNil or:[lineString hasChangeOfEmphasis not]]) ifTrue:[
         ^ (xRel // fontWidth) + 1
     ].
 
@@ -2937,6 +2947,11 @@
     "/ fontAscent := font maxAscent "ascent". "/ maxAscent. -- see SelectionInListViews selection in motif style
     "/ fontAscent := (font maxAscent + font ascent) // 2. "/ maxAscent. -- see SelectionInListViews selection in motif style
     fontWidth := newDeviceFont width.
+    fontWidth == 0 ifTrue:[
+        "/ should not happen, but some bad fonts seem to have it
+        ('ListView [info]: font says, it has zero width: ', newDeviceFont printString) infoPrintCR.
+        fontWidth := 1.
+    ].    
     fontIsFixedWidth := newDeviceFont isFixedWidth.
 
     "Modified: 3.7.1997 / 12:24:25 / cg"
@@ -3543,7 +3558,7 @@
 "/    nFullLinesShown ~~ nLinesShown ifTrue:[
 "/        numLines := numLines + 1
 "/    ].
-    ^ numLines * fontHeight "dont take font height here - think of LabelAndIcons"
+    ^ numLines * fontHeight "don't take font height here - think of LabelAndIcons"
 "/                            + textStartTop
                             - (lineSpacing // 2)
                             + (gc deviceFont descent)
@@ -4046,7 +4061,7 @@
     xVis := xWant - viewOrigin x.
 
     "
-     dont scroll, if already visible
+     don't scroll, if already visible
      (but scroll, if not in inner 20%..80% of visible area)
     "
 "/    ((xVis >= (width // 5)) and:[xVis <= (width * 4 // 5)]) ifTrue:[
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/MacOSX3ToolbarIconLibrary.st	Fri Nov 18 21:15:56 2016 +0000
@@ -0,0 +1,273 @@
+"{ Package: 'stx:libwidg' }"
+
+"{ NameSpace: Smalltalk }"
+
+MacOSX2ToolbarIconLibrary subclass:#MacOSX3ToolbarIconLibrary
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:''
+	category:'Interface-Smalltalk'
+!
+
+
+!MacOSX3ToolbarIconLibrary class methodsFor:'image specs'!
+
+editOverlay32x32Icon
+    "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 editOverlay32x32Icon inspect
+     ImageEditor openOnClass:self andSelector:#editOverlay32x32Icon
+     Icon flushCachedIcons
+    "
+
+    <resource: #image>
+
+    ^Icon
+        constantNamed:'MacOSX3ToolbarIconLibrary class editOverlay32x32Icon'
+        ifAbsentPut:[(Depth8Image width:32 height:32) bits:(ByteArray fromPackedString:'
+B@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ H
+B@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ H
+B@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ H
+B@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ HTR4HB@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ HBC]]U58HB@ HB@ HB@ H
+B@ HB@ HB@ HB@ HB@ HB@!!XA3X;QPHHB@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ HP!!P*E!!H(U@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ HBBQHS1EFBPPHB@ H
+B@ HB@ HB@ HB@ HB@ HB@ HB@ KO"\)D1<CB@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ HH$L5L084UP HB@ HB@ HB@ HB@ HB@ HB@ HB@ HBD0PFCH8VP@H
+B@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ #O3T2V1URB@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ HHP45L# ]@S0HB@ HB@ HB@ HB@ HB@ HB@ HB@ HBBDMMSI[
+GQ,HB@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ !!CST2V14AB@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ HH045L%,]W@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ HB@T?
+MSI[F!!$HB@ HB@ HB@ HB@ HB@ HB@ HB@ HB@!!ZT3D2L@<:B@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ HV )GI#!!JRP HB@ HB@ HB@ HB@ HB@ HB@ HB@ H
+B@!!ACC$FE34HB@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ HJ2<.GBT=B@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ HB@!!@G$5NOP HB@ HB@ HB@ HB@ HB@ HB@ H
+B@ HB@ HR2APQ@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ HB@!!VK@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ H
+B@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ HB@@a')
+            colorMapFromArray:#[157 97 33 145 93 38 202 112 159 117 119 113 208 105 154 194 109 25 252 182 86 144 153 151 0 0 0 116 128 122 224 186 118 196 111 26 255 255 243 255 218 119 255 153 9 255 154 18 255 220 121 192 194 195 201 140 202 150 153 159 210 211 214 255 151 15 129 138 134 255 155 20 255 246 223 149 95 40 255 151 16 143 92 37 252 205 129 255 150 15 128 118 98 113 111 112 75 81 95 191 106 23 197 112 29 192 107 24 198 109 19 208 150 76 255 188 93 255 248 214 186 132 193 147 158 171 228 232 230 140 96 33 100 82 54 221 131 183 255 229 169 241 198 116 255 152 20 255 245 221 255 189 98 255 191 95 111 122 134 255 246 222 219 161 219 211 126 187 255 151 19 252 222 170 161 102 43 206 153 208 225 235 246 157 109 59 255 220 118 255 218 120 120 100 72 194 151 95 148 153 158 255 219 121 107 72 26 194 143 200 153 155 155 255 251 235 163 170 181 164 108 51 255 155 22 130 107 72 196 111 27 237 190 111 159 110 42 225 229 232 105 86 62 213 128 186 147 95 39 255 219 119 200 107 152 115 112 113 117 112 106 216 166 218 151 156 157 255 151 12 198 110 23 255 151 20 145 94 39 227 175 228 207 123 171]
+            mask:((ImageMask width:32 height:32) bits:(ByteArray fromPackedString:'
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@F@@@@C0@@@A>@@@@? @@@_0@@@O8@@@G<@@@C>@@@A?@@@@?0@@@_0@@@O8@@@G<@@@C
+>@@@A?@@@@? @@@O0@@@G8@@@A<@@@@<@@@@L@@@@@@@@@@@@@@b'); yourself); yourself]
+!
+
+help32x32Icon
+    "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 help32x32Icon inspect
+     ImageEditor openOnClass:self andSelector:#help32x32Icon
+     Icon flushCachedIcons
+    "
+
+    <resource: #image>
+
+    ^Icon
+        constantNamed:'MacOSX3ToolbarIconLibrary class help32x32Icon'
+        ifAbsentPut:[(Depth8Image width:32 height:32) bits:(ByteArray fromPackedString:'
+HB@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ N4H9K"@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ HB@;LC=UC29NHB@ HB@ HB@ HB@ 
+HB@ HB@ HB@ HB@ HC,0@UTGA3$YHB@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ N3@AUP\GUP$-HB@ HB@ HB@ HB@ HB@ HB@ HB@ HC0;L@EUA0]UO3$*G#8>
+EAPPMDDPHB@ HB@ HB@;N38>O#,0@UTGA5T?L@1KIT CBR=XMST5MQD"HB@ TRT0F$IBN3@AUP\GUPD0BD-TJ3H0UP\GA0]UUS!!QHBAYL3=EQSX;L@EUA0]U
+@SADLUP+L <AA0]U@SAUIP, HE$3O4UEM#,0@UTGA5TALDP1UB,2C0DGA5TALETWB2@ VP4?QTT6N3@AUP\GUPD0QCETJ3HO@P\GUPD0UQ\KHBAYCS=EQSX;
+L@EUA0]U@SADLUP+L <AA0]U@SAUE0, HE$MLDUEM#,0@UTGA5TALDP1UB,2C0DGA5TALETMVR@ VP40QTT6N3@AUP\GUPD0QCETJ3HO@P\GUPD0UP5YHBAY
+CSAEQSX;L@EUA0]U@SADLUP+L <AA0]U@S@?CU$ HE$MLDUEM#,0@UTGA5TALDP1UB,2C0DGA5TALC<MVR@ VPTZQTT6N3@AUP\GUPD0QCETJ3HO@P\GUPD0
+O05YHBAYAQ)EQSX;L@EUA0]U@SADLUP+L <AA0]U@S@?JE$ HE$EF$UEM#,0@UTGA5TALDP1UB,2C0DGA5TALC<EVR@ VPTZQTT6N3@?UP\GUPD0QCETJ3HO
+@P\GUPD0O0UYHBAYAQ)EQSXDE%@AA0]U@SADLUP+L <AA0]U@S@?AU$ HE$ESDUEM%PMH @"BUT?O4P1UB,2C0DGA5TALC<,VR@ VR1ZQTT6M"UWU4,R@@L?
+BCETJ3HO@P\GUPD0U"1YHBAYI5)EQSX+IU]WR08''D LHR5QHL <AA0]U@SAVI5$ HE$)V )EM#X%IU]IR09SE0YKIT CP@DGA5T?LEX''VR@ T"YLQ$MEM#YW
+D"L$IA<UBBL$M0@BP@\GA5T?O0URHBARS2D!!HRD!!PTEAPTEAPTEAPTEAPRD[F14]GQ4!!S5H HEH\FA XFA XFA XFA!!JM3]JFA XFA XFA XFA \T"@ OQLS
+D1LSD1LSD1LSD1MGN!!LSD1LSD1LSD1LSD1L=HB@ HB@ HB@ HB@ HB@ SQLSSR@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ 
+HB@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ HB@ H@@a')
+            colorMapFromArray:#[207 191 159 255 240 239 223 207 191 240 224 208 223 192 175 224 192 160 223 191 144 255 255 255 223 191 143 239 224 208 255 224 207 32 112 191 207 176 144 224 207 175 224 207 159 240 239 223 191 175 159 208 192 176 208 191 159 16 96 160 191 176 160 208 191 144 224 208 191 224 207 176 144 144 144 192 175 144 255 240 223 176 159 143 159 159 144 175 159 143 192 176 160 192 160 128 0 0 0 176 160 143 208 192 160 192 175 143 191 160 128 239 208 176 224 192 159 223 192 159 224 192 175 223 191 159 175 160 144 239 223 191 223 192 160 191 175 143 207 191 160 223 208 207 255 240 224 223 207 160 239 224 207 239 207 176 176 175 144 207 192 176 240 223 191 191 160 143 239 208 191 224 208 192 143 144 144 208 192 175 127 112 111 48 127 191 207 191 175 255 255 239 240 239 224 176 160 144 255 239 223 255 224 192 208 191 143 240 224 192 255 239 207 160 159 128 239 223 192 239 207 160 143 144 159 224 207 160 255 240 208 47 111 160 144 143 112 192 160 143 239 223 207 32 112 176 47 127 191 223 192 144 224 208 176 255 255 240 255 255 224 239 208 175 208 207 191 32 127 191 255 239 208]
+            mask:((ImageMask width:32 height:32) bits:(ByteArray fromPackedString:'
+@@@@@@G @@@A?@@@@_8@@@G?@@@C???@O????G????9????>_????''????9????>_????''????9????>_????''????9????>_????''????9????>_????''??
+??9????>_????''????9????>_????''????8@@<@@@@@@@@@@@@@b'); yourself); yourself]
+!
+
+osxTerminalIcon
+    "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 osxTerminalIcon inspect
+     ImageEditor openOnClass:self andSelector:#osxTerminalIcon
+     Icon flushCachedIcons
+    "
+
+    <resource: #image>
+
+    ^Icon
+        constantNamed:'MacOSX3ToolbarIconLibrary class osxTerminalIcon'
+        ifAbsentPut:[(Depth8Image width:32 height:32) bits:(ByteArray fromPackedString:'
+H2L#H2L#H2L#H2L#H2L#H2L#H2L#H2L#H2L#H2L#H2L#H5.5YZV%)ZTUEU-HRD!!HRD!!HRD!!HRD!!HRD!![!!I@#H2N?XPR4-ELB["X&YKN3,;N3,;N3,;N3,;N3
+,;L&BU\#H6U(%R?BKJMX#7410A XFA XFA XFA XFA XFA!!5W2L#EF@.L!!A0F"]CB1I7W#,;N3,;N3,;N3,;N3-^"X^AH2NYUXY9CB@ AZ^M\UKD1LSD1LSD
+1LSD1LSD1K9G/@@#H;>CKR (JB""1,YNS$9NS$9NS$9NS$9NS$9NIT&7/2L# I CBC4HB@4MCP4MCP4MCP4MCP4MCP4MCP4H@9"@H2L@_#!!D&#2R.Q?A%9^W
+%9^W%9^W%9^W%9^W%4P8_ @#H5^]\2(),J,\) (FA XFA XFA XFA XFA XFIGN]U2L#*U0W[1=?,D.9(D1LSD1LSD1LSD1LSD1LSD1:E52)H2M-_$QL(A$9
+,I3IJ2,+J2,+J2,+J2,+J2,+J:QD_&4#H9M>TZ(FZ+AJTCB-+Z6-+Z6-+Z6-+Z6-+Z6-UEE>$2L#A<OE^L&0.&L:PW1<_G1<_G1<_G1<_G1<_G1Z1\LGH2NB
+06$!!F18>HP?G1<_G1<_G1<_G1<_G1<_G12I)08H#H7SC%H Q"AE"X&I"X&I"X&I"X&I"X&I"X&I""ISC]BL#''#]8C*>/+:>/+:>/+:>/+:>/+:>/+:>/+:<N
+^C^^H2N^@ZE;*J"(*J"(*J"(*J"(*J"(*J"(*J"(*G.!!@Y8#H7XA";,VE!!XVE!!XVE!!XVE!!XVE!!XVE!!XVE!!XV.8,A]"L#SY._M[J2,+J2,+J2,+J2,+J2,+J2
+,+J2,+H5''9-MH2LS&5Z.WU5]WU5]WU5]WU5]WU5]WU5]WU5]WZ9V&1L#H4>[,X*L#H2L#H2L#H2L#H2L#H2L#H2L#H2L"+F[S2L#2CX5$V]''Y6]''Y6]''Y6]''
+Y6]''Y6]''Y6]''Y6^QMS[HH2MBVZ:6.K"8.K"8.K"8.K"8.K"8.K"8.K"8.KZ.VTH#H4U2O6X]GQ4]GQ4]GQ4]GQ4]GQ4]GQ4]GQ4]Y#=2QRL#+HUFGYZV%)ZV
+%)ZV%)ZV%)ZV%)ZV%)ZV%)X]Q(V,H2N,L8)''PDA@PDA@PDA@PDA@PDA@PDA@PDA@PF^JL:0#H62XZ8U2\''I2\''I2\''I2\''I2\''I2\''I2\''I2!!V.X[BL#MH:=
+/[6=/[6=/[6=/[6=/[6=/[6=/[6=/[6=/X84H2L#H2L#H2L#H2L#H2L#H2L#H2L#H2L#H2L#H2L#H2L#H2L#H2L#H2L#H2L#H2L#H2L#H2L#H2L#H2L#H2L#
+H2L#H2L#H2L#H2L#H2L#H2L#H2L#H2L#H2L#H2L#H2L#H0@a')
+            colorMapFromArray:#[142 144 147 239 239 239 250 254 255 42 42 44 252 255 255 196 199 208 73 73 76 136 138 142 51 51 53 213 214 216 72 72 76 80 133 0 193 202 208 52 52 54 90 90 92 85 87 88 215 233 244 88 88 91 227 224 236 129 132 135 142 146 150 145 147 152 97 97 100 62 62 64 204 206 208 60 60 62 238 134 0 82 83 85 61 61 64 112 113 116 77 78 80 68 68 70 193 200 211 83 84 86 84 85 87 0 0 0 71 71 74 235 235 235 255 254 255 224 226 247 235 237 237 63 63 67 69 69 72 79 79 81 253 159 57 232 234 234 238 7 0 232 111 96 78 78 82 241 239 249 237 6 0 236 235 235 113 115 118 97 98 101 239 238 238 240 239 239 55 55 57 130 130 132 81 80 82 172 173 177 59 59 61 51 51 54 78 79 81 102 103 107 108 109 112 84 83 85 126 128 131 80 134 0 66 66 68 125 127 130 104 105 109 196 197 199 144 147 150 232 232 232 140 140 143 136 138 139 76 76 78 131 133 136 236 236 236 128 130 134 70 70 74 68 68 71 197 198 201 249 255 255 79 79 82 237 243 245 91 92 94 141 143 146 239 241 255 239 238 237 82 82 84 145 147 150 241 240 240 102 103 105 172 173 176 144 146 150 222 235 239 212 218 220 89 89 92 73 72 75 254 252 255 144 148 151 110 111 114 107 108 111 240 253 255 73 74 76 142 142 144 236 236 235 124 126 129 138 141 144 253 253 255 73 73 74 237 135 0 198 198 204 238 238 237 59 59 62 134 136 139 243 244 245 132 134 137 171 171 176 80 80 82 192 207 211 74 74 76 92 93 95 84 84 86 148 184 57 240 240 240 138 139 140 141 143 147 143 145 148 135 137 141 230 231 230 145 147 151 238 237 237 192 206 210 226 225 227 87 87 90 170 171 175 102 103 106 86 86 89 104 105 108 202 200 212 123 125 128 111 172 0 145 146 149 105 106 109 60 60 63 137 140 143 77 76 80 255 48 19 113 114 117 69 69 71 237 237 236 142 145 148 64 64 66 239 239 238 147 147 149 241 241 240 133 135 138 88 89 92 73 73 75 82 83 86 236 236 237 233 177 117 77 77 79 144 147 151 69 69 73 201 200 213 94 95 97 140 142 145 78 78 81 139 139 139 123 126 129 81 81 84 100 101 103 92 92 94 255 255 255 93 94 98 99 100 103 253 253 254 250 255 255 145 149 152 108 109 111 230 230 229 110 111 113 65 65 67 145 145 146 95 95 98 239 240 240 121 123 127 197 198 200 141 144 147 203 205 208 69 69 70 230 247 255 240 240 239 198 199 201 71 71 73 237 237 238 86 87 89 127 129 133 75 75 77]
+            mask:((ImageMask width:32 height:32) bits:(ByteArray fromPackedString:'
+@@@@@C????1????>_????''????9????>_????''????9????>_????''????9????>_????''????9????>_????''????9????>_????''????9????>_????''??
+??9????>_????''????9????>_????''????8@@@@@@@@@@@@@@@@b'); yourself); yourself]
+!
+
+stxHelp32x32Icon
+    "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 stxHelp32x32Icon inspect
+     ImageEditor openOnClass:self andSelector:#stxHelp32x32Icon
+     Icon flushCachedIcons
+    "
+
+    <resource: #image>
+
+    ^Icon
+        constantNamed:'MacOSX3ToolbarIconLibrary class stxHelp32x32Icon'
+        ifAbsentPut:[(Depth8Image width:32 height:32) bits:(ByteArray fromPackedString:'
+&I"X&I"X&I"X&I"X&I"X&I"X&I"X&I"X&I"X&I"X&I"X&I"X&I"XH"VS#)"X&I"X&I"X&I"X&I"X&I"X&I"X&I"X&I"X&I!!DKEH''HV5=&I"X&I"X&I"X&I"X
+&I"X&I"X&I"X&I"X&BH:ZU(/K0(U&I"X&I"X&I"X&I"X&I"X&I"X&I"X&I"XY3))@B</V(A_&I"X&I"X&I"X&I"X&I"X&I"X&I"X&D%''N&$@K2<@T%@>DVI"
+%VM2N7&R&I"X&I"X&I MQH^GX$P:ZP@/%0BV\4=$^(UQD !!]HI>_"#&B&I"XM#T,_E9^QC))@B>W@F$,FFP<VSDYI2</K9]Z#AX6&I $ UIUK#5DN&$@K9\@
+ZR1X$C1YLRDO%2<''RB1ZMWRX&BRA%%T.OTP:ZP@/%0A)KE"POE$1HP>WK2]HKH2^]I"XIFBVUR8=QC))@B>W@F$,VI@<VSD!!C9\/I4 ,#I94&I $XIYUK#5D
+N&$@K9\@ZR1X$C1YLRDO%2<''RB2L''''RX&BPIKET.OTP:ZP@/%0A)KE"POE&HHP>WK8!!HKH1 II"XI@$,UR8=QC))@B>W@F$,VI@<VSFHC9^HI4 ,#F@$&I $
+ 3)UK#5DN&$@K9\@ZR1X$C1YLRFH"B<''RB1R 2RX&@MKN%T.OTP:ZP@/%0A)KE"POE$1HP>HK2]HKEJCII"X@69<UR8=QC))@B>W@F$,VI@<VSD!!"I^HI4 ,
+T$,$&I C[''1UK#5DN&$@K9\@ZR1X$C1YLX O%2>HK21RP"RX&@M._ET.OTP:ZP@/%0A)KE"POE&HHP>WK2^HKIY.II"X@8=EUR8=QB1RV"</@F$,VI@<VX !!
+C9\/I4 ,%&8C&I C#4UUK#6QZDX3K2<@ZR1X$C1YLRDO%2<''RB2V#0NX&@LTA%T.OS1KD7\7NB]R%%"POE$1HP>WK2]HKIY8@9"X@7"KUR8=XZA\_6Q[!! .V
+FI@<VSD!!C9\/I4 ,H7 C&I CAX-UK#5G(B)?''G9*#P-NYC2DLRDO%2<''RB0#APNX&@L_"1(.OVF C"(B]R&[YU^YL!!1QACNWK5)RKBLE@9"XT4LF\V,.PB!!?
+DI5MI&ZTS)5JGR56A2</K5(+SAQS&I!!SE7A0\GA0"X&ICG-;^7%9C@0L"WAAPPDA@PE0E5NX&I(0F1,[F1,[F1,[F1,?UEP?F1,[F1,[F1,[F1,0&)"XMEYV
+U%YVU%YVU%YVU%Y/[EYVU%YVU%YVU%YVU%X4&I"X&I"X&I"X&I"X&I"XG%YVG)"X&I"X&I"X&I"X&I"X&I"X&I"X&I"X&I"X&I"X&I"X&I"X&I"X&I"X&I"X
+&I"X&I"X&I"X&I"X&I"X&I"X&I"X&I"X&I"X&I"X&I"X&@@a')
+            colorMapFromArray:#[255 248 240 175 159 136 232 207 167 39 120 191 247 239 224 223 192 159 255 240 215 247 239 231 223 215 200 231 200 175 231 215 199 240 231 215 183 167 144 215 192 168 239 215 176 248 240 232 215 191 152 192 183 167 232 224 208 215 192 160 224 192 160 192 175 144 232 215 184 192 167 143 216 184 136 248 240 231 248 231 200 144 151 151 239 223 199 184 167 136 40 111 160 223 191 159 207 199 183 240 232 223 215 192 175 255 248 231 39 120 184 248 239 216 184 160 128 255 248 247 240 223 184 231 200 159 232 208 175 255 255 239 255 247 231 200 184 159 247 224 192 255 255 255 152 152 151 239 224 207 232 215 183 248 247 239 48 127 184 232 208 183 39 119 183 208 192 167 232 224 215 208 192 176 255 247 224 176 168 151 231 208 176 240 223 191 175 160 151 143 151 152 247 223 191 176 159 136 224 199 168 224 192 159 208 192 175 255 240 216 232 223 200 239 216 184 255 247 239 120 112 104 184 167 135 224 200 168 255 255 232 184 160 135 216 191 143 207 183 144 231 215 192 240 231 208 255 248 239 40 120 191 184 160 136 247 224 199 23 103 167 216 191 144 215 184 136 232 216 191 255 255 247 215 191 159 232 215 175 208 200 184 255 239 216 184 168 143 231 207 175 240 216 184 200 191 168 191 176 160 224 200 160 224 207 176 192 167 135 215 199 175 224 208 184 255 247 232 223 199 152 248 231 199 136 144 151 207 184 160 224 199 167 167 152 135 176 160 143 255 232 207 184 168 152 255 240 224 39 119 184 231 207 160 216 207 184 207 184 159 223 192 160 176 167 151 232 208 176 183 167 151 255 240 223 151 136 119 224 200 159 232 208 168 239 224 208 232 207 176 215 192 167 231 200 168 232 216 192 239 223 192 207 191 159 207 191 168 0 128 95 176 160 144 207 192 176 255 239 215 255 255 240 208 184 152 200 184 160 224 199 160 223 200 160 216 199 175 184 175 152 224 215 192 215 191 144 191 183 160 255 248 232 255 255 248 0 0 0 224 207 167 47 127 191 223 192 151 231 207 167 192 168 136 231 207 176 207 192 183 239 215 183]
+            mask:((ImageMask width:32 height:32) bits:(ByteArray fromPackedString:'
+@@@@@@G @@@A?@@@@_8@@@G?@@@C???@O????G????9????>_????''????9????>_????''????9????>_????''????9????>_????''????9????>_????''??
+??9????>_????''????9????>_????''????8@@<@@@@@@@@@@@@@b'); yourself); yourself]
+!
+
+stxHelpIcon
+    ^ self stxHelp32x32Icon
+! !
+
+!MacOSX3ToolbarIconLibrary class methodsFor:'image specs - tools'!
+
+imageEditor32x32Icon
+    "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 imageEditor32x32Icon inspect
+     ImageEditor openOnClass:self andSelector:#imageEditor32x32Icon
+     Icon flushCachedIcons
+    "
+
+    <resource: #image>
+
+    ^Icon
+        constantNamed:'MacOSX3ToolbarIconLibrary class imageEditor32x32Icon'
+        ifAbsentPut:[(Depth8Image width:32 height:32) bits:(ByteArray fromPackedString:'
+))3HNS$9NS$9NS$9NS$9NS$9NS$9NS$9NS$92I2&)*Z&N\SD1LSD1LSD1LSD1LSD1LSD1LSD1LSD1LSDNZZ&)*Y-1JLWE1\WE1\WE1\WE1\WE1\WE1\WE1\W
+(<Q-)*Z&)&7D(]''Y6]''Y6]''Y6]''Y6]''Y6]''Y6]''Y6]&!!1F6&)*Z&[\R=/+:>/+:>/+:>/+:>/+:>/+:>/+:>/+7D[ZZ&)*YF1D,MCP4MCP4MCP4MCP4MCP4M
+CP4MCP4MR<QF)*Z&)*KD+UEQTUEQTUEQTUEQTUEQTUEQTUEQTUF-1JJ&)*Z&ALSAV%)ZV%)ZV%)ZV%)ZV%)ZV%)ZV%)ZV,GDAJZ&)*XD1I<TEAPTEAPTEAPT
+EAPTEAPTEAPTEAPT''<PD)*Z&)+#DM]_W5=_W5=_W5=_W5=_W5=_W5=_W5=\5+G.&)*Z&.LQ#JR$)JR$)JR$)JR$)JR$)JR$)JR$)JX0;O5>&)*[C1E!!WU5]W
+U5]WU5]WU7=W271WJE]WU5]A"<\BNM2&)+?DW"P$ 8L$IBP$IBS["[Z.UV)+ 2P$$#QD4(RBPJZ&/<RJ*2N1M#^+*8NCS"9MBP&OZV$0*=B]G0,[HLJ&)*YB
+1B[U1Z;O7;QPT-U"-0$IBPM)Z]<+]U23$''%3)*Z&) ;D^)USBWQ)D=M%%Z8IBP$I.TNOCJ\]5A1[QP:&)*Z&C,RFT0$IB]M)Z]).BP$IBP&N&R,!!GQFSEVGD
+C*Z&)*X<1H IBP$I#=OOBP$IBX:/+6XF)14Q,!!U]5\P<)*Z&)#3D"@$IBP%430$IBX;NUI8-#Z(]DYLUWW!!''1C2&)*Z&2,RHBP$IBP$IBX9YRD>)@H6*GQF2
+EPVV% +D2*Z&)*XY1H IBP$IBP$IVXU0%GFM*!!4Q,!!U]B (JF,PY)*Z&)!!''D"@$IBP$IBX;!!\IPOA*(]D[HUWY*Z&))21A&&)*Z&FLRHBP$IBX:N(GCX@K*''
+GQF2$=9,[F1,[C;DFJZ&)*XX1H I#"=I[;BEI:&Q*!!4Q2YALO#8>O#8>E,PX)*Z&)!!#DG''^[Z@G!!8B^)$Y^G5IOI8"I>E!!XVE!!Y>1A"&)*Z&*LP2OI PL8D%
+_ZP1D-DG2ZV;YFC#8>O#8;WD*JZ&)*Z<1LSD1LSD1LSDQ0#LN"2%1LSD1LSD1LSD1LR<)*Z&)''X=*J"(*J"(*J#F3UYJ)Z"(*J"(*J"(*J"(OWZ&)*Z&)*Z&
+)*Z&)*Z&J-[@7ZZ&)*Z&)*Z&)*Z&)*Z&)*Z&)*Z&)*Z&)*Z&)*[$ JZ&)*Z&)*Z&)*Z&)*Z&)*Z&)*Z&)*Z&)*Z&)*Z&)*Z&)*Z&)*Z&)*Z&)*Z&)*Z&)*Z&
+)*Z&)*Z&)*Z&)*Z&)*Z&)*Z&)*Z&)*Z&)*Z&)*Z&)*Z&) @a')
+            colorMapFromArray:#[223 168 39 207 144 47 207 152 208 152 152 72 208 143 32 143 95 39 192 104 24 255 183 87 240 199 119 136 136 48 168 208 255 192 192 192 199 112 31 199 200 231 199 128 32 223 183 79 199 143 32 255 191 96 255 255 240 167 167 95 224 215 208 255 151 15 151 199 255 168 183 255 184 120 32 191 127 32 160 207 255 152 152 152 255 152 8 255 247 223 151 128 39 224 231 232 119 128 120 255 223 120 152 199 255 192 223 255 191 208 255 215 159 32 184 216 255 215 167 47 192 207 255 191 200 255 128 104 72 199 111 24 208 151 79 224 175 40 176 192 199 143 136 48 184 200 208 192 151 95 191 127 23 200 144 32 208 208 215 232 216 192 167 168 111 184 207 223 192 143 200 216 151 39 255 207 128 224 175 231 192 128 32 183 119 39 152 200 255 216 167 216 200 104 152 151 159 159 199 135 32 168 168 103 231 232 231 112 112 112 208 144 39 143 96 32 207 152 48 167 136 48 159 111 40 192 199 231 160 103 40 136 136 55 192 216 255 216 160 47 191 216 240 207 207 223 191 223 255 136 135 40 208 160 48 160 160 88 239 191 111 191 207 255 184 200 255 160 143 48 216 208 216 111 120 135 255 248 215 144 95 39 184 207 255 207 120 168 176 208 255 159 96 32 168 184 168 184 199 255 215 232 255 176 199 183 175 152 48 168 215 255 200 143 47 167 167 96 168 168 111 184 200 232 159 200 255 215 144 39 136 135 47 184 144 48 215 160 47 223 175 48 159 207 255 119 119 112 151 151 71 255 223 119 184 127 47 168 136 48 224 232 247 112 111 112 191 224 255 223 128 183 168 168 119 216 167 32 144 192 255 192 208 255 103 80 55 207 152 32 184 135 192 191 215 255 200 143 200 215 159 47 152 167 120 255 248 232 128 128 39 183 200 224 184 215 255 144 152 151 208 127 184 191 104 23 135 136 48 159 159 87 255 152 16 199 111 23 151 152 159 255 151 16 216 167 40 159 168 127 175 215 255 224 184 119 192 135 32 135 135 48 167 207 255 192 136 47 224 159 47 160 168 183 223 168 47 223 208 207 183 151 48 176 184 247 208 143 39 160 176 255 223 175 32 159 111 56 0 0 0 255 216 120 183 119 32 216 168 47 255 216 119 191 216 255 215 128 184 207 200 223 135 135 40 152 144 48 208 152 47 152 160 119 255 151 23 144 159 168 175 183 143 135 184 255 143 143 64 135 135 39 207 136 32 144 144 63 192 111 24 216 232 255 183 120 39 184 192 239 191 199 239 200 135 32 104 87 63 215 207 215 208 104 152 200 136 32 255 255 255 159 167 127 120 103 72 216 160 216 216 152 39 255 152 23 192 127 32 143 144 72 255 231 168 128 119 96 160 144 48 159 159 80 199 111 16 255 223 168 128 136 135 167 167 103 255 191 95 192 224 255 72 80 95 239 223 199 216 167 47 183 191 247 152 152 79 192 215 255 200 112 159 104 72 24 151 95 40 167 160 88 208 159 47 207 152 47 167 111 48 136 191 255 119 112 104]
+            mask:((Depth1Image width:32 height:32) bits:(ByteArray fromPackedString:'
+_???>G????!!????8_???>G????!!????8_???>G????!!????8_???>G????1????>_????''????1????8_???>G????!!????8_???>G????!!????8_???>G??
+??!!????8_???>G????!!????8_???>@@<@@@@L@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@a'); yourself); yourself]
+!
+
+imageEditorIcon
+    <resource:#programImage>
+    ^ self imageEditor32x32Icon
+!
+
+startImageEditorIcon
+    <resource: #programImage>
+
+    ^ self imageEditor32x32Icon
+!
+
+startUIPainterIcon
+    <resource: #programImage>
+
+    ^ self uiPainter32x32Icon
+!
+
+uiPainter32x32Icon
+    "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 uiPainter32x32Icon inspect
+     ImageEditor openOnClass:self andSelector:#uiPainter32x32Icon
+     Icon flushCachedIcons
+    "
+
+    <resource: #image>
+
+    ^Icon
+        constantNamed:'MacOSX3ToolbarIconLibrary class uiPainter32x32Icon'
+        ifAbsentPut:[(Depth8Image width:32 height:32) bits:(ByteArray fromPackedString:'
+#.)@D8^G!!8^G!!8^G!!8^G!!8^G!!8^G!!8^G!!8\SPN*N#(:NPM_D]''Y6]''Y6]''Y6]''Y6]''Y6]''Y6]''Y6],SWPH:N#(9[=%H+JR$)JR$)JR$)JR$)JR$)JR$)JR$+
+T/Y[#(:N#%>PXM5GQ4]GQ4]GQ4]GQ4]GQ4]GQ4]GQ=5 $E>N#(:NLS+ZA)JR$)JR$)JR$)JR$)JR$)JR$)JRA-(:LX:N#(;^A6GF1,[F1,[F1,[F1,[F1,[F
+1,[F1,[FXP_^#(:N#%M&.GE1\WE1\WE1\_''9>_''9>_''9>_''9>V]3Y%NN#(:NT6[5*C9)O#8>*J!!)B6JE!!XVE!!XVE!!XU"X*!!&S(:N#(9SY-QJG1<_G6M/R$*D
+\''I2\''I2\''I2\''JD8J4=#(:N#%M&F2H%DG==_SM#GDM2\''I2\''I2\''I2\&W\[L^N#(:NT6YBE;.;>+TO-Q=JG7I2\''I2\''I2\''I2 -%$/*RN#(9SNA=V"++O
+-W4''E:@5\''I2\''I2\''I2\''H],. --"ZN#%L8^2+H2KUVE!!X*!!)M2\''I2\''I2\''I2@+B^:U"U;H:NS$#CM5YVU,MVU#\WH!!>F!!(ZF!!(Z"9X"L"]K/(U&N#(9N
+RHGA0\GA0\GA0[UAPTEAPTGHSNEIL/J''4@)*#(:N#$9H%4G:@_+:>,#H@Q&K[&9.,Y3KD"2&CMX6''WVN#(:NS$#8FE8?W%;N3+.;Z7I2\''I2\$%U)''!!P_E)2
+H8:N#(9NR@A4&A**5SU(L@"9\''I2\''J#KJY8-LT(77%K#(:N#$9H#3WX6I=0\DQ43!!Y2\''I2U<&&^ECEQ.9]ND:N#(:NS$ ;QJ,Z'':(Z*#U^QGI2\%_I)''"4
+1RA2&7QHS(:N#(9NRCV?''9Q>9I?$&%G-\''IW2ZY8-LUF\''IO]K]N#(:N#$:7/Y*Z&)*Z&)*Z&)''7(<&&^KSEUH4UOC>=-4:N#(:NT4!!7\GA0\GA0\GB%#P$,
+)''"4$Z?Q&7@MCW]HT8:N#(818,Y!!XVE!!XVE!! N_+2\A8+J;M\!!:7XVE!!1.H1#(:N# P1T49NS$9NS$7J*[0/=ECB<XM:R49NS$9SLPRN#(:N#(:N#(:N#(:N
+#(;#WIX.@>ZN#(:N#(:N#(:N#(:N#(:N#(:N#(:N#(:N43QE62G&#(:N#(:N#(:N#(:N#(:N#(:N#(:N#(:N#(8NIASL<H:N#(:N#(:N#(:N#(:N#(:N#(:N
+#(:N#(:NNPW3,8:N#(:N#(:N#(:N#(:N#(:N#(:N#(:N#(:N#(8Q[X:N#(:N#(:N#(:N#(:N#(:N#(:N#(:N#(:N#(:N#(:N#(:N#(:N#(:N#(:N#(:N#(:N
+#(:N#(:N#(:N#(:N#(:N#(:N#(:N#(:N#(:N#(:N#(:N# @a')
+            colorMapFromArray:#[228 227 227 223 224 224 148 152 159 255 155 20 23 119 167 75 80 95 84 172 227 255 252 244 227 227 227 195 108 24 112 111 112 164 163 163 255 191 95 236 236 235 120 100 72 223 220 224 135 135 136 116 112 107 196 112 28 23 131 183 236 191 111 232 235 240 219 220 223 216 216 219 224 224 228 179 179 179 144 144 144 212 211 211 211 212 212 151 156 156 255 252 251 215 215 216 143 92 36 208 151 76 215 216 216 12 128 187 128 119 99 72 72 72 203 112 159 131 132 132 147 95 39 28 143 211 216 219 220 27 143 211 255 219 120 207 152 208 252 183 87 255 251 235 228 228 228 15 127 183 255 220 119 131 131 131 240 199 116 232 232 232 111 123 135 216 219 219 255 251 247 131 107 72 195 227 251 232 231 231 231 231 235 0 127 184 207 207 211 231 231 232 23 131 184 220 223 223 215 212 212 196 199 199 235 235 236 255 228 168 144 92 39 64 160 219 255 251 244 196 111 27 211 211 212 11 127 183 220 224 228 4 124 187 8 124 183 252 252 252 255 151 19 228 231 231 23 139 208 11 124 183 144 95 39 255 220 120 219 219 220 191 107 23 200 140 203 208 104 155 156 96 32 20 128 183 255 255 243 231 232 235 228 228 231 19 128 183 56 159 216 255 247 243 163 163 163 212 215 215 227 175 228 199 200 200 255 252 247 204 204 204 136 136 136 207 208 211 116 119 112 192 195 196 212 128 187 100 83 55 176 176 176 212 212 215 236 236 236 203 203 204 255 255 255 204 203 203 231 231 231 8 135 195 155 207 236 240 236 236 255 188 99 255 255 251 11 128 191 216 216 216 255 151 12 132 132 135 232 235 236 135 132 135 255 247 247 220 220 220 219 223 220 0 135 207 180 183 187 160 160 160 212 215 216 23 128 183 199 108 19 224 228 232 72 72 75 179 179 176 163 171 180 236 244 255 0 0 0 231 228 228 184 220 244 255 151 16 87 172 227 252 251 251 235 236 239 187 132 192 252 223 171 223 223 223 76 76 76 231 235 240 232 232 235 239 240 244 179 180 184 115 112 112 228 232 231 236 236 239 211 212 215 116 128 123 212 216 223 192 107 24 207 123 171 236 239 243 255 247 223 147 159 171 207 207 208 51 112 128 143 143 143 79 79 79 255 152 20 255 255 248 255 155 19 148 95 40 211 211 215 176 179 179 144 152 151 107 72 27 255 151 20 220 220 223 195 143 200 255 248 244 203 200 203 204 208 208 136 136 139 224 224 227 224 187 119 235 232 235 216 167 219 232 235 235 255 244 220 219 220 220 255 155 23 219 219 219 152 204 236 255 151 15 255 248 243 220 131 183 220 223 224 255 219 119 0 124 192 179 184 195 159 111 43 160 103 43 227 227 228 132 135 135 151 152 159 243 248 255 192 195 195 140 96 32 208 208 208 140 140 140 255 152 8 155 207 239 240 240 240 211 127 187 83 171 227 252 204 128 211 219 215 63 160 219 12 124 183 232 239 247 208 212 211 219 228 239 255 255 247 195 151 95 235 236 236 212 223 232 156 108 59 251 251 255 219 160 219 128 139 135 27 131 183 199 111 23 200 107 152 251 252 252 224 235 247 152 155 155 88 56 16 164 108 51 255 248 215 104 87 63 255 188 92 207 204 207 168 215 240 232 239 252 224 223 224 204 204 207 223 223 224]
+            mask:((ImageMask width:32 height:32) bits:(ByteArray fromPackedString:'
+_???>G????!!????8_???>G????!!????8_???>G????!!????8_???>G????1????>_????''????1????8_???>G????!!????8_???>G????!!????8_???>G??
+??!!????8_???>@@O0@@@G8@@@A<@@@@<@@@@L@@@@@@@@@@@@@@b'); yourself); yourself]
+! !
+
+!MacOSX3ToolbarIconLibrary class methodsFor:'documentation'!
+
+version
+    ^ '$Header$'
+!
+
+version_CVS
+    ^ '$Header$'
+! !
+
--- a/MacOSXToolbarIconLibrary.st	Fri Nov 18 21:10:35 2016 +0000
+++ b/MacOSXToolbarIconLibrary.st	Fri Nov 18 21:15:56 2016 +0000
@@ -152,6 +152,141 @@
 S$]YC%%YK2=YVU%YK09SP2L@') colorMapFromArray:#[101 172 248 53 140 250 61 135 247 46 108 250 105 175 248 57 144 249 207 230 254 64 139 247 43 118 250 109 178 248 67 143 247 233 232 233 89 165 249 43 131 251 43 93 250 93 168 249 146 198 251 225 240 254 255 255 255 80 159 246 78 159 248 141 189 240 82 161 249 49 116 249 62 149 249 42 128 251 117 150 239 67 152 248 45 133 250 55 125 248 95 170 248 49 136 250 198 225 253 101 172 247 52 140 250 181 192 232 105 175 247 81 160 247 57 143 249 207 230 253 84 163 248 61 147 248 212 232 253 42 124 251 88 165 249 70 147 246 43 130 251 42 93 250 92 168 249 99 167 243 221 237 253 46 134 251 146 197 251 225 239 254 193 212 235 81 161 249 42 127 251 90 167 248 65 117 245 95 169 248 57 130 247 186 186 186 100 172 247 52 140 249 194 213 236 104 175 247 81 160 246 111 141 235 56 143 249 42 116 251 109 177 247 185 197 236 43 130 250 68 152 249 220 237 253 46 134 250 72 156 248 224 239 254 77 118 242 137 184 240 101 173 248 108 171 243 105 176 248 61 107 244 85 163 249 62 147 249 90 166 248 44 131 251 46 130 250 43 94 250 95 169 247 48 136 249 197 224 253 74 157 248 80 160 246 78 160 248 48 111 249 108 177 247 91 159 243 52 121 249 91 167 249 93 167 247 67 152 249 46 133 250 97 170 247 96 170 248 72 155 248 49 137 250] mask:((Depth1Image width:16 height:18) bits:(ByteArray fromPackedString:'??;????????????????????????????????????????????>'); yourself); yourself]
 !
 
+inspectView24x24Icon
+    "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 inspectView24x24Icon inspect
+     ImageEditor openOnClass:self andSelector:#inspectView24x24Icon
+     Icon flushCachedIcons
+    "
+
+    <resource: #image>
+
+    ^Icon
+        constantNamed:'MacOSXToolbarIconLibrary class inspectView24x24Icon'
+        ifAbsentPut:[(Depth24Image width:24 height:24) bitsPerSample:(#(8 8 8)); bits:(ByteArray fromPackedString:'
+@@@@PI#DM)WDM9SDM)SDM)SDM9SDM)SDM)SDM9SDM)SDM9SDM)SDM)SDM)SDM9SDM)SDM)SDM9SDM)SDM9WE [SN@@@@@@@@@@@@V:+SZ+W"V*;_V:;^V:;^
+V:;_V:;^V:;^V:;_V:;^V:;_V:;^V:;^V:;^V:;_V:;^V:;^V*;_VZ7^#<#+RHZ$@@@@@@@@@@@@X:7UTZ''^M)3XM93XM93XM93XM93XM93XM93XM93XM93X
+M93XM93XM93XM93XM93XM93XM)3XL9+W$<+,QHR#@@@@@@@@@@@@[;SW$,#+_;?& K?& K?& K?'' K?& K?& K?'' K?& LC'' K?& K?& K?& LC'' K?& K?&
+ K?''_+;&/M;4P(N#@@@@@@@@@@@@!![3U:>_#9NG_9NG_9NG_9NG_9NG_9NG_9^K 9^O 9.O 9.O 9.O 9.O 9.O 9.O 9.O 9.K 9^G_>OW/PXJ#@@@@@@@@
+@@@@!!K3V6]#W3\;P3\;P3\;P3\;P3\7P3\7O1,[H+Z6-+J2,*:.+*:.+*:.+*:.+*:.+*:.++Z6-/[6=</C,PHJ#@@@@@@@@@@@@!!K3V7]/Z2<3M.+.<0,KC
+0\KC0LGB3\;O2<7N7M3^?????/;>?/;>?/;>?????/;>?/;>;^;.1\WF<?G-PHJ#@@@@@@@@@@@@!!K3V7=7\1<_H(:N%,+J3,[F2,J>13L3N4]KS9.[''????
+?/;>?/;>?/;>?????/;>?/;></K33<?P<?G-PHJ#@@@@@@@@@@@@!!K/V8M?_/;?A!!(^H''I6^3L3N&).\2L''J5=#Y<_G2????????????????????????????
+>O#86=/\=OG-PHJ#@@@@@@@@@@@@!!K/U8.G 6]+\7M7^6=3^6-/]6-/]6M+\7];_=OS4;^7.2<3M''9>!!$YFS$YJS''9>!!2<3M;^;.9^W&=_G-PHJ#@@@@@@@@
+@@@@!!K/U9NK!!6-/\6-/\6-/\6-/\6-/\6-/\6=3]4-OT*Z&+#)RY!!:N5!!Z/@!!:7@"*V5#9JU*:.-4-KT=/O/O8J#@@@@@@@@@@@@!!K/U9.S#7M7^7];_7];_
+7];_7M;_7];_5-#X*Z*+%9VT"K;!!)-+82N3>/>+?+]?8%\W %)RT-[V7=OK.PHJ#@@@@@@@@@@@@!!K/U:^[&6]''[1<_I3<?Q4=OU5=_Y7]3^4-KT&Y&Z#;OM
+-.W?9/[?4>??0>+?-._?''>G?''K/L''I.\9>[#PHN$@@@@@@@@@@@@!!K/U:>''''5MSU+:>//+:?1<_H4]GR6=/\4MCR%9VU"<[(6/K>4>?>1./>.^''?+NW>(>O>
+(]S(%)RU8NC^PXN$@@@@@@@@@@@@!!K/U;^/*3\7N#8>P6=/\)*Z'')*Z''6M#Y4]KS&)"X#</+5/C?1^/?/N''?,.''?+^''?*>#?*M/+&)^X7=?^PXN$@@@@@@@@
+@@@@!!K+U;.7+:^++:./-:^+,:./,:./,:^++4=SU&9*Z&,+&/^#>-._>+^[>+>/?-^?>,^7>+=#&''I*[8NC^PXN$@@@@@@@@@@@@!!K/U<^;-:.++:.++:.++
+:>++:.++:>++8.G")*R%+;/D(M7>(>G>)NS>+.+?,.;>,^3>-K;D%INU9NS$O8N%@@@@@@@@@@@@!!+;V?O_2>/S0>/S0>/S0>/S0>/S0>/S1>/[23\''F''Y^W
+/=O])]78''>O?)>''?,>_81]#^%)ZX,;R6-+V8N8N,@@@@@@@@@@@@T(*%M''2^L7*]L7*]L7*]L7*]L7*]L7*]MG.^MW6!!T''.P#H*K,+B00+>?0+>?,[B1!!(ZI
+%)"\3\7N;-:<4*MY9.GY@@@@@@@@7M3\5MST4=OS4=OS4=OS4=OS4=OS4=OS4=OS4=OS4-KR-[R5#H2M (JC (JC#H2M!!(^H#8>O3J-7>\1:==VC4+^C<N?+
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@8>O#7=?_7=?_8^G!!6]''Y$(6E6YX6?:0/?=NA8+142,Z?@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@8>O#''YZL4ID78*UD/Y5*1,O@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@9NS#'')^M%X!!7+:.&@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@')
+            mask:((ImageMask width:24 height:24) bits:(ByteArray fromPackedString:'_??<_??<_??<_??<_??<_??<_??<_??<_??<_??<_??<_??<_??<_??<_??<_??<_??<_??<_??>_???@@_?@@@?@@@^@@@@'); yourself); yourself]
+!
+
+inspectView32x32Icon
+    "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 inspectView32x32Icon inspect
+     ImageEditor openOnClass:self andSelector:#inspectView32x32Icon
+     Icon flushCachedIcons
+    "
+
+    <resource: #image>
+
+    ^Icon
+        constantNamed:'MacOSXToolbarIconLibrary class inspectView32x32Icon'
+        ifAbsentPut:[(Depth24Image width:32 height:32) bitsPerSample:(#(8 8 8)); bits:(ByteArray fromPackedString:'
+@@@@W*[KE8N8E(J7E(F7E(F7E(F7E(F7E(F7E(F7E(F7E(F7E(F7E(F7E(F7E(F7E(F7E(F7E(F7E(F7E(F7E(F7E(F7E(F7E(F7E(F7E(J7E8N8W*[K>?/;
+@@@@@@@@@@@@E8J8&<?.&L7,&,;,&,;,&,;,&,;,&,;,&,;,&,;,&,;,&,;,&,;,&,;,&,;,&,;,&,;,&,;,&,;,&,;,&,;,&,;,&,;,&,;,&,;,&L7,&<?.
+E8J8</K2@@@@@@@@@@@@EHF6*][1E8/QF8;RGH;RGH;RGH;RGH;RGH;RGH;RGH;RGH;RGH;RGH;RGH;RGH;RGH;RGH;RGH;RGH;RGH;RGH;RGH;RGH;RF8;R
+E8/Q*][1EHF6:.+*@@@@@@@@@@@@D(B6.M75NY;YO:GZPJGZPJGZPJGZPJGZPJGZPJGZPJGZPJGZPJGZPJGZPJGZPJGZPJGZPJGZPJGZPJGZPJGZPJGZPJGZ
+PJGZO:GZNY;Y.M75D(B6:^'')@@@@@@@@@@@@C7>60.O:T*/#UZ3#U*7#U*7#U*7#U*7#U*7#U*7#U*7#U*7#U*7#U*7#U*7#U*7#U*7#U*7#U*7#U*7#U*7#
+U*7#U*7#U*7#UZ3#T*/#0.O:C7>6:^'')@@@@@@@@@@@@CG66??74??_2??#2??#3??#3??#3??#3??#3??#3??#3??#3??''3??''3??''3??''3??''3??''3??''3
+??''3??''3??''3??''3??''3??#3??_2??74CG66:^'')@@@@@@@@@@@@B''66??362<''J2,+L2,+L2,+L2,+L2,+L2,+L2,+L2,+L2</M3L7N3\7N3\7N3\7N3\7N
+3\7N3\7N3\7N3\7N3\7N3\7N3\7N3L3M3L+K??36B''66:^'')@@@@@@@@@@@@B''66??363,7N3,?Q3,?R3=CR3,?R3,?R3,?R3,?Q3,?Q3=CS)JN#(*J"(ZF 
+(JB (JB (JB (JB (JB (JB (JB (ZF (*J"(:N"3<?P??37B''66:^'')@@@@@@@@@@@@B''66??364]CP4-OT5-_X5-_X5-_X5-_X5]_W5MWV4-OT4-OT-[^:
+????????????????????????????????????????????-K^94-GQ??37B''66:^'')@@@@@@@@@@@@B''66??365MOS5=#YRD!!I!!8^H!!(VF!!XVF!!XVF (JC5][W
+4-ST1\[G????????????????????????????????????????????1\[G4-KR??36B''66:^'')@@@@@@@@@@@@B''66??365-SU6]''[8NC"8^G#7=?!!7]7_7-7 
+7M3^5=_Y4=OU5-_X????????????????????????????????????????????5][W5MKS??/6B''66:^'')@@@@@@@@@@@@B''26??/65=[X6-/]RT%J"H&J!!XZG
+7M7_!!HVF 8VE6M''[4=SV:N#)????????????????????????????????????????????:N#)5MOU??/6B''26:^'')@@@@@@@@@@@@B''26??/66]#Y6]+\7]; 
+7]; 7M7_6-/]6=3_6=3^6M+\5][X?O3;????????;^7..K&<%IVX%Y^Y%Y^Y%IVX.K&<;^7.?????_7<5-[W??/5B''26:^'')@@@@@@@@@@@@BW26??/56-+Z
+6]+[6-/\6-/\6-/\6-/[6-/\6-/\6]+[6]+[6]+[7M7]+J60$)JT#X2K"XZD"HRB"HRB"XVD#X.K$YJT,[J47M7^6=+[??/5BW26:^'')@@@@@@@@@@@@BW26
+??/57]3\6=3]6=3]6=3]6=3]6=3]6=3]6=3]6=3]7];_8^K#,;R7$9JS#9FS!!:7J \?? =W?!!-_?"MS?#KKJ#8.J$)JS,;N78^G!!??36BW26:^'')@@@@@@@@
+@@@@BW26??/57=;^7];_7-? 7.C 7-? 7-? 7-? 7]? 7-? 8^O#+Z:.$IBS&IRR ,[5%]+?3>??9/_?5?K?1>7?*>W?$-G5%9NR#(>Q4L?O??;8B''66:^'')
+@@@@@@@@@@@@BW26??/58]?!!8^G$9^W''9.[(9^W''9NS&8.K$8.K$8.G#9.W''''I:!!&Y"W#;[S%]''?=O/?8/W?4>??1>/?/.''?,>[?&M??''K;R&IZV):^(???:
+B''67:^'')@@@@@@@@@@@@BW26??+49NK"9.[''ST5M$IBQ#(:O#H2M:N#)"H"I9.[&:^''*!!XVG)*N!! \;?3>??8/S?4>??2N3?/>+?-._?*NO?''>K?''^C?)JF 
+!!(RG???<B7:7:^'')@@@@@@@@@@@@BW26??+49.W%:N#)<OC1<OC1;^7.;N3-;N3-:>/,:N#);N3- XJE,J2* ]O?9/[?4>??2N3?0N/?.^''?+>_?)>[?).W?
+(^_?+:.* 8JE???<B7:7:^'')@@@@@@@@@@@@BW26??+4:N_'':>/,S$9O$IBQ;^7.#8:O$IBQ#(:O:.++;.;/_W:A.KR1 =S?5?G?1>/?/>+?.^''?,^''?+.+?
++>+?+N''?)./?-+J1_7:A???=B7:7:^'')@@@@@@@@@@@@BW26??+4:^''):^++;N7.:>7.:^/,:>3-;N7.:>3-:^++;?C0]7%;.;^5"]S?1./?/.''?-._?+._?
++^+?-^??-.??,N7?*.+?.[Z5^'')<???<B7:7:^'')@@@@@@@@@@@@BW26??''4:>''*:N#+:^''+:^''+:^#+:^''+:^''+:^''+:^'',;>;0''I.^*JZ&)<7%).C?,>[?
+*NO?).[?+>+?-.??-?G?+>??.M_%*J^''(Y>!!???<B'':8:^'')@@@@@@@@@@@@B''66??/4<N7,;^3,;^3,;^3,;^3,;^3,;^3,;^3,;.3,</C05-WV_75>2,[D
+&-''=%]3?''^C?)^S?+N''?,N7?+>;?,.''=2LSD_7:A"8.N????A''>=:^'')@@@@@@@@@@@@C7>7???7??#3??_2??_2??_2??_2??_2??_2??_2??_3??''4??;:
+,**''"(VE5L?K--'',''.G?''.S?)N#?*.+?0NC,4L7L 8NF):"*7>G"%YNX@G;I:^'')@@@@@@@@@@@@R9Z:C7>7B''66BW26BW26BW26BW26BW26BW26BW26BW26
+B''66B7>8B8J>R''6V!!XBA-;V56-_U7=/Y7=/Y6][U-[R5_7:A!!8"K0,SH9.+0;-253(848=#J@@@@@@@@@@@@5MST0LC@/K2</K2</K2</K2</K2</K2</K2<
+/K2</K2</K2</K2</K2<.;.;*:** 8ND\WI4\WE4\WE4\WI4 8RF]''!!;%9._''JR.5<F^?>^,?=%/1H8?@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2</K/;>?/K2</K2</;>?0<OC.+*:]G"@0I50?:( ?<I\?>^5?=)32IIB@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@0,KB+8ED?:P]?:$)?<M_?>281YAA@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@0,KB)8AL?:P_?:4(7,BF1IAE@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@0,KB)8AL*G=K*(AI3L3L@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2L#H/+:>3L3L
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@')
+            mask:((ImageMask width:32 height:32) bits:(ByteArray fromPackedString:'
+_????G????1????<_????G????1????<_????G????1????<_????G????1????<_????G????1????<_????G????1????<_????G????1????<_????G??
+??1????<_????G????0@@G?>@@@@? @@@G8@@@@>@@@@G@@@@@@b'); yourself); yourself]
+!
+
+osxTerminalIcon
+    "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 osxTerminalIcon inspect
+     ImageEditor openOnClass:self andSelector:#osxTerminalIcon
+     Icon flushCachedIcons
+    "
+
+    <resource: #image>
+
+    ^Icon
+        constantNamed:'MacOSXToolbarIconLibrary class osxTerminalIcon'
+        ifAbsentPut:[(Depth8Image width:32 height:32) bits:(ByteArray fromPackedString:'
+\7M3\7M3\7M3\7M3\7M3\7M3\7M3\7M3\7M3\7M3\7M3\:,;-R,+J2-%YZ.X&I"X&I"X&I"X&I"X&I"+B!!Y3\7ME,UP:N*MR/''Y6-C$9NS$9NS$9NS$9NS$9
+NS%6VZ]3\;V8F7=H_B&(EPNAQ&!!(ZF!!(ZF!!(ZF!!(ZF!!(ZF#E+7M3YKA> &C@Z''^SV6KG+(.K"8.K"8.K"8.K"8..C04G\7L_)P3IWGA0UR4S0ZIJR$)JR$)J
+R$)JR$)JR$RWP%A3\4TI_W!!8^G (SD2^''):^''):^''):^''):^''):^]Y$=QWM3A!!9SVH5XVE5]WU5]WU5]WU5]WU5]WU5]WU5XT18F\7MPAH"THH0XO6=GGQ4]
+GQ4]GQ4]GQ4]GQ4]GYRHAEA3\:\#07)9M#E,KE)VU%YVU%YVU%YVU%YVU%YV]LL#)7M3K:1''/6<EM),?I)2\''I2\''I2\''I2\''I2\''I0@Y:0/\7N=AIR\I&&I
+M"IO^7-;^7-;^7-;^7-;^7-;^2*TAK53\1$D(SAV.#ZZ(H@3L3L3L3L3L3L3L3L3L3L3)JDDFWM3U4%K2D<6PKNJ$PHB@ HB@ HB@ HB@ HB@ J*R4%W\7LH
+R[%1Z6:N\U=MST5MST5MST5MST5MST5MSWJ9RP!!3\<QIF 9!!C&F2,+J2,+J2,+J2,+J2,+J2,+J2C!!)I1GM3IH_HW#T5MST5MST5MST5MST5MST5MST5MSU^
+2H\$\7L$TR\AK"8.K"8.K"8.K"8.K"8.K"8.K"8.K D''TRQ3\<YQDTE&Y&Y&Y&Y&Y&Y&Y&Y&Y&Y&Y&Y&Y&Y&PQEQ1''M3''RD%!!S 8NC 8NC 8NC 8NC 8NC 8
+NC 8NC"EIRF]\7M#HZX4+Z6-+Z6-+Z6-+Z6-+Z6-+Z6-+Z6-+SR&HVM3\9<!!M1@RD!!HRD!!HRD!!HRD!!HRD!!HRD!!HRD!!HRDC\!!''7M3S(ZEE;^7-;^7-;^7-;^7
+-;^7-;^7-;^7-;\W!!XYN\7NR*SP<O#8>O#8>O#8>O#8>O#8>O#8>O#8>O#04*YI3\9WB#;Y-[V5-[V5-[V5-[V5-[V5-[V5-[V5--(?B%WM3L .V[Q0\GA0\
+GA0\GA0\GA0\GA0\GA0\GA1-% ,2\7L2 1B7$IBP$IBP$IBP$IBP$IBP$IBP$IBP$K\P 3I3\;0^.0/B0,KB0,KB0,KB0,KB0,KB0,KB0,KBB;,^/GM3!!AQC
+P4MCP4MCP4MCP4MCP4MCP4MCP4MCP4MCP1RD\7M3\7M3\7M3\7M3\7M3\7M3\7M3\7M3\7M3\7M3\7M3\7M3\7M3\7M3\7M3\7M3\7M3\7M3\7M3\7M3\7M3
+\7M3\7M3\7M3\7M3\7M3\7M3\7M3\7M3\7M3\7M3\7M3\0@a')
+            colorMapFromArray:#[74 74 76 92 93 95 84 84 86 148 184 57 240 240 240 138 139 140 141 143 147 143 145 148 135 137 141 230 231 230 145 147 151 238 237 237 192 206 210 226 225 227 87 87 90 170 171 175 102 103 106 86 86 89 104 105 108 202 200 212 123 125 128 111 172 0 145 146 149 105 106 109 60 60 63 137 140 143 77 76 80 255 48 19 113 114 117 69 69 71 237 237 236 142 145 148 64 64 66 239 239 238 147 147 149 241 241 240 133 135 138 88 89 92 73 73 75 82 83 86 236 236 237 233 177 117 77 77 79 144 147 151 69 69 73 201 200 213 94 95 97 140 142 145 78 78 81 139 139 139 123 126 129 81 81 84 100 101 103 92 92 94 255 255 255 93 94 98 99 100 103 253 253 254 250 255 255 145 149 152 108 109 111 230 230 229 110 111 113 65 65 67 145 145 146 95 95 98 239 240 240 121 123 127 197 198 200 141 144 147 203 205 208 69 69 70 230 247 255 240 240 239 198 199 201 71 71 73 237 237 238 86 87 89 127 129 133 75 75 77 142 144 147 239 239 239 250 254 255 42 42 44 252 255 255 196 199 208 73 73 76 136 138 142 51 51 53 213 214 216 72 72 76 80 133 0 193 202 208 52 52 54 90 90 92 85 87 88 215 233 244 88 88 91 227 224 236 129 132 135 142 146 150 145 147 152 97 97 100 62 62 64 204 206 208 60 60 62 238 134 0 82 83 85 61 61 64 112 113 116 77 78 80 68 68 70 193 200 211 83 84 86 84 85 87 0 0 0 71 71 74 235 235 235 255 254 255 224 226 247 235 237 237 63 63 67 69 69 72 79 79 81 253 159 57 232 234 234 238 7 0 232 111 96 78 78 82 241 239 249 237 6 0 236 235 235 113 115 118 97 98 101 239 238 238 240 239 239 55 55 57 130 130 132 81 80 82 172 173 177 59 59 61 51 51 54 78 79 81 102 103 107 108 109 112 84 83 85 126 128 131 80 134 0 66 66 68 125 127 130 104 105 109 196 197 199 144 147 150 232 232 232 140 140 143 136 138 139 76 76 78 131 133 136 236 236 236 128 130 134 70 70 74 68 68 71 197 198 201 249 255 255 79 79 82 237 243 245 91 92 94 141 143 146 239 241 255 239 238 237 82 82 84 145 147 150 241 240 240 102 103 105 172 173 176 144 146 150 222 235 239 212 218 220 89 89 92 73 72 75 254 252 255 144 148 151 110 111 114 107 108 111 240 253 255 73 74 76 142 142 144 236 236 235 124 126 129 138 141 144 253 253 255 73 73 74 237 135 0 198 198 204 238 238 237 59 59 62 134 136 139 243 244 245 132 134 137 171 171 176 80 80 82 192 207 211]
+            mask:((ImageMask width:32 height:32) bits:(ByteArray fromPackedString:'
+@@@@@C????1????>_????''????9????>_????''????9????>_????''????9????>_????''????9????>_????''????9????>_????''????9????>_????''??
+??9????>_????''????9????>_????''????8@@@@@@@@@@@@@@@@b'); yourself); yourself]
+!
+
 scrollDownDisabledIcon
     "This resource specification was automatically generated
      by the ImageEditor of ST/X."
@@ -1965,12 +2100,14 @@
     <resource: #image>
 
     ^Icon
-        constantNamed:'MacOSXToolbarIconLibrary fileTypeTextHtmlIcon'
-        ifAbsentPut:[(Depth8Image new) width:18; height:18; bits:(ByteArray fromPackedString:'
-@@@@@@@@@@@@@@@@@@@@@@@@@@AY $)JE75PT6%J!!@@@@@@@@@AR!!X.KFF@WU592YT4@@@@@@@BC"14(JHVIW'',\\%!!-@@@@@@BC\$92\!!6EXFP\GGJG\P@@
-@@BCU DAU"9NCF)$P&!!HTP@@@@BCX6LA"7):^'')4T7]GR0@@@@BCA''TA^(:N#(=:SD)7V @@@@BCCW2L^)BO#(>O^%Q+RP@@@@BCAW*O#7*N#)BO#7).W@@@
-@@BC_G*N$IBN#)BN#7)VW@@@@@BCAW*N$H>N#(>P#''(FW@@@@@BCHG*N#(:N$H>P#'')<W@@@@@BCHAE:#(:N#)BM^ @-W@@@@@BCDRX$^(:N#(1:JBBJW@@@
-@@A>I!!0\GA0QDSH2HB@$UP@@@@A8QE-OS4=OS4=OS5-D P@@@@@@@@@@@@@@@@@@@@@@@@@@') ; colorMapFromArray:#[246 246 246 233 233 233 252 252 251 216 212 172 245 245 245 243 243 243 239 239 239 237 237 237 255 255 255 159 154 124 181 177 143 100 103 106 223 223 223 241 241 241 197 197 197 201 197 160 166 160 114 251 251 251 145 141 101 197 191 137 159 155 126 157 153 122 139 135 100 204 204 204 222 222 222 218 213 173 247 247 247 254 254 254 252 252 252 228 228 228 153 149 116 169 169 169 249 249 249 215 210 169 161 161 161 188 188 188 248 248 248 148 144 118 253 253 253 218 212 172 227 227 227 234 234 234 120 116 84 222 228 234 0 0 0 244 244 244 231 231 231 138 134 101 155 151 119 208 202 155 250 250 250 145 140 99 149 153 157 214 208 165 146 142 103 198 193 140 166 162 117 162 158 115 191 184 139 199 193 138 162 162 162 219 213 174 151 147 112 138 134 99 192 192 192 242 242 241 144 144 144 175 175 175 59 60 63 155 155 155 237 243 254 166 166 166 177 177 177 169 173 181 208 208 208 179 183 192 219 219 219 209 214 224 230 230 230 34 35 36 179 179 179 200 205 215 181 185 194 190 190 190 221 221 221 162 166 174 232 232 232 181 181 181 179 181 183 202 207 217 173 178 186 27 28 29 164 168 176 172 172 172 203 203 203 183 183 183 214 214 214 163 163 163 225 225 225 236 236 236 154 154 154 183 185 187 185 185 185 216 216 216 165 165 165 196 196 196 176 176 176 207 207 207 238 238 238 208 213 223 218 218 218 167 167 167 198 198 198 218 223 234 229 229 229 178 178 178 209 209 209 240 240 240 158 158 158 189 189 189 180 184 193 200 200 200 149 149 149 180 180 180 242 242 242 191 191 191 182 186 195 140 140 140 171 171 171 174 179 187 213 213 213 184 188 197 214 220 230 224 224 224 235 235 235 181 183 186 184 184 184 215 215 215 246 245 245 226 226 226 85 85 85 85 149 149 90 140 200 149 149 85 165 165 85]; mask:((ImageMask new) width:18; height:18; bits:(ByteArray fromPackedString:'@@@?O? ?O?0?O?8?O?<?O?<?O?<?O?<?O?<?O?<?O?<?O?<?O?<?O?<?O?<?O?<?O?<?@@@?') ; yourself); yourself]
+        constantNamed:'MacOSXToolbarIconLibrary class fileTypeTextHtmlIcon'
+        ifAbsentPut:[(Depth8Image width:18 height:18) bits:(ByteArray fromPackedString:'
+R$)JR$)JR$)JR$)JR$)JR$)JR$*OJ" (I!!<VG"D($$)JR$)JR$*KL3T5LR,&FBT8"IEJR$)JR$*MMS\6M#L,IQ]PNHZPR$)JR$*MNC$8NC\3J0YPTC"G$4)J
+R$*MN30<N3(9L!!LFA@0T#$)JR$*MO30<_''9>_''9>OC0<"T)JR$*MP#0B@%UT_''9TUC0<!!D)JR$*MQEQTUEUT_%UUUC0< 4)JR$*MQ%QTU@I>_%UUUEP< $)J
+R$*MQW9UUUU>_%QU_%P; $)JR$*MQ''9UUUQ>_%QTUW9B $)JR$*MSW9UUW9>UUQTUW9E $)JR$*MSW9>UW9>UUUTUW9G $)JR$*MS4%>_''9>_''9U^T%I $)J
+R$*LTT%I_'':T%G9>RT%L T)JR$*JA@PDA@PDA@PDA@PD"$)JR$)JR$)JR$)JR$)JR$)JR$)J')
+            colorMapFromArray:#[0 0 0 85 85 85 128 128 128 140 140 140 144 144 144 149 149 149 154 154 154 155 155 155 158 158 158 161 161 161 162 162 162 163 163 163 165 165 165 166 166 166 167 167 167 169 169 169 171 171 171 172 172 172 175 175 175 176 176 176 177 177 177 178 178 178 179 179 179 180 180 180 181 181 181 183 183 183 184 184 184 185 185 185 188 188 188 189 189 189 190 190 190 191 191 191 192 192 192 196 196 196 197 197 197 198 198 198 200 200 200 203 203 203 204 204 204 207 207 207 208 208 208 209 209 209 213 213 213 214 214 214 215 215 215 216 216 216 218 218 218 219 219 219 221 221 221 222 222 222 223 223 223 224 224 224 225 225 225 226 226 226 227 227 227 228 228 228 229 229 229 230 230 230 231 231 231 232 232 232 233 233 233 234 234 234 235 235 235 236 236 236 237 237 237 238 238 238 239 239 239 240 240 240 241 241 241 242 242 242 243 243 243 244 244 244 245 245 245 246 245 245 246 246 246 247 247 247 248 248 248 249 249 249 250 250 250 251 251 251 252 252 252 253 253 253 254 254 254 255 255 255 128 128 0 160 160 0 120 116 84 149 149 85 138 134 99 138 134 101 139 135 100 145 140 99 145 141 101 146 142 103 165 165 85 151 147 112 148 144 118 153 149 116 155 151 119 162 158 115 157 153 122 166 160 114 166 162 117 159 154 124 159 155 126 181 177 143 191 184 139 197 191 137 199 193 138 198 193 140 201 197 160 208 202 155 214 208 165 215 210 169 216 212 172 218 212 172 218 213 173 219 213 174 242 242 241 252 252 251 27 28 29 0 128 128 85 149 149 34 35 36 59 60 63 100 103 106 10 110 230 90 140 200 149 153 157 162 166 174 164 168 176 169 173 181 173 178 186 174 179 187 179 181 183 181 183 186 183 185 187 179 183 192 180 184 193 181 185 194 182 186 195 184 188 197 200 205 215 202 207 217 208 213 223 209 214 224 214 220 230 218 223 234 163 163 255]
+            mask:((ImageMask width:18 height:18) bits:(ByteArray fromPackedString:'@@@?O? ?O?0?O?8?O?<?O?<?O?<?O?<?O?<?O?<?O?<?O?<?O?<?O?<?O?<?O?<?O?<?@@@?'); yourself); yourself]
 !
 
 fileTypeTextIcon
--- a/MiniScroller.st	Fri Nov 18 21:10:35 2016 +0000
+++ b/MiniScroller.st	Fri Nov 18 21:15:56 2016 +0000
@@ -132,11 +132,11 @@
 
     orientation == #vertical ifTrue:[
         w := (device horizontalPixelPerMillimeter asFloat * mm) rounded.
-        "/ dont let it become too small for thumb ...
+        "/ don't let it become too small for thumb ...
         w := w max:((level abs + thumbLevel) * 2 + 1).
     ] ifFalse:[
         h := (device verticalPixelPerMillimeter asFloat * mm) rounded.
-        "/ dont let it become too small for thumb ...
+        "/ don't let it become too small for thumb ...
         h := h max:((level abs + thumbLevel) * 2 + 1).
     ].
     preferredExtent := w @ h.
--- a/ObjectView.st	Fri Nov 18 21:10:35 2016 +0000
+++ b/ObjectView.st	Fri Nov 18 21:15:56 2016 +0000
@@ -675,7 +675,7 @@
     |sel|
 
     sel := self getClipboardObject.
-    ((Screen current platformName == #X11)
+    ((device isX11Platform)
      or:[(device getSelectionOwnerOf:#CLIPBOARD) == self drawableId])
     ifTrue:[
         "
@@ -834,7 +834,7 @@
     "this is called after a line-drag crossing view boundaries.
      - should be redefined in subclasses"
 
-    ^ self notify:'dont know how to connect to external views'
+    ^ self notify:'don''t know how to connect to external views'
 !
 
 lineDragFrom:startPoint to:endPoint inAlienViewId:destinationId
@@ -1663,8 +1663,11 @@
     self withWaitCursorDo:[
         |xp yp y x|
 
-        ((bigStepH isInteger and:[littleStepH isNil or:[littleStepH isInteger]])
-        and:[(bigStepV isInteger and:[littleStepV isNil or:[littleStepV isInteger]])]) ifTrue:[
+        (bigStepH isInteger 
+            and:[ (littleStepH isNil or:[littleStepH isInteger])
+            and:[ bigStepV isInteger 
+            and:[ littleStepV isNil or:[littleStepV isInteger]]]]
+        ) ifTrue:[
             gridW := bigStepH.
             littleStepH notNil ifTrue:[gridW := gridW max:littleStepH].
             gridH := bigStepV.
@@ -3265,7 +3268,7 @@
      This can be used to optimize the redraw, in removeObjectFromSelection.
      Subclasses which know how selections are highlighted may redefine this."
 
-    ^ false     "/ i.e. dont know.
+    ^ false     "/ i.e. don't know.
 
     "Created: 1.10.1996 / 12:06:51 / cg"
 !
--- a/OptionBox.st	Fri Nov 18 21:10:35 2016 +0000
+++ b/OptionBox.st	Fri Nov 18 21:15:56 2016 +0000
@@ -603,7 +603,7 @@
 "/    ].
     buttonPanel
         bottomInset:0 "mm";
-        topInset:(gc font height + (mm * 4)) negated.
+        topInset:(gc font height + (mm * 4) + ViewSpacing + ViewSpacing) negated.
     buttonPanel
         borderWidth:0;
         horizontalLayout:#fitSpace.
--- a/PanelView.st	Fri Nov 18 21:10:35 2016 +0000
+++ b/PanelView.st	Fri Nov 18 21:15:56 2016 +0000
@@ -44,7 +44,7 @@
     Instances of PanelView try to get all their subviews into them,
     arranging subviews left-to-right, top-to-bottom.
 
-    If you dont like its layout, define a new subclass or use one of
+    If you don't like its layout, define a new subclass or use one of
     the existing subclasses: HorizontalPanelView and VerticalPanelView.
 
     The panel assumes, that the elements do not resize themselfes, after it
@@ -66,35 +66,35 @@
 
     [Instance variables:]
 
-	hLayout         <Symbol>        controls horizontal layout; ignored in this
-					class, but used in Horizontal- and
-					VerticalPanelViews. See more info there.
+        hLayout         <Symbol>        controls horizontal layout; ignored in this
+                                        class, but used in Horizontal- and
+                                        VerticalPanelViews. See more info there.
 
-	vLayout         <Symbol>        controls vertical layout; ignored in this
-					class, but used in Horizontal- and
-					VerticalPanelViews. See more info there.
+        vLayout         <Symbol>        controls vertical layout; ignored in this
+                                        class, but used in Horizontal- and
+                                        VerticalPanelViews. See more info there.
 
-	horizontalSpace <Integer>       number of pixels to use as space between elements
-					defaults to ViewSpacing, which is 1mm
+        horizontalSpace <Integer>       number of pixels to use as space between elements
+                                        defaults to ViewSpacing, which is 1mm
 
-	verticalSpace   <Integer>       number of pixels to use as space between elements
-					defaults to ViewSpacing, which is 1mm
+        verticalSpace   <Integer>       number of pixels to use as space between elements
+                                        defaults to ViewSpacing, which is 1mm
 
-	mustRearrange   <Boolean>       internal flag, if rearrangement is needed
+        mustRearrange   <Boolean>       internal flag, if rearrangement is needed
 
-	elementsChangeSize   
-			<Boolean>       if true, the panel takes care of this situation.
-					By default, this is false.
+        elementsChangeSize   
+                        <Boolean>       if true, the panel takes care of this situation.
+                                        By default, this is false.
 
-	ignoreInvisibleComponents
-			<Boolean>       if true, invisible (i.e. hidden) views
-					are not considered in the layout computation.
-					If false, they will lead to additional space
-					between visible components.
-					The default is false.
+        ignoreInvisibleComponents
+                        <Boolean>       if true, invisible (i.e. hidden) views
+                                        are not considered in the layout computation.
+                                        If false, they will lead to additional space
+                                        between visible components.
+                                        The default is false.
 
     [author:]
-	Claus Gittinger
+        Claus Gittinger
 "
 !
 
@@ -201,6 +201,11 @@
 
 !
 
+horizontalLayout:layoutSymbolH verticalLayout:layoutSymbolV
+    self horizontalLayout:layoutSymbolH.
+    self verticalLayout:layoutSymbolV
+!
+
 horizontalSpace
     "return the horizontal space between elements on pixels (default is 1mm)"
 
@@ -479,7 +484,7 @@
 
 setChildPositionsIfChanged
     "set all of my child positions - this is usually delayed,
-     until the panel is actually shown (since we dont know, if more
+     until the panel is actually shown (since we don't know, if more
      elements are to be added) thus avoiding repositioning the elements
      over and over. However, sometimes it is nescessary, to force positioning
      the elements, for example, before querying the relative position of
@@ -487,9 +492,8 @@
      pointer)."
 
     mustRearrange ifTrue:[
-	self setChildPositions
+        self setChildPositions
     ].
-
 ! !
 
 !PanelView methodsFor:'layout'!
@@ -657,9 +661,12 @@
     ignoreInvisibleComponents ifTrue:[
         subViews size ~~ 0 ifTrue:[
             subViews := subViews 
-                            select:[:v | realized 
-                                            ifTrue:[v realized]       
-                                            ifFalse:[v isHiddenOnRealize not]
+                            select:[:v | 
+                                    "/ if I am already realized, only consider realized subViews
+                                    "/ otherwise, consider subViews which will be shown when I am.
+                                    realized 
+                                        ifTrue:[v realized]       
+                                        ifFalse:[v isHiddenOnRealize not]
                                    ].
         ].
     ].
@@ -680,5 +687,9 @@
 
 version
     ^ '$Header$'
+!
+
+version_CVS
+    ^ '$Header$'
 ! !
 
--- a/PopUpList.st	Fri Nov 18 21:10:35 2016 +0000
+++ b/PopUpList.st	Fri Nov 18 21:15:56 2016 +0000
@@ -571,7 +571,7 @@
         newLabel := (menuLabels at:index) printString
     ].
 
-    "kludge: dont want label to resize ..."
+    "kludge: don't want label to resize ..."
 
     self label:newLabel suppressResize:true.
 
@@ -822,7 +822,7 @@
 !
 
 showActive
-    "no need to redraw - will pop menu ontop of me anyway ..."
+    "no need to redraw - will pop menu on top of me anyway ..."
 
     ^ self
 !
--- a/ScrollBar.st	Fri Nov 18 21:10:35 2016 +0000
+++ b/ScrollBar.st	Fri Nov 18 21:15:56 2016 +0000
@@ -60,7 +60,7 @@
     will set it to asynchronous.)
 
     Most often scrollbars are used hidden with ScrollableView or HVScrollableView (i.e. you
-    dont have to care for all the details).
+    don't have to care for all the details).
 
     The scrollBars and scrollers protocols have been made similar enough to
     allow transparent use of either a scroller or a scrollBar in applications.
--- a/ScrollableView.st	Fri Nov 18 21:10:35 2016 +0000
+++ b/ScrollableView.st	Fri Nov 18 21:15:56 2016 +0000
@@ -2348,6 +2348,17 @@
     "Modified: 6.3.1997 / 22:34:30 / cg"
 !
 
+respondsTo:aSelector
+    scrolledView notNil ifTrue:[
+        (scrolledView respondsTo:aSelector) ifTrue:[^ true].
+    ].
+    ^ super respondsTo:aSelector.
+
+    "
+        self new respondsTo:#isScrolling
+    "
+!
+
 specClass
     "redefined, since my subclasses also want ScrollableViewSpecs"
 
--- a/Scroller.st	Fri Nov 18 21:10:35 2016 +0000
+++ b/Scroller.st	Fri Nov 18 21:15:56 2016 +0000
@@ -1,5 +1,3 @@
-"{ Encoding: utf8 }"
-
 "
  COPYRIGHT (c) 1989 by Claus Gittinger
 	      All Rights Reserved
@@ -98,14 +96,14 @@
     thumbColor                  <Color>         color of thumb
     thumbFrameColor             <Color>         color of the frame around the thumb
     scrollAction                <Block>         1 arg block to be evaluated when scrolled
-						(arg is position in percent)
+                                                (arg is position in percent)
     orientation                 <Symbol>        #horizontal or #vertical
     thumbFrame                  <Rectangle>     frame of thumb in pixels (cached)
     thumbLevel                  <Number>        level of thumb if 3d
     scrolling                   <Boolean>       true during scroll
     pressOffset                 <Number>        temporary (offset into frame when move started)
-    synchronousOperation        <Boolean>       true if synchronous (i.e. dont wait till release
-						to perform action)
+    synchronousOperation        <Boolean>       true if synchronous (i.e. don't wait till release
+                                                to perform action)
     shadowForm                  <Form>          bitmap of knob if any (shadow part)
     lightForm                   <Form>          bitmap of knob if any (light part)
     inset                       <Integer>       number of pixels to inset thumb from view borders
@@ -115,10 +113,10 @@
     thumbHalfShadowColor        <Color>         used to draw smooth edges
     thumbHalfLightColor         <Color>         used to draw smooth edges
     thumbFrameSizeDifference    <Integer>       number of pixels the thumb is larger than 
-						it should be (can be negative for mswin-style)
+                                                it should be (can be negative for mswin-style)
     tallyLevel                  <Integer>       if not zero, specifies if tally-marks should
-						go into or out of the display (actually only <0/>0 is checked)
-						I dont know of a better word for these ...
+                                                go into or out of the display (actually only <0/>0 is checked)
+                                                I dont know of a better word for these ...
     tallyMarks                  <Integer>       number of tally marks
     fixThumbHeight              <Boolean>       perform 'wrong' height computation a la mswindows
     rangeStart                  <Number>        the range of the scroller
@@ -150,9 +148,9 @@
     scrollerNTallyMarks         <Integer>       number of tally-marks to draw on the thumb
     scrollerTallyLevel          <Integer>       the 3D level of any tally marks
     scrollerSnapBack            <Boolean>       win95 behavior: snap back to original position if scrollers view
-						is left by mouse (with some distance)
+                                                is left by mouse (with some distance)
     scrollerMiddleButtonJump    <Boolean>       xterm behavior: middle button has shift-click behavior
-						(positions absolute to click position)
+                                                (positions absolute to click position)
 
     notice: for mswindows style, we force a WRONG thumb-frame
     computation, to make the thumb have constant size; 
@@ -160,11 +158,11 @@
     set scrollerThumbFixHeight to false (in the StyleSheet).
 
     [author:]
-	Claus Gittinger
+        Claus Gittinger
 
     [see also:]
-	ScrollBar
-	ScrollableView HVScrollableView
+        ScrollBar
+        ScrollableView HVScrollableView
 "
 !
 
@@ -1188,7 +1186,7 @@
         ].
 
         tallyMarks > 1 ifTrue:[
-            "dont draw other marks if there is not enough space"
+            "don't draw other marks if there is not enough space"
 
             h > (dist * (tallyMarks * 2)) ifTrue:[
                 self drawEdgedLineFrom:xL y:(yTop - dist) toX:xR y:(yTop - dist) level:tallyLevel lightColor:light shadowColor:shadow.
@@ -1212,7 +1210,7 @@
             xLeft := xRight := x.   
         ].
         tallyMarks > 1 ifTrue:[
-            "dont draw other marks if there is not enough space"
+            "don't draw other marks if there is not enough space"
 
             w > (dist * (tallyMarks * 2)) ifTrue:[
                 self drawEdgedLineFrom:(xLeft - dist) y:yT toX:(xLeft - dist) y:yB level:tallyLevel lightColor:light shadowColor:shadow.
--- a/SelectionInListView.st	Fri Nov 18 21:10:35 2016 +0000
+++ b/SelectionInListView.st	Fri Nov 18 21:15:56 2016 +0000
@@ -100,7 +100,7 @@
     Currently, some limited form of line attributes are supported. These
     are kept in the instance variable lineAttributes.
     This may change (using mechanisms similar to MultiColListEntry), so
-    be prepared. (dont use the listAttributes instvar directly; if possible,
+    be prepared. (don't use the listAttributes instvar directly; if possible,
     use MultiColListEntry or subclasses of it.
 
     Although currently based on the listAttributes instVar, the implementation of
@@ -3722,7 +3722,7 @@
     selection notNil ifTrue:[
         self multipleSelectOk ifTrue:[
             selection isEmpty ifTrue:[^ self].
-            "/ dont move, if any in the selection isVisible
+            "/ don't move, if any in the selection isVisible
             selection do:[:aSelectedLine |
                 (self lineIsFullyVisible:aSelectedLine) ifTrue:[
                     ^ self
--- a/SequenceView.st	Fri Nov 18 21:10:35 2016 +0000
+++ b/SequenceView.st	Fri Nov 18 21:15:56 2016 +0000
@@ -11,6 +11,8 @@
 "
 "{ Package: 'stx:libwidg' }"
 
+"{ NameSpace: Smalltalk }"
+
 ScrollableView subclass:#SequenceView
 	instanceVariableNames:''
 	classVariableNames:''
@@ -100,8 +102,10 @@
 font:aFont
     "set the font for the scrolled view"
 
+    |scrolledView|
+    
     super font:aFont.
-    self scrolledView font:aFont.
+    (scrolledView := self scrolledView) notNil ifTrue:[scrolledView font:aFont].
 !
 
 invalidate
@@ -137,5 +141,6 @@
 !SequenceView class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libwidg/SequenceView.st,v 1.11 2008-07-18 08:58:08 stefan Exp $'
+    ^ '$Header$'
 ! !
+
--- a/TextCollector.st	Fri Nov 18 21:10:35 2016 +0000
+++ b/TextCollector.st	Fri Nov 18 21:15:56 2016 +0000
@@ -1,5 +1,3 @@
-"{ Encoding: utf8 }"
-
 "
  COPYRIGHT (c) 1989 by Claus Gittinger
 	      All Rights Reserved
@@ -151,6 +149,7 @@
     "
      TextCollector newTranscript:#T2.
      T2 showCR:'Hello world'.
+     Smalltalk removeKey:#T2
     "
 
     "Modified: 17.2.1997 / 18:20:27 / cg"
@@ -598,10 +597,6 @@
 
 !TextCollector methodsFor:'queries'!
 
-canAccept
-    ^ false
-!
-
 current
     "return the current (your screen's) transcript.
      In multiDisplay applications, this need NOT be the main transcript,
@@ -1203,6 +1198,8 @@
 
     |fg bg cFg cBg|
 
+    self assert:((Smalltalk includesKey:name) not
+                or:[ (Smalltalk at:name) isBehavior not ]). 
     Smalltalk at:name put:self.
 
     "
--- a/TextView.st	Fri Nov 18 21:10:35 2016 +0000
+++ b/TextView.st	Fri Nov 18 21:15:56 2016 +0000
@@ -14,26 +14,26 @@
 "{ NameSpace: Smalltalk }"
 
 ListView subclass:#TextView
-        instanceVariableNames:'selectionStartLine selectionStartCol selectionEndLine
-                selectionEndCol clickPos clickStartLine clickStartCol clickLine
-                clickCol clickCount expandingTop wordStartCol wordStartLine
-                wordEndCol wordEndLine selectionFgColor selectionBgColor
-                selectStyle directoryForFileDialog defaultFileNameForFileDialog
-                externalEncoding contentsWasSaved searchAction lastSearchPattern
-                lastSearchWasMatch lastSearchIgnoredCase lastSearchDirection
-                lastSearchWasVariableSearch parenthesisSpecification dropSource
-                dragIsActive saveAction st80SelectMode searchBarActionBlock'
-        classVariableNames:'DefaultViewBackground DefaultSelectionForegroundColor
-                DefaultSelectionBackgroundColor
-                DefaultAlternativeSelectionForegroundColor
-                DefaultAlternativeSelectionBackgroundColor MatchDelayTime
-                WordSelectCatchesBlanks LastSearchPatterns
-                NumRememberedSearchPatterns LastSearchIgnoredCase
-                LastSearchWasMatch DefaultParenthesisSpecification
-                LastSearchWasMatchWithRegex LastSearchWasWrapAtEndOfText
-                LastSearchWasReplace LastSearchReplacedString'
-        poolDictionaries:''
-        category:'Views-Text'
+	instanceVariableNames:'selectionStartLine selectionStartCol selectionEndLine
+		selectionEndCol clickPos clickStartLine clickStartCol clickLine
+		clickCol clickCount expandingTop wordStartCol wordStartLine
+		wordEndCol wordEndLine selectionFgColor selectionBgColor
+		selectStyle directoryForFileDialog defaultFileNameForFileDialog
+		externalEncoding contentsWasSaved searchAction lastSearchPattern
+		lastSearchWasMatch lastSearchIgnoredCase lastSearchDirection
+		lastSearchWasVariableSearch parenthesisSpecification dropSource
+		dragIsActive saveAction st80SelectMode searchBarActionBlock'
+	classVariableNames:'DefaultViewBackground DefaultSelectionForegroundColor
+		DefaultSelectionBackgroundColor
+		DefaultAlternativeSelectionForegroundColor
+		DefaultAlternativeSelectionBackgroundColor MatchDelayTime
+		WordSelectCatchesBlanks LastSearchPatterns
+		NumRememberedSearchPatterns LastSearchIgnoredCase
+		LastSearchWasMatch DefaultParenthesisSpecification
+		LastSearchWasMatchWithRegex LastSearchWasWrapAtEndOfText
+		LastSearchWasReplace LastSearchReplacedString'
+	poolDictionaries:''
+	category:'Views-Text'
 !
 
 !TextView class methodsFor:'documentation'!
@@ -404,10 +404,10 @@
 
     <resource: #canvas>
 
-    ^
+    ^ 
     #(FullSpec
        name: searchDialogSpec
-       window:
+       window: 
       (WindowSpec
 	 label: 'String search'
 	 name: 'String search'
@@ -415,7 +415,7 @@
 	 max: (Point 1280 1024)
          bounds: (Rectangle 0 0 475 376)
        )
-       component:
+       component: 
       (SpecCollection
 	 collection: (
 	  (LabelSpec
@@ -461,7 +461,7 @@
 		 )
                 (ViewSpec
                    name: 'MatchBox'
-                   component:
+                   component: 
                   (SpecCollection
                      collection: (
                       (CheckBoxSpec
@@ -484,7 +484,7 @@
                          translateLabel: true
                        )
                       )
-
+                    
                    )
                    extent: (Point 475 24)
 		 )
@@ -577,10 +577,10 @@
 			 acceptOnReturn: true
 			 acceptOnTab: true
 			 acceptOnPointerLeave: true
-                         extent: (Point 297 24)
+                         extent: (Point 318 24)
 		       )
 		      )
-
+                    
 		   )
                    extent: (Point 475 24)
                  )
@@ -607,12 +607,12 @@
                    extent: (Point 475 24)
 		 )
 		)
-
+              
 	     )
 	   )
 	  (HorizontalPanelViewSpec
 	     name: 'horizontalPanelView'
-             layout: (LayoutFrame 0 0.0 -32 1.0 -16 1.0 0 1.0)
+             layout: (LayoutFrame 0 0.0 -36 1.0 -16 1.0 0 1.0)
 	     level: 0
 	     horizontalLayout: fitSpace
 	     verticalLayout: center
@@ -653,12 +653,12 @@
                    useDefaultExtent: true
 		 )
 		)
-
+              
 	     )
 	     keepSpaceForOSXResizeHandleH: true
 	   )
 	  )
-
+        
        )
      )
 ! !
@@ -1013,7 +1013,10 @@
 
 textView
     "added to allow sending textView in any context, where either
-     a TextView or a CodeView2 can be encountered. Sigh."
+     a TextView or a CodeView2 can be encountered. 
+     Sigh - all of this because CodeView2 wraps a textView, and does not forward
+     all messages. 
+     Thus, the codeView2 framework always sends codeView2 textView doSomething"
      
     ^ self
 ! !
@@ -1083,7 +1086,7 @@
 
 setContents:something
     "set the contents (either a string or a Collection of strings)
-     dont change the position (i.e. do not scroll) or the selection."
+     don't change the position (i.e. do not scroll) or the selection."
 
     |selStartLine selStartCol selEndLine selEndCol selStyle|
 
@@ -2084,8 +2087,13 @@
 
     self withWaitCursorDo:[
         fp := FontPanel new.
-        fp withChangeFontInViewsAllCheckBox:true.
-        newFont := fp fontFromUserInitial:gc font.
+        newFont := 
+            fp  fontFromUserInitial:gc font 
+                    title:nil
+                    filter:nil
+                    encoding:nil
+                    enabled:true
+                    withChangeAllOption:true.
     ].
     newFont notNil ifTrue:[
 	self font:newFont.
@@ -2096,12 +2104,12 @@
             fontPrefs := userPrefs fontPreferences.
             fontPrefs isNil ifTrue:[ fontPrefs := newFontPrefs := Dictionary new ].
 
-            TextView defaultFont:newFont.
             fontPrefs at:#Text put:(newFont storeString).
             newFontPrefs notNil ifTrue:[ userPrefs fontPreferences:newFontPrefs ].
             userPrefs beModified.
-            DebugView newDebugger.
+            "/ DebugView newDebugger.
             TextView allSubInstances do:[:v |
+                v class defaultFont:newFont.
                 v font:newFont
             ].
         ].
--- a/Toggle.st	Fri Nov 18 21:10:35 2016 +0000
+++ b/Toggle.st	Fri Nov 18 21:15:56 2016 +0000
@@ -291,7 +291,7 @@
                                                                         [exEnd]
 
 
-      another font (no, I dont know what it means :-):
+      another font (no, I don't know what it means :-):
                                                                         [exBegin]
         |v t|
 
@@ -485,7 +485,7 @@
     showLamp ifTrue:[
         onLevel := offLevel.
 
-        "dont know, if I like this ..."
+        "don't know, if I like this ..."
         "
         activeBgColor := bgColor
         "
--- a/VariablePanel.st	Fri Nov 18 21:10:35 2016 +0000
+++ b/VariablePanel.st	Fri Nov 18 21:15:56 2016 +0000
@@ -1527,7 +1527,7 @@
                     y := hy + knobHeight - 2.
                     self paint:shadowColor.
                     self displayLineFromX:mar y:y toX:(width - mar) y:y.
-                        "uncomment the -1 if you dont like the notch at the right end"
+                        "uncomment the -1 if you don't like the notch at the right end"
                         "                            VVV"
                     self displayLineFromX:width-1 y:hy" "-1" " toX:width-1 y:(hy + knobHeight - 1 - 1).
                 ].
--- a/VerticalPanelView.st	Fri Nov 18 21:10:35 2016 +0000
+++ b/VerticalPanelView.st	Fri Nov 18 21:15:56 2016 +0000
@@ -1094,7 +1094,7 @@
         |childsPreference|
 
         child realized ifTrue:[
-            childsPreference := child extent.
+            childsPreference := child extent max:child preferredExtent.
         ] ifFalse:[
             childsPreference := child preferredExtent.
         ].
--- a/Workspace.st	Fri Nov 18 21:10:35 2016 +0000
+++ b/Workspace.st	Fri Nov 18 21:15:56 2016 +0000
@@ -1,5 +1,3 @@
-"{ Encoding: utf8 }"
-
 "
  COPYRIGHT (c) 1989 by Claus Gittinger
 	      All Rights Reserved
@@ -65,22 +63,22 @@
      to call for another compiler/interpreter  ...)
 
     Special workspace- and doIt variables:
-	workspaces can be configured to automatically define undefined variables
-	as either workspace- or doIt variables. When encountering undefined variables,
-	the parser asks for an action, which is responded with #workspace or doIt if a
-	workspace is the requestor of a doIt. Both are implemented as value holders, and
-	the parser will generate code sending value/value: instead of normal assignment.
-	Workspace variables are kept in the Workspace class and will both persist between doIts
-	and also be visible across workspaces. They are perfect for scripting (and therefore anabled
-	by default when stx is started with one of the scripting options).
-	DoIt variables are only valid during a single doIt.
-	Be aware that when you ask from the outside via workspaceVariableAt:, you'll get a valueHolder.
-	This is by purbose, as it allows for easy monitoring and tracing of changes.
+        workspaces can be configured to automatically define undefined variables
+        as either workspace- or doIt variables. When encountering undefined variables,
+        the parser asks for an action, which is responded with #workspace or doIt if a
+        workspace is the requestor of a doIt. Both are implemented as value holders, and
+        the parser will generate code sending value/value: instead of normal assignment.
+        Workspace variables are kept in the Workspace class and will both persist between doIts
+        and also be visible across workspaces. They are perfect for scripting (and therefore enabled
+        by default when stx is started with one of the scripting options).
+        DoIt variables are only valid during a single doIt.
+        Be aware that when you ask from the outside via workspaceVariableAt:, you'll get a valueHolder.
+        This is by purbose, as it allows for easy monitoring and tracing of changes.
 
     Caveat:
-	in this version, Workspace does not yet support doIt in MVC setups.
-	For now, simulate this by setting the doItAction, to notify the
-	model manually about the doIt.
+        in this version, Workspace does not yet support doIt in MVC setups.
+        For now, simulate this by setting the doItAction, to notify the
+        model manually about the doIt.
 
 
     [instance variables:]
@@ -97,20 +95,20 @@
     [styleSheet values:]
 
       codeErrorSelectionForegroundColor     fg color to highlight errors
-					    (default: selection fg)
+                                            (default: selection fg)
 
       codeErrorSelectionBackgroundColor     bg color to highlight errors
-					    (default: selection bg)
+                                            (default: selection bg)
 
     [start with:]
-	Workspace open
+        Workspace open
 
     [see also:]
-	Workspace EditTextView
-	Parser ByteCodeCompiler
+        Workspace EditTextView
+        Parser ByteCodeCompiler
 
     [author:]
-	Claus Gittinger
+        Claus Gittinger
 "
 ! !
 
@@ -486,6 +484,25 @@
     "Created: / 20-04-2005 / 11:57:53 / cg"
 !
 
+rememberResultAsWorkspaceVariable:lastResult
+    "remember some last result as _0,
+     and shift the previous results (i.e. _0 -> _1 -> .. _9)"
+
+    |workspaceVariables|
+
+    workspaceVariables := self workspaceVariables.
+    
+    9 to:1 by:-1 do:[:h|
+        (workspaceVariables includesKey:('_%1' bindWith:h-1)) ifTrue:[
+            self workspaceVariableAt:('_%1' bindWith:h)
+                 put:(self workspaceVariableAt:('_%1' bindWith:h-1)).
+        ].
+    ].
+    self workspaceVariableAt:'_0' put:lastResult.
+
+    "Modified: / 08-11-2016 / 22:39:41 / cg"
+!
+
 removeAllWorkspaceVariables
     "delete all workspace variables"
 
@@ -1685,7 +1702,7 @@
      or - if I support syntax elements, on the syntax element at the cursor position"
 
     |selectedText selector browserClass na browser 
-     cls node receiverNode dwim targetClass targetImplClass targetMethod| 
+     cls node dwim targetClass targetImplClass| 
 
     selectedText := self selectedTextOrSyntaxElement.
     selectedText notEmptyOrNil ifTrue:[
@@ -1723,13 +1740,15 @@
                 "/ if the type of the receiver is known,
                 "/ select the targeted method immediately
                 (cls := self editedClass) notNil ifTrue:[
-                    dwim := DoWhatIMeanSupport new.
-                    dwim setClass:cls andContext:nil.
-                    node := dwim
+                    node := DoWhatIMeanSupport
                                 findNodeForInterval:(self selectionStartIndex to:self selectionStopIndex)
                                 in:self contents string.
                     (node notNil and:[node isMessage]) ifTrue:[
+                        dwim := DoWhatIMeanSupport new.
+                        dwim setClass:cls andContext:nil.
+                        dwim setSelf: simulatedSelf.
                         targetClass := dwim classOfNode:node receiver.
+                        
                         targetClass notNil ifTrue:[
                             targetImplClass := targetClass whichClassImplements:(node selector).
                             targetImplClass notNil ifTrue:[
@@ -1764,7 +1783,7 @@
     ] ifFalse:[
         codeToEvaluate := (self selectionOrTextOfCursorLine ? '') withoutSeparators.
     ].
-    idx := codeToEvaluate indexOf:'»'.
+    idx := codeToEvaluate indexOf:'»'.
     idx ~~ 0 ifTrue:[
         selector := (codeToEvaluate copyFrom:idx+1) withoutSeparators string.
         (selector startsWith:'#') ifTrue:[
@@ -1897,11 +1916,10 @@
                         ] ifFalse:[
                             (cls notNil
                               and:[ cls nameSpace notNil
-                              and:[ cls nameSpace isNameSpace
                               and:[ nameOfVariable knownAsSymbol
                               and:[ (nsClass := cls nameSpace at:nameOfVariable asSymbol) notNil
                               and:[ nsClass isBehavior
-                            ]]]]]) ifTrue:[
+                            ]]]]) ifTrue:[
                                 "/ a namespace class?
                                 browserClass browseReferendsOf:nsClass name
                             ] ifFalse:[
@@ -2009,8 +2027,8 @@
                 ('Implementors of It'           browseImplementorsOfIt  ImplementorsOfIt    )
                 ('References to It'             browseReferencesToIt                        )
 "/                ('Classes Containing It in Name'    browseClassesContainingItInName           )
-"/                ('Methods Contaníning It in Name'   browseMethodsContainingItInName           )
-"/                ('Methods Contaníning It in Source' browseMethodsContainingItInSource         )
+"/                ('Methods Contaníning It in Name'   browseMethodsContainingItInName           )
+"/                ('Methods Contaníning It in Source' browseMethodsContainingItInSource         )
                 ('-'                                                                )
                 ('TimeIt'               timeIt                                      )
                 ('SpyOnIt'              spyOnIt                                     ))
--- a/XPToolbarIconLibrary.st	Fri Nov 18 21:10:35 2016 +0000
+++ b/XPToolbarIconLibrary.st	Fri Nov 18 21:15:56 2016 +0000
@@ -6903,11 +6903,13 @@
     <resource: #image>
 
     ^Icon
-        constantNamed:'XPToolbarIconLibrary fileTypeTextHtmlIcon'
-        ifAbsentPut:[(Depth8Image new) width:16; height:16; bits:(ByteArray fromPackedString:'
-@@@A@PDA@PDA@PDC@@@@@@@@@PPDA@PDA@ OBP(@@@@@@@LKB04GB04KC08OC0@@@@@ED@,KB3H3I3$ODP<@@@@@@S()J49NS$9LR44O@@@@@@<7JT9QTUER
-S#9JDP@@@@@QK4=NT5IQT%INI!!D@@@@@E$9RT$9QTUMRT$8V@@@@@A]NTUMSTUESTUINE0@@@@@YS%EST%EQT%MQS!!$@@@@@HD9QTUEQT5ISTT8 @@@@@BD8
-S%EQTUESTD9HHP@@@@@!!PC5NTUEQS49IJBD@@@@@H"H"H"H"H"H"H"H"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@a') ; colorMapFromArray:#[255 255 255 192 192 190 248 248 250 204 202 200 252 250 250 196 198 200 224 226 230 255 254 250 252 254 250 216 216 220 188 188 190 252 252 250 228 230 230 240 242 240 200 214 220 188 190 190 248 250 250 188 186 190 244 244 240 232 230 230 224 224 220 0 0 0 184 186 190 184 184 180 248 246 250 180 182 180 180 180 180 244 244 250 176 178 180 172 174 170 244 242 240 248 246 240 172 172 170 156 158 160 144 144 140 217 217 217 228 228 228 250 250 250 221 221 221 214 214 214 249 249 249 233 233 233 224 224 224 226 226 226 247 247 247 218 218 218 220 220 220 242 242 242 15 15 116 93 93 178 237 237 237 230 230 230 241 241 241 232 232 232 238 238 238 240 240 240 251 251 251 173 173 173 236 236 236 120 4 4 183 90 90 248 248 248 219 219 219 234 234 234 253 253 253 243 243 243 225 225 225 55 146 70 0 91 12 244 244 244 229 229 229 222 222 222 246 246 246 227 227 227 208 208 208 190 190 190 209 209 209 189 189 189 149 149 149 85 85 85 85 149 149 90 140 200 149 149 85 165 165 85]; mask:((ImageMask new) width:16; height:16; bits:(ByteArray fromPackedString:'O?@?>C?<O?0??C?<O?0??C?<O?0??C?<O?0??@@@@@@b') ; yourself); yourself]
+        constantNamed:'XPToolbarIconLibrary class fileTypeTextHtmlIcon'
+        ifAbsentPut:[(Depth8Image width:16 height:16) bits:(ByteArray fromPackedString:'
+@@@A@PDA@PDA@PDC@@@@@@@@@PPDA@PDA@ OBP(@@@@@@@LKB04GB04KC08OC0@@@@@ED@,KB3H3I3$ODP<@@@@@@S()UUUUUUUUR44O@@@@@@<7U5]TVEUU
+VE!!JDP@@@@@QVE!!XUE!!UUEQXI!!D@@@@@E%!!XVE]UUUQTVE V@@@@@A]UUEQTUUUXUEUXE0@@@@@YUUQTVEUUVE!!TUQ$@@@@@HEUTUEUUUE!!XUET @@@@@BEU
+UUQUUUQTVEQUHP@@@@@!!PEUUUUUUUUQVJBD@@@@@H"H"H"H"H"H"H"H"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@a')
+            colorMapFromArray:#[255 255 255 192 192 190 248 248 250 204 202 200 252 250 250 196 198 200 224 226 230 255 254 250 252 254 250 216 216 220 188 188 190 252 252 250 228 230 230 240 242 240 200 214 220 188 190 190 248 250 250 188 186 190 244 244 240 232 230 230 224 224 220 0 0 0 184 186 190 184 184 180 248 246 250 180 182 180 180 180 180 244 244 250 176 178 180 172 174 170 244 242 240 248 246 240 172 172 170 156 158 160 144 144 140 217 217 217 228 228 228 250 250 250 221 221 221 214 214 214 249 249 249 233 233 233 224 224 224 226 226 226 247 247 247 218 218 218 220 220 220 242 242 242 15 15 116 93 93 178 237 237 237 230 230 230 241 241 241 232 232 232 238 238 238 240 240 240 251 251 251 173 173 173 236 236 236 120 4 4 183 90 90 248 248 248 219 219 219 234 234 234 253 253 253 243 243 243 225 225 225 55 146 70 0 91 12 244 244 244 229 229 229 222 222 222 246 246 246 227 227 227 208 208 208 190 190 190 209 209 209 189 189 189 149 149 149 85 85 85 85 149 149 90 140 200 149 149 85 165 165 85 160 160 0 10 110 230 0 128 128 128 128 128 128 128 0]
+            mask:((ImageMask width:16 height:16) bits:(ByteArray fromPackedString:'O?@?>C?<O?0''9B?4O?P??C?<O?0??C?<K?P??@@@@@@b'); yourself); yourself]
 !
 
 fileTypeTextIcon
--- a/stx_libwidg.st	Fri Nov 18 21:10:35 2016 +0000
+++ b/stx_libwidg.st	Fri Nov 18 21:15:56 2016 +0000
@@ -43,9 +43,23 @@
     This library contains elementary GUI components (widgets), such as Buttons, InputFields,
     TextEditors, Scrollbars etc.
 
-    All of these widgets are written in 100% pure Smalltalk. They do not depend upon any particular
-    underlying graphic system (by the operating system). 
+    All of these widgets are written in 100% pure Smalltalk. 
+    They do not depend upon any particular underlying graphic system (by the operating system). 
     Instead, they build upon the abstraction layer as provided by libview.
+    Arguably, this has both advantages and disadvantages:
+    for one, the ST/X widgets may not look&feel 100% like their native counterparts, especially
+    on systems which constantly change (i.e. Windows).
+    On the other hand, this frees us completely from any development there, 
+    and gets us rid of big problems when looks, feels or even APIs change.
+
+    Just consider the following historic fact:
+        when motif was modern, people asked for a native motif style...
+        ... a few years later for qt, then gnome, and what next?
+        We'd be constantly adapting to new frameworks and not get any work done,
+        if we were depending on native widgets
+
+    Also, this might even make problems, if widget frameorks on different systems 
+    (i.e. X vs. Windows vs. Cocoa) provide different levels of functionality.
 "
 ! !