gtk4/auto/
print_operation_preview.rs1use crate::{ffi, PageSetup, PrintContext};
6use glib::{
7 object::ObjectType as _,
8 prelude::*,
9 signal::{connect_raw, SignalHandlerId},
10 translate::*,
11};
12use std::boxed::Box as Box_;
13
14glib::wrapper! {
15 #[doc(alias = "GtkPrintOperationPreview")]
16 pub struct PrintOperationPreview(Interface<ffi::GtkPrintOperationPreview, ffi::GtkPrintOperationPreviewIface>);
17
18 match fn {
19 type_ => || ffi::gtk_print_operation_preview_get_type(),
20 }
21}
22
23impl PrintOperationPreview {
24 pub const NONE: Option<&'static PrintOperationPreview> = None;
25}
26
27pub trait PrintOperationPreviewExt: IsA<PrintOperationPreview> + 'static {
28 #[doc(alias = "gtk_print_operation_preview_end_preview")]
29 fn end_preview(&self) {
30 unsafe {
31 ffi::gtk_print_operation_preview_end_preview(self.as_ref().to_glib_none().0);
32 }
33 }
34
35 #[doc(alias = "gtk_print_operation_preview_is_selected")]
36 fn is_selected(&self, page_nr: i32) -> bool {
37 unsafe {
38 from_glib(ffi::gtk_print_operation_preview_is_selected(
39 self.as_ref().to_glib_none().0,
40 page_nr,
41 ))
42 }
43 }
44
45 #[doc(alias = "gtk_print_operation_preview_render_page")]
46 fn render_page(&self, page_nr: i32) {
47 unsafe {
48 ffi::gtk_print_operation_preview_render_page(self.as_ref().to_glib_none().0, page_nr);
49 }
50 }
51
52 #[doc(alias = "got-page-size")]
53 fn connect_got_page_size<F: Fn(&Self, &PrintContext, &PageSetup) + 'static>(
54 &self,
55 f: F,
56 ) -> SignalHandlerId {
57 unsafe extern "C" fn got_page_size_trampoline<
58 P: IsA<PrintOperationPreview>,
59 F: Fn(&P, &PrintContext, &PageSetup) + 'static,
60 >(
61 this: *mut ffi::GtkPrintOperationPreview,
62 context: *mut ffi::GtkPrintContext,
63 page_setup: *mut ffi::GtkPageSetup,
64 f: glib::ffi::gpointer,
65 ) {
66 let f: &F = &*(f as *const F);
67 f(
68 PrintOperationPreview::from_glib_borrow(this).unsafe_cast_ref(),
69 &from_glib_borrow(context),
70 &from_glib_borrow(page_setup),
71 )
72 }
73 unsafe {
74 let f: Box_<F> = Box_::new(f);
75 connect_raw(
76 self.as_ptr() as *mut _,
77 c"got-page-size".as_ptr() as *const _,
78 Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
79 got_page_size_trampoline::<Self, F> as *const (),
80 )),
81 Box_::into_raw(f),
82 )
83 }
84 }
85
86 #[doc(alias = "ready")]
87 fn connect_ready<F: Fn(&Self, &PrintContext) + 'static>(&self, f: F) -> SignalHandlerId {
88 unsafe extern "C" fn ready_trampoline<
89 P: IsA<PrintOperationPreview>,
90 F: Fn(&P, &PrintContext) + 'static,
91 >(
92 this: *mut ffi::GtkPrintOperationPreview,
93 context: *mut ffi::GtkPrintContext,
94 f: glib::ffi::gpointer,
95 ) {
96 let f: &F = &*(f as *const F);
97 f(
98 PrintOperationPreview::from_glib_borrow(this).unsafe_cast_ref(),
99 &from_glib_borrow(context),
100 )
101 }
102 unsafe {
103 let f: Box_<F> = Box_::new(f);
104 connect_raw(
105 self.as_ptr() as *mut _,
106 c"ready".as_ptr() as *const _,
107 Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
108 ready_trampoline::<Self, F> as *const (),
109 )),
110 Box_::into_raw(f),
111 )
112 }
113 }
114}
115
116impl<O: IsA<PrintOperationPreview>> PrintOperationPreviewExt for O {}