[Newbies] Beginners Digest, Vol 123, Issue 4

H. Hirzel hannes.hirzel at gmail.com
Wed Feb 22 23:56:41 UTC 2017


On 2/23/17, Tobias Pape <Das.Linux at gmx.de> wrote:
>
> On 23.02.2017, at 00:34, H. Hirzel <hannes.hirzel at gmail.com> wrote:
>
>> Assuming you have named your instances of TextMorph and embedded them
>> in the PasteUpMorph so that they are in the 'submorphs' collection of
>> the PasteUpMorph
>>
>> you may access them by name from the PasteUpMorph with
>>
>>
>>   self submorphs detect: [:m | m externalName = 't1']
>
> self submorphNamed: 't1'

Thanks, Tobias

And accessing it as a sibling morph (i.e. from another morph embedded
in the PasteUpMorph as well)  would then be

     self owner submorphNamed: 't1'


>>
>> (access to morph named 't1').
>>
>> This is a moderate effort and allows you to construct the GUI through
>> direct manipulation.
>>
>> Please note as well that in a recent trunk image the halo menu list of
>> a SimpleButtonMorph has a 'set target' menu entry which allows you to
>> set to any target by pointing at it.
>>
>> --Hannes
>>
>>
>> On 2/22/17, Tim Cuthbertson <ratcheer at gmail.com> wrote:
>>> Tim,
>>>
>>>> One of the articles on Morphic says you can create composite morphs
>>> either programatically,
>>>> using addMorph, or using drag and drop from the Objects menu of the
>>> morphic World. I have
>>>> done the latter, because it is easier to design my layout that way. Once
>>> that has been done,
>>>> how do I address the submorph from a browser? If I inspect my button
>>> submorph, for example
>>>> , all it will tell me about it is "a ScriptableButton<Button>(1364754)".
>>>> I
>>> have no idea how to
>>>> access that object in order to do anything with it. This is the crux of
>>> my questions.
>>>
>>> This is, in my opinion, the most significant limitation of Morphic for
>>> interactive GUI creation. In the original Morphic in Self the way to
>>> handle this was to simply search through all your submorphs for the one
>>> you were interested in, usually by comparing the morphType string. In
>>> Squeak we can add properties to Morphs very easily so that would be one
>>> way to tag it. Something like:
>>>
>>> | stopButton |
>>> stopButton := nil.
>>> self submorphsDo: [ :m | (m hasProperty: #stopButton) ifTrue: [
>>>                               stopButton := m ] ].
>>> stopButton ifNotNilDo: [ :b | b ... ].
>>>
>>> Code like this will work even if there are no stopButtons at all and if
>>> you add more than one the code will just use the last one and ignore the
>>> others.
>>>
>>> After creating the button you have to get its halo and use the red
>>> button (menu) with the debug->inspect morph option to set the
>>> #stopButton property.
>>>
>>> An alternative to using specially created properties is to depend on the
>>> morph's name. In your case it is "a ScriptableButton<Button>(1364754)"..
>>> So:
>>>
>>> self subMorphsDo: [ :m | (m name includesSubString: 'Button') ifTrue:
>>> ...
>>>
>>> should work for you as long as there is only one button.
>>>
>>> -- Jecel
>>>
>>> Thank you, Jecel, for trying to help me solve my problem. However, my
>>> plan
>>> is to have multiple sibling morphs for both the buttons and the texts.
>>>
>>> So, I am diving in to trying to use addMorph: programatically to add
>>> submorphs to my display. This allows me to hold a reference to each
>>> submorph in named variables, through which I should then be able to
>>> specify
>>> state changes and act on events to and from my submorphs.
>>>
>>> Maybe my mindset is just too old fashioned. Back in the 90's, I
>>> programmed
>>> MVC applications in VisualWorks. I thought Morphic was supposed to be
>>> much
>>> easier to use than MVC, but so far, I have not been able to figure out
>>> how
>>> to control my objects in Morphic.
>>>
>>> Tim Cuthbertson
>>>
>> <selecting_a_submorph_by_name_2017-02-23.png>_______________________________________________
>> Beginners mailing list
>> Beginners at lists.squeakfoundation.org
>> http://lists.squeakfoundation.org/mailman/listinfo/beginners
>
> _______________________________________________
> Beginners mailing list
> Beginners at lists.squeakfoundation.org
> http://lists.squeakfoundation.org/mailman/listinfo/beginners
>


More information about the Beginners mailing list