#ifndef __MSKSHEET_H #define __MSKSHEET_H #ifndef __MASK_H #include #endif class TSpreadsheet; typedef bool (*SPREADSHEET_NOTIFY)(int r, KEY k); class TSheet_field : public TMask_field { TSpreadsheet* _sheet; TToken_string _head; protected: virtual word class_id() const; virtual bool on_hit(); virtual bool on_key(KEY k); virtual bool test_focus_change(); virtual void parse_head(TScanner& scanner); virtual bool parse_item(TScanner& scanner); virtual void create(WINDOW parent); virtual void highlight() const; virtual void exchange(bool show_value, const real& n); public: TToken_string& row(int n); // Get/Create a new row TString_array& rows_array() const; // Get all rows int first_empty() const; // First empty row int items() const; // Number of rows int selected() const; // Number of current row virtual void reset(); virtual void enable(bool on); void on_idle(); void destroy(int r = -1); // Destroy row void force_update(int r = -1);// Update data/screen TMask& sheet_mask() const; void set_notify(SPREADSHEET_NOTIFY n); void enable_column(int col, bool on = TRUE); void enable_cell(int row, int column, bool on = TRUE); void disable_cell(int row, int column) { enable_cell(row, column, FALSE); } bool cell_disabled(int row, int column) const; TSheet_field(TMask* m); virtual ~TSheet_field(); }; #endif