From 0e490f38adb908a7e8bfc3971ea5b301afab9408 Mon Sep 17 00:00:00 2001 From: Sophie Herold Date: Tue, 26 Dec 2023 23:32:37 +0100 Subject: [PATCH] print: Init preview image more cleanly --- src/widgets/print.rs | 18 +++++++++++++----- src/widgets/print_preview.rs | 4 ++-- 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/src/widgets/print.rs b/src/widgets/print.rs index 0afa968..9553a5c 100644 --- a/src/widgets/print.rs +++ b/src/widgets/print.rs @@ -249,6 +249,8 @@ mod imp { #[property(get, set, construct_only)] pub(super) image: OnceCell, #[property(get, set, construct_only)] + pub(super) preview_image: OnceCell, + #[property(get, set, construct_only)] pub(super) parent_window: OnceCell, #[property(get, set, construct_only)] pub(super) print_settings: OnceCell, @@ -479,19 +481,25 @@ glib::wrapper! { impl LpPrint { pub fn new( - image1: LpImage, + image: LpImage, parent_window: gtk::Window, print_settings: Option, page_setup: Option, ) -> Self { - let image = LpImage::new_still(); - image.set_fixed_background_color(Some(gdk::RGBA::new(0.94, 0.94, 0.94, 1.))); - let image2 = image.clone(); - glib::spawn_future_local(async move { image2.load(&image1.file().unwrap()).await }); + let preview_image = LpImage::new_still(); + preview_image.set_fixed_background_color(Some(gdk::RGBA::new(0.94, 0.94, 0.94, 1.))); + if let Some(file) = image.file() { + let preview_image_ = preview_image.clone(); + glib::spawn_future_local(async move { preview_image_.load(&file).await }); + } else { + log::error!("Trying to print image without file"); + } + let print_settings = print_settings.unwrap_or_default(); let obj: Self = glib::Object::builder() .property("image", image) + .property("preview-image", preview_image) .property("print-settings", print_settings) .property("parent-window", parent_window) .build(); diff --git a/src/widgets/print_preview.rs b/src/widgets/print_preview.rs index 2653f81..1d5d878 100644 --- a/src/widgets/print_preview.rs +++ b/src/widgets/print_preview.rs @@ -62,7 +62,7 @@ mod imp_page { let width = self.print().user_width() * self.display_scale(); let height = self.print().user_height() * self.display_scale(); - let image = self.print().image(); + let image = self.print().preview_image(); image.allocate( width as i32, @@ -195,7 +195,7 @@ impl Default for LpPrintPreviewPage { impl LpPrintPreviewPage { fn init(&self) { let imp = self.imp(); - let image = imp.preview().print().image(); + let image = imp.preview().print().preview_image(); image.set_sensitive(false); image.set_parent(self);