Add Hello Plugin with settings pane and metadata
This commit is contained in:
commit
ec1456fe72
4 changed files with 115 additions and 0 deletions
13
plugins/ohn-plugin-hello/Cargo.toml
Normal file
13
plugins/ohn-plugin-hello/Cargo.toml
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
[package]
|
||||
name = "ohn-plugin-hello"
|
||||
version = "0.1.0"
|
||||
edition = "2024"
|
||||
|
||||
[package.metadata.hotplug.api_versions]
|
||||
OhnUiPlugin = "1.0"
|
||||
|
||||
[dependencies]
|
||||
ohn-ui-plugin = { workspace = true }
|
||||
hotplug-meta = { workspace = true }
|
||||
inventory = { workspace = true }
|
||||
gpui = { workspace = true }
|
||||
74
plugins/ohn-plugin-hello/src/lib.rs
Normal file
74
plugins/ohn-plugin-hello/src/lib.rs
Normal file
|
|
@ -0,0 +1,74 @@
|
|||
use gpui::prelude::*;
|
||||
use gpui::*;
|
||||
use ohn_ui_plugin::{OhnUiPlugin, PluginSettingsPane, PluginSidePanel};
|
||||
|
||||
/// Hello Plugin — a minimal demo of contributing a settings pane via OhnUiPlugin.
|
||||
#[derive(Default)]
|
||||
pub struct HelloPlugin;
|
||||
|
||||
impl hotplug_meta::PluginMeta for HelloPlugin {
|
||||
fn id() -> &'static str {
|
||||
"org.devism.hello-plugin"
|
||||
}
|
||||
fn name() -> &'static str {
|
||||
"Hello Plugin"
|
||||
}
|
||||
fn version() -> &'static str {
|
||||
env!("CARGO_PKG_VERSION")
|
||||
}
|
||||
}
|
||||
|
||||
impl OhnUiPlugin for HelloPlugin {
|
||||
fn settings_pane(&self) -> Option<PluginSettingsPane> {
|
||||
Some(PluginSettingsPane {
|
||||
label: "Hello",
|
||||
icon_name: "star",
|
||||
build: std::sync::Arc::new(|_window, cx| cx.new(|_cx| HelloView).into()),
|
||||
})
|
||||
}
|
||||
|
||||
fn side_panel(&self) -> Option<PluginSidePanel> {
|
||||
None
|
||||
}
|
||||
}
|
||||
|
||||
ohn_ui_plugin::register_ohn_ui_plugin!(HelloPlugin);
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
// Settings pane view
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
struct HelloView;
|
||||
|
||||
impl Render for HelloView {
|
||||
fn render(
|
||||
&mut self,
|
||||
_window: &mut Window,
|
||||
_cx: &mut Context<Self>,
|
||||
) -> impl IntoElement {
|
||||
div()
|
||||
.flex()
|
||||
.flex_col()
|
||||
.items_center()
|
||||
.justify_center()
|
||||
.gap(px(16.0))
|
||||
.p(px(40.0))
|
||||
.child(
|
||||
div()
|
||||
.text_size(px(28.0))
|
||||
.child("👋"),
|
||||
)
|
||||
.child(
|
||||
div()
|
||||
.text_size(px(18.0))
|
||||
.font_weight(FontWeight::SEMIBOLD)
|
||||
.child("Hello from the Hello Plugin!"),
|
||||
)
|
||||
.child(
|
||||
div()
|
||||
.text_size(px(13.0))
|
||||
.text_color(gpui::rgb(0x888888))
|
||||
.child("This demo plugin was installed via the hotplug registry."),
|
||||
)
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue