Re: Modifying properties of several objects at the same time
From: Lars Clausen <lrclause cs uiuc edu>
To: dia-list gnome org
Subject: Re: Modifying properties of several objects at the same time
Date: Fri, 24 Oct 2003 10:47:08 -0500
On 24 Oct 2003, Ben Hetland wrote:
>
> Lars Clausen wrote:
>> On 22 Oct 2003, Ben Hetland wrote:
>>> If the property in question does NOT have the same value in all
>>> selected objects, however, then the field should still be enabled
>>> (i.e. modifiable), but doesn't show any real value. It could also be
>>> "dimmed down" or something to visually aid in the concept that there
>>> are really multiple values around. If the user does not touch this
>>> setting at all, then the properties should remain unchanged in all
>>> objects. But if the user sets a different value, then that will be set
>>> in all objects of that type.
>> This is the hard part. Suggestions or even patches for this would
>> be most
>> welcome.
>
> Maintaining a state with each widget I think is the clue to the
> solution here, a flag indicating "common value" or not. (Or did you
> mean that it's really hard to "dim down" a widget in GTK+?)
GTK+ has some widgets with a 'multiple' state, but there are some that are
homegrown and will have to be fixed, and some (most notably I think string
entry) that have none.
> For more complicated things like texts and numbers, this isn't as
> simple. But I suggest the following:
> - initially the item is grayed and shows no value at all
> (empty field)
> - if the user types anything in there, then this will be
> the new value for _all_ selected objects of that kind
> (we don't care about the old values being different).
> The item's background turns white to reflect the change.
> - There could be an additional button or check box next
> to the field, allowing the user to revert his/her new
> value, upon clicking this would set the field back to
> its initial state.
The two first absolutely. However, I've been pondering if widgets with
e.g. text, numbers or colors shouldn't have a drop-down menu showing all
the different settings any of the objects have, so you can pick one.
> We could also drop the last feature mentioned here, by asserting that
> if the user really did override some "multi-value", but
> changed his or her mind afterwards, then one could simply
> [Cancel] the whole properties box and bring it up again.
[Cancel] or [Revert] will do it for that.
> I also assert that the imaginable possibility of being able to set
> multiple values for the same field at the same time (when multiple
> objects are selected), is not really a feature that is
> needed. Because, if one really wants different values for some
> specific property, then one can simply bring up the properties dialog
> individually for each object in turn.
Indeed. That'd be way too confusing a feature...
<daydream>Would be nice though to be able to, say, add 1 to all
linewidths...</daydream> but it's so rarely useful that the interface would
be clutter.
>
>> There's also a problem of figuring out which ones have the same
>> setting,
>> but that's mostly a problem of understanding properties.
>
> In pseudo code (inspired by C++ STL):
>
> it = select.begin();
> common_value = true;
> value = it->val;
> for_each( ++it, select.end(),
> { if (value != it->val) common_value = false; } );
> if (common_value)
> Display as normal: value
> else
> Display blank with empty field
Yeah, that's the idea of it, but properties aren't (unfortunately) all that
simple. But if you can go in and just make a function that figures it out
(I have already reserved a flag for it), then somebody else can look at the
interface stuff. Or vice-versa.
> OK, just thinking "aloud" here, sharing some ideas. Anyone willing to
> elaborate are welcome to do so; otherwise I might try one day myself
> if I get the time (which I unfortunately get far to rarely...).
That'd be great of you could.
-Lars
--
Lars Clausen (http://shasta.cs.uiuc.edu/~lrclause)| HĂ„rdgrim of Numenor
"I do not agree with a word that you say, but I |----------------------------
will defend to the death your right to say it." | Where are we going, and
--Evelyn Beatrice Hall paraphrasing Voltaire | what's with the handbasket?