diff --git a/src/ui/src/actions.rs b/src/ui/src/actions.rs new file mode 100644 index 0000000..2b0163a --- /dev/null +++ b/src/ui/src/actions.rs @@ -0,0 +1,3 @@ +use gpui::actions; + +actions!(scope, [Quit]); diff --git a/src/ui/src/main.rs b/src/ui/src/main.rs index 3044a62..1095cbc 100644 --- a/src/ui/src/main.rs +++ b/src/ui/src/main.rs @@ -1,6 +1,8 @@ +pub mod actions; pub mod app; pub mod app_state; pub mod channel; +pub mod menu; use std::sync::Arc; @@ -8,6 +10,7 @@ use app_state::AppState; use components::theme::{hsl, Theme, ThemeColor, ThemeMode}; use gpui::*; use http_client::anyhow; +use menu::app_menus; #[derive(rust_embed::RustEmbed)] #[folder = "../../assets"] @@ -47,6 +50,11 @@ async fn main() { return; } + cx.bind_keys(vec![KeyBinding::new("cmd-q", actions::Quit, None)]); + + cx.set_menus(app_menus()); + cx.on_action(|_: &Quit, cx| cx.quit()); + let mut theme = Theme::from(ThemeColor::dark()); theme.mode = ThemeMode::Dark; theme.accent = hsl(335.0, 97.0, 61.0); diff --git a/src/ui/src/menu.rs b/src/ui/src/menu.rs new file mode 100644 index 0000000..1d03d7c --- /dev/null +++ b/src/ui/src/menu.rs @@ -0,0 +1,10 @@ +use gpui::{Menu, MenuItem}; + +use crate::actions; + +pub fn app_menus() -> Vec { + vec![Menu { + name: "Scope".into(), + items: vec![MenuItem::action("Quit", actions::Quit)], + }] +}