Object Dialog patch

Bug #1157024 reported by ScislaC on 2013-03-19
24
This bug affects 2 people
Affects Status Importance Assigned to Milestone
Inkscape
Wishlist
Liam P. White
Experimental
Wishlist
Liam P. White

Bug Description

Thanks to the work by Ted Janeczko, here is a patch for an object dialog as many have requested for years (this satifies keeping the layers dialog and going to levels beneath layers, however, it may be better to go up further to the root as well). This is work being submitted upstream from a derivative project, Ponyscape.

We may get a handful of these submitted upstream and I will be adding reports for any such patches probably in the same manner.

I've modified the patch he emailed me and am including his notes in this report for others to gain some insights and for testing purposes.

Here are his notes on it:

• I use an XmlNodeObserver for handling updates to objects using their xml representation. Based on experimentation this is the most effecient way currently to handle individual object updates. I tried using the modified signal, but it was being thrown way too often as any modification to a group also emits the modified signal from its children and when dealing with hundreds of objects the objects dialog was being bogged down.
• I added a flag for updating an objects repr called SP_OBJECT_WRITE_NO_CHILDREN which does not persist the repr update to the children of the object. This is not necessarily needed, but it makes updating certain attributes of groups a lot more efficient
• In order to allow multiple objects to be dragged & dropped, I delay item selection in the tree until the mouse button is released. This is accomplished by storing the tree path on a mouse button down event and setting the tree selection routine to one which allows no new selection or deselection of items. When the mouse button is released, the tree selection routine is restored and the item is selected (assuming that drag & drop was not initiated).
• I included the highlight color selector and the highlight/outline color rendering routines. I know originally each outline color in the node-edit tool held a specific meaning (red for path, green for clip, etc), but to be able to change the outline color might be a nice inclusion in Inkscape. Currently, to set the outline you must select a color which has an alpha value greater than 0. When the alpha is set to 0 the outline color is inherited from the parent. I'm working on creating a new color selection dialog which has a checkbox for setting or inheriting the color instead of using the alpha value. The highlight color is currently stored in the inkscape:highlight attribute as an unsigned integer, but this could easily be converted to a css/hex style color value.
• I removed the insert order (insert above or insert below) for groups as I created new icons for them and it requires some additional modification to SPItems. If this would be desired functionality, I can add in the icons or use stock icons, make the modifications, and send you another patch.
• The expansion status of the tree is stored with each item in the inkscape:expanded attribute. This allows the tree to be re-built without having all of the nodes collapse and provides a consistent experience when re-opening the file.
• I did not have the time to change the opacity slider over to the gimp spin scale control... The Ponyscape userbase (and myself) actually prefer the old slider control as it's easier to input an exact value without clicking on the actual slider and we find it a bit more precise. If you would like me to look into switching it over for Inkscape, let me know and I'll see what I can do!

Please help test and give feedback... the next potential patch would probably be for a tagging system/tags dialog in Inkscape (already exists in Ponyscape) and I have to say it's pretty nifty.

Note: Yes there are existing bug reports on this type of feature, but searching didn't turn them up in less than 3 mins for me, so I just wanted to be productive.

Related branches

ScislaC (scislac) wrote :
su_v (suv-lp) wrote :

Just a quick initial feedback:
Inkscape 0.48+devel r12224+objects_dialog.patch builds successfully on OS X 10.7, with GTK+/Quartz 2.24.17 and clang.

- new features not yet tested in-depth, will comment later
- experimental GTK3 build fails in 'ui/dialog/objects.cpp'
  (this can probably be looked at once the patch has been committed)

@Ted: many thx for your work and for sharing it - I'm looking forward to more contributions from Ponyscape!

su_v (suv-lp) wrote :

Most of the older feature requests for a 'Object and Group' browser had been linked to this blueprint:
<https://blueprints.launchpad.net/inkscape/+spec/better-layer-management>

Maybe the linked bug reports ought to be untangled to separate layer management from an 'object+group' browser, and linked to a separate blueprint.

Ted Janeczko (janeczko-ted) wrote :

@~suv: I look forward to contributing more patches and working with you and the rest of the Inkscape development team! I have not yet done any work on porting the objects dialog to GTK3, so I have no doubt that the build will fail with it currently, but I can take a look into fixing that in the next couple of days or once the patch is committed (shouldn't take too long to iron everything out).

ScislaC (scislac) wrote :

@Ted

1) Why is the "item type" indicator for everything but layers and groups something that would indicate that it's text.
1a) Is there a plan to add other indicator types for different object types?

2) Why does the "item type" indicator for layers and groups have a visible "toggle" interaction when clicked (it looks like it switches between group & layer icons), whereas nothing happens for other object types?

3) I think it should be able to list the root/document node as well... somewhat like Corel Draw - http://www.engrave.ca/archives/1588

As you had mentioned the opacity slider widget should be changed over and I'd like to see the inherit checkbox you mentioned possibly adding, it would definitely improve usability..

Otherwise it seems relatively complete.

Changed in inkscape:
assignee: Ted Janeczko (janeczko-ted) → nobody
su_v (suv-lp) wrote :

Tracking status for Experimental: 'Fix committed' in r13545
(merge of Liam P. White's branch <lp:~inkscapebrony/inkscape/inkscape>)

su_v (suv-lp) on 2014-10-21
no longer affects: inkscape/0.91.x
Changed in inkscape:
milestone: 0.91 → 0.92
su_v (suv-lp) wrote :

The experimental branch was merged into trunk in r13641.

Changed in inkscape:
assignee: nobody → Liam P. White (inkscapebrony)
status: In Progress → Fix Committed
Bryce Harrington (bryce) on 2017-01-10
Changed in inkscape:
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Duplicates of this bug

Other bug subscribers

Bug attachments