fltk/macros/
button.rs

1#[doc(hidden)]
2#[macro_export]
3/// Implements ButtonExt
4macro_rules! impl_button_ext {
5    ($name: ident, $flname: ident) => {
6        paste::paste! {
7            unsafe impl ButtonExt for $name {
8                fn shortcut(&self) -> $crate::enums::Shortcut {
9                    unsafe {
10                        std::mem::transmute([<$flname _shortcut>](self.inner.widget() as _))
11                    }
12                }
13
14                fn set_shortcut(&mut self, shortcut: $crate::enums::Shortcut) {
15                    unsafe {
16                        [<$flname _set_shortcut>](self.inner.widget() as _, shortcut.bits() as i32)
17                    }
18                }
19
20                fn clear(&mut self) {
21                    unsafe {
22                        [<$flname _clear>](self.inner.widget() as _);
23                    }
24                }
25
26                fn is_set(&self) -> bool {
27                    unsafe {
28                        [<$flname _value>](self.inner.widget() as _) != 0
29                    }
30                }
31
32                fn set(&mut self, flag: bool) {
33                    unsafe {
34                        [<$flname _set_value>](self.inner.widget() as _, i32::from(flag))
35                    }
36                }
37
38                fn value(&self) -> bool {
39                    unsafe {
40                        [<$flname _value>](self.inner.widget() as _) != 0
41                    }
42                }
43
44                fn set_value(&mut self, flag: bool) {
45                    unsafe {
46                        [<$flname _set_value>](self.inner.widget() as _, i32::from(flag))
47                    }
48                }
49
50                fn set_down_frame(&mut self, f: $crate::enums::FrameType) {
51                    unsafe { [<$flname _set_down_box>](self.inner.widget() as _, f.as_i32()) }
52                }
53
54                fn down_frame(&self) -> $crate::enums::FrameType {
55                    unsafe { $crate::enums::FrameType::from_i32([<$flname _down_box>](self.inner.widget() as _)) }
56                }
57            }
58        }
59    };
60}
61
62pub use impl_button_ext;