gtk4/auto/
accessible.rs

1// This file was generated by gir (https://github.com/gtk-rs/gir)
2// from gir-files (https://github.com/gtk-rs/gir-files)
3// DO NOT EDIT
4
5#[cfg(feature = "v4_14")]
6#[cfg_attr(docsrs, doc(cfg(feature = "v4_14")))]
7use crate::AccessibleAnnouncementPriority;
8use crate::{ffi, AccessibleProperty, AccessibleRelation, AccessibleRole, AccessibleState};
9#[cfg(feature = "v4_10")]
10#[cfg_attr(docsrs, doc(cfg(feature = "v4_10")))]
11use crate::{ATContext, AccessiblePlatformState};
12use glib::{
13    prelude::*,
14    signal::{connect_raw, SignalHandlerId},
15    translate::*,
16};
17use std::boxed::Box as Box_;
18
19glib::wrapper! {
20    #[doc(alias = "GtkAccessible")]
21    pub struct Accessible(Interface<ffi::GtkAccessible, ffi::GtkAccessibleInterface>);
22
23    match fn {
24        type_ => || ffi::gtk_accessible_get_type(),
25    }
26}
27
28impl Accessible {
29    pub const NONE: Option<&'static Accessible> = None;
30}
31
32mod sealed {
33    pub trait Sealed {}
34    impl<T: super::IsA<super::Accessible>> Sealed for T {}
35}
36
37pub trait AccessibleExt: IsA<Accessible> + sealed::Sealed + 'static {
38    #[cfg(feature = "v4_14")]
39    #[cfg_attr(docsrs, doc(cfg(feature = "v4_14")))]
40    #[doc(alias = "gtk_accessible_announce")]
41    fn announce(&self, message: &str, priority: AccessibleAnnouncementPriority) {
42        unsafe {
43            ffi::gtk_accessible_announce(
44                self.as_ref().to_glib_none().0,
45                message.to_glib_none().0,
46                priority.into_glib(),
47            );
48        }
49    }
50
51    #[cfg(feature = "v4_10")]
52    #[cfg_attr(docsrs, doc(cfg(feature = "v4_10")))]
53    #[doc(alias = "gtk_accessible_get_accessible_parent")]
54    #[doc(alias = "get_accessible_parent")]
55    #[must_use]
56    fn accessible_parent(&self) -> Option<Accessible> {
57        unsafe {
58            from_glib_full(ffi::gtk_accessible_get_accessible_parent(
59                self.as_ref().to_glib_none().0,
60            ))
61        }
62    }
63
64    #[doc(alias = "gtk_accessible_get_accessible_role")]
65    #[doc(alias = "get_accessible_role")]
66    #[doc(alias = "accessible-role")]
67    fn accessible_role(&self) -> AccessibleRole {
68        unsafe {
69            from_glib(ffi::gtk_accessible_get_accessible_role(
70                self.as_ref().to_glib_none().0,
71            ))
72        }
73    }
74
75    #[cfg(feature = "v4_10")]
76    #[cfg_attr(docsrs, doc(cfg(feature = "v4_10")))]
77    #[doc(alias = "gtk_accessible_get_at_context")]
78    #[doc(alias = "get_at_context")]
79    fn at_context(&self) -> ATContext {
80        unsafe {
81            from_glib_full(ffi::gtk_accessible_get_at_context(
82                self.as_ref().to_glib_none().0,
83            ))
84        }
85    }
86
87    #[cfg(feature = "v4_10")]
88    #[cfg_attr(docsrs, doc(cfg(feature = "v4_10")))]
89    #[doc(alias = "gtk_accessible_get_bounds")]
90    #[doc(alias = "get_bounds")]
91    fn bounds(&self) -> Option<(i32, i32, i32, i32)> {
92        unsafe {
93            let mut x = std::mem::MaybeUninit::uninit();
94            let mut y = std::mem::MaybeUninit::uninit();
95            let mut width = std::mem::MaybeUninit::uninit();
96            let mut height = std::mem::MaybeUninit::uninit();
97            let ret = from_glib(ffi::gtk_accessible_get_bounds(
98                self.as_ref().to_glib_none().0,
99                x.as_mut_ptr(),
100                y.as_mut_ptr(),
101                width.as_mut_ptr(),
102                height.as_mut_ptr(),
103            ));
104            if ret {
105                Some((
106                    x.assume_init(),
107                    y.assume_init(),
108                    width.assume_init(),
109                    height.assume_init(),
110                ))
111            } else {
112                None
113            }
114        }
115    }
116
117    #[cfg(feature = "v4_10")]
118    #[cfg_attr(docsrs, doc(cfg(feature = "v4_10")))]
119    #[doc(alias = "gtk_accessible_get_first_accessible_child")]
120    #[doc(alias = "get_first_accessible_child")]
121    #[must_use]
122    fn first_accessible_child(&self) -> Option<Accessible> {
123        unsafe {
124            from_glib_full(ffi::gtk_accessible_get_first_accessible_child(
125                self.as_ref().to_glib_none().0,
126            ))
127        }
128    }
129
130    #[cfg(feature = "v4_10")]
131    #[cfg_attr(docsrs, doc(cfg(feature = "v4_10")))]
132    #[doc(alias = "gtk_accessible_get_next_accessible_sibling")]
133    #[doc(alias = "get_next_accessible_sibling")]
134    #[must_use]
135    fn next_accessible_sibling(&self) -> Option<Accessible> {
136        unsafe {
137            from_glib_full(ffi::gtk_accessible_get_next_accessible_sibling(
138                self.as_ref().to_glib_none().0,
139            ))
140        }
141    }
142
143    #[cfg(feature = "v4_10")]
144    #[cfg_attr(docsrs, doc(cfg(feature = "v4_10")))]
145    #[doc(alias = "gtk_accessible_get_platform_state")]
146    #[doc(alias = "get_platform_state")]
147    fn platform_state(&self, state: AccessiblePlatformState) -> bool {
148        unsafe {
149            from_glib(ffi::gtk_accessible_get_platform_state(
150                self.as_ref().to_glib_none().0,
151                state.into_glib(),
152            ))
153        }
154    }
155
156    #[doc(alias = "gtk_accessible_reset_property")]
157    fn reset_property(&self, property: AccessibleProperty) {
158        unsafe {
159            ffi::gtk_accessible_reset_property(
160                self.as_ref().to_glib_none().0,
161                property.into_glib(),
162            );
163        }
164    }
165
166    #[doc(alias = "gtk_accessible_reset_relation")]
167    fn reset_relation(&self, relation: AccessibleRelation) {
168        unsafe {
169            ffi::gtk_accessible_reset_relation(
170                self.as_ref().to_glib_none().0,
171                relation.into_glib(),
172            );
173        }
174    }
175
176    #[doc(alias = "gtk_accessible_reset_state")]
177    fn reset_state(&self, state: AccessibleState) {
178        unsafe {
179            ffi::gtk_accessible_reset_state(self.as_ref().to_glib_none().0, state.into_glib());
180        }
181    }
182
183    #[cfg(feature = "v4_10")]
184    #[cfg_attr(docsrs, doc(cfg(feature = "v4_10")))]
185    #[doc(alias = "gtk_accessible_set_accessible_parent")]
186    fn set_accessible_parent(
187        &self,
188        parent: Option<&impl IsA<Accessible>>,
189        next_sibling: Option<&impl IsA<Accessible>>,
190    ) {
191        unsafe {
192            ffi::gtk_accessible_set_accessible_parent(
193                self.as_ref().to_glib_none().0,
194                parent.map(|p| p.as_ref()).to_glib_none().0,
195                next_sibling.map(|p| p.as_ref()).to_glib_none().0,
196            );
197        }
198    }
199
200    #[cfg(feature = "v4_10")]
201    #[cfg_attr(docsrs, doc(cfg(feature = "v4_10")))]
202    #[doc(alias = "gtk_accessible_update_next_accessible_sibling")]
203    fn update_next_accessible_sibling(&self, new_sibling: Option<&impl IsA<Accessible>>) {
204        unsafe {
205            ffi::gtk_accessible_update_next_accessible_sibling(
206                self.as_ref().to_glib_none().0,
207                new_sibling.map(|p| p.as_ref()).to_glib_none().0,
208            );
209        }
210    }
211
212    #[cfg(feature = "v4_18")]
213    #[cfg_attr(docsrs, doc(cfg(feature = "v4_18")))]
214    #[doc(alias = "gtk_accessible_update_platform_state")]
215    fn update_platform_state(&self, state: AccessiblePlatformState) {
216        unsafe {
217            ffi::gtk_accessible_update_platform_state(
218                self.as_ref().to_glib_none().0,
219                state.into_glib(),
220            );
221        }
222    }
223
224    #[doc(alias = "accessible-role")]
225    fn set_accessible_role(&self, accessible_role: AccessibleRole) {
226        ObjectExt::set_property(self.as_ref(), "accessible-role", accessible_role)
227    }
228
229    #[doc(alias = "accessible-role")]
230    fn connect_accessible_role_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
231        unsafe extern "C" fn notify_accessible_role_trampoline<
232            P: IsA<Accessible>,
233            F: Fn(&P) + 'static,
234        >(
235            this: *mut ffi::GtkAccessible,
236            _param_spec: glib::ffi::gpointer,
237            f: glib::ffi::gpointer,
238        ) {
239            let f: &F = &*(f as *const F);
240            f(Accessible::from_glib_borrow(this).unsafe_cast_ref())
241        }
242        unsafe {
243            let f: Box_<F> = Box_::new(f);
244            connect_raw(
245                self.as_ptr() as *mut _,
246                b"notify::accessible-role\0".as_ptr() as *const _,
247                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
248                    notify_accessible_role_trampoline::<Self, F> as *const (),
249                )),
250                Box_::into_raw(f),
251            )
252        }
253    }
254}
255
256impl<O: IsA<Accessible>> AccessibleExt for O {}