# egui_cable
[](https://github.com/ryo33/egui_cable)

[](https://crates.io/crates/egui_cable)
[](https://docs.rs/egui_cable)
A generic and extensible data-oriented widget for connecting ports by cables.
I create this for the visual programming editor of [Hihaheho/Desk](https://github.com/Hihaheho/Desk).
It's good for:
- analog synthesizer-like UI
- node-based UI
- anything you can imagine
The code is good for studying how to write egui widgets.
## Features
- [x] connect ports by data
- [x] dynamic connect and disconnect
- [x] lock connection
- [x] custom plug widget
- [x] custom port widget
- [x] custom cable widget
- [x] multiple connections on a single port.
- [x] on-connect event
- [x] on-disconnect event
- [x] on-hover event
- [x] garbage collection
- [ ] multi-touch support (help me)
## Examples
Click the images to see the source code. See [/examples](https://github.com/ryo33/egui_cable/blob/main/examples) for more examples.
[](https://github.com/ryo33/egui_cable/blob/main/examples/simple.rs)
[](https://github.com/ryo33/egui_cable/blob/main/examples/connect.rs)