========= what is this? =============================================== this project features an automate editor class with a graphical- and tree- like editor. this project can be used as a library to visualize directed graphs. it was created at the University of Tuebingen, Germany as a 'Studienarbeit'. Chair: Arbeitsbereich fuer Theoretische Informatik/Formale Sprachen most of the code was written by me: thanks very much for the help from the people in #qt@irc.freenode.org namely ahigerd, kibab, chakie, rohanpm, thiago, blight_, martin- and those i have forgotten thanks for the help of Christian Behle and Andreas Krebs who created the specification for this work and always had time when i needed them. all the code in this distribution is licensed to the terms of the LGPL v3 (if used with qt 4.5 or later) most used icons are from the kde icon theme noia-kde-icons-1.00.tgz - The Noia icons for KDE are under GNU LGPL license. - my icons which were specially created for this project are under GNU LGPL license as well please feel free to comment on that code: 8.6.2008 (C) Joachim Schiele <js@lastlog.de> some explanations about this project (additional to the doxygen documentation) http://lastlog.de/wiki/index.php/AutomateEditor http://invalidmagic.wordpress.com/2009/12/10/qgraphicsscene-used-as-a-qabstractitemmodel/ the project is hosted on github.com: http://github.com/qknight/automate ========== what is this not? ================================================== there is no auto-layout function so all the stuff has to be done by you. it would be nice if we could use the graphviz API for doing that... ========== how to use? ================================================== i have to review this list again but in general it should give you an idea what can be done. treeView graphicsview - start editable editable - final editable editable - next_node editable visible,no editor yet - new connections editable editable - new nodes editable editable - deletable nodes editable editable - deletable conns. editable editable - multiple selection editable editable - node label rename editable editable - connection label ren editable - - connection symbol editable - - move nodes/labels sorting mouse drag - ctrl+LMB add single - editable node to a selection - ctrl+LMB add single - editable conn. to a selection - - - select a single node \ by boundingbox - editable \ by click editable editable - select a single conn. \ by boundingbox - editable \ by click editable - - reconnect on the fly editable - (in the graphicsView we need a handle for this) using the GraphicsView LMB on node or connection -> select node/connection LMB pressed + drag -> bbox for selecting objects MMB on nodes -> connect them MMB on empty space -> RMB on node/connection -> context menu RMB on scene -> move view LMB = left mouse button ========== class documentation using doxygen ============================ using 'cmake, make' will automatically generate the documentation using doxygen see your build directory: - build/doc/html/index.html ========== issues ======================================================= - items which are added via a GraphicsView (using two GraphicsViews attached to the same automate) will (as expected) add the node at the same respecitve position. say x=204,y=250 on both views. however: if a node is moved only the first view will update the new position correctly, the second view will not see this since it is not done using 'setData and dataChanged()' via the model yet FIX this is intended behaviour. if the second view should be 'similar' just use another 'view' attached to the QGraphicsScene (which can be done without breaking anything) ========== documentation, project related ============================ doxygen class documentaion: http://www.stack.nl/~dimitri/doxygen/docblocks.html automate related: - http://www.graphviz.org/doc/libguide/libguide.pdf - http://www.boost.org/doc/libs/1_35_0/libs/graph/doc/index.html - http://www.graphviz.org/ - http://www.boost.org/libs/graph/doc/fruchterman_reingold.html