{"id":13522455,"url":"https://github.com/paceholder/nodeeditor","last_synced_at":"2025-05-13T20:22:46.450Z","repository":{"id":39635554,"uuid":"55835846","full_name":"paceholder/nodeeditor","owner":"paceholder","description":"Qt Node Editor. Dataflow programming framework","archived":false,"fork":false,"pushed_at":"2024-11-17T14:34:07.000Z","size":2734,"stargazers_count":3262,"open_issues_count":92,"forks_count":858,"subscribers_count":159,"default_branch":"master","last_synced_at":"2025-04-09T17:19:10.969Z","etag":null,"topics":["cpp","dataflow-programming","graph","model-view","qt5","qt6"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/paceholder.png","metadata":{"files":{"readme":"README.rst","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.rst","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-04-09T09:19:51.000Z","updated_at":"2025-04-09T08:43:51.000Z","dependencies_parsed_at":"2024-01-23T17:12:24.902Z","dependency_job_id":"d03f94e1-8096-48ed-8c4e-f59a05a1d8b8","html_url":"https://github.com/paceholder/nodeeditor","commit_stats":{"total_commits":469,"total_committers":44,"mean_commits":"10.659090909090908","dds":"0.44989339019189767","last_synced_commit":"765146518d6adc8cf3f71be2a11cf9ed9d6f1372"},"previous_names":[],"tags_count":28,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/paceholder%2Fnodeeditor","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/paceholder%2Fnodeeditor/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/paceholder%2Fnodeeditor/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/paceholder%2Fnodeeditor/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/paceholder","download_url":"https://codeload.github.com/paceholder/nodeeditor/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251311332,"owners_count":21569008,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cpp","dataflow-programming","graph","model-view","qt5","qt6"],"created_at":"2024-08-01T06:00:47.477Z","updated_at":"2025-04-28T12:02:05.647Z","avatar_url":"https://github.com/paceholder.png","language":"C++","readme":"QtNodes\n#######\n\nhttps://github.com/paceholder/nodeeditor/actions/workflows/cmake_build.yml/badge.svg\n\nIntroduction\n============\n\n**QtNodes** is conceived as a general-purpose Qt-based library aimed at\ndeveloping Node Editors for various applications. The library could be used for\nsimple graph visualization and editing or extended further for using the\n`Dataflow paradigm \u003chttps://en.wikipedia.org/wiki/Dataflow_programming\u003e`_ .\n\nThe library is written using the Model-View approach. The whole graph structure\nis defined by a class derived from ``AbstractGraphModel``.  It is possible to\ncreate or add Nodes and Connections. The underlying data structures could be of\nany arbitrary type or representation.\n\nAn instance of ``AbstractGraphModel`` could or could not be attached to\nspecialized ``QGraphicsScene`` and ``QGraphicsView`` objects. I.e. the so-called\n\"headless\" `modus operandi` is possible.\n\nDocumentation\n=============\n\n`Read the Docs for QtNodes \u003chttps://qtnodes.readthedocs.io/\u003e`_\n\nWarning\n  Many classes were changed in the version ``3.0``. If you had a large project\n  based on ``2.x.x``, make sure you read the documentation first and see the\n  examples before checking out the new code.\n\nBranches\n--------\n\nThere are branchses ``v2`` and ``v3`` for versions ``2.x.x`` and ``3.x``\nrespectively. The branch ``master`` contains the latest dev state.\n\n\n.. contents:: Navigation\n    :depth: 2\n\n\nData Flow Paradigm\n==================\n\nThe extended model class ``DataFlowGraphModel`` allows to register \"processing\nalgorithms\" represented by nodes and is equipped with a set of Qt's signals and\nslots for propagating the data though the nodes.\n\nThe node's algorithm is triggered upon arriving of any new input data. The\ncomputed result is propagated to the output connections. Each new connection\nfetches available data and propagates is further. Each change in the source node\nis immediately propagated through all the connections updating the whole graph.\n\n\nSupported Environments\n======================\n\nPlatforms\n---------\n\n* Linux (x64, gcc, Qt 5.15.2) |ImageLink|\n* OSX (Apple Clang, Qt 5.15.2) |ImageLink|\n* Windows (MSVC, Qt 5.15.2) |ImageLink|\n* Windows (MSVC, Qt 6.3.0) |ImageLink|\n\n.. |ImageLink| image:: https://github.com/paceholder/nodeeditor/actions/workflows/cmake_build.yml/badge.svg\n   :target: https://github.com/paceholder/nodeeditor/actions/workflows/cmake_build.yml\n\n\nDependencies\n------------\n\n* Qt \u003e5.15\n* CMake 3.8\n* Catch2\n\n\nCurrent State (v3)\n==================\n\n* Model-based graph\n* Headless mode\n  You can create, populate, modify the derivative of ``AbstractGraphModel``\n  without adding it to the actual Flow Scene.  The library is now designed to be\n  general-purpose graph visualization and modification tool, without\n  specialization on only data propagation.\n* Automatic data propagation built on top of the graph-model code\n  The library could be used for both pure graph visualization purposes and for\n  originally implemented data propagation.\n* Dynamic ports\n* Datatype-aware connections\n* Embedded Qt widgets\n* One-output to many-input connections\n* JSON-based interface styles\n* Saving scenes to JSON files\n* Custom Node Geometry\n* Vertical and Horizontal graph layouts\n* Undo/Redo, Duplication (CTRL+D)\n\n\nBuilding\n========\n\nSet this option to false if you want to build with Qt5 version instead of Qt6:\n\n::\n\n   USE_QT6\n\n   mkdir build \u0026\u0026 cd build \u0026\u0026 cmake .. -DUSE_QT6=on\n   or\n   mkdir build \u0026\u0026 cd build \u0026\u0026 cmake .. -DUSE_QT6=off\n\nFor building a static lib use:\n\n::\n\n    cmake .. -BUILD_SHARED_LIBS=off\n\nLinux\n-----\n\n::\n\n  git clone git@github.com:paceholder/nodeeditor.git\n  cd nodeeditor\n  mkdir build\n  cd build\n  cmake ..\n  make -j \u0026\u0026 make install\n\n\nQt Creator\n----------\n\n1. Open `CMakeLists.txt` as project.\n2. If you don't have the `Catch2` library installed, go to `Build Settings`, disable the checkbox `BUILD_TESTING`.\n3. `Build -\u003e Run CMake`\n4. `Build -\u003e Build All`\n5. Click the button `Run`\n\n\nWith Cmake using `vcpkg`\n^^^^^^^^^^^^^^^^^^^^^^^^\n\n1. Install `vcpkg`\n2. Add the following flag in configuration step of `CMake`\n\n::\n\n   -DCMAKE_TOOLCHAIN_FILE=\u003cvcpkg_dir\u003e/scripts/buildsystems/scripts/buildsystems/vcpkg.cmake\n\n\nHelp Needed\n===========\n\n#. Python wrappring using PySide.\n#. QML frontend.\n#. Wirting a ClangFormat config.\n\nAny suggestions are welcome!\n\n\nContribution\n============\n\n#. Be polite, respectful and collaborative.\n#. For submitting a bug:\n\n   #. Describe your environment (Qt version, compiler, OS etc)\n   #. Describe steps to reproduce the issue\n\n#. For submitting a pull request:\n\n   #. Create a proposal task first. We can come up with a better design together.\n   #. Create a pull-request. If applicable, create a simple example for your\n      problem, describe the changes in details, provide use cases.\n\n#. For submitting a development request:\n\n   #. Describe your issue in details\n   #. Provide some use cases.\n\n#. I maintain this probject in my free time, when I am not busy with my work or\n   my family. **If I do not react or do not answer for too long, please ping\n   me**.\n\n\nCiting\n======\n\n::\n\n    Dmitry Pinaev et al, Qt Nodes, (2022), GitHub repository, https://github.com/paceholder/nodeeditor\n\nBibTeX::\n\n    @misc{Pinaev2022,\n      author = {Dmitry Pinaev et al},\n      title = {QtNodes. Node Editor},\n      year = {2017},\n      publisher = {GitHub},\n      journal = {GitHub repository},\n      howpublished = {\\url{https://github.com/paceholder/nodeeditor}},\n      commit = {877ddb8c447a7a061a5022e9956a3194132e3dd9}\n    }\n\nSupport\n=======\n\nIf you like the project you could donate me on PayPal |ImagePaypal|_\n\n.. |ImagePaypal| image:: https://img.shields.io/badge/Donate-PayPal-green.svg\n.. _ImagePaypal: https://www.paypal.com/paypalme/DmitryPinaev\n\n\nIf you send more than $100, I'll forward $100 to some fund supporting sick\nchildren and report to you back.\n\n\nThanks\n======\n\nThe version 3 was released with a generous help of\n`Davide Faconti \u003chttps://github.com/facontidavide\u003e`_\n\n\nShowcase\n========\n\nYoutube videos\n--------------\n\n.. image:: https://img.youtube.com/vi/pxMXjSvlOFw/0.jpg\n   :target: https://www.youtube.com/watch?v=pxMXjSvlOFw\n\n|\n\n.. image:: https://img.youtube.com/vi/i_pB-Y0hCYQ/0.jpg\n   :target: https://www.youtube.com/watch?v=i_pB-Y0hCYQ\n\nCANdevStudio\n------------\n\n`CANdevStudio \u003chttps://github.com/GENIVI/CANdevStudio\u003e`_ is a cost-effective,\ncross-platform replacement for CAN simulation software. CANdevStudio enables to\nsimulate CAN signals such as ignition status, doors status or reverse gear by\nevery automotive developer. Thanks to modularity it is easy to implement new,\ncustom features.\n\n\n.. image:: docs/_static/showcase_CANdevStudio.png\n\n\nChigraph\n--------\n\n`Chigraph \u003chttps://github.com/chigraph/chigraph\u003e`_ is a visual programming\nlanguage for beginners that is unique in that it is an intuitive flow graph:\n\n.. image:: docs/_static/chigraph.png\n\n\nIt features easy bindings to C/C++, package management, and a cool interface.\n\n\nSpkgen particle editor\n----------------------\n\n`Spkgen \u003chttps://github.com/fredakilla/spkgen\u003e`_ is an editor for the SPARK\nparticles engine that uses a node-based interface to create particles effects for\ngames\n\n.. image:: docs/_static/spkgen.png\n","funding_links":["https://www.paypal.com/paypalme/DmitryPinaev"],"categories":["C Libraries","C++","GameProgramming","cpp","Misc","Libraries"],"sub_categories":["Renderers","C++"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpaceholder%2Fnodeeditor","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpaceholder%2Fnodeeditor","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpaceholder%2Fnodeeditor/lists"}