Skip to content

Add node group feature #17

Open
Gabrielnmds wants to merge 70 commits intomasterfrom
node_group
Open

Add node group feature #17
Gabrielnmds wants to merge 70 commits intomasterfrom
node_group

Conversation

@Gabrielnmds
Copy link
Copy Markdown

@Gabrielnmds Gabrielnmds commented Oct 9, 2025

Type of change

  • Bug fix
  • New feature
  • Breaking change
  • Documentation/refactoring

Description

Reimplements the node grouping feature from v1 and adapts it to integrate the project's v3 logic, making it an optional feature through the _groupingEnabled flag in the BasicGraphicsScene class.

Testing

  • Qt version tested:
  • Existing tests still pass
  • Added tests for new functionality (if applicable)

Breaking changes?

Related issue


Please fill out the sections above to help reviewers understand your changes.

tatatupi and others added 30 commits June 23, 2025 14:27
g-abilio and others added 26 commits October 13, 2025 15:18
…aceholder#496)

Co-authored-by: lsouder-ozone3d <131193069+lsouder-ozone3d@users.noreply.github.com>
…aceholder#492)

* Make GraphicView on* methods virtual
* Added BasicGraphicsScene::setNodeGeometry
* BUGFIX: GraphicsView::setScene(nullptr)

* Make revisions based on the review results.
* wip: adds NodeValidationState info to NodeDelegateModel

* makes the nodeObject red in case of invalid state and adds a tooltip for error msg

* adds warning state and adapts calculator example

* adds validation icon and adapts calculation example

* core improvements to develop node processing status

* first commit on the creation of a processing status example

* fixes nodeprocessingstatus cast

* creation of random gen example, and fix of icon color

* Connect delegate UI update signal

* fix random number node dynamic

* clean up test code in multiplication node

* revert unnecessary changes in multiplication model

* revert unnecessary changes

* solve icon size and refactor NodeProcessingStatus code

* remove duplicate code

* add space to better organize processing status in node display

* remove processing value default value

* fix bugs in node processing status

* add Q_DECLARE_METATYPE to solve linux build problems

* declaring metatype in the correct place

* uniformizes icon files attributes

* removes commented code

* improves processing status icon resolution

* solves situations where icons should not appear

* adds docstring to each nodeprocessingstatus

* adds possibility to change the node processing status icon style

* moves all status logic to NodeStyle

* removes unnecessary code

* adds declaration of QPixmap

---------

Co-authored-by: Taiguara Tupinambás <tatatupi@gmail.com>
…DataFlowGraphicsScene (paceholder#465)

* useful if we want to inherit BasicGraphicsScene with similarities to DataFlowGraphicsScene

* Update UndoCommands.hpp

---------

Co-authored-by: Dmitry Pinaev <dimitry.pinaev@gmail.com>
…holder#403)

If we want to customize a nodeId style then we should return the data of the nodeId instead of the generic StyleCollection style.
…older#509)

---------

Co-authored-by: Taiguara Tupinambás <tatatupi@gmail.com>
Co-authored-by: g-abilio <gabrielabiliobferreira2@gmail.com>
Co-authored-by: Gabriel Abílio <150153171+g-abilio@users.noreply.github.com>
Co-authored-by: Hudson Miranda <hudsonmiranda291@gmail.com>
ConnectionIdUtils:
- Fixed "intNodeId" typo to "inNodeId" in toJson()
- Added backward compatibility in fromJson()

Processing status icons:
- Initialize icons in NodeStyle constructor after Q_INIT_RESOURCE
  (fixes icons not loading due to static initialization order)
- Fixed resource path format from "://" to ":/"
- Skip drawing when status is NoStatus
- Use const reference for ProcessingIconStyle to avoid copy
- Auto-move icon to BottomLeft when node is resizable to avoid
  overlap with resize handle

RandomNumberModel example:
- Fixed memory leak by reusing timer instead of creating new ones
New examples:
- node_validation: demonstrates NodeValidationState and
  NodeProcessingStatus with status icons
- custom_painter: shows custom AbstractNodePainter and
  AbstractConnectionPainter implementations

New tests:
- TestNodeValidation: validation state and processing status
- TestCustomPainters: custom painter registration
- TestCopyPaste: copy/paste and duplicate operations
- TestZoomFeatures: zoom fit all/selected, scale range
- TestLoopDetection: cycle detection in data flow graphs
Documentation restructure:
- Reorganized into topic-based sections: getting-started/, guide/,
  examples/, api/, migration/
- Added installation guide with Qt SVG dependency note
- Added quickstart tutorial with step-by-step screenshots
- Expanded data-flow guide with validation and processing status
- Added FAQ and v2-to-v3 migration guide

Screenshots and diagrams:
- Added 19 screenshots in docs/_static/screenshots/
- Added PlantUML architecture diagrams in docs/_static/diagrams/
- Moved README showcase images to assets/
- Increased image sizes for better visibility

Build configuration:
- Fixed Sphinx SOURCEDIR path
- Added venv to exclude_patterns
API Reference improvements:
- Better organization by category (Core, Node, Connection, etc.)
- Added missing classes: StyleCollection, CreateCommand, CopyCommand, PasteCommand
- Added new structs: NodeValidationState, ProcessingIconStyle
- Added new enums: NodeProcessingStatus, ProcessingIconPos
- Removed non-existent DuplicateCommand
- Fixed anonymous enum warnings with :no-link: directive

Build fix:
- Added breathe config for local Doxygen XML builds
* fix: resolve test failures in CI environment

TestGraphModel:
- Add loadNode() implementation to support copy/paste operations
- Save and restore node type in saveNode()/loadNode()

TestLoopDetection:
- Add applicationSetup() for DataFlowGraphModel tests
- Use TestDisplayNode (has both in/out ports) instead of
  TestSourceNode (output only) for loop detection tests

TestCustomPainters:
- Simplify to test painter registration without verifying actual
  painting calls (unreliable in headless CI environments)
- Add tests for painter persistence through node lifecycle events

* fix: add DLL export macro to NodeGraphicsObject

Add NODE_EDITOR_PUBLIC macro to NodeGraphicsObject class to properly
export its symbols on Windows. This fixes linker errors when building
examples that use graphModel() and nodeScene() methods.

Error was:
  unresolved external symbol NodeGraphicsObject::graphModel()
  unresolved external symbol NodeGraphicsObject::nodeScene()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.