[squeak-dev] The Trunk: ToolBuilder-Morphic-mt.308.mcz

Marcel Taeumel marcel.taeumel at hpi.de
Wed Apr 6 18:55:53 UTC 2022


Hi Christoph --

The kind of re-use that the system browser does with its central text pane is kind of unfortunate, considering good usability. I am aware of that problem. Or what do you mean? I think that you already know the answer. We could lift up all those configuration options to the changed:/update: protocol. That's not happening at the moment. And it's not that important for the next Squeak release.

Best,
Marcel
Am 06.04.2022 18:44:34 schrieb christoph.thiede at student.hpi.uni-potsdam.de <christoph.thiede at student.hpi.uni-potsdam.de>:
Hi Marcel,

is it intended that this also affects the comment/inheritance/reorganize modes of browsers? They are not really code ...

Best,
Christoph

---
Sent from Squeak Inbox Talk [https://github.com/hpi-swa-lab/squeak-inbox-talk]

On 2022-03-14T15:39:08+00:00, commits at source.squeak.org wrote:

> Marcel Taeumel uploaded a new version of ToolBuilder-Morphic to project The Trunk:
> http://source.squeak.org/trunk/ToolBuilder-Morphic-mt.308.mcz
>
> ==================== Summary ====================
>
> Name: ToolBuilder-Morphic-mt.308
> Author: mt
> Time: 14 March 2022, 4:39:06.716786 pm
> UUID: bbb9bbdb-e30d-9243-8123-ea7b6a828e32
> Ancestors: ToolBuilder-Morphic-mt.307
>
> Fixes regression in expand button in list-chooser dialogs.
>
> Allow longer text lines in pluggable dialogs (e.g., file-save dialog).
>
> Make #softLineWrapAtVisualWrapBorder preference functional. Still disabled by default. Only for source-code panes.
>
> Tweak #initialExtent in list-chooser dialogs.
>
> =============== Diff against ToolBuilder-Morphic-mt.307 ===============
>
> Item was changed:
> ----- Method: DirectoryChooserDialog>>initialExtent (in category 'toolbuilder') -----
> initialExtent
>     "Since this is a single list it can be a bit narrower than a FileChooserDialog"
>
> +     ^ super initialExtent * (0.6 @ 1)!
> -     ^ super initialExtent * (0.5 @ 1)!
>
> Item was changed:
> ----- Method: ListChooser>>initialExtent (in category 'building') -----
> initialExtent
>
> +     | listFont listStyle itemCount maxItemSize |
> -     | listFont itemCount maxItemSize cellSize |
>     listFont := Preferences standardListFont.
> +     listStyle := listFont asNewTextStyle.
>     itemCount := items size.
> +     maxItemSize := (items take: 15) inject: 0 into: [:max :item | max max: item asString size].
> -     maxItemSize := items inject: 0 into: [:max :item | max max: item asString size].
> -     cellSize := (listFont widthOf: $m) @ listFont height.
>
> +     ^ (listStyle compositionWidthFor: (maxItemSize min: 50 max: 35))
> -     ^ ((maxItemSize min: 20 max: 10) * (listFont widthOf: $m))
>         @ ((ToolBuilder default listHeightFor: (itemCount min: 15 max: 5))
>             + self searchBarHeight
>             + ToolBuilder default dialogSpacing)!
>
> Item was changed:
> ----- Method: ListMultipleChooser>>initialExtent (in category 'toolbuilder') -----
> initialExtent
>
> +     | listFont listStyle itemCount maxItemSize |
> -     | listFont itemCount maxItemSize |
>     listFont := Preferences standardListFont.
> +     listStyle := listFont asNewTextStyle.
>     itemCount := labels size.
> +     maxItemSize := (labels take: 15) inject: 0 into: [:max :item | max max: item asString size].
> -     maxItemSize := labels inject: 0 into: [:max :item | max max: item asString size].
>     
> +     ^ (listStyle compositionWidthFor: (maxItemSize min: 50 max: 35))
> -     ^ ((maxItemSize min: 20 max: 10) * (listFont widthOf: $m))
>         @ (ToolBuilder default listHeightFor: (itemCount min: 15 max: 5))!
>
> Item was changed:
> ----- Method: MorphicToolBuilder>>buildPluggableCodePane: (in category 'widgets optional') -----
> buildPluggableCodePane: aSpec
>
>     | widget |
>     widget := super buildPluggableCodePane: aSpec.
>     
>     "Override code-specific default properties."
>     widget wantsWrapBorder: PluggableTextMorph visualWrapBorder.
> +     PluggableTextMorph softLineWrapAtVisualWrapBorder
> +         ifTrue: [widget numCharactersPerLine: PluggableTextMorph visualWrapBorderLimit].
>     widget wrapFlag: (aSpec softLineWrap ifNil: [PluggableTextMorph softLineWrap]).
>     ^ widget!
>
> Item was changed:
> ----- Method: MorphicToolBuilder>>buildPluggableDialog: (in category 'widgets optional') -----
> buildPluggableDialog: aSpec
>
>     | widget |
>
>     widget := self dialogClass new.
>     self register: widget id: aSpec name.
>     
>     widget model: aSpec model.
>
>     "Set child dependent layout properties. The pane morph holds the special contents."
>     widget paneMorph wantsPaneSplitters: (aSpec wantsResizeHandles ifNil: [true]).
>     self setLayoutHintsFor: widget paneMorph spec: aSpec.
>     widget paneMorph layoutInset: (aSpec padding ifNil: [self dialogPadding]).
>     widget morphicLayerNumber: widget class dialogLayer.
>
>     "Performance. Flip the #wantsPaneSplitters flag only after all children where added."
>     widget paneMorph cellGap: 0.
>     widget paneMorph wantsPaneSplitters: false; wantsGrips: false.
>     widget paneMorph removePaneSplitters; removeGrips.
>
>     "Now create the children."
>     panes := OrderedCollection new.
>     aSpec children isSymbol
>         ifTrue: [
>             widget getChildrenSelector: aSpec children.
>             widget update: aSpec children]
>         ifFalse: [
>             self buildAll: aSpec children in: widget paneMorph].
>
>     "Avoid strange behavior in #addMorph:fullFrame:"
>     widget paneMorph cellGap: (aSpec spacing ifNil: [self dialogSpacing]).
>     widget paneMorph wantsPaneSplitters: (aSpec wantsResizeHandles ifNil: [true]).
>     widget paneMorph wantsPaneSplitters ifTrue: [
>         widget paneMorph wantsGrips: true.    
>         widget paneMorph addPaneSplitters; addCornerGrips"; addEdgeGrips".
>         widget paneMorph grips do: [:ea | ea showHandle: true]].
>
> +     "Increase the line width of the dialog's message to allow that longer messages accompany complex paneMorph contents."
> +     widget messageMorph numCharactersPerLine: 65.
> +
>     "Now create the buttons."
>     aSpec buttons isSymbol
>         ifTrue: [
>             widget getButtonsSelector: aSpec buttons.
>             widget update: aSpec buttons]
>         ifFalse: [
>             self buildAll: aSpec buttons in: widget buttonRowMorph.
>             widget updateButtonProperties].
>
>     aSpec title ifNotNil: [:label |
>         label isSymbol
>             ifTrue:[widget getTitleSelector: label; update: label]
>             ifFalse:[widget title: label]].
>     aSpec message ifNotNil: [:label |
>         label isSymbol
>             ifTrue:[widget getMessageSelector: label; update: label]
>             ifFalse:[widget message: label]].
>     
>     "Interaction behavior."
>     aSpec autoCancel ifNotNil: [:b | widget autoCancel: b].
>     aSpec exclusive ifNotNil: [:b | widget exclusive: b].
>         
>     widget closeDialogSelector: aSpec closeAction.
>     self buildHelpFor: widget spec: aSpec.
>
>     "Everything is shrink-wrapped around the pane morph."
>     widget paneMorph extent: (aSpec extent ifNil:[widget initialExtent])
>         + (widget paneMorph layoutInset * 2) asPoint.
>
>     ^ widget!
>
> Item was changed:
> ----- Method: PluggableDialogWindow>>expandDialogPane (in category 'running') -----
> expandDialogPane
>     "Expand the dialog pane to its preferred extent, including the pane's extra layout inset used for grips. Then try again to move to the dialog's preferred position."
>
>     | extra |
>     self flag: #preferredExtentWorkaround. "mt: Working with a widget's min, max, and preferred extent is still very awkward using proportional layouts and layout frames. For now, approximate extra spacing to accommodate ListChooser and ListMultipleChooser only."
> +     extra := PluggableListMorph listMargins.
> +     extra := extra topLeft + extra bottomRight.
> -     extra := LazyListMorph new cellInset. extra := extra topLeft + extra bottomRight.
>
>     self paneMorph extent:
>         (self model preferredExtent
>             + (self paneMorph layoutInset * 2) asPoint
>             + extra).
>     self moveToPreferredPosition.!
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20220406/7660b50a/attachment-0001.html>


More information about the Squeak-dev mailing list