refactor: add headerbar and move menubar

This commit is contained in:
MeexReay 2025-08-31 23:59:56 +03:00
parent a44d35d1f8
commit 0f195d05cc

View File

@ -14,9 +14,9 @@ use clap::crate_version;
use libadwaita::gdk::{MemoryTexture, Texture}; use libadwaita::gdk::{MemoryTexture, Texture};
use libadwaita::gtk::gdk_pixbuf::InterpType; use libadwaita::gtk::gdk_pixbuf::InterpType;
use libadwaita::gtk::{Adjustment, Image}; use libadwaita::gtk::{Adjustment, Image, MenuButton};
use libadwaita::{ use libadwaita::{
self as adw, Avatar, ButtonRow, EntryRow, PreferencesDialog, PreferencesGroup, PreferencesPage, SpinRow, SwitchRow self as adw, Avatar, ButtonRow, EntryRow, HeaderBar, PreferencesDialog, PreferencesGroup, PreferencesPage, SpinRow, SwitchRow
}; };
use adw::gdk::{Cursor, Display}; use adw::gdk::{Cursor, Display};
use adw::gio::{ActionEntry, ApplicationFlags, MemoryInputStream, Menu}; use adw::gio::{ActionEntry, ApplicationFlags, MemoryInputStream, Menu};
@ -504,20 +504,12 @@ fn open_settings(ctx: Arc<Context>, app: &Application) {
dialog.present(app.active_window().as_ref()); dialog.present(app.active_window().as_ref());
} }
fn build_menu(ctx: Arc<Context>, app: &Application) { fn build_menu(ctx: Arc<Context>, app: &Application) -> Menu {
let menu = Menu::new(); let menu = Menu::new();
let file_menu = Menu::new(); menu.append(Some("Settings"), Some("app.settings"));
file_menu.append(Some("About"), Some("app.about")); menu.append(Some("About"), Some("app.about"));
file_menu.append(Some("Close"), Some("app.close")); menu.append(Some("Close"), Some("app.close"));
let edit_menu = Menu::new();
edit_menu.append(Some("Settings"), Some("app.settings"));
menu.append_submenu(Some("File"), &file_menu);
menu.append_submenu(Some("Edit"), &edit_menu);
app.set_menubar(Some((&menu).into()));
app.add_action_entries([ app.add_action_entries([
ActionEntry::builder("settings") ActionEntry::builder("settings")
@ -553,6 +545,8 @@ fn build_menu(ctx: Arc<Context>, app: &Application) {
)) ))
.build(), .build(),
]); ]);
menu
} }
fn build_ui(ctx: Arc<Context>, app: &Application) -> UiModel { fn build_ui(ctx: Arc<Context>, app: &Application) -> UiModel {
@ -571,6 +565,15 @@ fn build_ui(ctx: Arc<Context>, app: &Application) -> UiModel {
let main_box = GtkBox::new(Orientation::Vertical, 5); let main_box = GtkBox::new(Orientation::Vertical, 5);
let header = HeaderBar::new();
header.pack_end(&MenuButton::builder()
.icon_name("open-menu-symbolic")
.menu_model(&build_menu(ctx.clone(), &app))
.build());
main_box.append(&header);
main_box.set_css_classes(&["main-box"]); main_box.set_css_classes(&["main-box"]);
let widget_box_overlay = Overlay::new(); let widget_box_overlay = Overlay::new();