1 /* 2 * button.h 3 * DIN Is Noise is copyright (c) 2006-2021 Jagannathan Sampath 4 * DIN Is Noise is released under GNU Public License 2.0 5 * For more information, please visit https://dinisnoise.org/ 6 */ 7 8 9 #ifndef __button 10 #define __button 11 12 #include "widget.h" 13 #include "label.h" 14 15 #include <string> 16 17 struct button; 18 19 struct click_listener : voiddata { 20 virtual void clicked (button& b) = 0; 21 }; 22 23 struct button : label { 24 25 int click; 26 27 int click_repeat; 28 double start_time, repeat_time; 29 double first_repeat_time, subsequent_repeat_time; 30 31 button (); 32 33 int handle_input (); 34 click_listener *lsnr; 35 set_listenerbutton36 void set_listener (click_listener* l) {lsnr = l;} 37 int call_listener (); 38 39 void draw (); 40 41 }; 42 43 #define DECL_CLICK_LISTENER(name) \ 44 struct name : click_listener { \ 45 void clicked (button& b);\ 46 };\ 47 48 #define MAKE_CLICK_LISTENER(name,var) \ 49 struct name : click_listener {\ 50 void clicked (button& b);\ 51 };\ 52 name var;\ 53 54 #define CLICKED_BUTTON(scope,name) void scope::name::clicked (button& b) 55 56 #endif 57