From 5575acf00f51833a063d5e940152e6a27ecb230f Mon Sep 17 00:00:00 2001 From: Fabio Lenherr / DashieTM Date: Sat, 11 Nov 2023 11:09:07 +0100 Subject: [PATCH] feat: Add popup --- src/components/base/mod.rs | 2 ++ src/components/base/popup.rs | 19 +++++++++++++++ src/components/base/popupImpl.rs | 41 ++++++++++++++++++++++++++++++++ 3 files changed, 62 insertions(+) create mode 100644 src/components/base/popup.rs create mode 100644 src/components/base/popupImpl.rs diff --git a/src/components/base/mod.rs b/src/components/base/mod.rs index 928ec14..628b0b7 100644 --- a/src/components/base/mod.rs +++ b/src/components/base/mod.rs @@ -2,3 +2,5 @@ pub mod settingBox; pub mod settingBoxImpl; pub mod listEntry; pub mod listEntryImpl; +pub mod popup; +pub mod popupImpl; diff --git a/src/components/base/popup.rs b/src/components/base/popup.rs new file mode 100644 index 0000000..a25d8e2 --- /dev/null +++ b/src/components/base/popup.rs @@ -0,0 +1,19 @@ +use adw::glib; +use adw::glib::{IsA, Object}; +use gtk::Widget; + +use super::popupImpl; + +glib::wrapper! { + pub struct Popup(ObjectSubclass) + @extends adw::Window, gtk::Widget, + @implements gtk::Accessible, gtk::Buildable, gtk::ConstraintTarget, gtk::Orientable; +} + +impl Popup { + pub fn new(child: &impl IsA) -> Self { + let popup: Popup = Object::builder().build(); + // popup.set_child(child); + popup + } +} diff --git a/src/components/base/popupImpl.rs b/src/components/base/popupImpl.rs new file mode 100644 index 0000000..7bf6caf --- /dev/null +++ b/src/components/base/popupImpl.rs @@ -0,0 +1,41 @@ +use adw::subclass::window::AdwWindowImpl; +use gtk::subclass::prelude::*; +use gtk::{glib, CompositeTemplate}; + +use super::popup; + +#[allow(non_snake_case)] +#[derive(Default, CompositeTemplate)] +#[template(resource = "/org/Xetibo/ReSet/resetPopup.ui")] +pub struct Popup {} + +#[glib::object_subclass] +impl ObjectSubclass for Popup { + const NAME: &'static str = "resetPopup"; + type Type = popup::Popup; + type ParentType = adw::Window; + + fn class_init(klass: &mut Self::Class) { + klass.bind_template(); + } + + fn instance_init(obj: &glib::subclass::InitializingObject) { + obj.init_template(); + } +} + +impl ObjectImpl for Popup { + fn constructed(&self) { + self.parent_constructed(); + } +} + +impl BoxImpl for Popup {} + +impl WidgetImpl for Popup {} + +impl AdwWindowImpl for Popup {} + +impl WindowImpl for Popup {} + +impl ApplicationWindowImpl for Popup {}