1#![allow(deprecated)]
5
6use crate::{CellRenderer, CellRendererMode, TreePath, ffi};
7use glib::{
8 object::ObjectType as _,
9 prelude::*,
10 signal::{SignalHandlerId, connect_raw},
11 translate::*,
12};
13use std::boxed::Box as Box_;
14
15glib::wrapper! {
16 #[doc(alias = "GtkCellRendererToggle")]
166 pub struct CellRendererToggle(Object<ffi::GtkCellRendererToggle>) @extends CellRenderer;
167
168 match fn {
169 type_ => || ffi::gtk_cell_renderer_toggle_get_type(),
170 }
171}
172
173impl CellRendererToggle {
174 #[cfg_attr(feature = "v4_10", deprecated = "Since 4.10")]
185 #[allow(deprecated)]
186 #[doc(alias = "gtk_cell_renderer_toggle_new")]
187 pub fn new() -> CellRendererToggle {
188 assert_initialized_main_thread!();
189 unsafe { CellRenderer::from_glib_none(ffi::gtk_cell_renderer_toggle_new()).unsafe_cast() }
190 }
191
192 pub fn builder() -> CellRendererToggleBuilder {
197 CellRendererToggleBuilder::new()
198 }
199
200 #[cfg_attr(feature = "v4_10", deprecated = "Since 4.10")]
210 #[allow(deprecated)]
211 #[doc(alias = "gtk_cell_renderer_toggle_get_activatable")]
212 #[doc(alias = "get_activatable")]
213 #[doc(alias = "activatable")]
214 pub fn is_activatable(&self) -> bool {
215 unsafe {
216 from_glib(ffi::gtk_cell_renderer_toggle_get_activatable(
217 self.to_glib_none().0,
218 ))
219 }
220 }
221
222 #[cfg_attr(feature = "v4_10", deprecated = "Since 4.10")]
232 #[allow(deprecated)]
233 #[doc(alias = "gtk_cell_renderer_toggle_get_active")]
234 #[doc(alias = "get_active")]
235 #[doc(alias = "active")]
236 pub fn is_active(&self) -> bool {
237 unsafe {
238 from_glib(ffi::gtk_cell_renderer_toggle_get_active(
239 self.to_glib_none().0,
240 ))
241 }
242 }
243
244 #[cfg_attr(feature = "v4_10", deprecated = "Since 4.10")]
253 #[allow(deprecated)]
254 #[doc(alias = "gtk_cell_renderer_toggle_get_radio")]
255 #[doc(alias = "get_radio")]
256 #[doc(alias = "radio")]
257 pub fn is_radio(&self) -> bool {
258 unsafe {
259 from_glib(ffi::gtk_cell_renderer_toggle_get_radio(
260 self.to_glib_none().0,
261 ))
262 }
263 }
264
265 #[cfg_attr(feature = "v4_10", deprecated = "Since 4.10")]
272 #[allow(deprecated)]
273 #[doc(alias = "gtk_cell_renderer_toggle_set_activatable")]
274 #[doc(alias = "activatable")]
275 pub fn set_activatable(&self, setting: bool) {
276 unsafe {
277 ffi::gtk_cell_renderer_toggle_set_activatable(
278 self.to_glib_none().0,
279 setting.into_glib(),
280 );
281 }
282 }
283
284 #[cfg_attr(feature = "v4_10", deprecated = "Since 4.10")]
291 #[allow(deprecated)]
292 #[doc(alias = "gtk_cell_renderer_toggle_set_active")]
293 #[doc(alias = "active")]
294 pub fn set_active(&self, setting: bool) {
295 unsafe {
296 ffi::gtk_cell_renderer_toggle_set_active(self.to_glib_none().0, setting.into_glib());
297 }
298 }
299
300 #[cfg_attr(feature = "v4_10", deprecated = "Since 4.10")]
313 #[allow(deprecated)]
314 #[doc(alias = "gtk_cell_renderer_toggle_set_radio")]
315 #[doc(alias = "radio")]
316 pub fn set_radio(&self, radio: bool) {
317 unsafe {
318 ffi::gtk_cell_renderer_toggle_set_radio(self.to_glib_none().0, radio.into_glib());
319 }
320 }
321
322 pub fn is_inconsistent(&self) -> bool {
323 ObjectExt::property(self, "inconsistent")
324 }
325
326 pub fn set_inconsistent(&self, inconsistent: bool) {
327 ObjectExt::set_property(self, "inconsistent", inconsistent)
328 }
329
330 #[doc(alias = "toggled")]
339 pub fn connect_toggled<F: Fn(&Self, TreePath) + 'static>(&self, f: F) -> SignalHandlerId {
340 unsafe extern "C" fn toggled_trampoline<F: Fn(&CellRendererToggle, TreePath) + 'static>(
341 this: *mut ffi::GtkCellRendererToggle,
342 path: *mut std::ffi::c_char,
343 f: glib::ffi::gpointer,
344 ) {
345 unsafe {
346 let f: &F = &*(f as *const F);
347 let path = from_glib_full(crate::ffi::gtk_tree_path_new_from_string(path));
348 f(&from_glib_borrow(this), path)
349 }
350 }
351 unsafe {
352 let f: Box_<F> = Box_::new(f);
353 connect_raw(
354 self.as_ptr() as *mut _,
355 c"toggled".as_ptr(),
356 Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
357 toggled_trampoline::<F> as *const (),
358 )),
359 Box_::into_raw(f),
360 )
361 }
362 }
363
364 #[doc(alias = "activatable")]
365 pub fn connect_activatable_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
366 unsafe extern "C" fn notify_activatable_trampoline<F: Fn(&CellRendererToggle) + 'static>(
367 this: *mut ffi::GtkCellRendererToggle,
368 _param_spec: glib::ffi::gpointer,
369 f: glib::ffi::gpointer,
370 ) {
371 unsafe {
372 let f: &F = &*(f as *const F);
373 f(&from_glib_borrow(this))
374 }
375 }
376 unsafe {
377 let f: Box_<F> = Box_::new(f);
378 connect_raw(
379 self.as_ptr() as *mut _,
380 c"notify::activatable".as_ptr(),
381 Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
382 notify_activatable_trampoline::<F> as *const (),
383 )),
384 Box_::into_raw(f),
385 )
386 }
387 }
388
389 #[doc(alias = "active")]
390 pub fn connect_active_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
391 unsafe extern "C" fn notify_active_trampoline<F: Fn(&CellRendererToggle) + 'static>(
392 this: *mut ffi::GtkCellRendererToggle,
393 _param_spec: glib::ffi::gpointer,
394 f: glib::ffi::gpointer,
395 ) {
396 unsafe {
397 let f: &F = &*(f as *const F);
398 f(&from_glib_borrow(this))
399 }
400 }
401 unsafe {
402 let f: Box_<F> = Box_::new(f);
403 connect_raw(
404 self.as_ptr() as *mut _,
405 c"notify::active".as_ptr(),
406 Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
407 notify_active_trampoline::<F> as *const (),
408 )),
409 Box_::into_raw(f),
410 )
411 }
412 }
413
414 #[doc(alias = "inconsistent")]
415 pub fn connect_inconsistent_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
416 unsafe extern "C" fn notify_inconsistent_trampoline<
417 F: Fn(&CellRendererToggle) + 'static,
418 >(
419 this: *mut ffi::GtkCellRendererToggle,
420 _param_spec: glib::ffi::gpointer,
421 f: glib::ffi::gpointer,
422 ) {
423 unsafe {
424 let f: &F = &*(f as *const F);
425 f(&from_glib_borrow(this))
426 }
427 }
428 unsafe {
429 let f: Box_<F> = Box_::new(f);
430 connect_raw(
431 self.as_ptr() as *mut _,
432 c"notify::inconsistent".as_ptr(),
433 Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
434 notify_inconsistent_trampoline::<F> as *const (),
435 )),
436 Box_::into_raw(f),
437 )
438 }
439 }
440
441 #[doc(alias = "radio")]
442 pub fn connect_radio_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
443 unsafe extern "C" fn notify_radio_trampoline<F: Fn(&CellRendererToggle) + 'static>(
444 this: *mut ffi::GtkCellRendererToggle,
445 _param_spec: glib::ffi::gpointer,
446 f: glib::ffi::gpointer,
447 ) {
448 unsafe {
449 let f: &F = &*(f as *const F);
450 f(&from_glib_borrow(this))
451 }
452 }
453 unsafe {
454 let f: Box_<F> = Box_::new(f);
455 connect_raw(
456 self.as_ptr() as *mut _,
457 c"notify::radio".as_ptr(),
458 Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
459 notify_radio_trampoline::<F> as *const (),
460 )),
461 Box_::into_raw(f),
462 )
463 }
464 }
465}
466
467impl Default for CellRendererToggle {
468 fn default() -> Self {
469 Self::new()
470 }
471}
472
473#[must_use = "The builder must be built to be used"]
478pub struct CellRendererToggleBuilder {
479 builder: glib::object::ObjectBuilder<'static, CellRendererToggle>,
480}
481
482impl CellRendererToggleBuilder {
483 fn new() -> Self {
484 Self {
485 builder: glib::object::Object::builder(),
486 }
487 }
488
489 pub fn activatable(self, activatable: bool) -> Self {
490 Self {
491 builder: self.builder.property("activatable", activatable),
492 }
493 }
494
495 pub fn active(self, active: bool) -> Self {
496 Self {
497 builder: self.builder.property("active", active),
498 }
499 }
500
501 pub fn inconsistent(self, inconsistent: bool) -> Self {
502 Self {
503 builder: self.builder.property("inconsistent", inconsistent),
504 }
505 }
506
507 pub fn radio(self, radio: bool) -> Self {
508 Self {
509 builder: self.builder.property("radio", radio),
510 }
511 }
512
513 pub fn cell_background(self, cell_background: impl Into<glib::GString>) -> Self {
514 Self {
515 builder: self
516 .builder
517 .property("cell-background", cell_background.into()),
518 }
519 }
520
521 pub fn cell_background_rgba(self, cell_background_rgba: &gdk::RGBA) -> Self {
523 Self {
524 builder: self
525 .builder
526 .property("cell-background-rgba", cell_background_rgba),
527 }
528 }
529
530 pub fn cell_background_set(self, cell_background_set: bool) -> Self {
531 Self {
532 builder: self
533 .builder
534 .property("cell-background-set", cell_background_set),
535 }
536 }
537
538 pub fn height(self, height: i32) -> Self {
539 Self {
540 builder: self.builder.property("height", height),
541 }
542 }
543
544 pub fn is_expanded(self, is_expanded: bool) -> Self {
545 Self {
546 builder: self.builder.property("is-expanded", is_expanded),
547 }
548 }
549
550 pub fn is_expander(self, is_expander: bool) -> Self {
551 Self {
552 builder: self.builder.property("is-expander", is_expander),
553 }
554 }
555
556 pub fn mode(self, mode: CellRendererMode) -> Self {
557 Self {
558 builder: self.builder.property("mode", mode),
559 }
560 }
561
562 pub fn sensitive(self, sensitive: bool) -> Self {
563 Self {
564 builder: self.builder.property("sensitive", sensitive),
565 }
566 }
567
568 pub fn visible(self, visible: bool) -> Self {
569 Self {
570 builder: self.builder.property("visible", visible),
571 }
572 }
573
574 pub fn width(self, width: i32) -> Self {
575 Self {
576 builder: self.builder.property("width", width),
577 }
578 }
579
580 pub fn xalign(self, xalign: f32) -> Self {
581 Self {
582 builder: self.builder.property("xalign", xalign),
583 }
584 }
585
586 pub fn xpad(self, xpad: u32) -> Self {
587 Self {
588 builder: self.builder.property("xpad", xpad),
589 }
590 }
591
592 pub fn yalign(self, yalign: f32) -> Self {
593 Self {
594 builder: self.builder.property("yalign", yalign),
595 }
596 }
597
598 pub fn ypad(self, ypad: u32) -> Self {
599 Self {
600 builder: self.builder.property("ypad", ypad),
601 }
602 }
603
604 #[must_use = "Building the object from the builder is usually expensive and is not expected to have side effects"]
607 pub fn build(self) -> CellRendererToggle {
608 assert_initialized_main_thread!();
609 self.builder.build()
610 }
611}