1 ///////////////////////////////////////////////////////////////////////////// 2 // Name: griddemo.h 3 // Purpose: Grid control wxWidgets sample 4 // Author: Michael Bedward 5 // Modified by: 6 // RCS-ID: $Id: griddemo.h 42565 2006-10-28 13:46:18Z VZ $ 7 // Copyright: (c) Michael Bedward, Julian Smart 8 // Licence: wxWindows license 9 ///////////////////////////////////////////////////////////////////////////// 10 11 12 #ifndef griddemo_h 13 #define griddemo_h 14 15 class wxGrid; 16 17 class GridApp : public wxApp 18 { 19 public: 20 bool OnInit(); 21 }; 22 23 24 class GridFrame : public wxFrame 25 { 26 wxGrid *grid; 27 #if wxUSE_LOG 28 wxTextCtrl *logWin; 29 wxLogTextCtrl *logger; 30 #endif // wxUSE_LOG 31 32 void SetDefaults(); 33 34 void ToggleRowLabels( wxCommandEvent& ); 35 void ToggleColLabels( wxCommandEvent& ); 36 void ToggleEditing( wxCommandEvent& ); 37 void ToggleRowSizing( wxCommandEvent& ); 38 void ToggleColSizing( wxCommandEvent& ); 39 void ToggleColMoving( wxCommandEvent& ); 40 void ToggleGridSizing( wxCommandEvent& ); 41 void ToggleGridDragCell ( wxCommandEvent& ); 42 void ToggleGridLines( wxCommandEvent& ); 43 void AutoSizeCols( wxCommandEvent& ); 44 void CellOverflow( wxCommandEvent& ); 45 void ResizeCell( wxCommandEvent& ); 46 void SetLabelColour( wxCommandEvent& ); 47 void SetLabelTextColour( wxCommandEvent& ); 48 void SetLabelFont(wxCommandEvent &); 49 void SetRowLabelHorizAlignment( wxCommandEvent& ); 50 void SetRowLabelVertAlignment( wxCommandEvent& ); 51 void SetColLabelHorizAlignment( wxCommandEvent& ); 52 void SetColLabelVertAlignment( wxCommandEvent& ); 53 void SetGridLineColour( wxCommandEvent& ); 54 55 void SetCellFgColour(wxCommandEvent &); 56 void SetCellBgColour(wxCommandEvent &); 57 58 void InsertRow( wxCommandEvent& ); 59 void InsertCol( wxCommandEvent& ); 60 void DeleteSelectedRows( wxCommandEvent& ); 61 void DeleteSelectedCols( wxCommandEvent& ); 62 void ClearGrid( wxCommandEvent& ); 63 void SelectCells( wxCommandEvent& ); 64 void SelectRows( wxCommandEvent& ); 65 void SelectCols( wxCommandEvent& ); 66 67 void DeselectCell(wxCommandEvent& event); 68 void DeselectCol(wxCommandEvent& event); 69 void DeselectRow(wxCommandEvent& event); 70 void DeselectAll(wxCommandEvent& event); 71 void SelectCell(wxCommandEvent& event); 72 void SelectCol(wxCommandEvent& event); 73 void SelectRow(wxCommandEvent& event); 74 void SelectAll(wxCommandEvent& event); 75 void OnAddToSelectToggle(wxCommandEvent& event); 76 void OnShowSelection(wxCommandEvent& event); 77 78 void OnLabelLeftClick( wxGridEvent& ); 79 void OnCellLeftClick( wxGridEvent& ); 80 void OnRowSize( wxGridSizeEvent& ); 81 void OnColSize( wxGridSizeEvent& ); 82 void OnSelectCell( wxGridEvent& ); 83 void OnRangeSelected( wxGridRangeSelectEvent& ); 84 void OnCellValueChanged( wxGridEvent& ); 85 void OnCellBeginDrag( wxGridEvent& ); 86 87 void OnEditorShown(wxGridEvent&); 88 void OnEditorHidden(wxGridEvent&); 89 90 void OnSetHighlightWidth(wxCommandEvent&); 91 void OnSetROHighlightWidth(wxCommandEvent&); 92 93 public: 94 GridFrame(); 95 ~GridFrame(); 96 97 void OnQuit( wxCommandEvent& ); 98 void About( wxCommandEvent& ); 99 void OnVTable( wxCommandEvent& ); 100 void OnBugsTable( wxCommandEvent& ); 101 void OnSmallGrid( wxCommandEvent& ); 102 103 enum 104 { 105 ID_TOGGLEROWLABELS = 100, 106 ID_TOGGLECOLLABELS, 107 ID_TOGGLEEDIT, 108 ID_TOGGLEROWSIZING, 109 ID_TOGGLECOLSIZING, 110 ID_TOGGLECOLMOVING, 111 ID_TOGGLEGRIDSIZING, 112 ID_TOGGLEGRIDDRAGCELL, 113 ID_TOGGLEGRIDLINES, 114 ID_AUTOSIZECOLS, 115 ID_CELLOVERFLOW, 116 ID_RESIZECELL, 117 ID_SETLABELCOLOUR, 118 ID_SETLABELTEXTCOLOUR, 119 ID_SETLABEL_FONT, 120 ID_ROWLABELALIGN, 121 ID_ROWLABELHORIZALIGN, 122 ID_ROWLABELVERTALIGN, 123 ID_COLLABELALIGN, 124 ID_COLLABELHORIZALIGN, 125 ID_COLLABELVERTALIGN, 126 ID_GRIDLINECOLOUR, 127 ID_INSERTROW, 128 ID_INSERTCOL, 129 ID_DELETEROW, 130 ID_DELETECOL, 131 ID_CLEARGRID, 132 ID_CHANGESEL, 133 ID_SELCELLS, 134 ID_SELROWS, 135 ID_SELCOLS, 136 ID_SET_CELL_FG_COLOUR, 137 ID_SET_CELL_BG_COLOUR, 138 ID_VTABLE, 139 ID_BUGS_TABLE, 140 ID_SMALL_GRID, 141 ID_SELECT_UNSELECT, 142 ID_SHOW_SELECTION, 143 ID_SELECT_ALL, 144 ID_SELECT_ROW, 145 ID_SELECT_COL, 146 ID_SELECT_CELL, 147 ID_DESELECT_ALL, 148 ID_DESELECT_ROW, 149 ID_DESELECT_COL, 150 ID_DESELECT_CELL, 151 152 ID_SET_HIGHLIGHT_WIDTH, 153 ID_SET_RO_HIGHLIGHT_WIDTH, 154 155 ID_TESTFUNC 156 }; 157 158 #if wxUSE_LOG 159 wxLog *m_logOld; 160 #endif // wxUSE_LOG 161 162 // add the cells to selection when using commands from select menu? 163 bool m_addToSel; 164 165 DECLARE_EVENT_TABLE() 166 }; 167 168 class MyGridCellRenderer : public wxGridCellStringRenderer 169 { 170 public: 171 virtual void Draw(wxGrid& grid, 172 wxGridCellAttr& attr, 173 wxDC& dc, 174 const wxRect& rect, 175 int row, int col, 176 bool isSelected); 177 }; 178 179 // ---------------------------------------------------------------------------- 180 // demonstration of virtual table which doesn't store all of its data in 181 // memory 182 // ---------------------------------------------------------------------------- 183 184 class BigGridTable : public wxGridTableBase 185 { 186 public: BigGridTable(long sizeGrid)187 BigGridTable(long sizeGrid) { m_sizeGrid = sizeGrid; } 188 GetNumberRows()189 int GetNumberRows() { return m_sizeGrid; } GetNumberCols()190 int GetNumberCols() { return m_sizeGrid; } GetValue(int row,int col)191 wxString GetValue( int row, int col ) 192 { 193 return wxString::Format(wxT("(%d, %d)"), row, col); 194 } 195 SetValue(int,int,const wxString &)196 void SetValue( int , int , const wxString& ) { /* ignore */ } IsEmptyCell(int,int)197 bool IsEmptyCell( int , int ) { return false; } 198 199 private: 200 long m_sizeGrid; 201 }; 202 203 class BigGridFrame : public wxFrame 204 { 205 public: 206 BigGridFrame(long sizeGrid); 207 208 private: 209 wxGrid* m_grid; 210 BigGridTable* m_table; 211 }; 212 213 // ---------------------------------------------------------------------------- 214 // an example of custom attr provider: this one makes all odd rows appear grey 215 // ---------------------------------------------------------------------------- 216 217 class MyGridCellAttrProvider : public wxGridCellAttrProvider 218 { 219 public: 220 MyGridCellAttrProvider(); 221 virtual ~MyGridCellAttrProvider(); 222 223 virtual wxGridCellAttr *GetAttr(int row, int col, 224 wxGridCellAttr::wxAttrKind kind) const; 225 226 private: 227 wxGridCellAttr *m_attrForOddRows; 228 }; 229 230 // ---------------------------------------------------------------------------- 231 // another, more realistic, grid example: shows typed columns and more 232 // ---------------------------------------------------------------------------- 233 234 class BugsGridTable : public wxGridTableBase 235 { 236 public: BugsGridTable()237 BugsGridTable(){}; 238 239 virtual int GetNumberRows(); 240 virtual int GetNumberCols(); 241 virtual bool IsEmptyCell( int row, int col ); 242 virtual wxString GetValue( int row, int col ); 243 virtual void SetValue( int row, int col, const wxString& value ); 244 245 virtual wxString GetColLabelValue( int col ); 246 247 virtual wxString GetTypeName( int row, int col ); 248 virtual bool CanGetValueAs( int row, int col, const wxString& typeName ); 249 virtual bool CanSetValueAs( int row, int col, const wxString& typeName ); 250 251 virtual long GetValueAsLong( int row, int col ); 252 virtual bool GetValueAsBool( int row, int col ); 253 254 virtual void SetValueAsLong( int row, int col, long value ); 255 virtual void SetValueAsBool( int row, int col, bool value ); 256 }; 257 258 class BugsGridFrame : public wxFrame 259 { 260 public: 261 BugsGridFrame(); 262 }; 263 264 265 #endif // griddemo_h 266 267