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    /// A [`ShortcutTrigger`][crate::ShortcutTrigger] that combines two triggers.
10    ///
11    /// The [`AlternativeTrigger`][crate::AlternativeTrigger] triggers when either of two trigger.
12    ///
13    /// This can be cascaded to combine more than two triggers.
14    ///
15    /// ## Properties
16    ///
17    ///
18    /// #### `first`
19    ///  The first [`ShortcutTrigger`][crate::ShortcutTrigger] to check.
20    ///
21    /// Readable | Writeable | Construct Only
22    ///
23    ///
24    /// #### `second`
25    ///  The second [`ShortcutTrigger`][crate::ShortcutTrigger] to check.
26    ///
27    /// Readable | Writeable | Construct Only
28    ///
29    /// # Implements
30    ///
31    /// [`ShortcutTriggerExt`][trait@crate::prelude::ShortcutTriggerExt], [`trait@glib::ObjectExt`], [`ShortcutTriggerExtManual`][trait@crate::prelude::ShortcutTriggerExtManual]
32    #[doc(alias = "GtkAlternativeTrigger")]
33    pub struct AlternativeTrigger(Object<ffi::GtkAlternativeTrigger, ffi::GtkAlternativeTriggerClass>) @extends ShortcutTrigger;
34
35    match fn {
36        type_ => || ffi::gtk_alternative_trigger_get_type(),
37    }
38}
39
40impl AlternativeTrigger {
41    /// Creates a [`ShortcutTrigger`][crate::ShortcutTrigger] that will trigger whenever
42    /// either of the two given triggers gets triggered.
43    ///
44    /// Note that nesting is allowed, so if you want more than two
45    /// alternative, create a new alternative trigger for each option.
46    /// ## `first`
47    /// The first trigger that may trigger
48    /// ## `second`
49    /// The second trigger that may trigger
50    ///
51    /// # Returns
52    ///
53    /// a new [`ShortcutTrigger`][crate::ShortcutTrigger]
54    #[doc(alias = "gtk_alternative_trigger_new")]
55    pub fn new(
56        first: impl IsA<ShortcutTrigger>,
57        second: impl IsA<ShortcutTrigger>,
58    ) -> AlternativeTrigger {
59        skip_assert_initialized!();
60        unsafe {
61            ShortcutTrigger::from_glib_full(ffi::gtk_alternative_trigger_new(
62                first.upcast().into_glib_ptr(),
63                second.upcast().into_glib_ptr(),
64            ))
65            .unsafe_cast()
66        }
67    }
68
69    // rustdoc-stripper-ignore-next
70    /// Creates a new builder-pattern struct instance to construct [`AlternativeTrigger`] objects.
71    ///
72    /// This method returns an instance of [`AlternativeTriggerBuilder`](crate::builders::AlternativeTriggerBuilder) which can be used to create [`AlternativeTrigger`] objects.
73    pub fn builder() -> AlternativeTriggerBuilder {
74        AlternativeTriggerBuilder::new()
75    }
76
77    /// Gets the first of the two alternative triggers that may
78    /// trigger @self.
79    ///
80    /// [`second()`][Self::second()] will return
81    /// the other one.
82    ///
83    /// # Returns
84    ///
85    /// the first alternative trigger
86    #[doc(alias = "gtk_alternative_trigger_get_first")]
87    #[doc(alias = "get_first")]
88    pub fn first(&self) -> ShortcutTrigger {
89        unsafe {
90            from_glib_none(ffi::gtk_alternative_trigger_get_first(
91                self.to_glib_none().0,
92            ))
93        }
94    }
95
96    /// Gets the second of the two alternative triggers that may
97    /// trigger @self.
98    ///
99    /// [`first()`][Self::first()] will return
100    /// the other one.
101    ///
102    /// # Returns
103    ///
104    /// the second alternative trigger
105    #[doc(alias = "gtk_alternative_trigger_get_second")]
106    #[doc(alias = "get_second")]
107    pub fn second(&self) -> ShortcutTrigger {
108        unsafe {
109            from_glib_none(ffi::gtk_alternative_trigger_get_second(
110                self.to_glib_none().0,
111            ))
112        }
113    }
114}
115
116impl Default for AlternativeTrigger {
117    fn default() -> Self {
118        glib::object::Object::new::<Self>()
119    }
120}
121
122// rustdoc-stripper-ignore-next
123/// A [builder-pattern] type to construct [`AlternativeTrigger`] objects.
124///
125/// [builder-pattern]: https://doc.rust-lang.org/1.0.0/style/ownership/builders.html
126#[must_use = "The builder must be built to be used"]
127pub struct AlternativeTriggerBuilder {
128    builder: glib::object::ObjectBuilder<'static, AlternativeTrigger>,
129}
130
131impl AlternativeTriggerBuilder {
132    fn new() -> Self {
133        Self {
134            builder: glib::object::Object::builder(),
135        }
136    }
137
138    /// The first [`ShortcutTrigger`][crate::ShortcutTrigger] to check.
139    pub fn first(self, first: &impl IsA<ShortcutTrigger>) -> Self {
140        Self {
141            builder: self.builder.property("first", first.clone().upcast()),
142        }
143    }
144
145    /// The second [`ShortcutTrigger`][crate::ShortcutTrigger] to check.
146    pub fn second(self, second: &impl IsA<ShortcutTrigger>) -> Self {
147        Self {
148            builder: self.builder.property("second", second.clone().upcast()),
149        }
150    }
151
152    // rustdoc-stripper-ignore-next
153    /// Build the [`AlternativeTrigger`].
154    #[must_use = "Building the object from the builder is usually expensive and is not expected to have side effects"]
155    pub fn build(self) -> AlternativeTrigger {
156        assert_initialized_main_thread!();
157        self.builder.build()
158    }
159}