On Feb 16, 2013, at 12:30 PM, Herbert Thoma <herbert.th...@iis.fraunhofer.de> 
wrote:

> 
> 
> Am 16.02.2013 17:06, schrieb John Ralls:
>> 
>> On Feb 16, 2013, at 5:06 AM, Herbert Thoma <herbert.th...@iis.fraunhofer.de> 
>> wrote:
>> 
>>> forgot CC list ...
>>> 
>>> Am 15.02.2013 21:06, schrieb John Ralls:
>>>>>> 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.
>>> 
>>> Yes, you can use signals and slots this way. I personally like Qt very 
>>> much. For me
>>> it is the best GUI toolkit I have ever worked with (I worked with Motif, 
>>> MFC,
>>> GTK and Qt, but always only small projects or patches to GnuCash).
>>> 
>>> However, I would still be hesitant to use signals and slots in the engine. 
>>> Earlier
>>> in this thread it was stated that the engine depends heavily on Glib and 
>>> that this
>>> is bad for portability. Do we want to replace the Glib dependency with a Qt
>>> dependency?
>>> 
>> 
>> See Geert's and my responses about where the "slots" go.
> 
> OK, thanks. I think I got it. I only just know enough C++ to be dangerous ...
> 
>> Does Qt have another mechanism for validating user input as he types? How 
>> does it handle spell checking? ("Magic" is a reasonable answer here: I know 
>> in detail how Gtk handles spell checking because it's an add-on that I've 
>> contributed to, but Apple handles it inside the toolkit so that application 
>> devs needn't do anything about it.)
> 
> Qt has a QValidator class. http://qt-project.org/doc/qt-4.8/qvalidator.html
> I don't think that this is used for spell checking, though.

Looks similar to Wx's.

It also links to http://qt-project.org/doc/qt-4.8/widgets-lineedits.html which 
shows signals and slots being used to perform the interactive features we've 
been discussing. They're even used to fire off the validator.

Regards,
John Ralls


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

Reply via email to