ANNOUNCE ex11 release two
Joe Armstrong
joe@REDACTED
Thu Jan 22 14:37:55 CET 2004
On Thu, 22 Jan 2004, Vlad Dumitrescu wrote:
> Hi again,
>
> I suppose that the use of callbacks will not remain as it is now: the fun is
> evaluated in the main loop of the widget. I think it should either be spawned,
> or the mechanism be replaced with message sending to an owner-process (like in
> gs, IIRC)
On the contrary I think this is *exactly* how it should be done.
I have experimented with many different styles of callback handling
and IMHO this is the best. If you want to do it with messages you can write
your top-level thing like this:
B = swButton:make(Win ......)
S = self(),
B ! {onClick, fun(X) -> S ! {wrapper, X} end},
...
loop(...).
loop(...) ->
receive
{wrapper, X} ->
Do something
...
end
Note the Fun is evaluated in the main loop of the widget NOT in the
application and NOT in the driver.
I have totally re-written the widget libraries at least five times,
and feel this structure is best.
If you don't do it like this life gets difficult. Suppose you make a
top level window with 20 widgets in it. You don't want to forward
messages from all the widgets to the top-level controller, only a few
of them - so you set up callbacks within the individual widgets.
If you did want all the messages you just make the funs send messages
to the required process as in the example above.
Cheers
/Joe
More information about the erlang-questions
mailing list