Giter Club home page Giter Club logo

quickqanava's Introduction

QuickQanava

Overview | Dependencies | Building | Roadmap | License

Build Status (Linux / g++6 / Qt5.12.1 - OSX / Clang 8.1 / Qt 5.12.1 CMake)

Build status (Windows / MSVC 2015 x64 / Qt5.10.1 / qmake)

Documentation | License | | Twitter URL

There is quite a lot of traffic and clones actually: Please remember to star the project and reports bugs....

  • CHANGELOG 20191110: Complete rewrite of LineGrid, various cosmetic fixes and bugfixes (update to v0.15.0).
  • CHANGELOG 20190825: Maintenance release, add more flexible content creation methods in qan::Graph.
  • CHANGELOG.md

QuickQanava is a C++14 library designed to display graphs and relational content in a Qt/QML application. QuickQanava provide QML components and C++ classes to visualize medium-sized directed graphs in a C++/QML application. QuickQanava focus on displaying relational content into a dynamic user interface with DnD support, resizable content and visual creation of topology. More advanced layouts algorithms might be integrated in future versions.

QuickQanava main repository is hosted on GitHub: http://cneben.github.io/QuickQanava/index.html

QuickQanava is primarily developed for Linux with Qt 5.13 with MSVC2017 and g++7 (minimal required Qt version is Qt 5.10)

For any questions, please contact: [email protected]

QuickQanava focus on writing content delegates in QML (even if they could be 100% defined in C++, a QML engine is still necessary in the background).

QuickQanava Showcase

Toplogy sample video

Edges
Curved-Straight Edges
Nodes
Custom content
Visual Connector
Visual Connector
Groups
Groups
Styles
Custom styles

Dependencies

  • Qt 5.10 is mandatory for Qt Quick Shapes support.
  • Google Test is a GTpo dependency, it is optional for QuickQanava until you intent to use a graph with custom non-STL/non-Qt containers: Google Test GitHub

Building

Get the latest QuickQanava sources:

git clone https://github.com/cneben/QuickQanava
cd QuickQanava

Or install as a Git submodule:

$ git submodule add https://github.com/cneben/QuickQanava
$ git submodule update

QuickQanava could be used with either qmake or CMake build configuration system.

qmake cmake
Static build, no QML module, all resources are linked statically trough QRC Installable or embedable, QuickQanava is loaded using a QML module that need to be installed

Using qmake (preferred and supported way of integrating QuickQanava):

  1. Open quickqanava.pro in QtCreator.

  2. Select a kit, build and launch samples.

โš ๏ธ CMake support is "community maintained"

or with (CMake >= 3.5) and Qt Creator:

  1. Open CMakeLists.txt in QtCreator.

  2. In 'Projects' panel, set DBUILD_SAMPLES option to true in CMake configuration panel.

  3. Select a kit, build and launch samples.

Or manually in command line using CMake:

$ cd QuickQanava
$ mkdir build
$ cd build

# IF QT_DIR IS CONFIGURED AND QMAKE IN PATH
$ cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_SAMPLES=TRUE ..

# IF QT DIR IS NOT CONFIGURED, CONFIGURE KIT MANUALLY
$ cmake -DCMAKE_PREFIX_PATH="/home/b/Qt/5.11.0/gcc_64" -DQT_QMAKE_EXECUTABLE="/home/b/Qt/5.11.0/gcc_64/bin/qmake"  -DBUILD_SAMPLES=TRUE ../QuickQanava/

$ cmake --build .
# Then run the samples in ./samples

# Eventually make install

Detailled instructions: Installation

Note that a previously installed "QML plugin" version of QuickQanava might interfere with a fully static build using direct .pri inclusion. Typical error message looks like:

QQmlApplicationEngine failed to load component
qrc:/nodes.qml:33 module "QuickQanava" plugin "quickqanavaplugin" not found

QuickQanava and QuickContainers plugins directories could be removed manually from $QTDIR\..\qml to fix the problem (ex: rm -rf '~/Qt/5.11.1/gcc_64/qml/QuickQanava').

Roadmap / Changelog

  • v0.15.x:
    • Add full support for groups inside group (ie subgraphs).
    • Update geometry creation interface and delegate management.
  • v0.16.x:
    • Add support for direct visual dragging of port items.
    • Fix current qan::LineGrid bugs
    • Add "snap to grid" support.
  • v0.17.x:
    • Rewrite CMake configuration, add install step, use QML plugins.
  • v1.: Advanced edge visualization
    • Add better support for graph fine grained locking strategies.
    • Add simple layout algorithms (force directed, tree).
    • Publish the 4k sample (40k is probably too much for QML without dedicated culling and LOD code).

Contributors

  • @kwallner / Conan.io and CMake configuration
  • @Letrab / Edge configuration
  • @machinekoder / QML plugin and CMake configuration
  • @NielsBillen / Ports support and stability fixes

License

License

Copyright (c) 2017-2019 BA

quickqanava's People

Contributors

cneben avatar machinekoder avatar kwallner avatar winterheart avatar nielsbillenluminex avatar carpikes avatar sanchaez avatar letrab avatar cjgdev avatar jrens avatar rakhimov avatar

Watchers

 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.