2d9e19f537
git-svn-id: svn://10.65.10.50/branches/R_10_00@22905 c028cbd2-c16b-5b4b-a496-9718f37d4682
346 lines
9.5 KiB
C++
Executable File
346 lines
9.5 KiB
C++
Executable File
#ifndef __CONTROLS_H
|
|
#define __CONTROLS_H
|
|
|
|
#ifndef __STRINGS_H
|
|
#include <strings.h>
|
|
#endif
|
|
|
|
class TWindow; // __WINDOW_H
|
|
class TMask_field; // __MASKFLD_H
|
|
|
|
#ifndef XVT_INCL_XVT
|
|
#include <xvt.h>
|
|
#endif
|
|
|
|
#ifndef INCL_XI
|
|
struct XI_OBJ;
|
|
struct XI_EVENT;
|
|
struct XI_PNT;
|
|
struct XI_RCT;
|
|
#endif
|
|
|
|
|
|
void init_controls();
|
|
void free_controls();
|
|
XVT_FNTID xvtil_default_font(bool bold = false, bool big = false);
|
|
|
|
WINDOW create_interface(WINDOW parent, short x, short y, short dx, short dy,
|
|
const char* caption, TWindow* mask /*, bool tags*/);
|
|
|
|
void attach_interface(WINDOW win, COLOR back);
|
|
short low_get_focus_id(WINDOW win);
|
|
void low_set_focus_id(WINDOW win, short cid);
|
|
bool has_virtual_keyboard();
|
|
XVT_IMAGE get_background_texture();
|
|
|
|
bool is_full_screen_interface(WINDOW win);
|
|
bool set_full_screen_interface(WINDOW win, bool on);
|
|
|
|
///////////////////////////////////////////////////////////
|
|
// Custom control
|
|
///////////////////////////////////////////////////////////
|
|
|
|
// @doc INTERNAL
|
|
|
|
// @class TControl | Classe per la creazione di controlli
|
|
class TControl : public TObject
|
|
// @author:(INTERNAL) Guido
|
|
|
|
// @access:(INTERNAL) Private Member
|
|
{
|
|
|
|
// @access Protected Member
|
|
protected:
|
|
// @cmember:(INTERNAL) Puntatore al controllo creato
|
|
XI_OBJ* _obj;
|
|
|
|
// @cmember:(INTERNAL) Puntatore al TMask_field eventualmente associato
|
|
TMask_field* _fld;
|
|
|
|
// @cmember Ricava l'interfaccia da una finestra
|
|
XI_OBJ* get_interface(WINDOW win = 0L) const;
|
|
|
|
// @cmember Cerca un controllo operabile (in avanti o all'indietro)
|
|
XI_OBJ* find_operable(XI_OBJ* container, bool forward, bool normal) const;
|
|
|
|
// @cmember Setta l'identificatore del prossimo controllo per il tasto TAB
|
|
void set_tab_cid(XI_OBJ* obj, short id) const;
|
|
|
|
XI_RCT coord2rct(XI_OBJ* itf, short x, short y, short dx, short dy) const;
|
|
unsigned long flags2attr(const char* flags) const;
|
|
void update_tab_cid();
|
|
const char* parse_caption(const char* cap, bool& bold, bool& big, COLOR& color) const;
|
|
|
|
void change_attrib(unsigned long attr, bool on, XI_OBJ* obj = NULL);
|
|
|
|
|
|
// @access Public Member
|
|
public:
|
|
TControl();
|
|
virtual ~TControl();
|
|
|
|
static KEY xiev_to_key(const XI_EVENT* xiev);
|
|
virtual bool event_handler(XI_OBJ* itf, XI_EVENT* ep);
|
|
|
|
bool notify_key(KEY k);
|
|
bool is_edit_key(KEY k) const;
|
|
|
|
// @cmember Ritorna l'identificatore assegnato al controllo
|
|
short id() const;
|
|
WINDOW parent() const;
|
|
XI_OBJ* xi_object() { return _obj; }
|
|
|
|
int type() const;
|
|
|
|
// @cmember Ritorna il prompt del controllo
|
|
virtual const char* caption() const;
|
|
// @cmember Setta il prompt del controllo
|
|
virtual void set_caption(const char* c);
|
|
|
|
// @cmember Abilita/disabilita il controllo
|
|
virtual void enable(bool on = TRUE);
|
|
void disable() { enable(FALSE); }
|
|
|
|
// @cmember Mostra/nasconde il controllo
|
|
virtual void show(bool on = TRUE);
|
|
void hide() { show(FALSE); }
|
|
|
|
virtual void destroy();
|
|
|
|
virtual void set_rjust(bool on = TRUE);
|
|
void set_ljust() { set_rjust(FALSE); }
|
|
|
|
virtual bool read_only() const;
|
|
virtual void set_read_only(bool on = TRUE);
|
|
|
|
void autoselect(bool on);
|
|
|
|
// @cmember Forza il focus al controllo
|
|
virtual void set_focus() const;
|
|
|
|
virtual RCT& get_rect(RCT& r) const;
|
|
virtual void set_rect(const RCT& r);
|
|
virtual void set_rect(short cx, short cy, short cwidth, short cheight, short clen = 0);
|
|
|
|
// @cmember imposta la posizione del cursore a <pos>
|
|
void set_caret_pos(int pos = -1);
|
|
|
|
bool on_key(KEY k);
|
|
};
|
|
|
|
|
|
class TText_control : public TControl
|
|
{
|
|
public: // TControl
|
|
virtual void set_caption(const char* text);
|
|
|
|
public:
|
|
TText_control(WINDOW win, short cid,
|
|
short left, short top, short width, short height,
|
|
const char* flags, const char* text);
|
|
virtual ~TText_control() {}
|
|
};
|
|
|
|
|
|
class TGroupbox_control : public TText_control
|
|
{
|
|
XI_OBJ* _rct; // Rettangolo del gruppo
|
|
|
|
public: // TControl
|
|
virtual void show(bool on);
|
|
virtual RCT& get_rect(RCT& r) const;
|
|
|
|
public:
|
|
TGroupbox_control(WINDOW win, short cid,
|
|
short left, short top, short width, short height,
|
|
const char* flags, const char* text);
|
|
virtual ~TGroupbox_control() {}
|
|
};
|
|
|
|
class TField_control : public TControl
|
|
{
|
|
protected:
|
|
bool event_handler(XI_OBJ* itf, XI_EVENT* xiev);
|
|
|
|
void create(WINDOW win, short cid,
|
|
short left, short top,
|
|
short width, short height, short maxlen,
|
|
const char* flags, const char* text, int button);
|
|
|
|
TField_control() {}
|
|
|
|
public:
|
|
// @cmember Mostra o nasconde il bottone associato
|
|
void show_button(bool on);
|
|
|
|
// @cmember Forza il focus al controllo
|
|
virtual void set_focus() const;
|
|
void set_back_color(COLOR col);
|
|
|
|
// @cmember Costruttore
|
|
TField_control(WINDOW win, short cid,
|
|
short left, short top,
|
|
short width, short maxlen,
|
|
const char* flags, const char* text);
|
|
// @cmember Distruttore
|
|
virtual ~TField_control() {}
|
|
};
|
|
|
|
class TMultiline_control : public TField_control
|
|
{
|
|
public:
|
|
TMultiline_control(WINDOW win, short cid,
|
|
short left, short top,
|
|
short width, short height, short maxlen,
|
|
const char* flags, const char* text);
|
|
virtual ~TMultiline_control() {}
|
|
};
|
|
|
|
class TButton_control : public TControl
|
|
{
|
|
protected:
|
|
void create(WINDOW win, short cid,
|
|
short left, short top, short width, short height,
|
|
const char* flags, const char* text,
|
|
WIN_TYPE wc, XI_OBJ* container = NULL, bool drawable = false);
|
|
|
|
virtual bool event_handler(XI_OBJ* itf, XI_EVENT* ep);
|
|
|
|
public:
|
|
bool checked() const;
|
|
virtual void check(bool on = true);
|
|
void uncheck() { check(false); }
|
|
bool toggle();
|
|
|
|
int button_type() const;
|
|
XI_OBJ* container() const;
|
|
|
|
virtual void set_icon(unsigned int icon_up, unsigned int icon_dn = 0);
|
|
|
|
TButton_control() {}
|
|
virtual ~TButton_control() {}
|
|
};
|
|
|
|
class TPushbutton_control : public TButton_control
|
|
{
|
|
int _bmp_up, _bmp_dn;
|
|
|
|
protected:
|
|
virtual bool event_handler(XI_OBJ* itf, XI_EVENT* xiev);
|
|
TPushbutton_control() { } // Internal use only
|
|
|
|
public:
|
|
virtual void update();
|
|
|
|
// @cmember Setta il prompt del bottone
|
|
virtual void set_caption(const char* c);
|
|
|
|
void set_bmp(int up, int dn);
|
|
void set_bmp(const char * up, const char * dn);
|
|
void set_icon(int icon_up, int icon_dn = 0);
|
|
void set_central_icon(unsigned int hicon);
|
|
char mnemonic() const;
|
|
|
|
TPushbutton_control(WINDOW win, short cid,
|
|
short left, short top, short width, short height,
|
|
const char* flags, const char* text,
|
|
int bmp_up = 0, int _bmp_dn = 0);
|
|
virtual ~TPushbutton_control();
|
|
};
|
|
|
|
class TRadiobutton_control : public TButton_control
|
|
{
|
|
protected: // TControl
|
|
virtual bool event_handler(XI_OBJ* itf, XI_EVENT* xiev);
|
|
virtual void set_focus() const;
|
|
|
|
protected:
|
|
TRadiobutton_control() { } // To be derived
|
|
|
|
public:
|
|
// @cmember Abilita/disabilita il controllo
|
|
virtual void enable(bool on = TRUE);
|
|
// @cmember Mostra/nasconde il controllo
|
|
virtual void show(bool on = TRUE);
|
|
|
|
byte get_checked() const;
|
|
void check_button(byte b);
|
|
|
|
void show_button(byte b, bool on = TRUE);
|
|
void hide_button(byte b) { show_button(b, FALSE); }
|
|
|
|
TRadiobutton_control(WINDOW win, short cid,
|
|
short left, short top, short width, short height,
|
|
const char* flags, const char* text);
|
|
virtual ~TRadiobutton_control() {}
|
|
};
|
|
|
|
class TTagbutton_control : public TRadiobutton_control
|
|
{
|
|
protected: // TControl
|
|
virtual bool event_handler(XI_OBJ* itf, XI_EVENT* xiev);
|
|
|
|
public:
|
|
virtual void set_caption(const char* text);
|
|
|
|
TTagbutton_control(WINDOW win, short cid,
|
|
short left, short top, short width, short height,
|
|
const char* flags, const char* text, int tag);
|
|
virtual ~TTagbutton_control() {}
|
|
};
|
|
|
|
|
|
class TCheckbox_control : public TButton_control
|
|
{
|
|
public:
|
|
TCheckbox_control(WINDOW win, short cid,
|
|
short left, short top, short width,
|
|
const char* flags, const char* text);
|
|
virtual ~TCheckbox_control() {}
|
|
};
|
|
|
|
class TCheckbutton_control : public TButton_control
|
|
{
|
|
int _pic_up, _pic_dn;
|
|
|
|
protected:
|
|
virtual void check(bool on);
|
|
|
|
public:
|
|
virtual void set_icon(int icon_up, int icon_dn);
|
|
|
|
TCheckbutton_control(WINDOW win, short cid,
|
|
short left, short top, short width, int height,
|
|
const char* flags, const char* text,
|
|
int icon_up, int icon_dn);
|
|
virtual ~TCheckbutton_control() {}
|
|
};
|
|
|
|
class TListbox_control : public TField_control
|
|
{
|
|
TToken_string _codes, _values;
|
|
int _current;
|
|
|
|
protected: // TTField_control
|
|
virtual bool event_handler(XI_OBJ* itf, XI_EVENT* xiev);
|
|
|
|
public:
|
|
void set_values(const char* c, const char* v);
|
|
int items() const;
|
|
bool select(int i);
|
|
bool select_by_initial(char c);
|
|
bool select_by_ofs(int i);
|
|
int selected() const;
|
|
|
|
TListbox_control(WINDOW win, short cid,
|
|
short left, short top, short width,
|
|
const char* flags, const char* text,
|
|
const char* codes, const char* values);
|
|
virtual ~TListbox_control();
|
|
};
|
|
|
|
int xvtil_drop_down_list(XI_OBJ* field_or_cell, const char* codes, const char* values);
|
|
const char* xvtil_get_cell_selection(XI_OBJ* field_or_cell, int sel, const char* cod, const char* val);
|
|
|
|
#endif
|