| Crates.io | rtop_dev |
| lib.rs | rtop_dev |
| version | 1.1.0 |
| created_at | 2022-05-05 14:03:09.885484+00 |
| updated_at | 2022-11-18 09:31:44.479619+00 |
| description | Development librairy for creating plugin for RtopRS |
| homepage | |
| repository | https://github.com/RTopRS/RtopDev |
| max_upload_size | |
| id | 581024 |
| size | 33,807 |
Rtop let you create plugin for adding custom widgets. Firstly, create a new project:
cargo new --lib MyPlugin
After that, update your Cargo.toml file. It should look like that:
[package]
name = "my_plugin"
version = "0.1.0"
edition = "2021"
[dependencies]
rtop_dev = "^1.1.0"
[lib]
name = "my_plugin"
crate-type = ["cdylib"]
Then, edit your src/lib.rs to have somethings like this:
struct FooWidget {}
impl rtop_dev::widget::Widget for FooWidget {
fn display(&mut self, _height: i32, _width: i32) -> String {
String::from("Hello World RTop!")
}
}
#[no_mangle]
pub extern "Rust" fn init_foo() -> (Box<dyn rtop_dev::plugin::Plugin>, bool) {
(Box::new(FooWidget{}), false)
}
To build your lib, simply run:
cargo build --lib --release
Your plugin should be located here target/release/libmy_plugin.so.
Remember these things, For each widget you want to create, you must make a function called init_{WIDGET} which return a Box<dyn rtop_dev::plugin::Plugin and a bool that defines if your widget should receive input from the user or not.
Don't forget to add #[no_mangle] in front of each init function. Otherwise, it will not be exported