Skip to main content

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