#ifndef __MSKSHEET_H #define __MSKSHEET_H #ifndef __MASK_H #include <mask.h> #endif #define K_ROWEDIT ( K_CTRL + 'I' ) class TSheet_field; // @doc EXTERNAL // @type SPREADSHEET_NOTIFY | Prototipo funzione che gestisce l'ingresso, l'uscita e la modifica da una riga dello sheet typedef bool (*SPREADSHEET_NOTIFY)(TSheet_field& s, int r, KEY k); // @doc EXTERNAL // @type SPREADSHEET_GETMASK | Prototipo funzione che ritorna una maschera di edit diversa a seconda della riga typedef TMask* (*SPREADSHEET_GETMASK)( int numriga, TMask& fullmask, bool destroy ); // @doc EXTERNAL // @class TSheet_field | Classe per la gestione dei campi di uno spreadsheet // // @base public | TMask_field class TSheet_field : public TMask_field { // @author:(INTERNAL) Guido // @cfriend TSpreadsheet friend class TSpreadsheet; // @access:(INTERNAL) Private Member // @cmember:(INTERNAL) Spreadsheet di apprtenenza dei campi TSpreadsheet* _sheet; // @cmember:(INTERNAL) Intestazione di tutte le colonne TToken_string _head; // @cmember:(INTERNAL) Indica se aggiungere a fondo dello spreadsheet o nella riga in cui ti trovi bool _append; // @access Protected Member protected: // @cmember Ritorna l'identificatore della classe virtual word class_id() const; // @cmember Gestisce la chiamata all'handler del campo virtual bool on_hit(); // @cmember Gestisce la pressione del tasto (TRUE se la gestione ha avuto successo) virtual bool on_key(KEY k); // @cmember Ritorna TRUE se il campo puo' lasciare il focus virtual bool test_focus_change(); // @cmember Legge la testata dello spreadsheet da <p scanner> virtual void parse_head(TScanner& scanner); // @cmember Legge gli item dello spreadsheet da <p scanner> virtual bool parse_item(TScanner& scanner); // @cmember Crea lo spreadsheet virtual void create(WINDOW parent); // @cmember Setta il focus sul campo virtual void highlight() const; // @cmember Permette di settare il valore del cambio del campo virtual void exchange(bool show_value, const real& n); // @access Public Member public: // @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, bool scrollto = FALSE); // @cmember Vuota tutto lo spreadsheet virtual void reset(); // @cmember Abilita/disabilita tutto lo spreadsheet (vedi <mf TMask_field::enable>) virtual void enable(bool on); // @cmember Ritorna lo stato di abilitazione dello spreadsheet (vedi <mf TMask_field::enabled>) virtual bool enabled() const; // @cmember Aggiorna le righe dello spreadsheet con i valori salvati una volta che non ci sono // piu' processi attivi void on_idle(); // @cmember Elimina una riga void destroy(int r = -1, bool update_sheet = TRUE); // @cmember Forza l'aggiornamento dei dati della riga sullo schermo void force_update(int r = -1); // @cmember Ritorna la maschera corrispondente ad una riga dello spreadsheet TMask& sheet_mask() const; // @cmember Setta il membro <p _notify> della classe <c TSpreadsheet> void set_notify(SPREADSHEET_NOTIFY n); // @cmember Setta il membro <p _set_getmask> della classe <c TSpreadsheet> void set_getmask(SPREADSHEET_GETMASK n); // @cmember Abilita/disabilita una colonna dello spreadsheet (vedi <mf TSpreadsheet::enable_column>) void enable_column(int col, bool on = TRUE); // @cmember Abilita/disabilita una cella dello spreadsheet (vedi <mf TSpreadsheet::enable_cell>) void enable_cell(int row, int column, bool on = TRUE); // @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>) bool cell_disabled(int row, int column) const; // @cmember Permette di eliminare una colonna dallo spreadsheet void delete_column( const int col ) const; // @cmember Sposta la colonna dalla posizione <p fromindex> alla posizione // <p toindex> void move_column( const int fromindex, const int toindex ) const; // @cmember Permette di invertire la posizione di due colonne void swap_columns(const int fromid, const int toid) const; // @cmember Permette di invertire la posizione di due righe void swap_rows( const int fromindex, const int toindex ) ; // @cmember Setta la larghezza della colonna void set_column_width( const int col, const int width ) const; // @cmember Setta il titolo della colonna void set_column_header( const int col, const TString& header ) const; // @cmember Setta l'allineamento della colonna void set_column_justify(int col, bool right); // @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 TSheet_field(TMask* m); // @cmember Distruttore virtual ~TSheet_field(); }; #endif