diff --git a/src/app.rs b/src/app.rs index 15056c9c..a7f1f66e 100644 --- a/src/app.rs +++ b/src/app.rs @@ -7,7 +7,7 @@ use browser::Browser; use database::Database; use gtk::{ - gio::SimpleAction, + // gio::SimpleAction, glib::ExitCode, prelude::{ActionExt, ApplicationExt, ApplicationExtManual, GtkApplicationExt, GtkWindowExt}, Application, @@ -20,9 +20,9 @@ const APPLICATION_ID: &str = "io.github.yggverse.Yoda"; pub struct App { // Actions - action_update: Arc, + // action_update: Arc, // Components - browser: Arc, + // browser: Arc, // Extras database: Arc, // GTK @@ -93,30 +93,16 @@ impl App { action_tab_pin.simple(), )); - // Return app struct - Self { - // Actions (SimpleAction) - action_update: action_update.simple(), - // Components - browser, - // Extras - database, - // GTK - app, - } - } - - // Actions - pub fn activate(&self) -> &Self { - self.app.connect_activate({ + // Init events + app.connect_activate({ // let database = database.clone(); - let action_update = self.action_update.clone(); - let browser = self.browser.clone(); + let action_update = action_update.simple(); + let browser = browser.clone(); move |this| { // @TODO restore previous session from DB // Activate events - browser.activate().widget().set_application(Some(this)); + browser.widget().set_application(Some(this)); // Show main widget browser.widget().present(); @@ -129,9 +115,20 @@ impl App { // @TODO save session to DB // self.app.connect_window_removed(|_, _| todo!()); - &self + // Return activated App struct + Self { + // Actions (SimpleAction) + // action_update: action_update.simple(), + // Components + // browser, + // Extras + database, + // GTK + app, + } } + // Actions pub fn run(&self) -> ExitCode { self.app.run() } diff --git a/src/app/browser.rs b/src/app/browser.rs index 8cef8973..a041dbe5 100644 --- a/src/app/browser.rs +++ b/src/app/browser.rs @@ -15,24 +15,12 @@ const DEFAULT_HEIGHT: i32 = 480; const DEFAULT_WIDTH: i32 = 640; pub struct Browser { - // 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_navigation_base: Arc, - action_tab_page_navigation_history_back: Arc, - action_tab_page_navigation_history_forward: Arc, - action_tab_page_navigation_reload: Arc, - action_tab_pin: Arc, // Extras // db: db::Browser, widget: ApplicationWindow, // Components - header: Arc
, - main: Arc
, + // header: Arc
, + // main: Arc
, } impl Browser { @@ -86,130 +74,107 @@ impl Browser { .default_width(DEFAULT_WIDTH) .build(); - // Return new Browser - Self { - // Actions - action_debug, - action_quit, - action_update, - action_tab_append, - action_tab_close, - action_tab_close_all, - action_tab_page_navigation_base, - action_tab_page_navigation_history_back, - action_tab_page_navigation_history_forward, - action_tab_page_navigation_reload, - action_tab_pin, - // db, - widget, - // Components - header, - main, - } - } - - // Actions - pub fn activate(&self) -> &Self { // Assign actions - self.widget.add_action(self.action_debug.as_ref()); - self.widget.add_action(self.action_quit.as_ref()); - self.widget.add_action(self.action_update.as_ref()); - self.widget.add_action(self.action_tab_append.as_ref()); - self.widget.add_action(self.action_tab_close.as_ref()); - self.widget.add_action(self.action_tab_close_all.as_ref()); - self.widget - .add_action(self.action_tab_page_navigation_base.as_ref()); - self.widget - .add_action(self.action_tab_page_navigation_history_back.as_ref()); - self.widget - .add_action(self.action_tab_page_navigation_history_forward.as_ref()); - self.widget - .add_action(self.action_tab_page_navigation_reload.as_ref()); - self.widget.add_action(self.action_tab_pin.as_ref()); + widget.add_action(action_debug.as_ref()); + widget.add_action(action_quit.as_ref()); + widget.add_action(action_update.as_ref()); + widget.add_action(action_tab_append.as_ref()); + widget.add_action(action_tab_close.as_ref()); + widget.add_action(action_tab_close_all.as_ref()); + widget.add_action(action_tab_page_navigation_base.as_ref()); + widget.add_action(action_tab_page_navigation_history_back.as_ref()); + widget.add_action(action_tab_page_navigation_history_forward.as_ref()); + widget.add_action(action_tab_page_navigation_reload.as_ref()); + widget.add_action(action_tab_pin.as_ref()); - // Events - self.action_debug.connect_activate({ - let widget = self.widget.clone(); + // Init events + action_debug.connect_activate({ + let widget = widget.clone(); move |_, _| { widget.emit_enable_debugging(true); } }); - self.action_quit.connect_activate({ - let widget = self.widget.clone(); + action_quit.connect_activate({ + let widget = widget.clone(); move |_, _| { widget.close(); } }); - self.action_update.connect_activate({ - let header = self.header.clone(); - let main = self.main.clone(); + action_update.connect_activate({ + let header = header.clone(); + let main = main.clone(); move |_, _| { main.update(); header.update(main.tab_page_title(), main.tab_page_description()); } }); - self.action_tab_append.connect_activate({ - let main = self.main.clone(); + action_tab_append.connect_activate({ + let main = main.clone(); move |_, _| { main.tab_append(None); } }); - self.action_tab_close.connect_activate({ - let main = self.main.clone(); + action_tab_close.connect_activate({ + let main = main.clone(); move |_, _| { main.tab_close(); } }); - self.action_tab_close_all.connect_activate({ - let main = self.main.clone(); + action_tab_close_all.connect_activate({ + let main = main.clone(); move |_, _| { main.tab_close_all(); } }); - self.action_tab_page_navigation_base.connect_activate({ - let main = self.main.clone(); + action_tab_page_navigation_base.connect_activate({ + let main = main.clone(); move |_, _| { main.tab_page_navigation_base(); } }); - self.action_tab_page_navigation_history_back - .connect_activate({ - let main = self.main.clone(); - move |_, _| { - main.tab_page_navigation_history_back(); - } - }); + action_tab_page_navigation_history_back.connect_activate({ + let main = main.clone(); + move |_, _| { + main.tab_page_navigation_history_back(); + } + }); - self.action_tab_page_navigation_history_forward - .connect_activate({ - let main = self.main.clone(); - move |_, _| { - main.tab_page_navigation_history_forward(); - } - }); + action_tab_page_navigation_history_forward.connect_activate({ + let main = main.clone(); + move |_, _| { + main.tab_page_navigation_history_forward(); + } + }); - self.action_tab_page_navigation_reload.connect_activate({ - let main = self.main.clone(); + action_tab_page_navigation_reload.connect_activate({ + let main = main.clone(); move |_, _| { main.tab_page_navigation_reload(); } }); - self.action_tab_pin.connect_activate({ - let main = self.main.clone(); + action_tab_pin.connect_activate({ + let main = main.clone(); move |_, _| { main.tab_pin(); } }); - &self + // Return new activated Browser struct + Self { + // db, + widget, + // Components + // header, + // main, + } } // Getters diff --git a/src/main.rs b/src/main.rs index 21d01987..3c77837b 100644 --- a/src/main.rs +++ b/src/main.rs @@ -32,7 +32,7 @@ fn main() -> ExitCode { // Init GTK, start application match gtk::init() { - Ok(_) => App::new(profile_database_connection).activate().run(), + Ok(_) => App::new(profile_database_connection).run(), Err(_) => ExitCode::FAILURE, } }