1#![allow(deprecated)]
5
6use crate::{ffi, CellRenderer, CellRendererMode, TreePath};
7use glib::{
8 object::ObjectType as _,
9 prelude::*,
10 signal::{connect_raw, SignalHandlerId},
11 translate::*,
12};
13use std::boxed::Box as Box_;
14
15glib::wrapper! {
16 #[doc(alias = "GtkCellRendererToggle")]
17 pub struct CellRendererToggle(Object<ffi::GtkCellRendererToggle>) @extends CellRenderer;
18
19 match fn {
20 type_ => || ffi::gtk_cell_renderer_toggle_get_type(),
21 }
22}
23
24impl CellRendererToggle {
25 #[cfg_attr(feature = "v4_10", deprecated = "Since 4.10")]
26 #[allow(deprecated)]
27 #[doc(alias = "gtk_cell_renderer_toggle_new")]
28 pub fn new() -> CellRendererToggle {
29 assert_initialized_main_thread!();
30 unsafe { CellRenderer::from_glib_none(ffi::gtk_cell_renderer_toggle_new()).unsafe_cast() }
31 }
32
33 pub fn builder() -> CellRendererToggleBuilder {
38 CellRendererToggleBuilder::new()
39 }
40
41 #[cfg_attr(feature = "v4_10", deprecated = "Since 4.10")]
42 #[allow(deprecated)]
43 #[doc(alias = "gtk_cell_renderer_toggle_get_activatable")]
44 #[doc(alias = "get_activatable")]
45 #[doc(alias = "activatable")]
46 pub fn is_activatable(&self) -> bool {
47 unsafe {
48 from_glib(ffi::gtk_cell_renderer_toggle_get_activatable(
49 self.to_glib_none().0,
50 ))
51 }
52 }
53
54 #[cfg_attr(feature = "v4_10", deprecated = "Since 4.10")]
55 #[allow(deprecated)]
56 #[doc(alias = "gtk_cell_renderer_toggle_get_active")]
57 #[doc(alias = "get_active")]
58 #[doc(alias = "active")]
59 pub fn is_active(&self) -> bool {
60 unsafe {
61 from_glib(ffi::gtk_cell_renderer_toggle_get_active(
62 self.to_glib_none().0,
63 ))
64 }
65 }
66
67 #[cfg_attr(feature = "v4_10", deprecated = "Since 4.10")]
68 #[allow(deprecated)]
69 #[doc(alias = "gtk_cell_renderer_toggle_get_radio")]
70 #[doc(alias = "get_radio")]
71 #[doc(alias = "radio")]
72 pub fn is_radio(&self) -> bool {
73 unsafe {
74 from_glib(ffi::gtk_cell_renderer_toggle_get_radio(
75 self.to_glib_none().0,
76 ))
77 }
78 }
79
80 #[cfg_attr(feature = "v4_10", deprecated = "Since 4.10")]
81 #[allow(deprecated)]
82 #[doc(alias = "gtk_cell_renderer_toggle_set_activatable")]
83 #[doc(alias = "activatable")]
84 pub fn set_activatable(&self, setting: bool) {
85 unsafe {
86 ffi::gtk_cell_renderer_toggle_set_activatable(
87 self.to_glib_none().0,
88 setting.into_glib(),
89 );
90 }
91 }
92
93 #[cfg_attr(feature = "v4_10", deprecated = "Since 4.10")]
94 #[allow(deprecated)]
95 #[doc(alias = "gtk_cell_renderer_toggle_set_active")]
96 #[doc(alias = "active")]
97 pub fn set_active(&self, setting: bool) {
98 unsafe {
99 ffi::gtk_cell_renderer_toggle_set_active(self.to_glib_none().0, setting.into_glib());
100 }
101 }
102
103 #[cfg_attr(feature = "v4_10", deprecated = "Since 4.10")]
104 #[allow(deprecated)]
105 #[doc(alias = "gtk_cell_renderer_toggle_set_radio")]
106 #[doc(alias = "radio")]
107 pub fn set_radio(&self, radio: bool) {
108 unsafe {
109 ffi::gtk_cell_renderer_toggle_set_radio(self.to_glib_none().0, radio.into_glib());
110 }
111 }
112
113 pub fn is_inconsistent(&self) -> bool {
114 ObjectExt::property(self, "inconsistent")
115 }
116
117 pub fn set_inconsistent(&self, inconsistent: bool) {
118 ObjectExt::set_property(self, "inconsistent", inconsistent)
119 }
120
121 #[doc(alias = "toggled")]
122 pub fn connect_toggled<F: Fn(&Self, TreePath) + 'static>(&self, f: F) -> SignalHandlerId {
123 unsafe extern "C" fn toggled_trampoline<F: Fn(&CellRendererToggle, TreePath) + 'static>(
124 this: *mut ffi::GtkCellRendererToggle,
125 path: *mut std::ffi::c_char,
126 f: glib::ffi::gpointer,
127 ) {
128 let f: &F = &*(f as *const F);
129 let path = from_glib_full(crate::ffi::gtk_tree_path_new_from_string(path));
130 f(&from_glib_borrow(this), path)
131 }
132 unsafe {
133 let f: Box_<F> = Box_::new(f);
134 connect_raw(
135 self.as_ptr() as *mut _,
136 c"toggled".as_ptr() as *const _,
137 Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
138 toggled_trampoline::<F> as *const (),
139 )),
140 Box_::into_raw(f),
141 )
142 }
143 }
144
145 #[doc(alias = "activatable")]
146 pub fn connect_activatable_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
147 unsafe extern "C" fn notify_activatable_trampoline<F: Fn(&CellRendererToggle) + 'static>(
148 this: *mut ffi::GtkCellRendererToggle,
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::activatable".as_ptr() as *const _,
160 Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
161 notify_activatable_trampoline::<F> as *const (),
162 )),
163 Box_::into_raw(f),
164 )
165 }
166 }
167
168 #[doc(alias = "active")]
169 pub fn connect_active_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
170 unsafe extern "C" fn notify_active_trampoline<F: Fn(&CellRendererToggle) + 'static>(
171 this: *mut ffi::GtkCellRendererToggle,
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::active".as_ptr() as *const _,
183 Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
184 notify_active_trampoline::<F> as *const (),
185 )),
186 Box_::into_raw(f),
187 )
188 }
189 }
190
191 #[doc(alias = "inconsistent")]
192 pub fn connect_inconsistent_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
193 unsafe extern "C" fn notify_inconsistent_trampoline<
194 F: Fn(&CellRendererToggle) + 'static,
195 >(
196 this: *mut ffi::GtkCellRendererToggle,
197 _param_spec: glib::ffi::gpointer,
198 f: glib::ffi::gpointer,
199 ) {
200 let f: &F = &*(f as *const F);
201 f(&from_glib_borrow(this))
202 }
203 unsafe {
204 let f: Box_<F> = Box_::new(f);
205 connect_raw(
206 self.as_ptr() as *mut _,
207 c"notify::inconsistent".as_ptr() as *const _,
208 Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
209 notify_inconsistent_trampoline::<F> as *const (),
210 )),
211 Box_::into_raw(f),
212 )
213 }
214 }
215
216 #[doc(alias = "radio")]
217 pub fn connect_radio_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
218 unsafe extern "C" fn notify_radio_trampoline<F: Fn(&CellRendererToggle) + 'static>(
219 this: *mut ffi::GtkCellRendererToggle,
220 _param_spec: glib::ffi::gpointer,
221 f: glib::ffi::gpointer,
222 ) {
223 let f: &F = &*(f as *const F);
224 f(&from_glib_borrow(this))
225 }
226 unsafe {
227 let f: Box_<F> = Box_::new(f);
228 connect_raw(
229 self.as_ptr() as *mut _,
230 c"notify::radio".as_ptr() as *const _,
231 Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
232 notify_radio_trampoline::<F> as *const (),
233 )),
234 Box_::into_raw(f),
235 )
236 }
237 }
238}
239
240impl Default for CellRendererToggle {
241 fn default() -> Self {
242 Self::new()
243 }
244}
245
246#[must_use = "The builder must be built to be used"]
251pub struct CellRendererToggleBuilder {
252 builder: glib::object::ObjectBuilder<'static, CellRendererToggle>,
253}
254
255impl CellRendererToggleBuilder {
256 fn new() -> Self {
257 Self {
258 builder: glib::object::Object::builder(),
259 }
260 }
261
262 pub fn activatable(self, activatable: bool) -> Self {
263 Self {
264 builder: self.builder.property("activatable", activatable),
265 }
266 }
267
268 pub fn active(self, active: bool) -> Self {
269 Self {
270 builder: self.builder.property("active", active),
271 }
272 }
273
274 pub fn inconsistent(self, inconsistent: bool) -> Self {
275 Self {
276 builder: self.builder.property("inconsistent", inconsistent),
277 }
278 }
279
280 pub fn radio(self, radio: bool) -> Self {
281 Self {
282 builder: self.builder.property("radio", radio),
283 }
284 }
285
286 pub fn cell_background(self, cell_background: impl Into<glib::GString>) -> Self {
287 Self {
288 builder: self
289 .builder
290 .property("cell-background", cell_background.into()),
291 }
292 }
293
294 pub fn cell_background_rgba(self, cell_background_rgba: &gdk::RGBA) -> Self {
295 Self {
296 builder: self
297 .builder
298 .property("cell-background-rgba", cell_background_rgba),
299 }
300 }
301
302 pub fn cell_background_set(self, cell_background_set: bool) -> Self {
303 Self {
304 builder: self
305 .builder
306 .property("cell-background-set", cell_background_set),
307 }
308 }
309
310 pub fn height(self, height: i32) -> Self {
311 Self {
312 builder: self.builder.property("height", height),
313 }
314 }
315
316 pub fn is_expanded(self, is_expanded: bool) -> Self {
317 Self {
318 builder: self.builder.property("is-expanded", is_expanded),
319 }
320 }
321
322 pub fn is_expander(self, is_expander: bool) -> Self {
323 Self {
324 builder: self.builder.property("is-expander", is_expander),
325 }
326 }
327
328 pub fn mode(self, mode: CellRendererMode) -> Self {
329 Self {
330 builder: self.builder.property("mode", mode),
331 }
332 }
333
334 pub fn sensitive(self, sensitive: bool) -> Self {
335 Self {
336 builder: self.builder.property("sensitive", sensitive),
337 }
338 }
339
340 pub fn visible(self, visible: bool) -> Self {
341 Self {
342 builder: self.builder.property("visible", visible),
343 }
344 }
345
346 pub fn width(self, width: i32) -> Self {
347 Self {
348 builder: self.builder.property("width", width),
349 }
350 }
351
352 pub fn xalign(self, xalign: f32) -> Self {
353 Self {
354 builder: self.builder.property("xalign", xalign),
355 }
356 }
357
358 pub fn xpad(self, xpad: u32) -> Self {
359 Self {
360 builder: self.builder.property("xpad", xpad),
361 }
362 }
363
364 pub fn yalign(self, yalign: f32) -> Self {
365 Self {
366 builder: self.builder.property("yalign", yalign),
367 }
368 }
369
370 pub fn ypad(self, ypad: u32) -> Self {
371 Self {
372 builder: self.builder.property("ypad", ypad),
373 }
374 }
375
376 #[must_use = "Building the object from the builder is usually expensive and is not expected to have side effects"]
379 pub fn build(self) -> CellRendererToggle {
380 assert_initialized_main_thread!();
381 self.builder.build()
382 }
383}