[Cuis-dev] dependency mechanism for TextModelMorph
Weslleymberg Lisboa
weslleym.lisboa at gmail.com
Sun Mar 23 20:24:41 PDT 2025
This works:
initialize
| tmm window |
tmm := TextModelMorph withText: '' :: acceptOnAny: true.
"tmm model when: #changed: send: #update: to: self. (Samething as below)"
tmm model addDependent: self.
SystemWindow new addMorph: tmm; model: tmm model; openInWorld.
update: anEvent
(anEvent asString, ' triggered!') print.
Have no idea at the moment why this works and your example doesn't. But
I looked on how TextEditor class>>#open and SystemWindow
class>>#editString:label:wrap: does it to see what needs to be set
before opening the window.
Em 23/03/2025 18:31, Mark Volkmann escreveu:
> I must be doing a poor job of describing what I want to achieve.
> I've boiled it down to the minimum code needed to demonstrate.
> Here are the steps:
>
> - create a subclass of Object
>
> - add the following instance methods
>
> initialize
> | tmm |
>
> tmm := TextModelMorph withText: '' :: acceptOnAny: true.
> SystemWindow new addMorph: tmm; openInWorld.
>
> update: arg
> 'update was called' print
>
> What can I do in the initialize method so update: is called after every
> keystroke in the TextModelMorph?
> Here are two things I tried that do not work:
>
> tmm model addDependent: self.
>
> tmm model when: #actualContents send: #update: to: self.
>
> On Sun, Mar 23, 2025 at 11:45 AM Weslleymberg Lisboa via Cuis-dev <cuis-
> dev at lists.cuis.st <mailto:cuis-dev at lists.cuis.st>> wrote:
>
> TextModel generates some events. Browse senders of #changed: to see
> it. Maybe the event that #addDepedent: listens to is not the one you
> need.
>
> Cuis use the Observer Pattern as a dependency mechanism (see [1]) so
> #addDependent: and #changed: are "simplifications" of #when:send:to:
> and #triggerEvent:with:
>
> IMHO if what you need is to be notified of changes in the model, I'd
> use it directly instead of making TextModelMorph notify me.
>
> 1 - <https://github.com/nmingotti/The-Cuis-CookBook/wiki/The-
> Dependency-Mechanism--3 <https://github.com/nmingotti/The-Cuis-
> CookBook/wiki/The-Dependency-Mechanism--3>>
>
>
> Em 23 de março de 2025 11:53:10 BRT, Mark Volkmann via Cuis-dev
> <cuis-dev at lists.cuis.st <mailto:cuis-dev at lists.cuis.st>> escreveu:
>
> As far as I can tell,TextModelmorph does not send#changed:every
> time its value changes, so that prevents me from listening for
> updates. I see that the TextModelmethodactualContents:does
> send#changed:, but that is not invoked on every change to
> aTextModelMorpheven when it is configured withacceptOnAny: true.
>
> On Sun, Mar 23, 2025 at 9:38 AM <ken.dickey at whidbey.com
> <mailto:ken.dickey at whidbey.com>> wrote:
>
> On 2025-03-23 06:35, Mark Volkmann via Cuis-dev wrote:
>
> > ...
> > myTextModelMorph addDependent: self.
> ..
> >
> > I have a few questions.
> > - Are there reasons why I should not want this ability?
>
> Generally, Morphs are Views and update to reflect changes in an
> underlying Model.
>
> A Morph can be a Model if sensible.
>
> > - Would it be better to listen for changes on the
> underlying TextModel?
>
> IMHO, yes.
>
> $0.02,
> -KenD
>
>
>
>
> --
> Att.
> Wéslleymberg Lisboa
> Graduado em Sistemas de Informação
> Docente no IFFluminense - Campus Itaboraí
> Ex-Bolsista de IC do Núcleo de Computação Científica (NC2-IFF) -
> Projeto IFF Aerospace
> Github: https://github.com/weslleymberg <https://github.com/
> weslleymberg>
> Tel.: +55 22 99931-2376
> --
> Cuis-dev mailing list
> Cuis-dev at lists.cuis.st <mailto:Cuis-dev at lists.cuis.st>
> https://lists.cuis.st/mailman/listinfo/cuis-dev <https://
> lists.cuis.st/mailman/listinfo/cuis-dev>
>
>
>
> --
> R. Mark Volkmann
> Object Computing, Inc.
--
Wéslleymberg Lisboa
Graduado em Sistemas de Informação
Docente no IFFluminense - Campus Itaboraí
More information about the Cuis-dev
mailing list