implement AboutDialog as trait

This commit is contained in:
yggverse 2025-02-05 15:02:41 +02:00
parent 6f52d198e2
commit 00877ee36f
2 changed files with 9 additions and 28 deletions

View file

@ -10,6 +10,7 @@ use widget::Widget;
use window::Window;
use crate::Profile;
use adw::{prelude::AdwDialogExt, AboutDialog};
use gtk::{
gio::{Cancellable, File},
prelude::{GtkWindowExt, IsA},
@ -59,7 +60,7 @@ impl Browser {
// Connect events
action.about.connect_activate({
let window = window.clone();
move || About::new().present(Some(&window.g_box))
move || AboutDialog::about().present(Some(&window.g_box))
});
action.close.connect_activate({

View file

@ -1,20 +1,9 @@
use adw::{prelude::AdwDialogExt, AboutDialog};
use gtk::{prelude::IsA, License};
pub struct About {
gobject: AboutDialog,
pub trait About {
fn about() -> Self;
}
impl Default for About {
fn default() -> Self {
Self::new()
}
}
impl About {
// Construct
pub fn new() -> Self {
// Collect debug info
impl About for adw::AboutDialog {
fn about() -> Self {
let debug = &[
format!(
"Adwaita {}.{}.{}",
@ -38,22 +27,13 @@ impl About {
// @TODO
];
// Init gobject
let gobject = AboutDialog::builder()
adw::AboutDialog::builder()
.application_name(env!("CARGO_PKG_NAME"))
.debug_info(debug.join("\n"))
.developer_name(env!("CARGO_PKG_DESCRIPTION"))
.issue_url(env!("CARGO_PKG_REPOSITORY"))
.license_type(License::MitX11)
.license_type(gtk::License::MitX11)
.version(env!("CARGO_PKG_VERSION"))
.build();
// Return new struct
Self { gobject }
}
// Actions
pub fn present(&self, parent: Option<&impl IsA<gtk::Widget>>) {
self.gobject.present(parent);
.build()
}
}