On Mon, 2007-05-14 at 15:28 -0500, David Barnett wrote:
> Hello,
> 
> I just joined this list, so pardon me if I'm a little ignorant of how
> things work here. I don't know much about the dia code, either.
> 
> I've had the urge many times to create a tree- or graph-oriented 
> application with intelligent autorouting and usually some drag-n-drop
> functionality. Sometimes I just want a quick solution so that I can
> easily see the data structures in a program to debug it. But I've
> searched a lot and it seems like to get that kind of functionality,
> I'd
> either have to hack something very specific like diacanvas or build it
> from scratch on a GTK+ canvas. I'm not sure if graphviz would
> help...I've seen it and some other libraries that looked promising at
> first, but they don't seem to be very versatile or suited for
> drag-n-drop apps. I've also looked for applications with similar
> interfaces, and everything I've found looks like it was built from
> the 
> ground up.

One "quick hack" road would be to combine AutoDia, graphviz and Dia.
AutoDia to extract the graph from source, graphviz to do layout, Dia for
manual fixes and labelling.

> I think it would be quite feasible to make a library designed to
> encapsulate the issues of routing edges, searching for optimal paths,
> and also finding the optimal arrangement of nodes (if desired) into a 
> library with extremely fine-grained control over behavior parameters,
> both globally and for individual nodes and edges.  For instance, the
> style of edges (direct, orthogonal, etc.), shape and size of nodes,
> workspace size and off-limits regions could be specified. 

You can see what Dia has in the area in lib/autoroute.c, it's pretty
basic.  We have no autolayout at all.  Accounting for strange shapes of
nodes and different kinds of edges did end up making it somewhat complex
compared to what it achieves.  I'd love to ship that part off to a
library.

> My plan was to create a library to plan the actual edge paths which
> could be used in any environment, and a GTK+ widget to use that
> library
> and add a ton of interaction behavior. It might also be a good idea
> to 
> include a plugin system for the core library, since the actual routing
> needs to take a ton of factors into account, such as maximizing
> parallel edges or having a labeled "shortcut" when the path is too 
> cluttered; but I'm not sure about that detail, because it seems like
> it
> might be overkill.

A frequently requested feature is some marking of crossing lines, which
may fall under the purvey of plugins.

> I think a lot of free applications in fields like circuit design, UML
> modeling, and tons of others would benefit from this effort, possibly 
> including dia on some level (I saw "better autorouting" on the Google
> SoC wishlist), so I want it to be very flexible and support many
> graphics toolkits and programming languages.
> 
> I don't know if I'll be able to take the idea very far, but I
> wondered 
> (a) if I was mistaken thinking no such library already exists or (b)
> if I'm not alone thinking such a project would be useful.

I agree it would be useful, and if it exists already, I'd like to know
so I can use it.  

-Lars

_______________________________________________
Dia-list mailing list
[email protected]
http://mail.gnome.org/mailman/listinfo/dia-list
FAQ at http://live.gnome.org/Dia/Faq
Main page at http://live.gnome.org/Dia

Reply via email to