use fltk::{ app, enums::{Color, Shortcut}, menu, prelude::{MenuExt, WidgetExt}, }; use crate::Message; pub struct Menu { _menu: menu::SysMenuBar, } impl Menu { pub fn new(s: &app::Sender) -> Self { let mut menu = menu::SysMenuBar::default().with_size(800, 35); menu.set_text_color(Color::White); menu.set_color(Color::Black); menu.add_emit( "&File/New...\t", Shortcut::Ctrl | 'n', menu::MenuFlag::Normal, *s, Message::New, ); menu.add_emit( "&File/Open...\t", Shortcut::Ctrl | 'o', menu::MenuFlag::Normal, *s, Message::Open, ); menu.add_emit( "&File/Save\t", Shortcut::Ctrl | 's', menu::MenuFlag::Normal, *s, Message::Save, ); menu.add_emit( "&File/Save as...\t", Shortcut::Ctrl | 'w', menu::MenuFlag::Normal, *s, Message::SaveAs, ); menu.add_emit( "&File/Quit\t", Shortcut::Ctrl | 'q', menu::MenuFlag::Normal, *s, Message::Quit, ); menu.add_emit( "&Edit/Cut\t", Shortcut::Ctrl | 'x', menu::MenuFlag::Normal, *s, Message::Cut, ); menu.add_emit( "&Edit/Copy\t", Shortcut::Ctrl | 'c', menu::MenuFlag::Normal, *s, Message::Copy, ); menu.add_emit( "&Edit/Paste\t", Shortcut::Ctrl | 'v', menu::MenuFlag::Normal, *s, Message::Paste, ); /* menu.add_emit( "&Tools/Config\t", Shortcut::Ctrl | '/', menu::MenuFlag::Normal, *s, Message::Config, ); menu.add_emit( "&Tools/Terminal\t", Shortcut::Ctrl | 't', menu::MenuFlag::Normal, *s, Message::Config, ); */ if let Some(mut item) = menu.find_item("&File/Quit\t") { item.set_label_color(Color::Red); } Self { _menu: menu } } }