Releases: Nelarius/imnodes
0.5
Special thanks to everyone who contributed to this release with a pr!
New features
- Introduced the minimap #99
- Just one function call is required:
MiniMap()!
- Just one function call is required:
- Programmatic interface to handle node and link selections #107 Introduces the functions
SelectNodeClearNodeSelectionIsNodeSelectedSelectLinkClearLinkSelectionIsLinkSelected
- Auto-panning pans the editor automatically if the mouse goes outside the editor canvas while dragging nodes or links #120
- Add ImGui-like user defined callbacks for minimap node hovering events #127
ImNodesMiniMapNodeHoveringCallbackandImNodesMiniMapNodeHoveringCallbackUserDataadded toimnodes.h
The minimap in action!
Other changes
- Render canvas gridlines by default in the light color scheme to be more consistent with ImGui.
Fixes
- Prevent interaction with node graph if an ImGui widget is active. Fixes problems where the nodes underneath a color wheel move while manipulating the wheel.
- Fixing some unresponsive UI issues arising from the reuse of internal ids #124
- Prevents links from being hovered if a pin is hovered #126
Breaking changes
- The code was reformatted to be more consistent with ImGui #95
- Namespace renamed to
ImNodes - The namespace is configurable, by defining
IMNODES_NAMESPACE - All internal functions now
CamelCase - Enums constants prefixed with
ImNodes
- Namespace renamed to
0.4
New features
-
New depth sorting of nodes. Selection of overlapping nodes now handled correctly -- clicking on a node will place it on top of other overlapping nodes.
-
New querying functions
GetNodeGridSpacePos;GetNodeScreenSpacePosIsLinkCreated
-
Functions for clearing selections
ClearNodeSelectionClearLinkSelection
-
DLL support was added. Library initialization and shutdown now resembles ImGui.
SetImGuiContextCreateContextDestroyContextGetCurrentContextSetCurrentContext
Fixes
- Some recangle-line overlap edge casess were fixed
- Hovering, dragging, and middle click selection bugs were fixed. Only single pins, links, and nodes can be interacted with at the same time.
- Solved an id issue causing node selection bugs
- Render nodes on top of links, solving #56
- Fixed #55
- Fixed #54
Breaking changes
- Removed
imnodes::IO::emulate_three_button_mouse::modifier. InitializeandShutdownremoved in favor ofCreateContextandDestroyContext.
Known issues
0.3
Huge thanks to everyone who contributed to items in this release!
New features
- Links snap to pins when close
- Added
EditorContextGetPanning()to access the current panning state of the editor - Added static attributes for node attributes which don't have a pin, along with
EndInputAttribute(),EndOutputAttribute, andEndStaticAttribute. EndAttribute()was deprecated with a compiler warning.- Enable editor panning with a pressed modifier to better support trackpads (enable via
IO::emulate_three_button_mouse) - Added
IsEditorHovered()to better detect when the mouse is over the node editor canvas. - Added
IsLinkDestroyed(int*)to signal to the user that the editor has deleted a link. This was added so that the user can detach an existing link from a pin.
Three new ways of interacting with links have been added:
-
Detach link from pin by clicking and dragging (configurable via the attribute flag
AttributeFlags_EnableLinkDetachWithDragClick)

-
Links snap to cursor when a modifier is pressed (configurable via IO::link_detach_with_modifier_click.modifier`)

-
Links can be configured to be created when snapping to the pin, instead of when the left mouse button is released (configurable via
AttributeFlags_EnableLinkCreationOnSnap)

Fixes
- Fixed #26
- Fixed a bug in detecting when the mouse hovered near a link
- Selecting a link deselects all selected nodes
- Prevent interacting with the canvas when the mouse is not directly over the editor canvas
- Prevent links from snapping to pins of the same type
0.2
New features and breaking changes
- Breaking change: node title bars can now be fully customized as any ImGui content can now be placed between the new
BeginNodeTitleBar/EndNodeTitleBarfunction calls. This change also removes theSetNodeNamefunction.
Calculator icon by DinosoftLabs from Flaticon
- Pins now come in different shapes: circle, quad, and triangle, in both filled and unfilled variants. The desired shape flag is passed as a function argument to
BeginInputAttribute/BeginOutputAttribute.
- Pins can now be offset from the node, controlled by the new
imnodes::Style::pin_offsetvalue.
-
Breaking change: removes
StyleFlags_PinOutlineandColorStyle_PinOutline. -
Breaking change: replaces
SetNodePoswith two functions:SetNodeScreenSpacePosandSetNodeGridSpacePos. -
New editor panning utility functions:
EditorContextResetPanningandEditorContextMoveToNode. -
Added a multi-editor example! Check out
example/multi_editor.cpp
Fixes
- Selected nodes and links are now only deselected when clicking inside the same node editor window.
- Overlapping node UIs and backgrounds don't glitch out anymore.
A huge thanks to everyone who contributed to imnodes!
0.1 🎉
The basic features of a node editor are now implemented:
- Create nodes, links, and pins in an immediate-mode style
- Use regular
dear imguiwidgets inside the nodes - Multiple node and link selection with a box selector
- Nodes, links, and pins are fully customizable, from color style to layout
- The editor canvas can be customized
- Node movement and new link creation handled internally
- The node editor state can be saved and loaded to and from a INI file




