Subversion Repositories DIN Is Noise

Rev

Rev 2097 | Blame | Compare with Previous | Last modification | View Log | RSS feed

/*
* button.h
* DIN Is Noise is copyright (c) 2006-2025 Jagannathan Sampath
* DIN Is Noise is released under GNU Public License 2.0
* For more information, please visit https://dinisnoise.org/
*/



#ifndef __button
#define __button

#include "widget.h"
#include "label.h"

#include <string>

struct button;

struct click_listener : voiddata {
  virtual void clicked (button& b) = 0;
};

struct button : label {

  int click;

  int click_repeat;
  double start_time, repeat_time;
  double first_repeat_time, subsequent_repeat_time;

  button ();

  int handle_input ();
  click_listener *lsnr;

  void set_listener (click_listener* l) {lsnr = l;}
  int call_listener ();

  void draw ();

};

#define DECL_CLICK_LISTENER(name) \
struct name : click_listener { \
  void clicked (button& b);\
};\

#define MAKE_CLICK_LISTENER(name,var) \
struct name : click_listener {\
  void clicked (button& b);\
};\
name var;\

#define CLICKED_BUTTON(scope,name) void scope::name::clicked (button& b)

#endif