#ifndef __AUTOMASK_H
#define __AUTOMASK_H

#ifndef __MSKSHEET_H
#include <msksheet.h>
#endif

enum TField_event { fe_null, fe_init, fe_modify, fe_button, fe_close, 
                    fe_magic, fe_info,
                    se_enter, se_leave,
                    se_query_modify, se_notify_modify, 
                    se_query_add, se_notify_add,
                    se_query_del, se_notify_del };

class TAutomask : public TMask
{ 
private:
  static bool universal_handler(TMask_field& f, KEY k);
  static bool insheet_universal_handler(TMask_field& f, KEY k);
  static bool universal_notifier(TSheet_field& f, int row, KEY k);
  
protected:  
  void set_handlers();
  TField_event key2event(TMask_field& f, KEY key) const;

public:
  virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly) pure;
  bool error_box(const char* fmt, ...);   // No more f.error_box

  TAutomask() { }
  TAutomask(const char* name, int num = 0);
  TAutomask(const char* title, int pages, int cols, int rows, int xpos = -1, int ypos = -1);
  virtual ~TAutomask() { }
};

#endif