|
|
|
@ -19,23 +19,14 @@ use std::sync::Arc;
@@ -19,23 +19,14 @@ use std::sync::Arc;
|
|
|
|
|
const APPLICATION_ID: &str = "io.github.yggverse.Yoda"; |
|
|
|
|
|
|
|
|
|
pub struct App { |
|
|
|
|
// GTK
|
|
|
|
|
app: Application, |
|
|
|
|
// Components
|
|
|
|
|
//browser: Arc<Browser>,
|
|
|
|
|
database: Arc<Database>, |
|
|
|
|
// Actions
|
|
|
|
|
action_debug: Arc<SimpleAction>, |
|
|
|
|
action_quit: Arc<SimpleAction>, |
|
|
|
|
action_update: Arc<SimpleAction>, |
|
|
|
|
action_tab_append: Arc<SimpleAction>, |
|
|
|
|
action_tab_close: Arc<SimpleAction>, |
|
|
|
|
action_tab_close_all: Arc<SimpleAction>, |
|
|
|
|
action_tab_page_navigation_base: Arc<SimpleAction>, |
|
|
|
|
action_tab_page_navigation_history_back: Arc<SimpleAction>, |
|
|
|
|
action_tab_page_navigation_history_forward: Arc<SimpleAction>, |
|
|
|
|
action_tab_page_navigation_reload: Arc<SimpleAction>, |
|
|
|
|
action_tab_pin: Arc<SimpleAction>, |
|
|
|
|
// Components
|
|
|
|
|
browser: Arc<Browser>, |
|
|
|
|
// Extras
|
|
|
|
|
database: Arc<Database>, |
|
|
|
|
// GTK
|
|
|
|
|
app: Application, |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
impl App { |
|
|
|
@ -86,22 +77,28 @@ impl App {
@@ -86,22 +77,28 @@ impl App {
|
|
|
|
|
&["<Primary>r"], |
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
// Init components
|
|
|
|
|
let browser = Arc::new(Browser::new( |
|
|
|
|
/*db.clone(),*/ |
|
|
|
|
action_debug.simple(), |
|
|
|
|
action_quit.simple(), |
|
|
|
|
action_update.simple(), |
|
|
|
|
action_tab_append.simple(), |
|
|
|
|
action_tab_close.simple(), |
|
|
|
|
action_tab_close_all.simple(), |
|
|
|
|
action_tab_page_navigation_base.simple(), |
|
|
|
|
action_tab_page_navigation_history_back.simple(), |
|
|
|
|
action_tab_page_navigation_history_forward.simple(), |
|
|
|
|
action_tab_page_navigation_reload.simple(), |
|
|
|
|
action_tab_pin.simple(), |
|
|
|
|
)); |
|
|
|
|
|
|
|
|
|
// Return app struct
|
|
|
|
|
Self { |
|
|
|
|
// Actions (SimpleAction)
|
|
|
|
|
action_debug: action_debug.simple(), |
|
|
|
|
action_quit: action_quit.simple(), |
|
|
|
|
action_update: action_update.simple(), |
|
|
|
|
action_tab_append: action_tab_append.simple(), |
|
|
|
|
action_tab_close: action_tab_close.simple(), |
|
|
|
|
action_tab_close_all: action_tab_close_all.simple(), |
|
|
|
|
action_tab_page_navigation_base: action_tab_page_navigation_base.simple(), |
|
|
|
|
action_tab_page_navigation_history_back: action_tab_page_navigation_history_back |
|
|
|
|
.simple(), |
|
|
|
|
action_tab_page_navigation_history_forward: action_tab_page_navigation_history_forward |
|
|
|
|
.simple(), |
|
|
|
|
action_tab_page_navigation_reload: action_tab_page_navigation_reload.simple(), |
|
|
|
|
action_tab_pin: action_tab_pin.simple(), |
|
|
|
|
// Components
|
|
|
|
|
browser, |
|
|
|
|
// Extras
|
|
|
|
|
database, |
|
|
|
|
// GTK
|
|
|
|
@ -111,45 +108,15 @@ impl App {
@@ -111,45 +108,15 @@ impl App {
|
|
|
|
|
|
|
|
|
|
// Actions
|
|
|
|
|
pub fn activate(&self) -> &Self { |
|
|
|
|
// Init events
|
|
|
|
|
self.app.connect_activate({ |
|
|
|
|
// let database = database.clone();
|
|
|
|
|
let action_debug = self.action_debug.clone(); |
|
|
|
|
let action_quit = self.action_quit.clone(); |
|
|
|
|
let action_update = self.action_update.clone(); |
|
|
|
|
let action_tab_append = self.action_tab_append.clone(); |
|
|
|
|
let action_tab_close = self.action_tab_close.clone(); |
|
|
|
|
let action_tab_close_all = self.action_tab_close_all.clone(); |
|
|
|
|
let action_tab_page_navigation_base = self.action_tab_page_navigation_base.clone(); |
|
|
|
|
let action_tab_page_navigation_history_back = |
|
|
|
|
self.action_tab_page_navigation_history_back.clone(); |
|
|
|
|
let action_tab_page_navigation_history_forward = |
|
|
|
|
self.action_tab_page_navigation_history_forward.clone(); |
|
|
|
|
let action_tab_page_navigation_reload = self.action_tab_page_navigation_reload.clone(); |
|
|
|
|
let action_tab_pin = self.action_tab_pin.clone(); |
|
|
|
|
move |application| { |
|
|
|
|
// Restore previous session
|
|
|
|
|
// @TODO
|
|
|
|
|
|
|
|
|
|
// Init components
|
|
|
|
|
let browser = Arc::new(Browser::new( |
|
|
|
|
&application, |
|
|
|
|
/*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_navigation_base.clone(), |
|
|
|
|
action_tab_page_navigation_history_back.clone(), |
|
|
|
|
action_tab_page_navigation_history_forward.clone(), |
|
|
|
|
action_tab_page_navigation_reload.clone(), |
|
|
|
|
action_tab_pin.clone(), |
|
|
|
|
)); |
|
|
|
|
let browser = self.browser.clone(); |
|
|
|
|
move |this| { |
|
|
|
|
// @TODO restore previous session from DB
|
|
|
|
|
|
|
|
|
|
// Activate events
|
|
|
|
|
browser.activate(); |
|
|
|
|
browser.activate().widget().set_application(Some(this)); |
|
|
|
|
|
|
|
|
|
// Show main widget
|
|
|
|
|
browser.widget().present(); |
|
|
|
@ -159,6 +126,9 @@ impl App {
@@ -159,6 +126,9 @@ impl App {
|
|
|
|
|
} |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
// @TODO save session to DB
|
|
|
|
|
// self.app.connect_window_removed(|_, _| todo!());
|
|
|
|
|
|
|
|
|
|
&self |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|