On Feb 15, 2013, at 11:45 AM, Derek Atkins <warl...@mit.edu> wrote:

> John Ralls <jra...@ceridwen.us> writes:
> 
>> On Feb 15, 2013, at 11:08 AM, Derek Atkins <warl...@mit.edu> wrote:
>> 
>>> John Ralls <jra...@ceridwen.us> writes:
>>> 
>>>> Gnucash isn't written that way, but it can be fixed. It just takes
>>>> someone to do the work -- though if we want it done in our lifetimes,
>>>> several someones.
>>> 
>>> Right, that was my point...  GnuCash isn't written as an MVC.  And even
>>> if it was, it's hard to say how the V would interact with the M and C
>>> interactively...
>> 
>> Why hard to say? MVC isn't exactly cutting-edge design. It's been
>> around since 1988 and 7 years later GoF thought it so well-understood
>> that it's the "how to use patterns" example in the introduction.
> 
> Well, the point is that every time the user leaves a field you need to
> parse all the input fields and process them in the controller/model as
> part of the validation, even if the user hasn't asked to 'save' yet.
> 
> I guess it all depends on your controller APIs.  (In the RoR world this
> is harder to do, because the view is in the browser, but the model and
> controllers are on the server -- and there is no "verify this model" API
> in the controller.  At least not directly.  The client-side-validations
> gem adds some support for this).


We already do that for the account type listbox: We connect to a signal (don't 
know offhand which one) in the parent accounts GtkTreeView that tells us that 
the user has selected a parent account, retrieve that account, run 
xaccAccountGetCompatibleTypes() on it, and populate the account type listbox 
with the result.  

That's a pretty standard way for UI View objects to communicate with their 
controller objects, though there are others. Wx has a specific "Validator" 
class that lets you register a callback to test control input as it happens. It 
also has a signals mechanism (which they rather confusingly call Events) to 
support other interactivity needs. Qt is well-known for its "signals and slots" 
feature, which I imagine is used for this purpose much like Gtk's signals are, 
but I've never written anything for Qt so I don't actually know.

Regards,
John Ralls


_______________________________________________
gnucash-devel mailing list
gnucash-devel@gnucash.org
https://lists.gnucash.org/mailman/listinfo/gnucash-devel

Reply via email to