On 2015-10-11 08:11, Monte Goulding wrote:
On 11 Oct 2015, at 11:36 am, Peter Haworth <p...@lcsql.com> wrote:

Thanks Monte. Maybe I should file a QCC report or have you already done so?

No I haven’t reported it. I got the impression from the discussion
that it was never intended to support the properties so it wouldn’t
happen. I’m about to propose (on the engine forum) a refactor of the
properties property (which I’ll do if they want me to) that will
essentially make the properties property self maintaining rather than
the current situation which means the list of properties for an object
type needs to be maintained manually. This wasn’t possible before the
refactor and there’s still a few issues like identifying which synonym
of a property is the one to use in the properties array and which
properties should be in the array. The end result will mean the
properties of a widget will be kind + the standard properties for a
control + the standard properties for an object.

I don't think we have ever had the intention not to update the properties property to make it work for widgets - we just haven't done so yet.

Part of the reason for this is that 'the properties' property is quite ill-posed. As it stands it is essentially 'the properties needed to recreate the object' (after the work Monte did on it a couple of years ago); however that concept is difficult as it actually requires hard-coded rules in it to ensure that when you set 'the properties' the properties are set in the correct order.

Widgets complicate matters somewhat. We make no requirement that the state a widget must preserve to recreate itself be directly related to the properties you actually set (this is actually also true of existing engine controls - hence why there is a need for 'hardcoded' rules in the properties property implementation).

Now, I'm not saying this situation is ideal, there are various things we could do in the future to make widgets easier to write if they follow the rule that 'there should be a set of persistent properties which don't overlap and fully faithfully allow recreation of the object' (for widgets that claim to be this, they wouldn't need an OnSave / OnLoad handler as the engine could synthesise one).

However, that doesn't change the fact that currently engine controls don't follow that rule and I'd be loathe to put a restriction on all widgets in that fashion as I cannot forsee the widgets people might wish to write.

Basically there is a bit distinction between:

  1) The data you need to recreate an object (this is what lcVCS needs).

2) The information you need to provide good introspection on created objects (this is what the IDE / inspectors etc. need).

Right now, I'd be incredibly dubious if a single 'properties' property could be made to handle both these uses - the lengthy thread a couple of years ago on this precise topic made that absolutely clear.

Moreover, we have worked quite hard in the IDE to provide a mechanism for (2) - it is what the new property inspector is based on - i.e. APIs for returning information and data about objects in the environment.

Warmest Regards,

Mark.

--
Mark Waddingham ~ m...@livecode.com ~ http://www.livecode.com/
LiveCode: Everyone can create apps

_______________________________________________
use-livecode mailing list
use-livecode@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode

Reply via email to