Improving connectors

Flesh out your ideas for new or improved Inkscape features before submitting a request.
jaromraxx

Improving connectors

Postby jaromraxx » Tue Apr 28, 2009 7:24 pm

Hi,
from the last time few years ago I tried inkscape first time it improved and now it seems to be a very nice and useful stuff.
However, I was surprised when I wanted to use it instead of xfig. From time to time I have to draw some diagrams with connectors and the connectors that persist are crucial and save a lot of work. Xfig is pretty good in it, but lately its maintenance is getting worse and has a lot of issues.
Inkscape has a connector button right on the left toolbar, which is very promissing, but the usability is questionable right now. I had to move back to xfig.
1/ I would be extremely happy to have connectors that stick to a defined precise position inside a compound, not just a middle.
2/ any line that touches a rectangle or so is considered to be a connector in xfig.
3/ different treatment of connectors during a move is possible in xfig.

best regards,
may this help
jaro

User avatar
microUgly
Site Admin
Posts: 2985
Joined: Sat Jun 02, 2007 3:13 pm
Contact:

Re: Improving connectors

Postby microUgly » Wed Apr 29, 2009 9:23 am

Improvements to the connector tool is planned as a part of the Google Summer of Code. If you want to know details I think the project should be documented on the Wiki or the Google site.

michaelbarkowski
Posts: 1
Joined: Sat Dec 19, 2009 5:33 am

Re: Improving connectors

Postby michaelbarkowski » Sat Dec 19, 2009 6:03 am

I agree that the connector implementation (in Inkscape 0.47) isn't quite ready for general flowcharting use.

I am currently using the bezier tool :tool_pen: with Shape set to "From clipboard". I have on hand arrows of various lengths that I can place in my clipboard. To handle persistency of connections, the best I can do is group the arrow to one object. This way when objects move they at least carry one end of the arrow with them. Then I just switch to the Node tool :tool_node: and fixup the other end of the arrow. This is all pretty fast if you use the keyboard shortcuts. I tend to group each object with its outgoing arrows. Pretty soon it becomes second nature, and it is so precise that I almost don't want to hand control over to some automatic routing library.

However, as with all artificial intelligence, I think the libavoid with Inkscape could be very useful if its behaviour was very customizable. To that end, the libavoid author has already said (on the Wiki) that certain parameters can be adjusted in libavoid.

The fact that I group my objects with their arrows and this works so well makes me think - what if there was a way to just group or stick nodes to each other the way you can group shapes together? Then you could "attach" one object to the node on one end of the arrow, and "attach" the node at the other end of the arrow with another object. Then have a property attached to the arrow that makes it call the avoidance routine whenever any of its nodes are moved as a result of a grouping with a node of another object. That would cover most of the implementation, and it could be applicable to things besides arrows. Think of having different ways of sticking objects to each other. It could be tricky though to figure out how the user should interact with the stickiness.

EDIT: what also works well is to draw the diagram in Dia (in Dia's flowchart mode), then open the *.dia file in Inkscape. Any major moving/changing should be done in Dia. Once you open it in Inkscape, you should immediately save as a separate file. Now, things should be preserved quite well, but you can do minor fixups as needed:
- Initially everything is grouped into a single object. Ungroup it.
- You should be able to edit text right away, by selecting the Text tool :tool_text: and clicking on the text.
- If you want to change the fill colour of an object, you need to select it and hit Ungroup again, to ungroup the shape from the text. Then use the Fill and Stroke dialog to set the fill.
- If you want to adjust an arrow line, select the arrow and line and ungroup them from each other. Then select the line and switch to the Node tool :tool_node: . Then click the "Convert selected object to path" icon in the toolbar. You can now edit the nodes of the line to reroute it. Switch back to the Select tool and move/rotate the arrow head as needed.


Return to “Inkscape Ideas”