// gestione tabelle DiTech
#include <automask.h>
#include <modaut.h>
#include <tabapp.h>

class TMask_tabdt : public TAutomask
{

protected:
  bool on_field_event(TOperable_field& o, TField_event e, long jolly);
public:
  TMask_tabdt(const char* name);
  virtual ~TMask_tabdt();
};

TMask_tabdt::TMask_tabdt(const char* name) : TAutomask(name) 
{
}

TMask_tabdt::~TMask_tabdt()
{
}

bool TMask_tabdt::on_field_event(TOperable_field& o, TField_event e, long jolly)
{ 
  return true;
}

class Tab_app_dt : public Tab_application
{
protected:  // TRelation_application
  virtual bool user_destroy() ;          
  virtual bool user_create() ;
  virtual int rewrite(const TMask& m);
  
  virtual TString& get_mask_name(TString& name) const;
  virtual TMask* set_mask(TMask * m=NULL);
  
public:
  Tab_app_dt();
  virtual ~Tab_app_dt() {}
};

HIDDEN inline Tab_app_dt& app() { return (Tab_app_dt&)main_app(); }

// costruttore
Tab_app_dt::Tab_app_dt() {}

TString& Tab_app_dt::get_mask_name(TString& name) const
{
  name = get_tabname();
  if (name[0] == '%')
    name = name.mid(1);
  name.insert("dttb", 0);
  return name;
}

TMask* Tab_app_dt::set_mask(TMask* m)
{
  if (m == NULL)
  {
    TFilename name; get_mask_name(name);
    m = new TMask_tabdt(name);
  }
  return TTable_application::set_mask(m);
}

bool Tab_app_dt::user_create()
{
  bool ok = Tab_application::user_create();
  
  if (ok) 
  {
    TMask& mask = *set_mask();
  }
  
  return ok;
}

bool Tab_app_dt::user_destroy()
{
  return Tab_application::user_destroy();
}

int Tab_app_dt::rewrite(const TMask& m)
{
  return Tab_application::rewrite(m);
}

int dt0100(int argc, char* argv[])
{
  Tab_app_dt a;
  a.run(argc, argv, TR("Tabella"));
  return 0;
}