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::{connect_raw, SignalHandlerId},
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            let f: &F = &*(f as *const F);
181            f(
182                ActionGroup::from_glib_borrow(this).unsafe_cast_ref(),
183                &glib::GString::from_glib_borrow(action_name),
184            )
185        }
186        unsafe {
187            let f: Box_<F> = Box_::new(f);
188            let detailed_signal_name = detail.map(|name| format!("action-added::{name}\0"));
189            let signal_name: &[u8] = detailed_signal_name
190                .as_ref()
191                .map_or(c"action-added".to_bytes(), |n| n.as_bytes());
192            connect_raw(
193                self.as_ptr() as *mut _,
194                signal_name.as_ptr() as *const _,
195                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
196                    action_added_trampoline::<Self, F> as *const (),
197                )),
198                Box_::into_raw(f),
199            )
200        }
201    }
202
203    #[doc(alias = "action-enabled-changed")]
204    fn connect_action_enabled_changed<F: Fn(&Self, &str, bool) + 'static>(
205        &self,
206        detail: Option<&str>,
207        f: F,
208    ) -> SignalHandlerId {
209        unsafe extern "C" fn action_enabled_changed_trampoline<
210            P: IsA<ActionGroup>,
211            F: Fn(&P, &str, bool) + 'static,
212        >(
213            this: *mut ffi::GActionGroup,
214            action_name: *mut std::ffi::c_char,
215            enabled: glib::ffi::gboolean,
216            f: glib::ffi::gpointer,
217        ) {
218            let f: &F = &*(f as *const F);
219            f(
220                ActionGroup::from_glib_borrow(this).unsafe_cast_ref(),
221                &glib::GString::from_glib_borrow(action_name),
222                from_glib(enabled),
223            )
224        }
225        unsafe {
226            let f: Box_<F> = Box_::new(f);
227            let detailed_signal_name =
228                detail.map(|name| format!("action-enabled-changed::{name}\0"));
229            let signal_name: &[u8] = detailed_signal_name
230                .as_ref()
231                .map_or(c"action-enabled-changed".to_bytes(), |n| n.as_bytes());
232            connect_raw(
233                self.as_ptr() as *mut _,
234                signal_name.as_ptr() as *const _,
235                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
236                    action_enabled_changed_trampoline::<Self, F> as *const (),
237                )),
238                Box_::into_raw(f),
239            )
240        }
241    }
242
243    #[doc(alias = "action-removed")]
244    fn connect_action_removed<F: Fn(&Self, &str) + 'static>(
245        &self,
246        detail: Option<&str>,
247        f: F,
248    ) -> SignalHandlerId {
249        unsafe extern "C" fn action_removed_trampoline<
250            P: IsA<ActionGroup>,
251            F: Fn(&P, &str) + 'static,
252        >(
253            this: *mut ffi::GActionGroup,
254            action_name: *mut std::ffi::c_char,
255            f: glib::ffi::gpointer,
256        ) {
257            let f: &F = &*(f as *const F);
258            f(
259                ActionGroup::from_glib_borrow(this).unsafe_cast_ref(),
260                &glib::GString::from_glib_borrow(action_name),
261            )
262        }
263        unsafe {
264            let f: Box_<F> = Box_::new(f);
265            let detailed_signal_name = detail.map(|name| format!("action-removed::{name}\0"));
266            let signal_name: &[u8] = detailed_signal_name
267                .as_ref()
268                .map_or(c"action-removed".to_bytes(), |n| n.as_bytes());
269            connect_raw(
270                self.as_ptr() as *mut _,
271                signal_name.as_ptr() as *const _,
272                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
273                    action_removed_trampoline::<Self, F> as *const (),
274                )),
275                Box_::into_raw(f),
276            )
277        }
278    }
279
280    #[doc(alias = "action-state-changed")]
281    fn connect_action_state_changed<F: Fn(&Self, &str, &glib::Variant) + 'static>(
282        &self,
283        detail: Option<&str>,
284        f: F,
285    ) -> SignalHandlerId {
286        unsafe extern "C" fn action_state_changed_trampoline<
287            P: IsA<ActionGroup>,
288            F: Fn(&P, &str, &glib::Variant) + 'static,
289        >(
290            this: *mut ffi::GActionGroup,
291            action_name: *mut std::ffi::c_char,
292            value: *mut glib::ffi::GVariant,
293            f: glib::ffi::gpointer,
294        ) {
295            let f: &F = &*(f as *const F);
296            f(
297                ActionGroup::from_glib_borrow(this).unsafe_cast_ref(),
298                &glib::GString::from_glib_borrow(action_name),
299                &from_glib_borrow(value),
300            )
301        }
302        unsafe {
303            let f: Box_<F> = Box_::new(f);
304            let detailed_signal_name = detail.map(|name| format!("action-state-changed::{name}\0"));
305            let signal_name: &[u8] = detailed_signal_name
306                .as_ref()
307                .map_or(c"action-state-changed".to_bytes(), |n| n.as_bytes());
308            connect_raw(
309                self.as_ptr() as *mut _,
310                signal_name.as_ptr() as *const _,
311                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
312                    action_state_changed_trampoline::<Self, F> as *const (),
313                )),
314                Box_::into_raw(f),
315            )
316        }
317    }
318}
319
320impl<O: IsA<ActionGroup>> ActionGroupExt for O {}