gtk4/auto/
alternative_trigger.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, ShortcutTrigger};
6use glib::{prelude::*, translate::*};
7
8glib::wrapper! {
9    #[doc(alias = "GtkAlternativeTrigger")]
10    pub struct AlternativeTrigger(Object<ffi::GtkAlternativeTrigger, ffi::GtkAlternativeTriggerClass>) @extends ShortcutTrigger;
11
12    match fn {
13        type_ => || ffi::gtk_alternative_trigger_get_type(),
14    }
15}
16
17impl AlternativeTrigger {
18    #[doc(alias = "gtk_alternative_trigger_new")]
19    pub fn new(
20        first: impl IsA<ShortcutTrigger>,
21        second: impl IsA<ShortcutTrigger>,
22    ) -> AlternativeTrigger {
23        skip_assert_initialized!();
24        unsafe {
25            ShortcutTrigger::from_glib_full(ffi::gtk_alternative_trigger_new(
26                first.upcast().into_glib_ptr(),
27                second.upcast().into_glib_ptr(),
28            ))
29            .unsafe_cast()
30        }
31    }
32
33    // rustdoc-stripper-ignore-next
34    /// Creates a new builder-pattern struct instance to construct [`AlternativeTrigger`] objects.
35    ///
36    /// This method returns an instance of [`AlternativeTriggerBuilder`](crate::builders::AlternativeTriggerBuilder) which can be used to create [`AlternativeTrigger`] objects.
37    pub fn builder() -> AlternativeTriggerBuilder {
38        AlternativeTriggerBuilder::new()
39    }
40
41    #[doc(alias = "gtk_alternative_trigger_get_first")]
42    #[doc(alias = "get_first")]
43    pub fn first(&self) -> ShortcutTrigger {
44        unsafe {
45            from_glib_none(ffi::gtk_alternative_trigger_get_first(
46                self.to_glib_none().0,
47            ))
48        }
49    }
50
51    #[doc(alias = "gtk_alternative_trigger_get_second")]
52    #[doc(alias = "get_second")]
53    pub fn second(&self) -> ShortcutTrigger {
54        unsafe {
55            from_glib_none(ffi::gtk_alternative_trigger_get_second(
56                self.to_glib_none().0,
57            ))
58        }
59    }
60}
61
62impl Default for AlternativeTrigger {
63    fn default() -> Self {
64        glib::object::Object::new::<Self>()
65    }
66}
67
68// rustdoc-stripper-ignore-next
69/// A [builder-pattern] type to construct [`AlternativeTrigger`] objects.
70///
71/// [builder-pattern]: https://doc.rust-lang.org/1.0.0/style/ownership/builders.html
72#[must_use = "The builder must be built to be used"]
73pub struct AlternativeTriggerBuilder {
74    builder: glib::object::ObjectBuilder<'static, AlternativeTrigger>,
75}
76
77impl AlternativeTriggerBuilder {
78    fn new() -> Self {
79        Self {
80            builder: glib::object::Object::builder(),
81        }
82    }
83
84    pub fn first(self, first: &impl IsA<ShortcutTrigger>) -> Self {
85        Self {
86            builder: self.builder.property("first", first.clone().upcast()),
87        }
88    }
89
90    pub fn second(self, second: &impl IsA<ShortcutTrigger>) -> Self {
91        Self {
92            builder: self.builder.property("second", second.clone().upcast()),
93        }
94    }
95
96    // rustdoc-stripper-ignore-next
97    /// Build the [`AlternativeTrigger`].
98    #[must_use = "Building the object from the builder is usually expensive and is not expected to have side effects"]
99    pub fn build(self) -> AlternativeTrigger {
100        assert_initialized_main_thread!();
101        self.builder.build()
102    }
103}