handling properties of multiple objects



Hello,

First a summary of how we currently handle the properties of multiple
objects. For now we don't actually do it ... instead we delegate that
job to groups. This leads to the following problem. When the
properties dialog is invoked on an object, it uses an internal copy to
try the new property values. The purpose is to update the widgets
shown by the dialog based on how the object changes its properties.

But in the case of a group object, s copy of the entire group has to
be made, which can be arbitrarily large as well as nested. When a
property is applied to the copy, the purpose is to get the new values
of all properties that might have changed. Since the same property is
applied to a large number of objects inside the group, only one of
them is actually relevant ... the last object to which we apply the
property and get the new values from.

For a property dialog that handles multiple objects, all this is the
same, except that the dialog must maintain a copy of each object
passed to it.

Now here's a new way to track object copies, that tackles both these
issues: instead of keeping a copy of the object in the dialog, we
extend the property description itself, to carry a copy of the object
from which it was derived. As a result, no matter how many objects are
involved, only one object is used for updating the widget for each
property. As a result, a lot of unnecessary copying of objects is
saved, as well as a lot of getting and setting of properties on
objects that don't matter. Also, the dialog box becomes truly
independent of the number of objects involved.

The big question is ... can we safely change the PropDescription
struct? My suspicion is that we can't ... although I honestly still
don't know much about what is important in terms of binary
compatibility.

If modifying property descriptions is not an option, then the only
thing we can do is to have a dialog that maintains copies of a list of
objects. This can even supersede the dialog that has a single object,
since that is the only real difference between the two.

Sameer.
-- 
http://www.it.iitb.ac.in/~sameerds/



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]