reorganize widget modules

This commit is contained in:
yggverse 2024-09-23 18:51:48 +03:00
parent b9b226cc54
commit 4903968309
47 changed files with 352 additions and 786 deletions

View file

@ -1,46 +1,46 @@
mod db;
mod header;
mod main;
mod widget;
use gtk::gio::ActionEntry;
use gtk::prelude::{ActionMapExtManual, GtkWindowExt};
use gtk::{Application, ApplicationWindow};
use std::sync::Arc;
use gtk::prelude::{ActionMapExtManual, GtkWindowExt};
pub struct Browser {
// Extras
db: db::Browser,
widget: widget::Browser,
// db: db::Browser,
widget: ApplicationWindow,
// Components
header: Arc<header::Header>,
main: Arc<main::Main>,
// header: Arc<header::Header>,
// main: main::Main,
}
impl Browser {
// Construct
pub fn new(
app: &Application,
connection: Arc<sqlite::Connection>,
// connection: Arc<sqlite::Connection>,
default_width: i32,
default_height: i32,
) -> Arc<Browser> {
) -> Browser {
// Init components
let db = db::Browser::new(connection);
// let db = db::Browser::new(connection);
let header = header::Header::new();
let main = main::Main::new();
let widget = widget::Browser::new(
app,
header.widget().gtk(),
main.widget().gtk(),
default_width,
default_height,
);
let widget = ApplicationWindow::builder()
.application(app)
.default_width(default_width)
.default_height(default_height)
.titlebar(header.widget())
.child(main.widget())
.build();
// Init actions @TODO separated module
widget.window().add_action_entries([
// Init actions
let main_ref = Arc::new(main); // @TODO
widget.add_action_entries([
ActionEntry::builder("debug")
.activate(|this: &ApplicationWindow, _, _| {
this.emit_enable_debugging(true);
@ -53,7 +53,7 @@ impl Browser {
.build(),
ActionEntry::builder("tab_append")
.activate({
let main = main.clone();
let main = main_ref.clone();
move |_, _, _| {
main.tab_append();
}
@ -61,7 +61,7 @@ impl Browser {
.build(),
ActionEntry::builder("tab_close")
.activate({
let main = main.clone();
let main = main_ref.clone();
move |_, _, _| {
main.tab_close();
}
@ -69,7 +69,7 @@ impl Browser {
.build(),
ActionEntry::builder("tab_close_all")
.activate({
let main = main.clone();
let main = main_ref.clone();
move |_, _, _| {
main.tab_close_all();
}
@ -77,7 +77,7 @@ impl Browser {
.build(),
ActionEntry::builder("tab_pin")
.activate({
let main = main.clone();
let main = main_ref.clone();
move |_, _, _| {
main.tab_pin();
}
@ -86,16 +86,16 @@ impl Browser {
]);
// Return
Arc::new(Self {
db,
Self {
// db,
widget,
header,
main,
})
// header,
// main,
}
}
// Getters
pub fn widget(&self) -> &widget::Browser {
pub fn widget(&self) -> &ApplicationWindow {
&self.widget
}
}