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}