diff --git a/src/widgets.rs b/src/widgets.rs
index 2add57a..3de4f91 100644
--- a/src/widgets.rs
+++ b/src/widgets.rs
@@ -28,6 +28,7 @@ mod properties_view;
mod shy_bin;
mod sliding_view;
mod window_content;
+mod window_edit;
mod window_image;
pub use drag_overlay::LpDragOverlay;
@@ -41,4 +42,5 @@ pub use properties_view::LpPropertiesView;
pub use shy_bin::LpShyBin;
pub use sliding_view::LpSlidingView;
pub use window_content::LpWindowContent;
+pub use window_edit::LpWindowEdit;
pub use window_image::LpWindowImage;
diff --git a/src/widgets/window_edit.rs b/src/widgets/window_edit.rs
new file mode 100644
index 0000000..1b0c15b
--- /dev/null
+++ b/src/widgets/window_edit.rs
@@ -0,0 +1,67 @@
+// Copyright (c) 2024 Sophie Herold
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see .
+//
+// SPDX-License-Identifier: GPL-3.0-or-later
+
+use adw::prelude::*;
+use adw::subclass::prelude::*;
+use adw::{glib, gtk};
+
+mod imp {
+ use super::*;
+ #[derive(Debug, Default, gtk::CompositeTemplate, glib::Properties)]
+ #[properties(wrapper_type = super::LpWindowEdit)]
+ #[template(file = "window_edit.ui")]
+ pub struct LpWindowEdit {
+ #[property(get)]
+ example: u64,
+ }
+
+ #[glib::object_subclass]
+ impl ObjectSubclass for LpWindowEdit {
+ const NAME: &'static str = "LpWindowEdit";
+ type Type = super::LpWindowEdit;
+ type ParentType = adw::Bin;
+
+ fn class_init(klass: &mut Self::Class) {
+ Self::bind_template(klass);
+ }
+
+ fn instance_init(obj: &glib::subclass::InitializingObject) {
+ obj.init_template();
+ }
+ }
+
+ #[glib::derived_properties]
+ impl ObjectImpl for LpWindowEdit {
+ fn constructed(&self) {
+ self.parent_constructed();
+ }
+ }
+
+ impl WidgetImpl for LpWindowEdit {}
+ impl BinImpl for LpWindowEdit {}
+}
+
+glib::wrapper! {
+ pub struct LpWindowEdit(ObjectSubclass)
+ @extends gtk::Widget, adw::Bin;
+}
+
+impl LpWindowEdit {
+ pub fn new() -> Self {
+ glib::Object::new()
+ }
+}
diff --git a/src/widgets/window_edit.ui b/src/widgets/window_edit.ui
new file mode 100644
index 0000000..d16d64d
--- /dev/null
+++ b/src/widgets/window_edit.ui
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
diff --git a/src/window.rs b/src/window.rs
index 696ff2c..81c00f4 100644
--- a/src/window.rs
+++ b/src/window.rs
@@ -17,21 +17,18 @@
use adw::prelude::*;
use adw::subclass::prelude::*;
+use gio::glib::VariantTy;
use gtk::CompositeTemplate;
use crate::config;
use crate::deps::*;
-use crate::widgets::LpImageView;
+use crate::widgets::{LpImageView, LpWindowEdit, LpWindowImage};
/// Show window after X milliseconds even if image dimensions are not known yet
const SHOW_WINDOW_AFTER: u64 = 2000;
mod imp {
-
- use gio::glib::VariantTy;
-
use super::*;
- use crate::widgets::LpWindowImage;
// To use composite templates, you need
// to use derive macro. Derive macros generate
@@ -52,9 +49,13 @@ mod imp {
pub struct LpWindow {
#[template_child]
pub(super) toast_overlay: TemplateChild,
+ #[template_child]
+ pub(super) stack: TemplateChild,
#[template_child]
pub(super) window_image: TemplateChild,
+ #[template_child]
+ pub(super) window_edit: TemplateChild,
}
#[glib::object_subclass]
@@ -190,7 +191,7 @@ impl LpWindow {
}
pub fn show_edit(&self) {
- todo!()
+ self.imp().stack.set_visible_child(&*self.imp().window_edit);
}
pub fn image_view(&self) -> LpImageView {
diff --git a/src/window.ui b/src/window.ui
index a93f412..8b8001e 100644
--- a/src/window.ui
+++ b/src/window.ui
@@ -22,8 +22,15 @@
-
- LpWindow
+
+
+
+ LpWindow
+
+
+
+
+