[squeak-dev] The Trunk: MorphicExtras-pre.242.mcz

Chris Muller asqueaker at gmail.com
Wed Jul 11 22:54:20 UTC 2018


Woo hoo, thank you!

On Tue, Jul 10, 2018 at 7:21 AM,  <commits at source.squeak.org> wrote:
> Patrick Rein uploaded a new version of MorphicExtras to project The Trunk:
> http://source.squeak.org/trunk/MorphicExtras-pre.242.mcz
>
> ==================== Summary ====================
>
> Name: MorphicExtras-pre.242
> Author: pre
> Time: 10 July 2018, 2:20:31.299227 pm
> UUID: faafe72b-0932-ae48-86bb-38dd0e666b0d
> Ancestors: MorphicExtras-bf.241
>
> Makes the objects tool themeable (at least parts of it)
>
> =============== Diff against MorphicExtras-bf.241 ===============
>
> Item was added:
> + ----- Method: ObjectsTool>>baseBackgroundColor (in category 'constants') -----
> + baseBackgroundColor
> +
> +       ^ self userInterfaceTheme borderColor ifNil: [Color veryLightGray] !
>
> Item was added:
> + ----- Method: ObjectsTool>>baseBorderColor (in category 'constants') -----
> + baseBorderColor
> +
> +       ^ self userInterfaceTheme borderColor ifNil: [Color veryLightGray] !
>
> Item was changed:
>   ----- Method: ObjectsTool>>buttonActiveColor (in category 'constants') -----
>   buttonActiveColor
>
> +       ^ self userInterfaceTheme selectionTextColor ifNil: [Color white]!
> -       ^ Color white!
>
> Item was changed:
>   ----- Method: ObjectsTool>>buttonColor (in category 'constants') -----
>   buttonColor
>
> +       ^ self userInterfaceTheme textColor ifNil: [Color black]!
> -       ^ Color black!
>
> Item was changed:
>   ----- Method: ObjectsTool>>extent: (in category 'layout') -----
>   extent: anExtent
>         "The user has dragged the grow box such that the receiver's extent would be anExtent.  Do what's needed"
> -       self extent = anExtent ifTrue: [ ^self ].
>         super extent: anExtent.
> +       self submorphsDo: [:m |
> +               m width: anExtent x]!
> -       self fixLayoutFrames.!
>
> Item was changed:
>   ----- Method: ObjectsTool>>fixLayoutFrames (in category 'layout') -----
>   fixLayoutFrames
>         "Adjust the boundary between the tabs or search pane and the parts bin, giving preference to the tabs."
>
> +       | oldY newY aTabsPane aTabsPaneHeight |
> +       oldY := ((aTabsPane := self tabsPane
> -       | oldY newY tp tpHeight |
> -       oldY := ((tp := self tabsPane
>                                                 ifNil: [self searchPane])
>                                 ifNil: [^ self]) layoutFrame bottomOffset.
> +       aTabsPaneHeight := aTabsPane hasSubmorphs
> +                               ifTrue: [(aTabsPane submorphBounds outsetBy: aTabsPane layoutInset) height]
> +                               ifFalse: [aTabsPane height].
> +       newY := (self buttonPane ifNil: [^ self]) height + aTabsPaneHeight.
> +       oldY = newY ifTrue: [^ self].
> +       aTabsPane layoutFrame bottomOffset: newY.
> +       (self partsBin ifNil: [^ self]) layoutFrame topOffset: newY.
> +       submorphs       do: [:m | m layoutChanged]!
> -       tpHeight := tp hasSubmorphs
> -                               ifTrue: [(tp submorphBounds outsetBy: tp layoutInset) height]
> -                               ifFalse: [tp height].
> -       newY := (self buttonPane
> -                               ifNil: [^ self]) height + tpHeight.
> -       oldY = newY
> -               ifTrue: [^ self].
> -       tp layoutFrame bottomOffset: newY.
> -       (self partsBin
> -               ifNil: [^ self]) layoutFrame topOffset: newY.
> -       submorphs
> -               do: [:m | m layoutChanged ]!
>
> Item was changed:
>   ----- Method: ObjectsTool>>initializeToStandAlone (in category 'initialization') -----
>   initializeToStandAlone
>         "Initialize the receiver so that it can live as a stand-alone morph"
>         | buttonPane aBin aColor heights tabsPane |
>         self basicInitialize.
> +
> -
>         self layoutInset: 0;
>                 layoutPolicy: ProportionalLayout new;
>                 useRoundedCorners;
>                 hResizing: #rigid;
>                 vResizing: #rigid;
>                 extent: (self minimumWidth @ self minimumHeight).
>
>         "mode buttons"
>         buttonPane := self paneForTabs: self modeTabs.
> +       buttonPane color: self baseBackgroundColor.
> -       buttonPane color: (Color r: 1 g: 0.85 b: 0.975).
>         buttonPane
>                 vResizing: #shrinkWrap;
>                 setNameTo: 'ButtonPane';
>                 addMorphFront: self dismissButton;
>                 addMorphBack: self helpButton;
>                 color: (aColor := buttonPane color) darker;
>                 layoutInset: 5;
>                 wrapDirection: nil;
>                 width: self width;
>                 layoutChanged; fullBounds.
>
>         "Place holder for a tabs or text pane"
>         tabsPane := Morph new.
>         tabsPane
> +               color: self baseBackgroundColor;
> -               color: (Color r: 1 g: 0.85 b: 0.975);
>                 setNameTo: 'TabPane';
>                 hResizing: #spaceFill.
>
>         heights := { buttonPane height. 40 }.
>
>         buttonPane vResizing: #spaceFill.
>         self
>                 addMorph: buttonPane
>                 fullFrame: (LayoutFrame
>                                 fractions: (0 @ 0 corner: 1 @ 0)
>                                 offsets: (0 @ 0 corner: 0 @ heights first)).
>
>         self
>                 addMorph: tabsPane
>                 fullFrame: (LayoutFrame
>                                 fractions: (0 @ 0 corner: 1 @ 0)
>                                 offsets: (0 @ heights first corner: 0 @ (heights first + heights second))).
>
>         aBin := (PartsBin newPartsBinWithOrientation: #leftToRight from: #())
> +               changeTableLayout;
>                 listDirection: #leftToRight;
>                 wrapDirection: #topToBottom;
>                 color: aColor lighter lighter;
> +               borderColor: aColor lighter lighter;
>                 setNameTo: 'Parts';
>                 dropEnabled: false;
>                 vResizing: #spaceFill;
>                 yourself.
>
>         self
>                 addMorph: aBin
>                 fullFrame: (LayoutFrame
>                                 fractions: (0 @ 0 corner: 1 @ 1)
>                                 offsets: (0 @ (heights first + heights second) corner: 0 @ 0)).
>
>         self
>                 borderWidth: 1;
> +               borderColor: self baseBorderColor;
> +               color: self baseBackgroundColor;
> -               borderColor: (Color r: 0.9 g: 0.801 b: 0.2);
> -               color: (Color r: 1 g: 0.85 b: 0.975);
>                 setNameTo: 'Objects' translated;
>                 showCategories.
>   !
>
> Item was changed:
>   ----- Method: ObjectsTool>>paneForTabs: (in category 'tabs') -----
>   paneForTabs: tabList
>         "Answer a pane bearing tabs for the given list"
>         | aPane |
>         tabList do: [:t |
>                         t color: Color transparent.
>                         t borderWidth: 1;
>                                 borderColor: Color black].
>
> +       aPane := Morph new
> +                               changeTableLayout;
> +                               color: self baseBackgroundColor;
> -       aPane := AlignmentMorph newRow
> -                               color: (Color r: 1 g: 0.85 b: 0.975);
>                                 listDirection: #leftToRight;
>                                 wrapDirection: #topToBottom;
>                                 vResizing: #spaceFill;
>                                 hResizing: #spaceFill;
>                                 cellInset: 6;
>                                 layoutInset: 4;
>                                 listCentering: #center;
>                                 listSpacing: #equal;
>                                 addAllMorphs: tabList;
>                                 yourself.
>
>         aPane width: self layoutBounds width.
>
>         ^ aPane!
>
> Item was changed:
>   ----- Method: PartsBin>>listDirection:quadList:buttonClass: (in category 'initialization') -----
>   listDirection: aListDirection quadList: quadList buttonClass: buttonClass
>         "Initialize the receiver to run horizontally or vertically, obtaining its elements from the list of tuples of the form:
>                 (<receiver> <selector> <label> <balloonHelp>)
>         Used by external package Connectors."
>
>         self layoutPolicy: TableLayout new.
>         self listDirection: aListDirection.
>         self wrapCentering: #topLeft.
>         self layoutInset: 2.
>         self cellPositioning: #bottomCenter.
>
>         aListDirection == #leftToRight
>                 ifTrue:
>                         [self vResizing: #rigid.
>                         self hResizing: #spaceFill.
>                         self wrapDirection: #topToBottom]
>                 ifFalse:
>                         [self hResizing: #rigid.
>                         self vResizing: #spaceFill.
>                         self wrapDirection: #leftToRight].
>         quadList do:
>                 [:tuple |
>                         | aButton aClass |
>                         aClass := Smalltalk at: tuple first.
> +                       aButton := buttonClass new
> +                               initializeWithThumbnail: (self class thumbnailForQuad: tuple color: self color)                                 withLabel: tuple third
> +                               andColor: self color
> +                               andSend: tuple second
> +                               to: aClass.
> -                       aButton := buttonClass new initializeWithThumbnail: (self class thumbnailForQuad: tuple color: self color) withLabel: tuple third andColor: self color andSend: tuple second to: aClass.
>                         (tuple size > 3 and: [tuple fourth isEmptyOrNil not]) ifTrue:
>                                 [aButton setBalloonText: tuple fourth].
>                         self addMorphBack: aButton]!
>
>


More information about the Squeak-dev mailing list