#ifndef __VIRTKEYB_H
#define __VIRTKEYB_H

#ifndef __WINDOW_H
#include <window.h>
#endif

#ifndef __MASK_H
#include <mask.h>
#endif

// @doc EXTERNAL
// @doc EXTERNAL

// @class TVirtual_keyboard | Classe per la gestione della tastiera virtuale
//
// @base public | TMask

class TVirtual_keyboard : public TMask
{
  TMask_field & _fld; // campo legato alla tastiera
	int _pos;
	
	// @author:(INTERNAL) Guido

  // @access Protected Member
protected:
	void create_keyboard_row(int y, const char * keyboard_row);
	virtual void init();
	virtual int buttons_per_row() const { return 16;}
	int & pos() { return _pos;}
  TMask_field & fld() {return _fld;}
	static bool handler(TMask_field& f, KEY key);

  // @access Public Member
public:
  // @cmember Run della testatiera 
  virtual KEY run();
  // @cmember Costruttore 
  TVirtual_keyboard(TMask_field & fld, int cols = 90, int rows = 8);
  // @cmember Distruttore
	virtual ~TVirtual_keyboard() {}
};

class TVirtual_numpad : public TVirtual_keyboard
{
  // @author:(INTERNAL) Guido
 bool _currency;
  // @access Protected Member
protected:
	virtual void init();
	virtual int buttons_per_row() const { return 6;}

  // @access Public Member
public:
  // @cmember Costruttore 
  TVirtual_numpad(TMask_field & fld, bool currency = false, int cols = 35, int rows = 8);
  // @cmember Distruttore
	virtual ~TVirtual_numpad() {}
};

#endif // __VIRTKEYB_H