[Cuis-dev] LayoutMorph subclass instance #beColumn has not effect

Alexandre Rousseau yalexr at gmail.com
Mon Mar 13 16:29:08 PDT 2023


Hi Hilaire and Mariano,

 Most of the time, you don't need to subclass LayoutMorph, unless you want
> to define new sort of complex widget.


What distinguishes a complex widget from their counterparts? In my case,
here is a screenshot of work in progress... a sampling of widgets placed on
a PasteUpMorph instance. Each of those widgets extends LayoutMorph class. I
could have had them be a subclass of BoxedMorph (or placedMorph) but, given
that the widgets I want to use all lay out their components in vertical
order, I thought extending LayoutMorph made more sense. If not, then I
would have to embed a layout morph as top level submorph in each of them,
then embedding further submorphs inside of that.

So, if I gather correctly, the following would be more idiomatic. Please
correct me if I'm wrong (and thanks again!) :

> initialize
> | lo |
>   super initialize.
>   lo LayoutMorph newColumn.
>   lo
>     addMorph: (BoxedMorph new color: Color red; yourself);
>     addMorph: (BoxedMorph new color: Color green; yourself);
>     addMorph: (BoxedMorph new color: Color blue; yourself).
>   self addMorph: lo.
>   self morphExtent: `40 at 120`.


A.
[image: Screenshot 2023-03-13 at 7.28.53 PM.png]


On Mon, Mar 13, 2023 at 6:53 PM Mariano Montone <marianomontone at gmail.com>
wrote:

> I got it wrong. Seems that row layout layouts things horizontally, and
> column vertically.
>
> As Hilaire mentioned, unless you want to define your own layout algorithm,
> the idea is to use the layout morphs, not subclass from them.
>
> Layouts in a column (vertically):
>
> LayoutMorph newColumn ::
>         addMorph: (BoxedMorph new color: Color red; yourself);
>         addMorph: (BoxedMorph new color: Color green; yourself);
>         addMorph: (BoxedMorph new color: Color blue; yourself);
>         openInWorld.
>
> Layouts in a row (horizontally):
>  LayoutMorph newRow ::
>         addMorph: (BoxedMorph new color: Color red; yourself);
>         addMorph: (BoxedMorph new color: Color green; yourself);
>         addMorph: (BoxedMorph new color: Color blue; yourself);
>         openInWorld.
>
>     Mariano
>
> El 13/3/23 a las 18:30, Alexandre Rousseau escribió:
>
> You may want to try with #beRow if you want submorphs to align vertically
>> (in rows).
>
>
> Hmm... I'm not sure about this.
>
> I've attached the filed-out test class to this email, if you want to take
> a closer look.
>
> Basically it is a LayoutMorph subclass, initialized as:
>>
>> initialize
>> | b1 b2 b3 |
>
> super initialize.
>> self beRow.
>> b1 BoxedMorph new :: color: Color red.
>> b2 BoxedMorph new :: color: Color green.
>> b3 BoxedMorph new :: color: Color blue.
>> self addMorph: b1.
>> self addMorph: b2.
>> self addMorph: b3.
>> self morphExtent: self minimumExtent.
>
> and the instantiation of which results in this (attached image 1).
>
> [image: image1.png]
> [image: image 2.png]
> Changing line 4 to "self beColumn" does not lay the items out vertically.
> See attached image 2.
>
>
>
> On Mon, Mar 13, 2023 at 4:01 PM marianomontone--- via Cuis-dev <
> cuis-dev at lists.cuis.st> wrote:
>
>> On 13/3/23 13:36, Alexandre Rousseau via Cuis-dev <cuis-dev at lists.cuis.st>
>> wrote:
>> > Defining a class as subclass of LayoutMorph and initializing it thus:
>> >
>> >     initialize
>> >        super initialize.
>> >        self beColumn.
>> >
>> >
>> > morphs added to it still appear next to each other, horizontally, as if
>> > #beColumn was ignored.
>> >
>> > Is this expected behaviour for a subclass of LayoutMorph?
>>
>> I think it is. You may want to try with #beRow if you want submorphs to
>> align vertically (in rows).
>>
>>       Mariano
>> --
>> Cuis-dev mailing list
>> Cuis-dev at lists.cuis.st
>> https://lists.cuis.st/mailman/listinfo/cuis-dev
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.cuis.st/mailman/archives/cuis-dev/attachments/20230313/a9b20d1a/attachment-0001.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: image1.png
Type: image/png
Size: 4032 bytes
Desc: not available
URL: <http://lists.cuis.st/mailman/archives/cuis-dev/attachments/20230313/a9b20d1a/attachment-0003.png>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: image 2.png
Type: image/png
Size: 5004 bytes
Desc: not available
URL: <http://lists.cuis.st/mailman/archives/cuis-dev/attachments/20230313/a9b20d1a/attachment-0004.png>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: Screenshot 2023-03-13 at 7.28.53 PM.png
Type: image/png
Size: 66778 bytes
Desc: not available
URL: <http://lists.cuis.st/mailman/archives/cuis-dev/attachments/20230313/a9b20d1a/attachment-0005.png>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: TestBoxedMorphSubclass.st
Type: application/octet-stream
Size: 755 bytes
Desc: not available
URL: <http://lists.cuis.st/mailman/archives/cuis-dev/attachments/20230313/a9b20d1a/attachment-0001.obj>


More information about the Cuis-dev mailing list