comp.lang.ada
 help / color / mirror / Atom feed
From: Jeffrey Carter <jrcarter@acm.org>
Subject: Re: [OT] Best way to isolate a GUI?
Date: Tue, 18 Feb 2003 01:37:25 GMT
Date: 2003-02-18T01:37:25+00:00	[thread overview]
Message-ID: <3E518EA0.1080702@acm.org> (raw)
In-Reply-To: 3E5121BD.4010200@cogeco.ca

Warren W. Gay VE3WWG wrote:
> 
> This sounds conceptually nice, but it could prove to have practical
> problems (I need to think about this more, myself). Thinking in terms
> of an X11/MOTIF application, where there can be hundreds of windows within
> windows to implement widgets on a form, this translates to hundreds
> (if not more) of tasks. This smells a lot like overkill upon first
> blush at least.

I wouldn't think you'd want a queue for every widget. I'd think one per 
top-level window would be about right. The events in the queue would 
have to identify the widget that generated them. In some cases you'd 
have a task for every window, while in others one task might handle the 
events from several windows. It's a question of what the problem's 
concurrency needs are, not what the windowing system forces on you. You 
wouldn't be forced to declare any tasks, if tasking's not appropriate to 
the problem.

> 
> Additionally, where the application wants access to one event, it would
> need to provide an entire task, and then have null handlers for all
> the events it was not interested in (I think).  I think I'd need
> to prototype this to get a better feel for this.

There can be an awful lot of different events from a window. I would 
think you could tell the system what events to report and which to 
ignore, with a default set that is frequently useful. Then, if you're 
only interested in the close event from a window, it won't send you 
anything else.

> 
> It might be easier to start with a tagged object, where methods can
> be inherited and overriden instead. That way all events can just
> do nothing, while you override the events you are interested in.
> But this takes us back to a model similar to callbacks anyways, but
> instead of registering a callback, you register a tagged record
> to receive callbacks.

This is the approach taken by CLAW. A widget is represented by a tagged 
type, with primitive operations that are called automatically when 
certain events occur. There are default versions of these operations. To 
create a widget with specific behavior, you have to extend the type and 
override the appropriate operations. This can be useful when you want to 
have data associated with a widget, as you can define the data as part 
of the extension, give the widget values when you create it, and check 
the values in the operations. But when all you want is to define the 
application's behavior when the user clicks a button, it seems like 
overkill. Consider a window with lots of buttons, different behavior 
when each button is clicked, and little or nothing else in the way of 
user input. This calls for many extensions and many overridings of the 
appropriate operation. It differs from callbacks in not requiring 
operations to be registered with the windowing system, but similar in 
that the windowing system controls your application.

> I can't speak for CLAW, and the one shortcoming I see in JEWL is that
> you cannot get "focus events".

JEWL is deliberately a simple system, and the lack of some features is 
the price of that simplicity. The concept of the application actively 
requesting events from the windowing system is one that could be applied 
to a more complex windowing system.

Nothing's perfect, and GtkAda and CLAW represent a lot of good work. 
JEWL is very good, too, for its application area of providing a simple 
windowing system for beginners.

-- 
Jeff Carter
"My name is Jim, but most people call me ... Jim."
Blazing Saddles




  parent reply	other threads:[~2003-02-18  1:37 UTC|newest]

Thread overview: 57+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-02-16 10:19 [OT] Best way to isolate a GUI? Jano
2003-02-16 14:47 ` Ed Falis
2003-02-16 14:49 ` Victor Porton
2003-02-17 20:52   ` Jano
2003-02-16 16:36 ` Robert C. Leif
2003-02-17  8:44   ` Preben Randhol
2003-02-17 16:22     ` Robert C. Leif
2003-02-17 17:30     ` Jeffrey Carter
2003-02-17 17:54       ` Warren W. Gay VE3WWG
2003-02-17 19:06         ` Randy Brukardt
2003-02-18  3:15           ` Warren W. Gay VE3WWG
2003-02-18 16:14             ` Robert C. Leif
2003-02-18 18:10             ` Randy Brukardt
2003-02-18 21:12               ` Warren W. Gay VE3WWG
2003-02-18 23:20                 ` Randy Brukardt
2003-02-19 18:28                   ` Warren W. Gay VE3WWG
2003-02-20 19:39                     ` Randy Brukardt
2003-02-20 21:34                       ` Warren W. Gay VE3WWG
2003-02-20  7:50                   ` Dale Stanbrough
2003-02-19 12:49                 ` Marin David Condic
2003-02-19 18:35                   ` [OT] Best way to isolate a GUI? (The final concensous?) Warren W. Gay VE3WWG
2003-02-20 12:40                     ` Marin David Condic
2003-02-20 13:13                       ` Dmitry A. Kazakov
2003-02-20 22:01                       ` Warren W. Gay VE3WWG
2003-02-21  1:25                         ` tmoran
2003-02-21  2:08                         ` Marin David Condic
2003-02-21 17:27                           ` Jeffrey Carter
2003-02-22 14:10                             ` Marin David Condic
2003-02-21 18:02                           ` Warren W. Gay VE3WWG
2003-02-22 14:49                             ` Marin David Condic
2003-02-22 22:50                               ` tmoran
2003-02-23  5:18                               ` Robert C. Leif
2003-02-24 18:06                               ` Warren W. Gay VE3WWG
2003-02-25  1:20                                 ` Robert C. Leif
2003-02-25 17:57                                   ` Warren W. Gay VE3WWG
2003-02-25 12:41                                 ` Marin David Condic
2003-02-25 13:32                                   ` Ole-Hjalmar Kristensen
2003-02-25 17:33                                     ` [OT] Best way to isolate a GUI? (The final fronteer?) Warren W. Gay VE3WWG
2003-02-20  8:26                   ` [OT] Best way to isolate a GUI? tmoran
2003-02-20 12:51                     ` Marin David Condic
2003-02-20 18:47                       ` tmoran
2003-02-17 19:31         ` tmoran
2003-02-18  1:37         ` Jeffrey Carter [this message]
2003-02-18  3:39           ` Warren W. Gay VE3WWG
2003-02-18 23:36           ` Randy Brukardt
2003-02-18 13:29         ` Marin David Condic
2003-02-18 18:01           ` Warren W. Gay VE3WWG
2003-02-19 13:06             ` Marin David Condic
2003-02-16 17:25 ` achrist
2003-02-16 21:24 ` Bobby D. Bryant
2003-02-16 21:52 ` David Marceau
2003-02-17  0:57 ` Re; " tmoran
2003-02-17  7:25   ` Jano
2003-02-17 14:09     ` Bobby D. Bryant
2003-02-17 21:12       ` Jano
2003-02-18  7:24         ` Jean-Pierre Rosen
2003-02-18 13:08 ` Marin David Condic
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox