Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/tinted-software/egui_nodes
A egui port of imnodes
https://github.com/tinted-software/egui_nodes
egui rust
Last synced: 5 days ago
JSON representation
A egui port of imnodes
- Host: GitHub
- URL: https://github.com/tinted-software/egui_nodes
- Owner: tinted-software
- License: mit
- Created: 2022-04-10T04:00:54.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2024-10-23T18:05:57.000Z (16 days ago)
- Last Synced: 2024-10-24T02:48:58.063Z (16 days ago)
- Topics: egui, rust
- Language: Rust
- Homepage: https://code.tinted.dev/tinted/egui-nodes
- Size: 4.6 MB
- Stars: 5
- Watchers: 4
- Forks: 2
- Open Issues: 4
-
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))
}
}
```