Skip to main content

gio/auto/
action_group.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
5use crate::ffi;
6use glib::{
7    object::ObjectType as _,
8    prelude::*,
9    signal::{SignalHandlerId, connect_raw},
10    translate::*,
11};
12use std::boxed::Box as Box_;
13
14glib::wrapper! {
15    #[doc(alias = "GActionGroup")]
16    pub struct ActionGroup(Interface<ffi::GActionGroup, ffi::GActionGroupInterface>);
17
18    match fn {
19        type_ => || ffi::g_action_group_get_type(),
20    }
21}
22
23impl ActionGroup {
24    pub const NONE: Option<&'static ActionGroup> = None;
25}
26
27pub trait ActionGroupExt: IsA<ActionGroup> + 'static {
28    #[doc(alias = "g_action_group_action_added")]
29    fn action_added(&self, action_name: &str) {
30        unsafe {
31            ffi::g_action_group_action_added(
32                self.as_ref().to_glib_none().0,
33                action_name.to_glib_none().0,
34            );
35        }
36    }
37
38    #[doc(alias = "g_action_group_action_enabled_changed")]
39    fn action_enabled_changed(&self, action_name: &str, enabled: bool) {
40        unsafe {
41            ffi::g_action_group_action_enabled_changed(
42                self.as_ref().to_glib_none().0,
43                action_name.to_glib_none().0,
44                enabled.into_glib(),
45            );
46        }
47    }
48
49    #[doc(alias = "g_action_group_action_removed")]
50    fn action_removed(&self, action_name: &str) {
51        unsafe {
52            ffi::g_action_group_action_removed(
53                self.as_ref().to_glib_none().0,
54                action_name.to_glib_none().0,
55            );
56        }
57    }
58
59    #[doc(alias = "g_action_group_action_state_changed")]
60    fn action_state_changed(&self, action_name: &str, state: &glib::Variant) {
61        unsafe {
62            ffi::g_action_group_action_state_changed(
63                self.as_ref().to_glib_none().0,
64                action_name.to_glib_none().0,
65                state.to_glib_none().0,
66            );
67        }
68    }
69
70    #[doc(alias = "g_action_group_activate_action")]
71    fn activate_action(&self, action_name: &str, parameter: Option<&glib::Variant>) {
72        unsafe {
73            ffi::g_action_group_activate_action(
74                self.as_ref().to_glib_none().0,
75                action_name.to_glib_none().0,
76                parameter.to_glib_none().0,
77            );
78        }
79    }
80
81    #[doc(alias = "g_action_group_change_action_state")]
82    fn change_action_state(&self, action_name: &str, value: &glib::Variant) {
83        unsafe {
84            ffi::g_action_group_change_action_state(
85                self.as_ref().to_glib_none().0,
86                action_name.to_glib_none().0,
87                value.to_glib_none().0,
88            );
89        }
90    }
91
92    #[doc(alias = "g_action_group_get_action_enabled")]
93    #[doc(alias = "get_action_enabled")]
94    fn is_action_enabled(&self, action_name: &str) -> bool {
95        unsafe {
96            from_glib(ffi::g_action_group_get_action_enabled(
97                self.as_ref().to_glib_none().0,
98                action_name.to_glib_none().0,
99            ))
100        }
101    }
102
103    #[doc(alias = "g_action_group_get_action_parameter_type")]
104    #[doc(alias = "get_action_parameter_type")]
105    fn action_parameter_type(&self, action_name: &str) -> Option<glib::VariantType> {
106        unsafe {
107            from_glib_none(ffi::g_action_group_get_action_parameter_type(
108                self.as_ref().to_glib_none().0,
109                action_name.to_glib_none().0,
110            ))
111        }
112    }
113
114    #[doc(alias = "g_action_group_get_action_state")]
115    #[doc(alias = "get_action_state")]
116    fn action_state(&self, action_name: &str) -> Option<glib::Variant> {
117        unsafe {
118            from_glib_full(ffi::g_action_group_get_action_state(
119                self.as_ref().to_glib_none().0,
120                action_name.to_glib_none().0,
121            ))
122        }
123    }
124
125    #[doc(alias = "g_action_group_get_action_state_hint")]
126    #[doc(alias = "get_action_state_hint")]
127    fn action_state_hint(&self, action_name: &str) -> Option<glib::Variant> {
128        unsafe {
129            from_glib_full(ffi::g_action_group_get_action_state_hint(
130                self.as_ref().to_glib_none().0,
131                action_name.to_glib_none().0,
132            ))
133        }
134    }
135
136    #[doc(alias = "g_action_group_get_action_state_type")]
137    #[doc(alias = "get_action_state_type")]
138    fn action_state_type(&self, action_name: &str) -> Option<glib::VariantType> {
139        unsafe {
140            from_glib_none(ffi::g_action_group_get_action_state_type(
141                self.as_ref().to_glib_none().0,
142                action_name.to_glib_none().0,
143            ))
144        }
145    }
146
147    #[doc(alias = "g_action_group_has_action")]
148    fn has_action(&self, action_name: &str) -> bool {
149        unsafe {
150            from_glib(ffi::g_action_group_has_action(
151                self.as_ref().to_glib_none().0,
152                action_name.to_glib_none().0,
153            ))
154        }
155    }
156
157    #[doc(alias = "g_action_group_list_actions")]
158    fn list_actions(&self) -> Vec<glib::GString> {
159        unsafe {
160            FromGlibPtrContainer::from_glib_full(ffi::g_action_group_list_actions(
161                self.as_ref().to_glib_none().0,
162            ))
163        }
164    }
165
166    #[doc(alias = "action-added")]
167    fn connect_action_added<F: Fn(&Self, &str) + 'static>(
168        &self,
169        detail: Option<&str>,
170        f: F,
171    ) -> SignalHandlerId {
172        unsafe extern "C" fn action_added_trampoline<
173            P: IsA<ActionGroup>,
174            F: Fn(&P, &str) + 'static,
175        >(
176            this: *mut ffi::GActionGroup,
177            action_name: *mut std::ffi::c_char,
178            f: glib::ffi::gpointer,
179        ) {
180            unsafe {
181                let f: &F = &*(f as *const F);
182                f(
183                    ActionGroup::from_glib_borrow(this).unsafe_cast_ref(),
184                    &glib::GString::from_glib_borrow(action_name),
185                )
186            }
187        }
188        unsafe {
189            let f: Box_<F> = Box_::new(f);
190            let detailed_signal_name = detail.map(|name| format!("action-added::{name}\0"));
191            let signal_name = detailed_signal_name.as_ref().map_or(c"action-added", |n| {
192                std::ffi::CStr::from_bytes_with_nul_unchecked(n.as_bytes())
193            });
194            connect_raw(
195                self.as_ptr() as *mut _,
196                signal_name.as_ptr(),
197                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
198                    action_added_trampoline::<Self, F> as *const (),
199                )),
200                Box_::into_raw(f),
201            )
202        }
203    }
204
205    #[doc(alias = "action-enabled-changed")]
206    fn connect_action_enabled_changed<F: Fn(&Self, &str, bool) + 'static>(
207        &self,
208        detail: Option<&str>,
209        f: F,
210    ) -> SignalHandlerId {
211        unsafe extern "C" fn action_enabled_changed_trampoline<
212            P: IsA<ActionGroup>,
213            F: Fn(&P, &str, bool) + 'static,
214        >(
215            this: *mut ffi::GActionGroup,
216            action_name: *mut std::ffi::c_char,
217            enabled: glib::ffi::gboolean,
218            f: glib::ffi::gpointer,
219        ) {
220            unsafe {
221                let f: &F = &*(f as *const F);
222                f(
223                    ActionGroup::from_glib_borrow(this).unsafe_cast_ref(),
224                    &glib::GString::from_glib_borrow(action_name),
225                    from_glib(enabled),
226                )
227            }
228        }
229        unsafe {
230            let f: Box_<F> = Box_::new(f);
231            let detailed_signal_name =
232                detail.map(|name| format!("action-enabled-changed::{name}\0"));
233            let signal_name = detailed_signal_name
234                .as_ref()
235                .map_or(c"action-enabled-changed", |n| {
236                    std::ffi::CStr::from_bytes_with_nul_unchecked(n.as_bytes())
237                });
238            connect_raw(
239                self.as_ptr() as *mut _,
240                signal_name.as_ptr(),
241                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
242                    action_enabled_changed_trampoline::<Self, F> as *const (),
243                )),
244                Box_::into_raw(f),
245            )
246        }
247    }
248
249    #[doc(alias = "action-removed")]
250    fn connect_action_removed<F: Fn(&Self, &str) + 'static>(
251        &self,
252        detail: Option<&str>,
253        f: F,
254    ) -> SignalHandlerId {
255        unsafe extern "C" fn action_removed_trampoline<
256            P: IsA<ActionGroup>,
257            F: Fn(&P, &str) + 'static,
258        >(
259            this: *mut ffi::GActionGroup,
260            action_name: *mut std::ffi::c_char,
261            f: glib::ffi::gpointer,
262        ) {
263            unsafe {
264                let f: &F = &*(f as *const F);
265                f(
266                    ActionGroup::from_glib_borrow(this).unsafe_cast_ref(),
267                    &glib::GString::from_glib_borrow(action_name),
268                )
269            }
270        }
271        unsafe {
272            let f: Box_<F> = Box_::new(f);
273            let detailed_signal_name = detail.map(|name| format!("action-removed::{name}\0"));
274            let signal_name = detailed_signal_name
275                .as_ref()
276                .map_or(c"action-removed", |n| {
277                    std::ffi::CStr::from_bytes_with_nul_unchecked(n.as_bytes())
278                });
279            connect_raw(
280                self.as_ptr() as *mut _,
281                signal_name.as_ptr(),
282                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
283                    action_removed_trampoline::<Self, F> as *const (),
284                )),
285                Box_::into_raw(f),
286            )
287        }
288    }
289
290    #[doc(alias = "action-state-changed")]
291    fn connect_action_state_changed<F: Fn(&Self, &str, &glib::Variant) + 'static>(
292        &self,
293        detail: Option<&str>,
294        f: F,
295    ) -> SignalHandlerId {
296        unsafe extern "C" fn action_state_changed_trampoline<
297            P: IsA<ActionGroup>,
298            F: Fn(&P, &str, &glib::Variant) + 'static,
299        >(
300            this: *mut ffi::GActionGroup,
301            action_name: *mut std::ffi::c_char,
302            value: *mut glib::ffi::GVariant,
303            f: glib::ffi::gpointer,
304        ) {
305            unsafe {
306                let f: &F = &*(f as *const F);
307                f(
308                    ActionGroup::from_glib_borrow(this).unsafe_cast_ref(),
309                    &glib::GString::from_glib_borrow(action_name),
310                    &from_glib_borrow(value),
311                )
312            }
313        }
314        unsafe {
315            let f: Box_<F> = Box_::new(f);
316            let detailed_signal_name = detail.map(|name| format!("action-state-changed::{name}\0"));
317            let signal_name = detailed_signal_name
318                .as_ref()
319                .map_or(c"action-state-changed", |n| {
320                    std::ffi::CStr::from_bytes_with_nul_unchecked(n.as_bytes())
321                });
322            connect_raw(
323                self.as_ptr() as *mut _,
324                signal_name.as_ptr(),
325                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
326                    action_state_changed_trampoline::<Self, F> as *const (),
327                )),
328                Box_::into_raw(f),
329            )
330        }
331    }
332}
333
334impl<O: IsA<ActionGroup>> ActionGroupExt for O {}