Hello,
----- "Oliver Uvman" oliver.uvman@gmail.com a écrit :
The problem I know I will eventually run into is updating the Clim interface when changes to data have been made through manual interaction with the backend. The solutions are either push or pull based, I guess. Push based is not really prefered, because the backend would have to keep track of the gui so it can send messages to it.
[Disclaimer: I don't remember much about GUIs and CLIM...]
Couldn't you define, as part of your GUI code, and for every "relevant" backend method that updates the application data, an :after method that updates or refreshes the interface contents?
Cheers,
-- Matthieu Villeneuve
Matthieu: Yes, that would be the push-type mechanism. The problem about it then is that the backend would have to know when a gui is running or not, and be able to send messages to that gui (keeping some address reference to it or whatever). I'd rather not touch the backend code at all, as that would muddy the waters for the people who are looking at the first large lisp app in their lives.
Maybe I should also note that this is the first time the students meet layered abstraction, so the app so far has a strict top-down dependency model. Code in one layer may not depend on code in a layer above it. Preferably I'd like to keep the gui in a layer of its own, above all other layers. This would keep things simple for the students, they'd never need to look in the gui code (if they don't want to).
/Oliver
On Tue, Jul 13, 2010 at 16:01, matthieu.villeneuve@free.fr wrote:
Hello,
----- "Oliver Uvman" oliver.uvman@gmail.com a écrit :
The problem I know I will eventually run into is updating the Clim interface when changes to data have been made through manual interaction with the backend. The solutions are either push or pull based, I guess. Push based is not really prefered, because the backend would have to keep track of the gui so it can send messages to it.
[Disclaimer: I don't remember much about GUIs and CLIM...]
Couldn't you define, as part of your GUI code, and for every "relevant" backend method that updates the application data, an :after method that updates or refreshes the interface contents?
Cheers,
-- Matthieu Villeneuve