explaingit

cynicrus/laznodeeditor

12PascalAudience · developerComplexity · 3/5Setup · moderate

TLDR

A visual node graph editor component for Lazarus and Pascal, add a drag-and-drop node-based interface like Blender's editor to your own desktop app with no external dependencies.

Mindmap

mindmap
  root((LazNodeEditor))
    What it does
      Visual node canvas
      Drag and drop nodes
      Connect data and flow
      Save and load JSON
    Features
      Snap to grid
      Zoom and pan
      Undo redo
      Inspector panel
    Tech stack
      Pascal
      Lazarus IDE
      LCL toolkit
    Use cases
      Visual scripting
      Shader editors
      Game logic editors
      Automation tools
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Add a visual scripting node editor to a Lazarus desktop app so non-technical users can build logic without writing code.

USE CASE 2

Build a custom shader or game logic node editor as a reusable Lazarus component for a game engine project.

USE CASE 3

Create a node-based automation workflow builder by registering custom node types with defined input and output pins.

USE CASE 4

Use the built-in JSON save and load support to persist and restore user-designed node graphs between sessions.

Tech stack

PascalLazarusLCL

Getting it running

Difficulty · moderate Time to first run · 30min

Requires the Lazarus IDE installed, add the component as a single file to your project with no external library dependencies.

In plain English

LazNodeEditor is a visual node graph editor component for the Lazarus IDE, which is a free development environment for Pascal. A node graph is the kind of interface you see in tools like Blender or game engines: boxes representing operations connected by lines representing data flow. This component provides that type of interface as a reusable building block you can drop into your own Lazarus application. The component supports two kinds of connections between nodes: execution flow pins, which control the order operations run, and data pins, which pass values like numbers, text, or booleans between nodes. Nodes can be moved, copied, duplicated, connected, and disconnected through standard mouse interactions. The editor includes snap-to-grid, zoom, pan, and the ability to frame all nodes or fit the view to a selection. An undo and redo system tracks changes, and graphs can be saved and loaded as JSON files. Building custom node types is the intended use case. You write a class that inherits from the base node type, define its input and output pins in one method, and register it with the editor. From that point it appears in the context menu and can be dragged onto the canvas like any built-in node. An inspector panel can be connected to the editor and automatically displays the properties of whichever node is selected, including editable values for numbers, text, and toggle options. The component has no external library dependencies and uses only the standard Lazarus LCL toolkit for drawing and interaction. It runs on Windows 10 and 11, as well as Linux with several different graphical backends. Installation is a single file added to a project. The README lists possible uses as visual scripting, shader editors, game logic editors, and automation tools.

Copy-paste prompts

Prompt 1
Help me create a custom node type in LazNodeEditor by subclassing the base node, defining input and output pins in the required method, and registering it so it appears in the context menu.
Prompt 2
I want to save my LazNodeEditor graph to a JSON file and reload it when the app restarts. Show me how to use the built-in save and load functionality.
Prompt 3
Walk me through connecting an inspector panel to LazNodeEditor so that clicking a node automatically displays its editable properties in a side panel.
Prompt 4
I want to add a color picker data pin type to LazNodeEditor. Show me how to define a new custom pin type and render it on the node canvas.
Open on GitHub → Explain another repo

← cynicrus on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.