use gtk::{gio::SimpleAction, prelude::ActionExt};
pub struct Menu {
gobject: gtk::gio::Menu,
}
impl Menu {
pub fn new(
action_page_close_all: SimpleAction,
action_page_close: SimpleAction,
action_page_history_back: SimpleAction,
action_page_history_forward: SimpleAction,
action_page_home: SimpleAction,
action_page_pin: SimpleAction,
action_page_reload: SimpleAction,
) -> Self {
let main = gtk::gio::Menu::new();
main.append(
Some("Reload"),
Some(&detailed_action_name(action_page_reload)),
);
main.append(Some("Pin"), Some(&detailed_action_name(action_page_pin)));
let navigation = gtk::gio::Menu::new();
navigation.append(Some("Home"), Some(&detailed_action_name(action_page_home)));
main.append_section(None, &navigation);
let history = gtk::gio::Menu::new();
history.append(
Some("Back"),
Some(&detailed_action_name(action_page_history_back)),
);
history.append(
Some("Forward"),
Some(&detailed_action_name(action_page_history_forward)),
);
main.append_submenu(Some("History"), &history);
let close = gtk::gio::Menu::new();
close.append(
Some("Current"),
Some(&detailed_action_name(action_page_close)),
);
close.append(
Some("All"),
Some(&detailed_action_name(action_page_close_all)),
);
main.append_submenu(Some("Close"), &close);
Self { gobject: main }
}
pub fn gobject(&self) -> >k::gio::Menu {
&self.gobject
}
}
fn detailed_action_name(action: SimpleAction) -> String {
format!("win.{}", action.name()) }