[Glade-devel] Property Binding: Fixing the big blocker
Denis Washington
denisw at online.de
Tue Nov 22 01:18:34 EST 2011
Am 22.11.2011 06:47, schrieb Tristan Van Berkom:
>>> This is where a generalized "clear property" with a general meaning would
>>> be better.
>>
>> Actually, I agree with this now. A separate notion of invalidation is much
>> clearer and less fragile. Given that, we might even be able to omit
>> glade_command_set_property_sensitive() and call
>> GladeWidgetAdaptor->evaluate_sensitivity() from the invalidation command
>> instead.
>
> Yes that's kindof what I had in mind, ideally the source and target evaluate
> the sensitivity using the adaptor method in as most cases as possible (hopefully
> all cases).
OK, great. So I guess good places would be:
- After widget creation / load
- Property editor post-commit
> The other detail about the 'clear property' or 'invalidate property' semantics
> is not entirely clear to me, I suppose one approach would be to fire a signal
> on a GladeProperty when it is supposed to be cleared.
>
> For instance...
>
> o the activatable editor goes ahead and clears
> a property which is actually a binding source (somewhere inside
> the command group which it declares)... possibly by calling
> glade_property_clear (property, use_command = TRUE);
>
> o Then the "clear" or "invalidate" signal is fired on the said GladeProperty
> with a 'use-command' parameter as TRUE
>
> o GladeProperty code would implicitly connect to the "invalidate" signal
> on it's set 'source property', when the property is cleared then the source
> property attribute can be unset undoably
>
> o Some specific GladeWidgets will be allowed to connect to an "invalidate"
> signal on a property of another GladeWidget, if ever more code is developed
> which needs to do an action at property invalidation time, this can be done
> by listening to this signal and without adding custom code to
> glade-command.c
This sounds like a sensible approach (although I would really call it
glade_property_invalidate(), as this makes the intention and the
difference to "resetting" a property clearer). I could go ahead and
implement this and see how it works out.
>>
>>> Historically you need to know that all the worst code ends up in
>>> glade-command.c
>>> because we are too lazy to do things properly, then we add adaptor methods
>>> to
>>> do things more generically and pull hard-code out of glade-command.c...
>>> I'm just
>>> trying to avoid that.
>>
>> So you're thinking of something like GladeWidgetAdaptor->invalidate()? How
>> would that be better than simply having glade_command_invalidate_property()?
>> I cannot think of any way thank specific widget types would need different
>> implementations of this.
>
> No no, I was just trying to illustrate how particularly fragile the
> "Controller"
> element of Glade's MVC model is (or can potentially get, when trying to
> handle things using a procedural approach from glade-command.c, which
> is always the most obvious approach ... but has drawbacks).
Ah, ok.
> And... thanks a lot for your patience with this.
No problem. :)
Regards,
Denis
More information about the Glade-devel
mailing list