Any open-source object layout and connection libraries?
Friday, December 24th, 2010 at
05:13
I’m looking for an open-source software library or plugin that provides an interface similar to Visio, Umbrello, Dia, Inkscape, Xilinx ISE, etc. which allows the creation of objects and connections by users, which can then be analyzed by the caller program. Ideally this would be a cross-platform library, but it needs to work on Linux.
Tagged with: cross platform • interface • Linux • open source software • software library • xilinx
Filed under: Open Source
Like this post? Subscribe to my RSS feed and get loads more!
An interesting layout/flowchart creation program that I use is called Graphviz. It is FOSS (Free and Open-Source Software), and though it is not quite efficient (giving me some weird loops in the arrows connecting different nodes), it is impressive and the website contains several beautiful images whose creation was actually a stress test for the Graphviz engine. Quite artistic and at the same time functional.
An example of dot file (the file format that gets interpreted and rendered into a flowchart):
/*CalcV1*/
digraph CalcV1{
//Nodes
Début [label="Commencer"];
Init [shape=rectangle, label="Init vbles"];
Inputnum [shape=parallelogram, label="JOP.sID(\"Entrez un nombre\")"];
Doubleconv [shape=rectangle, label="Double.parseDouble() n1"];
Inputop [shape=parallelogram, label="JOP.sOD(\"Choisissez une opération\")"];
Inputnum2 [shape=parallelogram, label="JOP.sID(\"Entrez un autre nombre\")"];
Doubleconv2 [shape=rectangle, label="Double.parseDouble() n2"];
Switchop [shape=diamond, label="switch(op)"];
Division [shape=rectangle, label="n1/n2"];
Multiplication [shape=rectangle, label="n1*n2"];
Addition [shape=rectangle, label="n1+n2"];
Soustraction [shape=rectangle, label="n1-n2"];
Modulo [shape=rectangle, label="(int)(n1)%((int)(n2)"];
Display [shape=parallelogram, height=0.5, width=1, label="JOP.sCD(\"Le résultat est \"+Résultat+\"\\n\nVoulez-vous continuer?\")"];
Continuer [shape=diamond, height=1, width=0.5, label="while(continuer==true){\n/*Répète*/}else{/*Quit*/}"];
Fin;
//Arrows
Début -> Init -> Inputnum -> Doubleconv -> Inputop -> Inputnum2 -> Doubleconv2 -> Switchop[weight=100];
Switchop -> Division -> Display;
Switchop -> Multiplication -> Display;
Switchop -> Addition -> Display;
Switchop -> Soustraction -> Display;
Switchop -> Modulo -> Display;
Display -> Continuer -> Fin[weight=100];
Continuer -> Inputnum;
}