1#![allow(deprecated)]
5
6use crate::{
7 ffi, CellRenderer, CellRendererAccelMode, CellRendererMode, CellRendererText, TreePath,
8};
9use glib::{
10 object::ObjectType as _,
11 prelude::*,
12 signal::{connect_raw, SignalHandlerId},
13 translate::*,
14};
15use std::boxed::Box as Box_;
16
17glib::wrapper! {
18 #[doc(alias = "GtkCellRendererAccel")]
19 pub struct CellRendererAccel(Object<ffi::GtkCellRendererAccel>) @extends CellRendererText, CellRenderer;
20
21 match fn {
22 type_ => || ffi::gtk_cell_renderer_accel_get_type(),
23 }
24}
25
26impl CellRendererAccel {
27 #[cfg_attr(feature = "v4_10", deprecated = "Since 4.10")]
28 #[allow(deprecated)]
29 #[doc(alias = "gtk_cell_renderer_accel_new")]
30 pub fn new() -> CellRendererAccel {
31 assert_initialized_main_thread!();
32 unsafe { CellRenderer::from_glib_none(ffi::gtk_cell_renderer_accel_new()).unsafe_cast() }
33 }
34
35 pub fn builder() -> CellRendererAccelBuilder {
40 CellRendererAccelBuilder::new()
41 }
42
43 #[doc(alias = "accel-key")]
44 pub fn accel_key(&self) -> u32 {
45 ObjectExt::property(self, "accel-key")
46 }
47
48 #[doc(alias = "accel-key")]
49 pub fn set_accel_key(&self, accel_key: u32) {
50 ObjectExt::set_property(self, "accel-key", accel_key)
51 }
52
53 #[doc(alias = "accel-mode")]
54 pub fn accel_mode(&self) -> CellRendererAccelMode {
55 ObjectExt::property(self, "accel-mode")
56 }
57
58 #[doc(alias = "accel-mode")]
59 pub fn set_accel_mode(&self, accel_mode: CellRendererAccelMode) {
60 ObjectExt::set_property(self, "accel-mode", accel_mode)
61 }
62
63 #[doc(alias = "accel-mods")]
64 pub fn accel_mods(&self) -> gdk::ModifierType {
65 ObjectExt::property(self, "accel-mods")
66 }
67
68 #[doc(alias = "accel-mods")]
69 pub fn set_accel_mods(&self, accel_mods: gdk::ModifierType) {
70 ObjectExt::set_property(self, "accel-mods", accel_mods)
71 }
72
73 pub fn keycode(&self) -> u32 {
74 ObjectExt::property(self, "keycode")
75 }
76
77 pub fn set_keycode(&self, keycode: u32) {
78 ObjectExt::set_property(self, "keycode", keycode)
79 }
80
81 #[doc(alias = "accel-cleared")]
82 pub fn connect_accel_cleared<F: Fn(&Self, TreePath) + 'static>(&self, f: F) -> SignalHandlerId {
83 unsafe extern "C" fn accel_cleared_trampoline<
84 F: Fn(&CellRendererAccel, TreePath) + 'static,
85 >(
86 this: *mut ffi::GtkCellRendererAccel,
87 path_string: *mut std::ffi::c_char,
88 f: glib::ffi::gpointer,
89 ) {
90 let f: &F = &*(f as *const F);
91 let path = from_glib_full(crate::ffi::gtk_tree_path_new_from_string(path_string));
92 f(&from_glib_borrow(this), path)
93 }
94 unsafe {
95 let f: Box_<F> = Box_::new(f);
96 connect_raw(
97 self.as_ptr() as *mut _,
98 c"accel-cleared".as_ptr() as *const _,
99 Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
100 accel_cleared_trampoline::<F> as *const (),
101 )),
102 Box_::into_raw(f),
103 )
104 }
105 }
106
107 #[doc(alias = "accel-edited")]
108 pub fn connect_accel_edited<F: Fn(&Self, TreePath, u32, gdk::ModifierType, u32) + 'static>(
109 &self,
110 f: F,
111 ) -> SignalHandlerId {
112 unsafe extern "C" fn accel_edited_trampoline<
113 F: Fn(&CellRendererAccel, TreePath, u32, gdk::ModifierType, u32) + 'static,
114 >(
115 this: *mut ffi::GtkCellRendererAccel,
116 path_string: *mut std::ffi::c_char,
117 accel_key: std::ffi::c_uint,
118 accel_mods: gdk::ffi::GdkModifierType,
119 hardware_keycode: std::ffi::c_uint,
120 f: glib::ffi::gpointer,
121 ) {
122 let f: &F = &*(f as *const F);
123 let path = from_glib_full(crate::ffi::gtk_tree_path_new_from_string(path_string));
124 f(
125 &from_glib_borrow(this),
126 path,
127 accel_key,
128 from_glib(accel_mods),
129 hardware_keycode,
130 )
131 }
132 unsafe {
133 let f: Box_<F> = Box_::new(f);
134 connect_raw(
135 self.as_ptr() as *mut _,
136 c"accel-edited".as_ptr() as *const _,
137 Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
138 accel_edited_trampoline::<F> as *const (),
139 )),
140 Box_::into_raw(f),
141 )
142 }
143 }
144
145 #[doc(alias = "accel-key")]
146 pub fn connect_accel_key_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
147 unsafe extern "C" fn notify_accel_key_trampoline<F: Fn(&CellRendererAccel) + 'static>(
148 this: *mut ffi::GtkCellRendererAccel,
149 _param_spec: glib::ffi::gpointer,
150 f: glib::ffi::gpointer,
151 ) {
152 let f: &F = &*(f as *const F);
153 f(&from_glib_borrow(this))
154 }
155 unsafe {
156 let f: Box_<F> = Box_::new(f);
157 connect_raw(
158 self.as_ptr() as *mut _,
159 c"notify::accel-key".as_ptr() as *const _,
160 Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
161 notify_accel_key_trampoline::<F> as *const (),
162 )),
163 Box_::into_raw(f),
164 )
165 }
166 }
167
168 #[doc(alias = "accel-mode")]
169 pub fn connect_accel_mode_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
170 unsafe extern "C" fn notify_accel_mode_trampoline<F: Fn(&CellRendererAccel) + 'static>(
171 this: *mut ffi::GtkCellRendererAccel,
172 _param_spec: glib::ffi::gpointer,
173 f: glib::ffi::gpointer,
174 ) {
175 let f: &F = &*(f as *const F);
176 f(&from_glib_borrow(this))
177 }
178 unsafe {
179 let f: Box_<F> = Box_::new(f);
180 connect_raw(
181 self.as_ptr() as *mut _,
182 c"notify::accel-mode".as_ptr() as *const _,
183 Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
184 notify_accel_mode_trampoline::<F> as *const (),
185 )),
186 Box_::into_raw(f),
187 )
188 }
189 }
190
191 #[doc(alias = "accel-mods")]
192 pub fn connect_accel_mods_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
193 unsafe extern "C" fn notify_accel_mods_trampoline<F: Fn(&CellRendererAccel) + 'static>(
194 this: *mut ffi::GtkCellRendererAccel,
195 _param_spec: glib::ffi::gpointer,
196 f: glib::ffi::gpointer,
197 ) {
198 let f: &F = &*(f as *const F);
199 f(&from_glib_borrow(this))
200 }
201 unsafe {
202 let f: Box_<F> = Box_::new(f);
203 connect_raw(
204 self.as_ptr() as *mut _,
205 c"notify::accel-mods".as_ptr() as *const _,
206 Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
207 notify_accel_mods_trampoline::<F> as *const (),
208 )),
209 Box_::into_raw(f),
210 )
211 }
212 }
213
214 #[doc(alias = "keycode")]
215 pub fn connect_keycode_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
216 unsafe extern "C" fn notify_keycode_trampoline<F: Fn(&CellRendererAccel) + 'static>(
217 this: *mut ffi::GtkCellRendererAccel,
218 _param_spec: glib::ffi::gpointer,
219 f: glib::ffi::gpointer,
220 ) {
221 let f: &F = &*(f as *const F);
222 f(&from_glib_borrow(this))
223 }
224 unsafe {
225 let f: Box_<F> = Box_::new(f);
226 connect_raw(
227 self.as_ptr() as *mut _,
228 c"notify::keycode".as_ptr() as *const _,
229 Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
230 notify_keycode_trampoline::<F> as *const (),
231 )),
232 Box_::into_raw(f),
233 )
234 }
235 }
236}
237
238impl Default for CellRendererAccel {
239 fn default() -> Self {
240 Self::new()
241 }
242}
243
244#[must_use = "The builder must be built to be used"]
249pub struct CellRendererAccelBuilder {
250 builder: glib::object::ObjectBuilder<'static, CellRendererAccel>,
251}
252
253impl CellRendererAccelBuilder {
254 fn new() -> Self {
255 Self {
256 builder: glib::object::Object::builder(),
257 }
258 }
259
260 pub fn accel_key(self, accel_key: u32) -> Self {
261 Self {
262 builder: self.builder.property("accel-key", accel_key),
263 }
264 }
265
266 pub fn accel_mode(self, accel_mode: CellRendererAccelMode) -> Self {
267 Self {
268 builder: self.builder.property("accel-mode", accel_mode),
269 }
270 }
271
272 pub fn accel_mods(self, accel_mods: gdk::ModifierType) -> Self {
273 Self {
274 builder: self.builder.property("accel-mods", accel_mods),
275 }
276 }
277
278 pub fn keycode(self, keycode: u32) -> Self {
279 Self {
280 builder: self.builder.property("keycode", keycode),
281 }
282 }
283
284 pub fn align_set(self, align_set: bool) -> Self {
285 Self {
286 builder: self.builder.property("align-set", align_set),
287 }
288 }
289
290 pub fn alignment(self, alignment: pango::Alignment) -> Self {
291 Self {
292 builder: self.builder.property("alignment", alignment),
293 }
294 }
295
296 pub fn attributes(self, attributes: &pango::AttrList) -> Self {
297 Self {
298 builder: self.builder.property("attributes", attributes.clone()),
299 }
300 }
301
302 pub fn background(self, background: impl Into<glib::GString>) -> Self {
303 Self {
304 builder: self.builder.property("background", background.into()),
305 }
306 }
307
308 pub fn background_rgba(self, background_rgba: &gdk::RGBA) -> Self {
309 Self {
310 builder: self.builder.property("background-rgba", background_rgba),
311 }
312 }
313
314 pub fn background_set(self, background_set: bool) -> Self {
315 Self {
316 builder: self.builder.property("background-set", background_set),
317 }
318 }
319
320 pub fn editable(self, editable: bool) -> Self {
321 Self {
322 builder: self.builder.property("editable", editable),
323 }
324 }
325
326 pub fn editable_set(self, editable_set: bool) -> Self {
327 Self {
328 builder: self.builder.property("editable-set", editable_set),
329 }
330 }
331
332 pub fn ellipsize(self, ellipsize: pango::EllipsizeMode) -> Self {
333 Self {
334 builder: self.builder.property("ellipsize", ellipsize),
335 }
336 }
337
338 pub fn ellipsize_set(self, ellipsize_set: bool) -> Self {
339 Self {
340 builder: self.builder.property("ellipsize-set", ellipsize_set),
341 }
342 }
343
344 pub fn family(self, family: impl Into<glib::GString>) -> Self {
345 Self {
346 builder: self.builder.property("family", family.into()),
347 }
348 }
349
350 pub fn family_set(self, family_set: bool) -> Self {
351 Self {
352 builder: self.builder.property("family-set", family_set),
353 }
354 }
355
356 pub fn font(self, font: impl Into<glib::GString>) -> Self {
357 Self {
358 builder: self.builder.property("font", font.into()),
359 }
360 }
361
362 pub fn font_desc(self, font_desc: &pango::FontDescription) -> Self {
363 Self {
364 builder: self.builder.property("font-desc", font_desc),
365 }
366 }
367
368 pub fn foreground(self, foreground: impl Into<glib::GString>) -> Self {
369 Self {
370 builder: self.builder.property("foreground", foreground.into()),
371 }
372 }
373
374 pub fn foreground_rgba(self, foreground_rgba: &gdk::RGBA) -> Self {
375 Self {
376 builder: self.builder.property("foreground-rgba", foreground_rgba),
377 }
378 }
379
380 pub fn foreground_set(self, foreground_set: bool) -> Self {
381 Self {
382 builder: self.builder.property("foreground-set", foreground_set),
383 }
384 }
385
386 pub fn language(self, language: impl Into<glib::GString>) -> Self {
387 Self {
388 builder: self.builder.property("language", language.into()),
389 }
390 }
391
392 pub fn language_set(self, language_set: bool) -> Self {
393 Self {
394 builder: self.builder.property("language-set", language_set),
395 }
396 }
397
398 pub fn markup(self, markup: impl Into<glib::GString>) -> Self {
399 Self {
400 builder: self.builder.property("markup", markup.into()),
401 }
402 }
403
404 pub fn max_width_chars(self, max_width_chars: i32) -> Self {
405 Self {
406 builder: self.builder.property("max-width-chars", max_width_chars),
407 }
408 }
409
410 pub fn placeholder_text(self, placeholder_text: impl Into<glib::GString>) -> Self {
411 Self {
412 builder: self
413 .builder
414 .property("placeholder-text", placeholder_text.into()),
415 }
416 }
417
418 pub fn rise(self, rise: i32) -> Self {
419 Self {
420 builder: self.builder.property("rise", rise),
421 }
422 }
423
424 pub fn rise_set(self, rise_set: bool) -> Self {
425 Self {
426 builder: self.builder.property("rise-set", rise_set),
427 }
428 }
429
430 pub fn scale(self, scale: f64) -> Self {
431 Self {
432 builder: self.builder.property("scale", scale),
433 }
434 }
435
436 pub fn scale_set(self, scale_set: bool) -> Self {
437 Self {
438 builder: self.builder.property("scale-set", scale_set),
439 }
440 }
441
442 pub fn single_paragraph_mode(self, single_paragraph_mode: bool) -> Self {
443 Self {
444 builder: self
445 .builder
446 .property("single-paragraph-mode", single_paragraph_mode),
447 }
448 }
449
450 pub fn size(self, size: i32) -> Self {
451 Self {
452 builder: self.builder.property("size", size),
453 }
454 }
455
456 pub fn size_points(self, size_points: f64) -> Self {
457 Self {
458 builder: self.builder.property("size-points", size_points),
459 }
460 }
461
462 pub fn size_set(self, size_set: bool) -> Self {
463 Self {
464 builder: self.builder.property("size-set", size_set),
465 }
466 }
467
468 pub fn stretch(self, stretch: pango::Stretch) -> Self {
469 Self {
470 builder: self.builder.property("stretch", stretch),
471 }
472 }
473
474 pub fn stretch_set(self, stretch_set: bool) -> Self {
475 Self {
476 builder: self.builder.property("stretch-set", stretch_set),
477 }
478 }
479
480 pub fn strikethrough(self, strikethrough: bool) -> Self {
481 Self {
482 builder: self.builder.property("strikethrough", strikethrough),
483 }
484 }
485
486 pub fn strikethrough_set(self, strikethrough_set: bool) -> Self {
487 Self {
488 builder: self
489 .builder
490 .property("strikethrough-set", strikethrough_set),
491 }
492 }
493
494 pub fn style(self, style: pango::Style) -> Self {
495 Self {
496 builder: self.builder.property("style", style),
497 }
498 }
499
500 pub fn style_set(self, style_set: bool) -> Self {
501 Self {
502 builder: self.builder.property("style-set", style_set),
503 }
504 }
505
506 pub fn text(self, text: impl Into<glib::GString>) -> Self {
507 Self {
508 builder: self.builder.property("text", text.into()),
509 }
510 }
511
512 pub fn underline(self, underline: pango::Underline) -> Self {
513 Self {
514 builder: self.builder.property("underline", underline),
515 }
516 }
517
518 pub fn underline_set(self, underline_set: bool) -> Self {
519 Self {
520 builder: self.builder.property("underline-set", underline_set),
521 }
522 }
523
524 pub fn variant(self, variant: pango::Variant) -> Self {
525 Self {
526 builder: self.builder.property("variant", variant),
527 }
528 }
529
530 pub fn variant_set(self, variant_set: bool) -> Self {
531 Self {
532 builder: self.builder.property("variant-set", variant_set),
533 }
534 }
535
536 pub fn weight(self, weight: i32) -> Self {
537 Self {
538 builder: self.builder.property("weight", weight),
539 }
540 }
541
542 pub fn weight_set(self, weight_set: bool) -> Self {
543 Self {
544 builder: self.builder.property("weight-set", weight_set),
545 }
546 }
547
548 pub fn width_chars(self, width_chars: i32) -> Self {
549 Self {
550 builder: self.builder.property("width-chars", width_chars),
551 }
552 }
553
554 pub fn wrap_mode(self, wrap_mode: pango::WrapMode) -> Self {
555 Self {
556 builder: self.builder.property("wrap-mode", wrap_mode),
557 }
558 }
559
560 pub fn wrap_width(self, wrap_width: i32) -> Self {
561 Self {
562 builder: self.builder.property("wrap-width", wrap_width),
563 }
564 }
565
566 pub fn cell_background(self, cell_background: impl Into<glib::GString>) -> Self {
567 Self {
568 builder: self
569 .builder
570 .property("cell-background", cell_background.into()),
571 }
572 }
573
574 pub fn cell_background_rgba(self, cell_background_rgba: &gdk::RGBA) -> Self {
575 Self {
576 builder: self
577 .builder
578 .property("cell-background-rgba", cell_background_rgba),
579 }
580 }
581
582 pub fn cell_background_set(self, cell_background_set: bool) -> Self {
583 Self {
584 builder: self
585 .builder
586 .property("cell-background-set", cell_background_set),
587 }
588 }
589
590 pub fn height(self, height: i32) -> Self {
591 Self {
592 builder: self.builder.property("height", height),
593 }
594 }
595
596 pub fn is_expanded(self, is_expanded: bool) -> Self {
597 Self {
598 builder: self.builder.property("is-expanded", is_expanded),
599 }
600 }
601
602 pub fn is_expander(self, is_expander: bool) -> Self {
603 Self {
604 builder: self.builder.property("is-expander", is_expander),
605 }
606 }
607
608 pub fn mode(self, mode: CellRendererMode) -> Self {
609 Self {
610 builder: self.builder.property("mode", mode),
611 }
612 }
613
614 pub fn sensitive(self, sensitive: bool) -> Self {
615 Self {
616 builder: self.builder.property("sensitive", sensitive),
617 }
618 }
619
620 pub fn visible(self, visible: bool) -> Self {
621 Self {
622 builder: self.builder.property("visible", visible),
623 }
624 }
625
626 pub fn width(self, width: i32) -> Self {
627 Self {
628 builder: self.builder.property("width", width),
629 }
630 }
631
632 pub fn xalign(self, xalign: f32) -> Self {
633 Self {
634 builder: self.builder.property("xalign", xalign),
635 }
636 }
637
638 pub fn xpad(self, xpad: u32) -> Self {
639 Self {
640 builder: self.builder.property("xpad", xpad),
641 }
642 }
643
644 pub fn yalign(self, yalign: f32) -> Self {
645 Self {
646 builder: self.builder.property("yalign", yalign),
647 }
648 }
649
650 pub fn ypad(self, ypad: u32) -> Self {
651 Self {
652 builder: self.builder.property("ypad", ypad),
653 }
654 }
655
656 #[must_use = "Building the object from the builder is usually expensive and is not expected to have side effects"]
659 pub fn build(self) -> CellRendererAccel {
660 assert_initialized_main_thread!();
661 self.builder.build()
662 }
663}