Giter Site home page Giter Site logo

sosflyyi / automate Goto Github PK

View Code? Open in Web Editor NEW

This project forked from qknight/automate

0.0 0.0 0.0 3.9 MB

qt4 (library) with frontend for rendering of 'Finite-state machines' as epsilon-/deterministic (DFA) and non-deterministic (NDFA) automates

Home Page: http://lastlog.de/wiki/index.php/AutomateEditor

C++ 89.97% Perl 8.19% C 1.35% Objective-C 0.49%

automate's Introduction

========= 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 #[email protected] 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 <[email protected]>

 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

automate's People

Contributors

joschelboschel avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.