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