refreshing the GUI
James LewisMoss
jimdres@mindspring.com
29 Nov 2000 15:01:25 -0500
>>>>> On Wed, 29 Nov 2000 11:11:33 -0800, Dave Peticolas <dave@krondo.com> said:
Dave> James LewisMoss writes:
>> >>>>> On Wed, 29 Nov 2000 01:59:22 -0800, Dave Peticolas
>> >>>>> <dave@krondo.com> sa
>> id:
>>
Dave> Design ------
>>
Dave> The refresh mechanism will be designed in two parts, an engine
Dave> component and a GUI component. The engine component will be a
Dave> simple change callback mechanism, while the GUI component will
Dave> be a GUI entity manager that includes refresh management, as
Dave> well as other functionality.
>>
>> So a change to data occurs. The engine has a registered listener
>> in the GUI Component Manager that it calls to say something has
>> changed. What happens then?
Dave> Refreshing is controlled by gnc_suspend_gui_refresh()
Dave> gnc_resume_gui_refresh(), and gnc_gui_refresh_all().
Dave> The first two are used as a pair:
Dave> gnc_suspend_gui_refresh ()
Dave> ... perform some changes, edit accounts, transactions, etc. ...
Dave> ... no refresh callbacks occur during this period ...
Dave> gnc_resume_gui_refresh () /* This causes the refresh callbacks
Dave> to
Dave> be invoked for all the registered
Dave> components with the changes that
Dave> ocurred above. */
Hash table of changes. If gnc_suspend_gui_refresh isn't called the
refresh callbacks get called for each change?
Dave> The last is used when doing very large amounts of changes, for
Dave> which it would just be simpler to refresh everything:
Dave> gnc_engine_suspend_change_callbacks () /* turn off engine
Dave> callbacks */
Dave> ... destroy all entities ... ... load new ones from file ...
Dave> gnc_engine_resume_change_callbaks ()
Dave> gnc_gui_refresh_all () /* force all components to refresh
Dave> unconditionally */
So the engine calls this in the CM? Better to have another callback
"JustGetEverythingAgainCB"?
>> I'm trying to figure out what the close, find and iteration
>> callbacks are meant to do and who registers with who.
Dave> The close callback is for closing the gui component. The CM is
Dave> meant to be more than just a refresh manager.
Is this the introduction of the CM? What else will it do? So when
the CM decides a component should close it calls the close callback on
the componont? When the component closes it calls the close callback?
Are all components required to register with the CM?
Dave> The find callback is so components can find related components
Dave> in the same class (for example, if the user opens and already
Dave> open account, the existing window should be raised instead of
Dave> opening a new one).
Ah. Hmm. Seems you are including two things here.
1) Data update callbacks.
2) Component management.
That accurate?
Dave> The iteration is to aid component management. Right now, it
Dave> will mainly be used in conjunction with the close operation,
Dave> but there could be additional uses in the future.
Still confused here.
Jim
--
@James LewisMoss <dres@debian.org> | Blessed Be!
@ http://jimdres.home.mindspring.com | Linux is kewl!
@"Argue for your limitations and sure enough, they're yours." Bach