diff --git a/src/browser/action.rs b/src/browser/action.rs deleted file mode 100644 index 26600c09..00000000 --- a/src/browser/action.rs +++ /dev/null @@ -1,31 +0,0 @@ -use gtk::gio::ActionEntry; -use gtk::prelude::GtkWindowExt; -use gtk::ApplicationWindow; - -pub fn debug() -> ActionEntry { - ActionEntry::builder("debug") - .activate(|this: &ApplicationWindow, _, _| { - this.emit_enable_debugging(true); - }) - .build() -} - -pub fn quit() -> ActionEntry { - ActionEntry::builder("quit") - .activate(|this: &ApplicationWindow, _, _| { - this.close(); - }) - .build() -} - -/* @TODO -pub fn tab_append(main) -> ActionEntry { - let action_tab_append = ActionEntry::builder("tab_append") - .activate({ - let main = main.clone(); - move |_, _, _| { - main.tab_append(); - } - }) - .build(); -}*/ diff --git a/src/browser/main/mod.rs b/src/browser/main/mod.rs index 6a782324..c5687d9a 100644 --- a/src/browser/main/mod.rs +++ b/src/browser/main/mod.rs @@ -1,6 +1,8 @@ mod tab; mod widget; +use std::sync::Arc; + pub struct Main { widget: widget::Main, tab: tab::Tab, @@ -8,15 +10,15 @@ pub struct Main { impl Main { // Construct - pub fn new() -> Main { + pub fn new() -> Arc
{ // Init components let tab = tab::Tab::new(); // Init struct - Self { + Arc::new(Self { widget: widget::Main::new(tab.widget().gtk()), // @TODO tab, - } + }) } // Actions diff --git a/src/browser/mod.rs b/src/browser/mod.rs index cfd32f46..f1e4fdd4 100644 --- a/src/browser/mod.rs +++ b/src/browser/mod.rs @@ -1,13 +1,16 @@ -mod action; mod db; mod header; mod main; mod widget; -use gtk::prelude::ActionMapExtManual; +use std::sync::Arc; + +use gtk::prelude::{ActionMapExtManual, GtkWindowExt}; pub struct Browser { db: db::Browser, + header: header::Header, + main: Arc, widget: widget::Browser, } @@ -15,27 +18,50 @@ impl Browser { // Construct new browser pub fn new( app: >k::Application, - connection: std::sync::Arc, + connection: std::sync::Arc, // @TODO glib clone macro? default_width: i32, default_height: i32, ) -> Browser { - // Init widget + // Init components + let db = db::Browser::new(connection); + let header = header::Header::new(); + let main = main::Main::new(); + let widget = widget::Browser::new( app, - header::Header::new().widget().gtk(), - main::Main::new().widget().gtk(), + header.widget().gtk(), + main.widget().gtk(), default_width, default_height, ); - // Connect actions - widget - .gtk() - .add_action_entries([action::debug(), action::quit()]); + // Init actions @TODO separated module + widget.gtk().add_action_entries([ + gtk::gio::ActionEntry::builder("debug") + .activate(|this: >k::ApplicationWindow, _, _| { + this.emit_enable_debugging(true); + }) + .build(), + gtk::gio::ActionEntry::builder("quit") + .activate(|this: >k::ApplicationWindow, _, _| { + this.close(); + }) + .build(), + gtk::gio::ActionEntry::builder("tab_append") + .activate({ + let main = main.clone(); + move |_, _, _| { + main.tab_append(); + } + }) + .build(), + ]); // Return Self { - db: db::Browser::new(connection), + db, + header, + main, widget, } }