Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/theoparis/egui_nodes
A egui port of imnodes
https://github.com/theoparis/egui_nodes
egui rust
Last synced: 2 days ago
JSON representation
A egui port of imnodes
- Host: GitHub
- URL: https://github.com/theoparis/egui_nodes
- Owner: tinted-software
- License: mit
- Created: 2022-04-10T04:00:54.000Z (almost 3 years ago)
- Default Branch: main
- Last Pushed: 2024-12-21T00:49:46.000Z (about 1 month ago)
- Last Synced: 2025-01-24T19:02:15.827Z (8 days ago)
- Topics: egui, rust
- Language: Rust
- Homepage: https://code.tinted.dev/tinted/egui-nodes
- Size: 4.6 MB
- Stars: 7
- Watchers: 4
- Forks: 2
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
- awesome-egui - egui_nodes
README
# egui_nodes
A egui port of https://github.com/Nelarius/imnodes
### Example
``` rust
pub fn example_graph(ctx: &mut Context, links: &mut Vec<(usize, usize)>, ui: &mut Ui) {
// add nodes with attributes
let nodes = vec![
NodeConstructor::new(0, Default::default())
.with_title(|ui| ui.label("Example Node A"))
.with_input_attribute(0, Default::default(), |ui| ui.label("Input"))
.with_static_attribute(1, |ui| ui.label("Can't Connect to Me"))
.with_output_attribute(2, Default::default(), |ui| ui.label("Output")),
NodeConstructor::new(1, Default::default())
.with_title(|ui| ui.label("Example Node B"))
.with_static_attribute(3, |ui| ui.label("Can't Connect to Me"))
.with_output_attribute(4, Default::default(), |ui| ui.label("Output"))
.with_input_attribute(5, Default::default(), |ui| ui.label("Input"))
];// add them to the ui
ctx.show(
nodes,
links.iter().enumerate().map(|(i, (start, end))| (i, *start, *end, LinkArgs::default())),
ui
);
// remove destroyed links
if let Some(idx) = ctx.link_destroyed() {
links.remove(idx);
}// add created links
if let Some((start, end, _)) = ctx.link_created() {
links.push((start, end))
}
}
```