From 395987220183ad329d00ce797b83662f6edfd811 Mon Sep 17 00:00:00 2001 From: yggverse Date: Mon, 30 Sep 2024 13:43:46 +0300 Subject: [PATCH] move global actions to the app level --- src/browser.rs | 36 +++++++++++++++++------------------- src/main.rs | 43 +++++++++++++++++++++++++++++++++++-------- 2 files changed, 52 insertions(+), 27 deletions(-) diff --git a/src/browser.rs b/src/browser.rs index 78c95e5b..3c7538a0 100644 --- a/src/browser.rs +++ b/src/browser.rs @@ -7,11 +7,14 @@ use main::Main; use gtk::{ gio::SimpleAction, - prelude::{ActionExt, ActionMapExt, GtkWindowExt}, + prelude::{ActionMapExt, GtkWindowExt}, Application, ApplicationWindow, }; use std::sync::Arc; +const DEFAULT_HEIGHT: i32 = 480; +const DEFAULT_WIDTH: i32 = 640; + pub struct Browser { // Extras // db: db::Browser, @@ -26,22 +29,20 @@ impl Browser { pub fn new( app: &Application, // connection: Arc, - default_width: i32, - default_height: i32, + // Actions + action_debug: Arc, + action_quit: Arc, + action_update: Arc, + action_tab_append: Arc, + action_tab_close: Arc, + action_tab_close_all: Arc, + action_tab_page_reload: Arc, + action_tab_pin: Arc, ) -> Browser { - // Init window actions - let action_debug = Arc::new(SimpleAction::new("debug", None)); - let action_quit = Arc::new(SimpleAction::new("quit", None)); - let action_update = Arc::new(SimpleAction::new("update", None)); - - let action_tab_append = Arc::new(SimpleAction::new("tab_append", None)); - let action_tab_close = Arc::new(SimpleAction::new("tab_close", None)); - let action_tab_close_all = Arc::new(SimpleAction::new("tab_close_all", None)); - let action_tab_page_reload = Arc::new(SimpleAction::new("tab_page_reload", None)); - let action_tab_pin = Arc::new(SimpleAction::new("tab_pin", None)); + // Init database + // let db = db::Browser::new(connection); @TODO // Init components - // let db = db::Browser::new(connection); let header = Arc::new(Header::new( action_debug.clone(), action_quit.clone(), @@ -60,10 +61,10 @@ impl Browser { // Init widget let widget = ApplicationWindow::builder() .application(app) - .default_width(default_width) - .default_height(default_height) .titlebar(header.widget()) .child(main.widget()) + .default_height(DEFAULT_HEIGHT) + .default_width(DEFAULT_WIDTH) .build(); widget.add_action(action_debug.as_ref()); @@ -135,9 +136,6 @@ impl Browser { } }); - // Make initial update @TODO move to the app init level - action_update.activate(None); - // Return activated browser struct Self { // db, diff --git a/src/main.rs b/src/main.rs index 3acab26e..30f8ec73 100644 --- a/src/main.rs +++ b/src/main.rs @@ -3,12 +3,13 @@ mod browser; use browser::Browser; use gtk::{ + gio::SimpleAction, glib::{user_config_dir, ExitCode}, - prelude::{ApplicationExt, ApplicationExtManual, GtkApplicationExt, GtkWindowExt}, + prelude::{ActionExt, ApplicationExt, ApplicationExtManual, GtkApplicationExt, GtkWindowExt}, Application, }; -use std::fs::create_dir_all; +use std::{fs::create_dir_all, sync::Arc}; const APP_ID: &str = "io.github.yggverse.Yoda"; @@ -16,7 +17,22 @@ fn main() -> ExitCode { // Init app let app = Application::builder().application_id(APP_ID).build(); + // Init actions + let action_debug = Arc::new(SimpleAction::new("debug", None)); + let action_quit = Arc::new(SimpleAction::new("quit", None)); + let action_update = Arc::new(SimpleAction::new("update", None)); + + let action_tab_append = Arc::new(SimpleAction::new("tab_append", None)); + let action_tab_close = Arc::new(SimpleAction::new("tab_close", None)); + let action_tab_close_all = Arc::new(SimpleAction::new("tab_close_all", None)); + let action_tab_page_reload = Arc::new(SimpleAction::new("tab_page_reload", None)); + let action_tab_pin = Arc::new(SimpleAction::new("tab_pin", None)); + // Init accels + app.set_accels_for_action("win.debug", &["i"]); + app.set_accels_for_action("win.update", &["u"]); + app.set_accels_for_action("win.quit", &["Escape"]); + app.set_accels_for_action("win.tab_append", &["t"]); app.set_accels_for_action("win.tab_pin", &["p"]); app.set_accels_for_action("win.tab_close", &["q"]); @@ -25,9 +41,6 @@ fn main() -> ExitCode { app.set_accels_for_action("win.tab_page_history_forward", &["Right"]); app.set_accels_for_action("win.tab_page_reload", &["r"]); app.set_accels_for_action("win.tab_page_bookmark", &["b"]); - app.set_accels_for_action("win.debug", &["i"]); - app.set_accels_for_action("win.update", &["u"]); - app.set_accels_for_action("win.quit", &["Escape"]); // Create new window app.connect_activate({ @@ -52,9 +65,23 @@ fn main() -> ExitCode { };*/ move |this: &Application| { - Browser::new(this, /*db.clone(),*/ 640, 480) - .widget() - .present(); + Browser::new( + this, + /*db.clone(),*/ + action_debug.clone(), + action_quit.clone(), + action_update.clone(), + action_tab_append.clone(), + action_tab_close.clone(), + action_tab_close_all.clone(), + action_tab_page_reload.clone(), + action_tab_pin.clone(), + ) + .widget() + .present(); + + // Make initial update + action_update.activate(None); } });