mirror of
https://github.com/YGGverse/Yoda.git
synced 2026-04-01 17:15:28 +00:00
109 lines
2.6 KiB
Rust
109 lines
2.6 KiB
Rust
use crate::app::browser::window::action::Action as WindowAction;
|
|
use gtk::prelude::ActionExt;
|
|
use std::rc::Rc;
|
|
|
|
/// Context menu wrapper
|
|
///
|
|
/// https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/method.TabView.get_menu_model.html
|
|
pub struct Menu {
|
|
pub gobject: gtk::gio::Menu,
|
|
}
|
|
|
|
impl Menu {
|
|
// Constructors
|
|
|
|
/// Create new `Self`
|
|
pub fn new(window_action: Rc<WindowAction>) -> Self {
|
|
let main = gtk::gio::Menu::new();
|
|
|
|
main.append(
|
|
Some("Reload"),
|
|
Some(&format!(
|
|
"{}.{}",
|
|
window_action.id,
|
|
window_action.reload.gobject.name()
|
|
)),
|
|
);
|
|
|
|
let main_mark = gtk::gio::Menu::new();
|
|
|
|
main_mark.append(
|
|
Some("Bookmark"),
|
|
Some(&format!(
|
|
"{}.{}",
|
|
window_action.id,
|
|
window_action.bookmark.gobject.name()
|
|
)),
|
|
);
|
|
|
|
main_mark.append(
|
|
Some("Pin"),
|
|
Some(&format!(
|
|
"{}.{}",
|
|
window_action.id,
|
|
window_action.pin.gobject.name()
|
|
)),
|
|
);
|
|
|
|
main.append_section(None, &main_mark);
|
|
|
|
let navigation = gtk::gio::Menu::new();
|
|
|
|
navigation.append(
|
|
Some("Home"),
|
|
Some(&format!(
|
|
"{}.{}",
|
|
window_action.id,
|
|
window_action.home.gobject.name()
|
|
)),
|
|
);
|
|
|
|
main.append_section(None, &navigation);
|
|
|
|
let history = gtk::gio::Menu::new();
|
|
|
|
history.append(
|
|
Some("Back"),
|
|
Some(&format!(
|
|
"{}.{}",
|
|
window_action.id,
|
|
window_action.history_back.gobject.name()
|
|
)),
|
|
);
|
|
|
|
history.append(
|
|
Some("Forward"),
|
|
Some(&format!(
|
|
"{}.{}",
|
|
window_action.id,
|
|
window_action.history_forward.gobject.name()
|
|
)),
|
|
);
|
|
|
|
main.append_submenu(Some("History"), &history);
|
|
|
|
let close = gtk::gio::Menu::new();
|
|
|
|
close.append(
|
|
Some("Current"),
|
|
Some(&format!(
|
|
"{}.{}",
|
|
window_action.id,
|
|
window_action.close.gobject.name()
|
|
)),
|
|
);
|
|
|
|
close.append(
|
|
Some("All"),
|
|
Some(&format!(
|
|
"{}.{}",
|
|
window_action.id,
|
|
window_action.close_all.gobject.name()
|
|
)),
|
|
);
|
|
|
|
main.append_submenu(Some("Close"), &close);
|
|
|
|
Self { gobject: main }
|
|
}
|
|
}
|