From 623b141767e7ec270476b884a4d82a52bb42f4dd Mon Sep 17 00:00:00 2001 From: rowan Date: Sun, 26 Jan 2025 05:00:23 -0600 Subject: [PATCH] chore: Menu::run --- src/lib.rs | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index ed18733..c8919d3 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -4,7 +4,7 @@ pub mod font; use color::ColorPair; use font::FontExt; use pango::{prelude::FontExt as _, Font, Language, SCALE}; -use wmenu_rs::Menu as WMenu; +use wmenu_rs::{Menu as WMenu, MenuError}; struct Config { pub bottom: bool, @@ -18,17 +18,20 @@ struct Config { } impl Config { + // TODO: add font struct to handle these methods fn font_string(&self) -> String { format!("{} {}", self.font, self.font_size) } fn font_height(&self, font: &str) -> i32 { let font = Font::load_from_string(font).unwrap(); + // TODO: let user pick language let metrics = font.metrics(Some(&Language::default())); metrics.height() / SCALE } + // TODO: add ability to override height/line_height fn apply(self, wmenu: &mut WMenu) { let font_string = self.font_string(); let font_height = self.font_height(&font_string); @@ -36,6 +39,7 @@ impl Config { let mut height = line_height; + // FIXME: ugly if self.lines > 0 { height = height + height * self.lines; } @@ -99,6 +103,11 @@ impl Menu { self.inner_mut().add_items(items); self } + + // TODO: wrap MenuError with new error type + pub fn run(&self) -> Result { + self.inner().run() + } } impl Default for Menu { @@ -122,7 +131,7 @@ mod tests { let items = ["rowern", "sybil", "vex"]; let mut menu = Menu::new(Config::default()); menu.add_items(&items); - let result = menu.inner_mut().run(); + let result = menu.run(); assert!(items.contains(&result.unwrap().as_str())); } }