1use crate::{StateFlags, Widget};
6use glib::{prelude::*, translate::*};
7use std::fmt;
8
9glib::wrapper! {
10 #[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
11 pub struct WidgetPath(Shared<ffi::GtkWidgetPath>);
12
13 match fn {
14 ref => |ptr| ffi::gtk_widget_path_ref(ptr),
15 unref => |ptr| ffi::gtk_widget_path_unref(ptr),
16 type_ => || ffi::gtk_widget_path_get_type(),
17 }
18}
19
20impl WidgetPath {
21 #[doc(alias = "gtk_widget_path_new")]
22 pub fn new() -> WidgetPath {
23 assert_initialized_main_thread!();
24 unsafe { from_glib_full(ffi::gtk_widget_path_new()) }
25 }
26
27 #[doc(alias = "gtk_widget_path_append_for_widget")]
28 pub fn append_for_widget(&self, widget: &impl IsA<Widget>) -> i32 {
29 unsafe {
30 ffi::gtk_widget_path_append_for_widget(
31 self.to_glib_none().0,
32 widget.as_ref().to_glib_none().0,
33 )
34 }
35 }
36
37 #[doc(alias = "gtk_widget_path_append_type")]
38 pub fn append_type(&self, type_: glib::types::Type) -> i32 {
39 unsafe { ffi::gtk_widget_path_append_type(self.to_glib_none().0, type_.into_glib()) }
40 }
41
42 #[doc(alias = "gtk_widget_path_append_with_siblings")]
43 pub fn append_with_siblings(&self, siblings: &WidgetPath, sibling_index: u32) -> i32 {
44 unsafe {
45 ffi::gtk_widget_path_append_with_siblings(
46 self.to_glib_none().0,
47 siblings.to_glib_none().0,
48 sibling_index,
49 )
50 }
51 }
52
53 #[doc(alias = "gtk_widget_path_copy")]
54 #[must_use]
55 pub fn copy(&self) -> Option<WidgetPath> {
56 unsafe { from_glib_full(ffi::gtk_widget_path_copy(self.to_glib_none().0)) }
57 }
58
59 #[doc(alias = "gtk_widget_path_get_object_type")]
60 #[doc(alias = "get_object_type")]
61 pub fn object_type(&self) -> glib::types::Type {
62 unsafe { from_glib(ffi::gtk_widget_path_get_object_type(self.to_glib_none().0)) }
63 }
64
65 #[doc(alias = "gtk_widget_path_has_parent")]
66 pub fn has_parent(&self, type_: glib::types::Type) -> bool {
67 unsafe {
68 from_glib(ffi::gtk_widget_path_has_parent(
69 self.to_glib_none().0,
70 type_.into_glib(),
71 ))
72 }
73 }
74
75 #[doc(alias = "gtk_widget_path_is_type")]
76 pub fn is_type(&self, type_: glib::types::Type) -> bool {
77 unsafe {
78 from_glib(ffi::gtk_widget_path_is_type(
79 self.to_glib_none().0,
80 type_.into_glib(),
81 ))
82 }
83 }
84
85 #[doc(alias = "gtk_widget_path_iter_add_class")]
86 pub fn iter_add_class(&self, pos: i32, name: &str) {
87 unsafe {
88 ffi::gtk_widget_path_iter_add_class(self.to_glib_none().0, pos, name.to_glib_none().0);
89 }
90 }
91
92 #[doc(alias = "gtk_widget_path_iter_clear_classes")]
93 pub fn iter_clear_classes(&self, pos: i32) {
94 unsafe {
95 ffi::gtk_widget_path_iter_clear_classes(self.to_glib_none().0, pos);
96 }
97 }
98
99 #[doc(alias = "gtk_widget_path_iter_get_name")]
100 pub fn iter_get_name(&self, pos: i32) -> Option<glib::GString> {
101 unsafe {
102 from_glib_none(ffi::gtk_widget_path_iter_get_name(
103 self.to_glib_none().0,
104 pos,
105 ))
106 }
107 }
108
109 #[doc(alias = "gtk_widget_path_iter_get_object_name")]
110 pub fn iter_get_object_name(&self, pos: i32) -> Option<glib::GString> {
111 unsafe {
112 from_glib_none(ffi::gtk_widget_path_iter_get_object_name(
113 self.to_glib_none().0,
114 pos,
115 ))
116 }
117 }
118
119 #[doc(alias = "gtk_widget_path_iter_get_object_type")]
120 pub fn iter_get_object_type(&self, pos: i32) -> glib::types::Type {
121 unsafe {
122 from_glib(ffi::gtk_widget_path_iter_get_object_type(
123 self.to_glib_none().0,
124 pos,
125 ))
126 }
127 }
128
129 #[doc(alias = "gtk_widget_path_iter_get_sibling_index")]
130 pub fn iter_get_sibling_index(&self, pos: i32) -> u32 {
131 unsafe { ffi::gtk_widget_path_iter_get_sibling_index(self.to_glib_none().0, pos) }
132 }
133
134 #[doc(alias = "gtk_widget_path_iter_get_siblings")]
135 #[must_use]
136 pub fn iter_get_siblings(&self, pos: i32) -> Option<WidgetPath> {
137 unsafe {
138 from_glib_none(ffi::gtk_widget_path_iter_get_siblings(
139 self.to_glib_none().0,
140 pos,
141 ))
142 }
143 }
144
145 #[doc(alias = "gtk_widget_path_iter_get_state")]
146 pub fn iter_get_state(&self, pos: i32) -> StateFlags {
147 unsafe {
148 from_glib(ffi::gtk_widget_path_iter_get_state(
149 self.to_glib_none().0,
150 pos,
151 ))
152 }
153 }
154
155 #[doc(alias = "gtk_widget_path_iter_has_class")]
156 pub fn iter_has_class(&self, pos: i32, name: &str) -> bool {
157 unsafe {
158 from_glib(ffi::gtk_widget_path_iter_has_class(
159 self.to_glib_none().0,
160 pos,
161 name.to_glib_none().0,
162 ))
163 }
164 }
165
166 #[doc(alias = "gtk_widget_path_iter_has_name")]
167 pub fn iter_has_name(&self, pos: i32, name: &str) -> bool {
168 unsafe {
169 from_glib(ffi::gtk_widget_path_iter_has_name(
170 self.to_glib_none().0,
171 pos,
172 name.to_glib_none().0,
173 ))
174 }
175 }
176
177 #[doc(alias = "gtk_widget_path_iter_has_qclass")]
178 pub fn iter_has_qclass(&self, pos: i32, qname: glib::Quark) -> bool {
179 unsafe {
180 from_glib(ffi::gtk_widget_path_iter_has_qclass(
181 self.to_glib_none().0,
182 pos,
183 qname.into_glib(),
184 ))
185 }
186 }
187
188 #[doc(alias = "gtk_widget_path_iter_has_qname")]
189 pub fn iter_has_qname(&self, pos: i32, qname: glib::Quark) -> bool {
190 unsafe {
191 from_glib(ffi::gtk_widget_path_iter_has_qname(
192 self.to_glib_none().0,
193 pos,
194 qname.into_glib(),
195 ))
196 }
197 }
198
199 #[doc(alias = "gtk_widget_path_iter_list_classes")]
200 pub fn iter_list_classes(&self, pos: i32) -> Vec<glib::GString> {
201 unsafe {
202 FromGlibPtrContainer::from_glib_container(ffi::gtk_widget_path_iter_list_classes(
203 self.to_glib_none().0,
204 pos,
205 ))
206 }
207 }
208
209 #[doc(alias = "gtk_widget_path_iter_remove_class")]
210 pub fn iter_remove_class(&self, pos: i32, name: &str) {
211 unsafe {
212 ffi::gtk_widget_path_iter_remove_class(
213 self.to_glib_none().0,
214 pos,
215 name.to_glib_none().0,
216 );
217 }
218 }
219
220 #[doc(alias = "gtk_widget_path_iter_set_name")]
221 pub fn iter_set_name(&self, pos: i32, name: &str) {
222 unsafe {
223 ffi::gtk_widget_path_iter_set_name(self.to_glib_none().0, pos, name.to_glib_none().0);
224 }
225 }
226
227 #[doc(alias = "gtk_widget_path_iter_set_object_name")]
228 pub fn iter_set_object_name(&self, pos: i32, name: Option<&str>) {
229 unsafe {
230 ffi::gtk_widget_path_iter_set_object_name(
231 self.to_glib_none().0,
232 pos,
233 name.to_glib_none().0,
234 );
235 }
236 }
237
238 #[doc(alias = "gtk_widget_path_iter_set_object_type")]
239 pub fn iter_set_object_type(&self, pos: i32, type_: glib::types::Type) {
240 unsafe {
241 ffi::gtk_widget_path_iter_set_object_type(
242 self.to_glib_none().0,
243 pos,
244 type_.into_glib(),
245 );
246 }
247 }
248
249 #[doc(alias = "gtk_widget_path_iter_set_state")]
250 pub fn iter_set_state(&self, pos: i32, state: StateFlags) {
251 unsafe {
252 ffi::gtk_widget_path_iter_set_state(self.to_glib_none().0, pos, state.into_glib());
253 }
254 }
255
256 #[doc(alias = "gtk_widget_path_length")]
257 pub fn length(&self) -> i32 {
258 unsafe { ffi::gtk_widget_path_length(self.to_glib_none().0) }
259 }
260
261 #[doc(alias = "gtk_widget_path_prepend_type")]
262 pub fn prepend_type(&self, type_: glib::types::Type) {
263 unsafe {
264 ffi::gtk_widget_path_prepend_type(self.to_glib_none().0, type_.into_glib());
265 }
266 }
267
268 #[doc(alias = "gtk_widget_path_to_string")]
269 #[doc(alias = "to_string")]
270 pub fn to_str(&self) -> glib::GString {
271 unsafe { from_glib_full(ffi::gtk_widget_path_to_string(self.to_glib_none().0)) }
272 }
273}
274
275impl Default for WidgetPath {
276 fn default() -> Self {
277 Self::new()
278 }
279}
280
281impl fmt::Display for WidgetPath {
282 #[inline]
283 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
284 f.write_str(&self.to_str())
285 }
286}