1995-08-23 14:33:51 +00:00
|
|
|
#ifndef __MSKSHEET_H
|
|
|
|
#define __MSKSHEET_H
|
|
|
|
|
|
|
|
#ifndef __MASK_H
|
|
|
|
#include <mask.h>
|
|
|
|
#endif
|
|
|
|
|
1995-08-31 17:30:48 +00:00
|
|
|
#define K_ROWEDIT ( K_CTRL + 'I' )
|
|
|
|
|
1995-08-23 14:33:51 +00:00
|
|
|
class TSheet_field;
|
|
|
|
class TSpreadsheet;
|
|
|
|
|
1995-09-05 10:45:24 +00:00
|
|
|
// @doc EXTERNAL
|
|
|
|
|
|
|
|
// @type SPREADSHEET_NOTIFY | Gestisce l'ingresso, l'uscita e la modifica da una riga dello sheet
|
1995-08-23 14:33:51 +00:00
|
|
|
typedef bool (*SPREADSHEET_NOTIFY)(TSheet_field& s, int r, KEY k);
|
1995-09-05 10:45:24 +00:00
|
|
|
// @type SPREADSHEET_GETMASK | Ritorna una maschera di edit diversa a seconda della riga
|
1995-08-23 14:33:51 +00:00
|
|
|
typedef TMask* (*SPREADSHEET_GETMASK)( int numriga, TMask& fullmask, bool destroy );
|
|
|
|
|
1995-09-05 10:45:24 +00:00
|
|
|
// @class TSheet_field | Classe per la gestione dei campi di uno spreadsheet
|
|
|
|
//
|
|
|
|
// @base public | TMask_field
|
1995-08-23 14:33:51 +00:00
|
|
|
class TSheet_field : public TMask_field
|
|
|
|
{
|
1995-09-05 10:45:24 +00:00
|
|
|
// @author:(INTERNAL) Guido
|
|
|
|
|
|
|
|
// @access Private Member
|
|
|
|
|
|
|
|
// @cmember Spreadsheet di apprtenenza dei campi
|
1995-08-23 14:33:51 +00:00
|
|
|
TSpreadsheet* _sheet;
|
1995-09-05 10:45:24 +00:00
|
|
|
// @cmember Intestazione di tutte le colonne
|
1995-08-23 14:33:51 +00:00
|
|
|
TToken_string _head;
|
1995-09-05 10:45:24 +00:00
|
|
|
// @cmember Indica se aggiungere a fondo dello spreadsheet o nella riga in cui ti trovi
|
|
|
|
bool _append;
|
1995-08-23 14:33:51 +00:00
|
|
|
|
1995-09-05 10:45:24 +00:00
|
|
|
// @access Protected Member
|
1995-08-23 14:33:51 +00:00
|
|
|
protected:
|
1995-09-05 10:45:24 +00:00
|
|
|
// @cmember Ritorna l'identificatore della classe
|
1995-08-23 14:33:51 +00:00
|
|
|
virtual word class_id() const;
|
1995-09-05 10:45:24 +00:00
|
|
|
// @cmember Gestisce la chiamata all'handler del campo
|
1995-08-23 14:33:51 +00:00
|
|
|
virtual bool on_hit();
|
1995-09-05 10:45:24 +00:00
|
|
|
// @cmember Gestisce la pressione del tasto (TRUE se la gestione ha avuto successo)
|
1995-08-23 14:33:51 +00:00
|
|
|
virtual bool on_key(KEY k);
|
1995-09-05 10:45:24 +00:00
|
|
|
// @cmember Ritorna TRUE se il campo puo' lasciare il focus
|
1995-08-23 14:33:51 +00:00
|
|
|
virtual bool test_focus_change();
|
|
|
|
|
1995-09-05 10:45:24 +00:00
|
|
|
// @cmember Legge la testata dello spreadsheet da <p scanner>
|
1995-08-23 14:33:51 +00:00
|
|
|
virtual void parse_head(TScanner& scanner);
|
1995-09-05 10:45:24 +00:00
|
|
|
// @cmember Legge gli item dello spreadsheet da <p scanner>
|
1995-08-23 14:33:51 +00:00
|
|
|
virtual bool parse_item(TScanner& scanner);
|
1995-09-05 10:45:24 +00:00
|
|
|
// @cmember Crea lo spreadsheet
|
1995-08-23 14:33:51 +00:00
|
|
|
virtual void create(WINDOW parent);
|
|
|
|
|
1995-09-05 10:45:24 +00:00
|
|
|
// @cmember Setta il focus sul campo
|
1995-08-23 14:33:51 +00:00
|
|
|
virtual void highlight() const;
|
1995-09-05 10:45:24 +00:00
|
|
|
// @cmember Permette di settare il valore del cambio del campo
|
1995-08-23 14:33:51 +00:00
|
|
|
virtual void exchange(bool show_value, const real& n);
|
|
|
|
|
1995-09-05 10:45:24 +00:00
|
|
|
// @access Public Member
|
1995-08-23 14:33:51 +00:00
|
|
|
public:
|
1995-09-05 10:45:24 +00:00
|
|
|
// @cmember Ritorna una riga dello spreadsheet
|
|
|
|
TToken_string& row(int n);
|
|
|
|
// @cmember Ritorna un array con tutte le righe dello spreadsheet
|
|
|
|
TString_array& rows_array() const;
|
|
|
|
// @cmember Ritrna l'elemento <p c>-esimo della riga <p r>
|
|
|
|
const char* cell(int r, int c)
|
|
|
|
{ return row(r).get(c); }
|
|
|
|
|
|
|
|
// @cmember Ritorna la prima riga vuota nello spreadsheet
|
|
|
|
int first_empty() const;
|
|
|
|
// @cmember Ritorna il numero di righe presenti nello spreadsheet
|
|
|
|
int items() const;
|
|
|
|
// @cmember Ritorna il numero della riga corrente
|
|
|
|
int selected() const;
|
|
|
|
// @cmember Seleziona la riga <p r> come quella corrente
|
|
|
|
void select(int r);
|
|
|
|
|
|
|
|
// @cmember Vuota tutto lo spreadsheet
|
1995-08-23 14:33:51 +00:00
|
|
|
virtual void reset();
|
1995-09-05 10:45:24 +00:00
|
|
|
// @cmember Abilita/disabilita tutto lo spreadsheet (vedi <mf TMask_field::enable>)
|
1995-08-23 14:33:51 +00:00
|
|
|
virtual void enable(bool on);
|
|
|
|
|
1995-09-05 10:45:24 +00:00
|
|
|
// @cmember Aggiorna le righe dello spreadsheet con i valori salvati una volta che non ci sono
|
|
|
|
// piu' processi attivi
|
1995-08-23 14:33:51 +00:00
|
|
|
void on_idle();
|
|
|
|
|
1995-09-05 10:45:24 +00:00
|
|
|
// @cmember Elimina una riga
|
|
|
|
void destroy(int r = -1);
|
|
|
|
// @cmember Forza l'aggiornamento dei dati della riga sullo schermo
|
|
|
|
void force_update(int r = -1);
|
1995-08-23 14:33:51 +00:00
|
|
|
|
1995-09-05 10:45:24 +00:00
|
|
|
// @cmember Ritorna la maschera corrispondente ad una riga dello spreadsheet
|
1995-08-23 14:33:51 +00:00
|
|
|
TMask& sheet_mask() const;
|
1995-09-05 10:45:24 +00:00
|
|
|
// @cmember Setta il membro <p _notify> della classe <c TSpreadsheet>
|
1995-08-23 14:33:51 +00:00
|
|
|
void set_notify(SPREADSHEET_NOTIFY n);
|
1995-09-05 10:45:24 +00:00
|
|
|
// @cmember Setta il membro <p _set_getmask> della classe <c TSpreadsheet>
|
1995-08-23 14:33:51 +00:00
|
|
|
void set_getmask(SPREADSHEET_GETMASK n);
|
|
|
|
|
1995-09-05 10:45:24 +00:00
|
|
|
// @cmember Abilita/disabilita una colonna dello spreadsheet (vedi <mf TSpreadsheet::enable_column>)
|
1995-08-23 14:33:51 +00:00
|
|
|
void enable_column(int col, bool on = TRUE);
|
|
|
|
|
1995-09-05 10:45:24 +00:00
|
|
|
// @cmember Abilita/disabilita una cella dello spreadsheet (vedi <mf TSpreadsheet::enable_cell>)
|
1995-08-23 14:33:51 +00:00
|
|
|
void enable_cell(int row, int column, bool on = TRUE);
|
1995-09-05 10:45:24 +00:00
|
|
|
// @cmember Disabilta una cella dello spreadsheet (chiama <mf TSheet_field::enable>)
|
|
|
|
void disable_cell(int row, int column)
|
|
|
|
{ enable_cell(row, column, FALSE); }
|
|
|
|
// @cmember Controlla se una cella e' disabilitata (vedi <mf TSpreadsheet::cell_disabled>)
|
1995-08-23 14:33:51 +00:00
|
|
|
bool cell_disabled(int row, int column) const;
|
|
|
|
|
1995-09-05 10:45:24 +00:00
|
|
|
// @cmember Permette di eliminare una colonna dallo spreadsheet
|
1995-08-23 14:33:51 +00:00
|
|
|
void delete_column( const int col ) const;
|
1995-09-05 10:45:24 +00:00
|
|
|
// @cmember Sposta la colonna dalla posizione <p fromindex> alla posizione
|
|
|
|
// <p toindex>
|
1995-08-23 14:33:51 +00:00
|
|
|
void move_column( const int fromindex, const int toindex ) const;
|
1995-09-05 10:45:24 +00:00
|
|
|
// @cmember Permette di invertire la posizione di due colonne
|
1995-08-23 14:33:51 +00:00
|
|
|
void swap_columns(const int fromid, const int toid) const;
|
1995-09-05 10:45:24 +00:00
|
|
|
// @cmember Permette di invertire la posizione di due righe
|
|
|
|
void swap_rows( const int fromindex, const int toindex ) ;
|
1995-08-23 14:33:51 +00:00
|
|
|
|
1995-09-05 10:45:24 +00:00
|
|
|
// @cmember Setta la larghezza della colonna
|
1995-08-23 14:33:51 +00:00
|
|
|
void set_column_width( const int col, const int width ) const;
|
1995-09-05 10:45:24 +00:00
|
|
|
// @cmember Setta il titolo della colonna
|
|
|
|
void set_column_header( const int col, const TString& header ) const;
|
|
|
|
// @cmember Setta il member <p _append> con il valore di <p on>
|
|
|
|
void set_append(bool on = TRUE)
|
|
|
|
{ _append = on;}
|
|
|
|
// @cmember Ritorna il valore del mebro <p _append>
|
|
|
|
bool append() const
|
|
|
|
{ return _append;}
|
|
|
|
|
|
|
|
// @cmember Costruttore
|
1995-08-23 14:33:51 +00:00
|
|
|
TSheet_field(TMask* m);
|
1995-09-05 10:45:24 +00:00
|
|
|
// @cmember Distruttore
|
1995-08-23 14:33:51 +00:00
|
|
|
virtual ~TSheet_field();
|
|
|
|
};
|
|
|
|
|
|
|
|
#endif
|