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::{ShortcutTrigger, ffi};
6use glib::{prelude::*, translate::*};
7
8glib::wrapper! {
9 /// Combines two shortcut triggers.
10 ///
11 /// The [`AlternativeTrigger`][crate::AlternativeTrigger] triggers when either of the 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 | Writable | Construct Only
22 ///
23 ///
24 /// #### `second`
25 /// The second [`ShortcutTrigger`][crate::ShortcutTrigger] to check.
26 ///
27 /// Readable | Writable | Construct Only
28 ///
29 /// # Implements
30 ///
31 /// [`ShortcutTriggerExt`][trait@crate::prelude::ShortcutTriggerExt], [`trait@glib::ObjectExt`], [`trait@gio::prelude::ListModelExt`], [`ShortcutTriggerExtManual`][trait@crate::prelude::ShortcutTriggerExtManual]
32 #[doc(alias = "GtkAlternativeTrigger")]
33 pub struct AlternativeTrigger(Object<ffi::GtkAlternativeTrigger, ffi::GtkAlternativeTriggerClass>) @extends ShortcutTrigger, @implements gio::ListModel;
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 /// Creates a [`ShortcutTrigger`][crate::ShortcutTrigger] that will trigger whenever
70 /// any of the given triggers gets triggered.
71 /// ## `triggers`
72 /// the triggers
73 ///
74 /// # Returns
75 ///
76 /// a new [`ShortcutTrigger`][crate::ShortcutTrigger]
77 #[cfg(feature = "v4_24")]
78 #[cfg_attr(docsrs, doc(cfg(feature = "v4_24")))]
79 #[doc(alias = "gtk_alternative_trigger_newv")]
80 pub fn newv(triggers: &[ShortcutTrigger]) -> AlternativeTrigger {
81 assert_initialized_main_thread!();
82 let n_triggers = triggers.len() as _;
83 unsafe {
84 ShortcutTrigger::from_glib_full(ffi::gtk_alternative_trigger_newv(
85 triggers.to_glib_full(),
86 n_triggers,
87 ))
88 .unsafe_cast()
89 }
90 }
91
92 // rustdoc-stripper-ignore-next
93 /// Creates a new builder-pattern struct instance to construct [`AlternativeTrigger`] objects.
94 ///
95 /// This method returns an instance of [`AlternativeTriggerBuilder`](crate::builders::AlternativeTriggerBuilder) which can be used to create [`AlternativeTrigger`] objects.
96 pub fn builder() -> AlternativeTriggerBuilder {
97 AlternativeTriggerBuilder::new()
98 }
99
100 /// Gets the first of the two alternative triggers that may
101 /// trigger @self.
102 ///
103 /// [`second()`][Self::second()] will return
104 /// the other one.
105 ///
106 /// # Returns
107 ///
108 /// the first alternative trigger
109 #[doc(alias = "gtk_alternative_trigger_get_first")]
110 #[doc(alias = "get_first")]
111 pub fn first(&self) -> ShortcutTrigger {
112 unsafe {
113 from_glib_none(ffi::gtk_alternative_trigger_get_first(
114 self.to_glib_none().0,
115 ))
116 }
117 }
118
119 /// Gets the second of the two alternative triggers that may
120 /// trigger @self.
121 ///
122 /// [`first()`][Self::first()] will return
123 /// the other one.
124 ///
125 /// # Returns
126 ///
127 /// the second alternative trigger
128 #[doc(alias = "gtk_alternative_trigger_get_second")]
129 #[doc(alias = "get_second")]
130 pub fn second(&self) -> ShortcutTrigger {
131 unsafe {
132 from_glib_none(ffi::gtk_alternative_trigger_get_second(
133 self.to_glib_none().0,
134 ))
135 }
136 }
137}
138
139impl Default for AlternativeTrigger {
140 fn default() -> Self {
141 glib::object::Object::new::<Self>()
142 }
143}
144
145// rustdoc-stripper-ignore-next
146/// A [builder-pattern] type to construct [`AlternativeTrigger`] objects.
147///
148/// [builder-pattern]: https://doc.rust-lang.org/1.0.0/style/ownership/builders.html
149#[must_use = "The builder must be built to be used"]
150pub struct AlternativeTriggerBuilder {
151 builder: glib::object::ObjectBuilder<'static, AlternativeTrigger>,
152}
153
154impl AlternativeTriggerBuilder {
155 fn new() -> Self {
156 Self {
157 builder: glib::object::Object::builder(),
158 }
159 }
160
161 /// The first [`ShortcutTrigger`][crate::ShortcutTrigger] to check.
162 pub fn first(self, first: &impl IsA<ShortcutTrigger>) -> Self {
163 Self {
164 builder: self.builder.property("first", first.clone().upcast()),
165 }
166 }
167
168 /// The second [`ShortcutTrigger`][crate::ShortcutTrigger] to check.
169 pub fn second(self, second: &impl IsA<ShortcutTrigger>) -> Self {
170 Self {
171 builder: self.builder.property("second", second.clone().upcast()),
172 }
173 }
174
175 // rustdoc-stripper-ignore-next
176 /// Build the [`AlternativeTrigger`].
177 #[must_use = "Building the object from the builder is usually expensive and is not expected to have side effects"]
178 pub fn build(self) -> AlternativeTrigger {
179 assert_initialized_main_thread!();
180 self.builder.build()
181 }
182}