1#![allow(deprecated)]
5
6use crate::{ffi, Adjustment, CellRenderer, CellRendererMode, CellRendererText};
7use glib::{
8 prelude::*,
9 signal::{connect_raw, SignalHandlerId},
10 translate::*,
11};
12use std::boxed::Box as Box_;
13
14glib::wrapper! {
15 #[doc(alias = "GtkCellRendererSpin")]
16 pub struct CellRendererSpin(Object<ffi::GtkCellRendererSpin>) @extends CellRendererText, CellRenderer;
17
18 match fn {
19 type_ => || ffi::gtk_cell_renderer_spin_get_type(),
20 }
21}
22
23impl CellRendererSpin {
24 #[cfg_attr(feature = "v4_10", deprecated = "Since 4.10")]
25 #[allow(deprecated)]
26 #[doc(alias = "gtk_cell_renderer_spin_new")]
27 pub fn new() -> CellRendererSpin {
28 assert_initialized_main_thread!();
29 unsafe { CellRenderer::from_glib_none(ffi::gtk_cell_renderer_spin_new()).unsafe_cast() }
30 }
31
32 pub fn builder() -> CellRendererSpinBuilder {
37 CellRendererSpinBuilder::new()
38 }
39
40 pub fn adjustment(&self) -> Option<Adjustment> {
41 ObjectExt::property(self, "adjustment")
42 }
43
44 pub fn set_adjustment<P: IsA<Adjustment>>(&self, adjustment: Option<&P>) {
45 ObjectExt::set_property(self, "adjustment", adjustment)
46 }
47
48 #[doc(alias = "climb-rate")]
49 pub fn climb_rate(&self) -> f64 {
50 ObjectExt::property(self, "climb-rate")
51 }
52
53 #[doc(alias = "climb-rate")]
54 pub fn set_climb_rate(&self, climb_rate: f64) {
55 ObjectExt::set_property(self, "climb-rate", climb_rate)
56 }
57
58 pub fn digits(&self) -> u32 {
59 ObjectExt::property(self, "digits")
60 }
61
62 pub fn set_digits(&self, digits: u32) {
63 ObjectExt::set_property(self, "digits", digits)
64 }
65
66 #[doc(alias = "adjustment")]
67 pub fn connect_adjustment_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
68 unsafe extern "C" fn notify_adjustment_trampoline<F: Fn(&CellRendererSpin) + 'static>(
69 this: *mut ffi::GtkCellRendererSpin,
70 _param_spec: glib::ffi::gpointer,
71 f: glib::ffi::gpointer,
72 ) {
73 let f: &F = &*(f as *const F);
74 f(&from_glib_borrow(this))
75 }
76 unsafe {
77 let f: Box_<F> = Box_::new(f);
78 connect_raw(
79 self.as_ptr() as *mut _,
80 c"notify::adjustment".as_ptr() as *const _,
81 Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
82 notify_adjustment_trampoline::<F> as *const (),
83 )),
84 Box_::into_raw(f),
85 )
86 }
87 }
88
89 #[doc(alias = "climb-rate")]
90 pub fn connect_climb_rate_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
91 unsafe extern "C" fn notify_climb_rate_trampoline<F: Fn(&CellRendererSpin) + 'static>(
92 this: *mut ffi::GtkCellRendererSpin,
93 _param_spec: glib::ffi::gpointer,
94 f: glib::ffi::gpointer,
95 ) {
96 let f: &F = &*(f as *const F);
97 f(&from_glib_borrow(this))
98 }
99 unsafe {
100 let f: Box_<F> = Box_::new(f);
101 connect_raw(
102 self.as_ptr() as *mut _,
103 c"notify::climb-rate".as_ptr() as *const _,
104 Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
105 notify_climb_rate_trampoline::<F> as *const (),
106 )),
107 Box_::into_raw(f),
108 )
109 }
110 }
111
112 #[doc(alias = "digits")]
113 pub fn connect_digits_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
114 unsafe extern "C" fn notify_digits_trampoline<F: Fn(&CellRendererSpin) + 'static>(
115 this: *mut ffi::GtkCellRendererSpin,
116 _param_spec: glib::ffi::gpointer,
117 f: glib::ffi::gpointer,
118 ) {
119 let f: &F = &*(f as *const F);
120 f(&from_glib_borrow(this))
121 }
122 unsafe {
123 let f: Box_<F> = Box_::new(f);
124 connect_raw(
125 self.as_ptr() as *mut _,
126 c"notify::digits".as_ptr() as *const _,
127 Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
128 notify_digits_trampoline::<F> as *const (),
129 )),
130 Box_::into_raw(f),
131 )
132 }
133 }
134}
135
136impl Default for CellRendererSpin {
137 fn default() -> Self {
138 Self::new()
139 }
140}
141
142#[must_use = "The builder must be built to be used"]
147pub struct CellRendererSpinBuilder {
148 builder: glib::object::ObjectBuilder<'static, CellRendererSpin>,
149}
150
151impl CellRendererSpinBuilder {
152 fn new() -> Self {
153 Self {
154 builder: glib::object::Object::builder(),
155 }
156 }
157
158 pub fn adjustment(self, adjustment: &impl IsA<Adjustment>) -> Self {
159 Self {
160 builder: self
161 .builder
162 .property("adjustment", adjustment.clone().upcast()),
163 }
164 }
165
166 pub fn climb_rate(self, climb_rate: f64) -> Self {
167 Self {
168 builder: self.builder.property("climb-rate", climb_rate),
169 }
170 }
171
172 pub fn digits(self, digits: u32) -> Self {
173 Self {
174 builder: self.builder.property("digits", digits),
175 }
176 }
177
178 pub fn align_set(self, align_set: bool) -> Self {
179 Self {
180 builder: self.builder.property("align-set", align_set),
181 }
182 }
183
184 pub fn alignment(self, alignment: pango::Alignment) -> Self {
185 Self {
186 builder: self.builder.property("alignment", alignment),
187 }
188 }
189
190 pub fn attributes(self, attributes: &pango::AttrList) -> Self {
191 Self {
192 builder: self.builder.property("attributes", attributes.clone()),
193 }
194 }
195
196 pub fn background(self, background: impl Into<glib::GString>) -> Self {
197 Self {
198 builder: self.builder.property("background", background.into()),
199 }
200 }
201
202 pub fn background_rgba(self, background_rgba: &gdk::RGBA) -> Self {
203 Self {
204 builder: self.builder.property("background-rgba", background_rgba),
205 }
206 }
207
208 pub fn background_set(self, background_set: bool) -> Self {
209 Self {
210 builder: self.builder.property("background-set", background_set),
211 }
212 }
213
214 pub fn editable(self, editable: bool) -> Self {
215 Self {
216 builder: self.builder.property("editable", editable),
217 }
218 }
219
220 pub fn editable_set(self, editable_set: bool) -> Self {
221 Self {
222 builder: self.builder.property("editable-set", editable_set),
223 }
224 }
225
226 pub fn ellipsize(self, ellipsize: pango::EllipsizeMode) -> Self {
227 Self {
228 builder: self.builder.property("ellipsize", ellipsize),
229 }
230 }
231
232 pub fn ellipsize_set(self, ellipsize_set: bool) -> Self {
233 Self {
234 builder: self.builder.property("ellipsize-set", ellipsize_set),
235 }
236 }
237
238 pub fn family(self, family: impl Into<glib::GString>) -> Self {
239 Self {
240 builder: self.builder.property("family", family.into()),
241 }
242 }
243
244 pub fn family_set(self, family_set: bool) -> Self {
245 Self {
246 builder: self.builder.property("family-set", family_set),
247 }
248 }
249
250 pub fn font(self, font: impl Into<glib::GString>) -> Self {
251 Self {
252 builder: self.builder.property("font", font.into()),
253 }
254 }
255
256 pub fn font_desc(self, font_desc: &pango::FontDescription) -> Self {
257 Self {
258 builder: self.builder.property("font-desc", font_desc),
259 }
260 }
261
262 pub fn foreground(self, foreground: impl Into<glib::GString>) -> Self {
263 Self {
264 builder: self.builder.property("foreground", foreground.into()),
265 }
266 }
267
268 pub fn foreground_rgba(self, foreground_rgba: &gdk::RGBA) -> Self {
269 Self {
270 builder: self.builder.property("foreground-rgba", foreground_rgba),
271 }
272 }
273
274 pub fn foreground_set(self, foreground_set: bool) -> Self {
275 Self {
276 builder: self.builder.property("foreground-set", foreground_set),
277 }
278 }
279
280 pub fn language(self, language: impl Into<glib::GString>) -> Self {
281 Self {
282 builder: self.builder.property("language", language.into()),
283 }
284 }
285
286 pub fn language_set(self, language_set: bool) -> Self {
287 Self {
288 builder: self.builder.property("language-set", language_set),
289 }
290 }
291
292 pub fn markup(self, markup: impl Into<glib::GString>) -> Self {
293 Self {
294 builder: self.builder.property("markup", markup.into()),
295 }
296 }
297
298 pub fn max_width_chars(self, max_width_chars: i32) -> Self {
299 Self {
300 builder: self.builder.property("max-width-chars", max_width_chars),
301 }
302 }
303
304 pub fn placeholder_text(self, placeholder_text: impl Into<glib::GString>) -> Self {
305 Self {
306 builder: self
307 .builder
308 .property("placeholder-text", placeholder_text.into()),
309 }
310 }
311
312 pub fn rise(self, rise: i32) -> Self {
313 Self {
314 builder: self.builder.property("rise", rise),
315 }
316 }
317
318 pub fn rise_set(self, rise_set: bool) -> Self {
319 Self {
320 builder: self.builder.property("rise-set", rise_set),
321 }
322 }
323
324 pub fn scale(self, scale: f64) -> Self {
325 Self {
326 builder: self.builder.property("scale", scale),
327 }
328 }
329
330 pub fn scale_set(self, scale_set: bool) -> Self {
331 Self {
332 builder: self.builder.property("scale-set", scale_set),
333 }
334 }
335
336 pub fn single_paragraph_mode(self, single_paragraph_mode: bool) -> Self {
337 Self {
338 builder: self
339 .builder
340 .property("single-paragraph-mode", single_paragraph_mode),
341 }
342 }
343
344 pub fn size(self, size: i32) -> Self {
345 Self {
346 builder: self.builder.property("size", size),
347 }
348 }
349
350 pub fn size_points(self, size_points: f64) -> Self {
351 Self {
352 builder: self.builder.property("size-points", size_points),
353 }
354 }
355
356 pub fn size_set(self, size_set: bool) -> Self {
357 Self {
358 builder: self.builder.property("size-set", size_set),
359 }
360 }
361
362 pub fn stretch(self, stretch: pango::Stretch) -> Self {
363 Self {
364 builder: self.builder.property("stretch", stretch),
365 }
366 }
367
368 pub fn stretch_set(self, stretch_set: bool) -> Self {
369 Self {
370 builder: self.builder.property("stretch-set", stretch_set),
371 }
372 }
373
374 pub fn strikethrough(self, strikethrough: bool) -> Self {
375 Self {
376 builder: self.builder.property("strikethrough", strikethrough),
377 }
378 }
379
380 pub fn strikethrough_set(self, strikethrough_set: bool) -> Self {
381 Self {
382 builder: self
383 .builder
384 .property("strikethrough-set", strikethrough_set),
385 }
386 }
387
388 pub fn style(self, style: pango::Style) -> Self {
389 Self {
390 builder: self.builder.property("style", style),
391 }
392 }
393
394 pub fn style_set(self, style_set: bool) -> Self {
395 Self {
396 builder: self.builder.property("style-set", style_set),
397 }
398 }
399
400 pub fn text(self, text: impl Into<glib::GString>) -> Self {
401 Self {
402 builder: self.builder.property("text", text.into()),
403 }
404 }
405
406 pub fn underline(self, underline: pango::Underline) -> Self {
407 Self {
408 builder: self.builder.property("underline", underline),
409 }
410 }
411
412 pub fn underline_set(self, underline_set: bool) -> Self {
413 Self {
414 builder: self.builder.property("underline-set", underline_set),
415 }
416 }
417
418 pub fn variant(self, variant: pango::Variant) -> Self {
419 Self {
420 builder: self.builder.property("variant", variant),
421 }
422 }
423
424 pub fn variant_set(self, variant_set: bool) -> Self {
425 Self {
426 builder: self.builder.property("variant-set", variant_set),
427 }
428 }
429
430 pub fn weight(self, weight: i32) -> Self {
431 Self {
432 builder: self.builder.property("weight", weight),
433 }
434 }
435
436 pub fn weight_set(self, weight_set: bool) -> Self {
437 Self {
438 builder: self.builder.property("weight-set", weight_set),
439 }
440 }
441
442 pub fn width_chars(self, width_chars: i32) -> Self {
443 Self {
444 builder: self.builder.property("width-chars", width_chars),
445 }
446 }
447
448 pub fn wrap_mode(self, wrap_mode: pango::WrapMode) -> Self {
449 Self {
450 builder: self.builder.property("wrap-mode", wrap_mode),
451 }
452 }
453
454 pub fn wrap_width(self, wrap_width: i32) -> Self {
455 Self {
456 builder: self.builder.property("wrap-width", wrap_width),
457 }
458 }
459
460 pub fn cell_background(self, cell_background: impl Into<glib::GString>) -> Self {
461 Self {
462 builder: self
463 .builder
464 .property("cell-background", cell_background.into()),
465 }
466 }
467
468 pub fn cell_background_rgba(self, cell_background_rgba: &gdk::RGBA) -> Self {
469 Self {
470 builder: self
471 .builder
472 .property("cell-background-rgba", cell_background_rgba),
473 }
474 }
475
476 pub fn cell_background_set(self, cell_background_set: bool) -> Self {
477 Self {
478 builder: self
479 .builder
480 .property("cell-background-set", cell_background_set),
481 }
482 }
483
484 pub fn height(self, height: i32) -> Self {
485 Self {
486 builder: self.builder.property("height", height),
487 }
488 }
489
490 pub fn is_expanded(self, is_expanded: bool) -> Self {
491 Self {
492 builder: self.builder.property("is-expanded", is_expanded),
493 }
494 }
495
496 pub fn is_expander(self, is_expander: bool) -> Self {
497 Self {
498 builder: self.builder.property("is-expander", is_expander),
499 }
500 }
501
502 pub fn mode(self, mode: CellRendererMode) -> Self {
503 Self {
504 builder: self.builder.property("mode", mode),
505 }
506 }
507
508 pub fn sensitive(self, sensitive: bool) -> Self {
509 Self {
510 builder: self.builder.property("sensitive", sensitive),
511 }
512 }
513
514 pub fn visible(self, visible: bool) -> Self {
515 Self {
516 builder: self.builder.property("visible", visible),
517 }
518 }
519
520 pub fn width(self, width: i32) -> Self {
521 Self {
522 builder: self.builder.property("width", width),
523 }
524 }
525
526 pub fn xalign(self, xalign: f32) -> Self {
527 Self {
528 builder: self.builder.property("xalign", xalign),
529 }
530 }
531
532 pub fn xpad(self, xpad: u32) -> Self {
533 Self {
534 builder: self.builder.property("xpad", xpad),
535 }
536 }
537
538 pub fn yalign(self, yalign: f32) -> Self {
539 Self {
540 builder: self.builder.property("yalign", yalign),
541 }
542 }
543
544 pub fn ypad(self, ypad: u32) -> Self {
545 Self {
546 builder: self.builder.property("ypad", ypad),
547 }
548 }
549
550 #[must_use = "Building the object from the builder is usually expensive and is not expected to have side effects"]
553 pub fn build(self) -> CellRendererSpin {
554 assert_initialized_main_thread!();
555 self.builder.build()
556 }
557}