#ifndef __TIPWIN_HH__
#define __TIPWIN_HH__

#include <FL/Fl_Menu_Window.H>
#include <FL/Fl_Button.H>
#include <FL/Fl_Input.H>


/**
 * Custom tooltip window
 */
class TipWin : public Fl_Menu_Window {
   char tip[256];
   int bgcolor, recent;
   void *cur_widget;
public:
   TipWin();
   void draw();
   void value(const char *s);
   void do_show(void *wid);
   void do_hide();
   void recent_tooltip(int val);

   void cancel(void *wid) {
      if (wid == cur_widget) { cur_widget = NULL; do_hide(); }
   }
};

extern TipWin *my_tipwin(void);


/**
 * A Button sharing a custom tooltip window
 */
class TipWinButton : public Fl_Button {
   char *mytooltip;
   TipWin *tipwin;
 public:
   TipWinButton(int x, int y, int w, int h, const char *l = 0);
   ~TipWinButton();
   virtual int handle(int e);

   void set_tooltip(const char *s);
};

/**
 * A button that highlights on mouse over
 */
class CustButton : public TipWinButton {
   Fl_Color norm_color, light_color;
public:
   CustButton(int x, int y, int w, int h, const char *l=0);
   virtual int handle(int e);
   void hl_color(Fl_Color col);
};


/**
 * An Input with custom tooltip window
 */
class TipWinInput : public Fl_Input {
   char *mytooltip;
   TipWin *tipwin;
public:
   TipWinInput (int x, int y, int w, int h, const char* l=0);
   ~TipWinInput(void);
   virtual int handle(int e);

   void set_tooltip(const char *s);
};


#endif // __TIPWIN_HH__

