libadwaita/auto/
view_stack_pages.rs1use crate::{ffi, ViewStackPage};
7use glib::{
8 prelude::*,
9 signal::{connect_raw, SignalHandlerId},
10 translate::*,
11};
12use std::boxed::Box as Box_;
13
14glib::wrapper! {
15 #[doc(alias = "AdwViewStackPages")]
16 pub struct ViewStackPages(Object<ffi::AdwViewStackPages, ffi::AdwViewStackPagesClass>) @implements gio::ListModel, gtk::SelectionModel;
17
18 match fn {
19 type_ => || ffi::adw_view_stack_pages_get_type(),
20 }
21}
22
23impl ViewStackPages {
24 #[doc(alias = "adw_view_stack_pages_get_selected_page")]
25 #[doc(alias = "get_selected_page")]
26 #[doc(alias = "selected-page")]
27 pub fn selected_page(&self) -> Option<ViewStackPage> {
28 unsafe {
29 from_glib_none(ffi::adw_view_stack_pages_get_selected_page(
30 self.to_glib_none().0,
31 ))
32 }
33 }
34
35 #[doc(alias = "adw_view_stack_pages_set_selected_page")]
36 #[doc(alias = "selected-page")]
37 pub fn set_selected_page(&self, page: &ViewStackPage) {
38 unsafe {
39 ffi::adw_view_stack_pages_set_selected_page(
40 self.to_glib_none().0,
41 page.to_glib_none().0,
42 );
43 }
44 }
45
46 #[cfg(feature = "v1_4")]
47 #[cfg_attr(docsrs, doc(cfg(feature = "v1_4")))]
48 #[doc(alias = "selected-page")]
49 pub fn connect_selected_page_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
50 unsafe extern "C" fn notify_selected_page_trampoline<F: Fn(&ViewStackPages) + 'static>(
51 this: *mut ffi::AdwViewStackPages,
52 _param_spec: glib::ffi::gpointer,
53 f: glib::ffi::gpointer,
54 ) {
55 let f: &F = &*(f as *const F);
56 f(&from_glib_borrow(this))
57 }
58 unsafe {
59 let f: Box_<F> = Box_::new(f);
60 connect_raw(
61 self.as_ptr() as *mut _,
62 c"notify::selected-page".as_ptr() as *const _,
63 Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
64 notify_selected_page_trampoline::<F> as *const (),
65 )),
66 Box_::into_raw(f),
67 )
68 }
69 }
70}