344 lines
		
	
	
		
			10 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			344 lines
		
	
	
		
			10 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| /////////////////////////////////////////////////////////////////////////////
 | |
| // Name:        griddemo.h
 | |
| // Purpose:     Grid control wxWidgets sample
 | |
| // Author:      Michael Bedward
 | |
| // Modified by:
 | |
| // Copyright:   (c) Michael Bedward, Julian Smart
 | |
| // Licence:     wxWindows licence
 | |
| /////////////////////////////////////////////////////////////////////////////
 | |
| 
 | |
| 
 | |
| #ifndef griddemo_h
 | |
| #define griddemo_h
 | |
| 
 | |
| class wxGrid;
 | |
| 
 | |
| class GridApp : public wxApp
 | |
| {
 | |
| public:
 | |
|     bool OnInit() wxOVERRIDE;
 | |
| };
 | |
| 
 | |
| 
 | |
| class GridFrame : public wxFrame
 | |
| {
 | |
|     wxGrid         *grid;
 | |
| #if wxUSE_LOG
 | |
|     wxTextCtrl     *logWin;
 | |
|     wxLogTextCtrl  *logger;
 | |
| #endif // wxUSE_LOG
 | |
| 
 | |
|     void SetDefaults();
 | |
| 
 | |
|     void ToggleRowLabels( wxCommandEvent& );
 | |
|     void ToggleColLabels( wxCommandEvent& );
 | |
|     void ToggleEditing( wxCommandEvent& );
 | |
|     void ToggleRowSizing( wxCommandEvent& );
 | |
|     void ToggleColSizing( wxCommandEvent& );
 | |
|     void ToggleColMoving( wxCommandEvent& );
 | |
|     void ToggleColHiding( wxCommandEvent& );
 | |
|     void ToggleGridSizing( wxCommandEvent& );
 | |
|     void ToggleGridDragCell ( wxCommandEvent& );
 | |
|     void SetNativeColHeader ( wxCommandEvent& );
 | |
|     void SetNativeColLabels ( wxCommandEvent& );
 | |
|     void SetCustomColHeader( wxCommandEvent& );
 | |
|     void SetDefaultColHeader( wxCommandEvent& );
 | |
|     void SetTabBehaviour( wxCommandEvent& );
 | |
|     void SetTabCustomHandler( wxCommandEvent& );
 | |
|     void ToggleGridLines( wxCommandEvent& );
 | |
|     void AutoSizeCols( wxCommandEvent& );
 | |
|     void CellOverflow( wxCommandEvent& );
 | |
|     void ResizeCell( wxCommandEvent& );
 | |
|     void SetLabelColour( wxCommandEvent& );
 | |
|     void SetLabelTextColour( wxCommandEvent& );
 | |
|     void SetLabelFont(wxCommandEvent &);
 | |
|     void SetRowLabelHorizAlignment( wxCommandEvent& );
 | |
|     void SetRowLabelVertAlignment( wxCommandEvent& );
 | |
|     void SetColLabelHorizAlignment( wxCommandEvent& );
 | |
|     void SetColLabelVertAlignment( wxCommandEvent& );
 | |
|     void SetCornerLabelHorizAlignment( wxCommandEvent& );
 | |
|     void SetCornerLabelVertAlignment( wxCommandEvent& );
 | |
|     void ToggleCornerLabelOrientation( wxCommandEvent& );
 | |
|     void SetGridLineColour( wxCommandEvent& );
 | |
| 
 | |
|     void SetCellFgColour(wxCommandEvent &);
 | |
|     void SetCellBgColour(wxCommandEvent &);
 | |
| 
 | |
|     void InsertRow( wxCommandEvent& );
 | |
|     void InsertCol( wxCommandEvent& );
 | |
|     void DeleteSelectedRows( wxCommandEvent& );
 | |
|     void DeleteSelectedCols( wxCommandEvent& );
 | |
|     void ClearGrid( wxCommandEvent& );
 | |
|     void EditCell( wxCommandEvent& );
 | |
|     void SetCornerLabelValue( wxCommandEvent& );
 | |
|     void ShowSelection( wxCommandEvent& );
 | |
|     void SelectCells( wxCommandEvent& );
 | |
|     void SelectRows( wxCommandEvent& );
 | |
|     void SelectCols( wxCommandEvent& );
 | |
|     void SelectRowsOrCols( wxCommandEvent& );
 | |
| 
 | |
|     void FreezeOrThaw( wxCommandEvent& );
 | |
| 
 | |
|     void DeselectCell(wxCommandEvent& event);
 | |
|     void DeselectCol(wxCommandEvent& event);
 | |
|     void DeselectRow(wxCommandEvent& event);
 | |
|     void DeselectAll(wxCommandEvent& event);
 | |
|     void SelectCell(wxCommandEvent& event);
 | |
|     void SelectCol(wxCommandEvent& event);
 | |
|     void SelectRow(wxCommandEvent& event);
 | |
|     void SelectAll(wxCommandEvent& event);
 | |
|     void OnAddToSelectToggle(wxCommandEvent& event);
 | |
| 
 | |
|     void AutoSizeRow(wxCommandEvent& event);
 | |
|     void AutoSizeCol(wxCommandEvent& event);
 | |
|     void AutoSizeRowLabel(wxCommandEvent& event);
 | |
|     void AutoSizeColLabel(wxCommandEvent& event);
 | |
|     void AutoSizeLabelsCol(wxCommandEvent& event);
 | |
|     void AutoSizeLabelsRow(wxCommandEvent& event);
 | |
|     void AutoSizeTable(wxCommandEvent& event);
 | |
| 
 | |
|     void HideCol(wxCommandEvent& event);
 | |
|     void ShowCol(wxCommandEvent& event);
 | |
|     void HideRow(wxCommandEvent& event);
 | |
|     void ShowRow(wxCommandEvent& event);
 | |
| 
 | |
| 
 | |
|     void OnLabelLeftClick( wxGridEvent& );
 | |
|     void OnCellLeftClick( wxGridEvent& );
 | |
|     void OnRowSize( wxGridSizeEvent& );
 | |
|     void OnColSize( wxGridSizeEvent& );
 | |
|     void OnColAutoSize( wxGridSizeEvent& );
 | |
|     void OnSelectCell( wxGridEvent& );
 | |
|     void OnRangeSelected( wxGridRangeSelectEvent& );
 | |
|     void OnCellValueChanging( wxGridEvent& );
 | |
|     void OnCellValueChanged( wxGridEvent& );
 | |
|     void OnCellBeginDrag( wxGridEvent& );
 | |
| 
 | |
|     void OnEditorShown(wxGridEvent&);
 | |
|     void OnEditorHidden(wxGridEvent&);
 | |
| 
 | |
|     void OnSetHighlightWidth(wxCommandEvent&);
 | |
|     void OnSetROHighlightWidth(wxCommandEvent&);
 | |
| 
 | |
|     void OnGridCustomTab(wxGridEvent& event);
 | |
| 
 | |
|     void OnGridContextMenu(wxContextMenuEvent& event);
 | |
| 
 | |
| public:
 | |
|     GridFrame();
 | |
|     ~GridFrame();
 | |
| 
 | |
|     void OnQuit( wxCommandEvent& );
 | |
|     void About( wxCommandEvent& );
 | |
|     void OnVTable( wxCommandEvent& );
 | |
|     void OnBugsTable( wxCommandEvent& );
 | |
|     void OnTabularTable( wxCommandEvent& );
 | |
|     void OnGridRender( wxCommandEvent& event );
 | |
|     void OnRenderPaint( wxPaintEvent& event );
 | |
| 
 | |
|     enum
 | |
|     {
 | |
|         ID_TOGGLEROWLABELS = 100,
 | |
|         ID_TOGGLECOLLABELS,
 | |
|         ID_TOGGLEEDIT,
 | |
|         ID_TOGGLEROWSIZING,
 | |
|         ID_TOGGLECOLSIZING,
 | |
|         ID_TOGGLECOLMOVING,
 | |
|         ID_TOGGLECOLHIDING,
 | |
|         ID_TOGGLEGRIDSIZING,
 | |
|         ID_TOGGLEGRIDDRAGCELL,
 | |
|         ID_TOGGLEGRIDLINES,
 | |
|         ID_AUTOSIZECOLS,
 | |
|         ID_CELLOVERFLOW,
 | |
|         ID_HIDECOL,
 | |
|         ID_SHOWCOL,
 | |
|         ID_HIDEROW,
 | |
|         ID_SHOWROW,
 | |
|         ID_RESIZECELL,
 | |
|         ID_SETLABELCOLOUR,
 | |
|         ID_SETLABELTEXTCOLOUR,
 | |
|         ID_SETLABEL_FONT,
 | |
|         ID_ROWLABELALIGN,
 | |
|         ID_ROWLABELHORIZALIGN,
 | |
|         ID_ROWLABELVERTALIGN,
 | |
|         ID_COLLABELALIGN,
 | |
|         ID_COLLABELHORIZALIGN,
 | |
|         ID_COLLABELVERTALIGN,
 | |
|         ID_CORNERLABELALIGN,
 | |
|         ID_CORNERLABELHORIZALIGN,
 | |
|         ID_CORNERLABELVERTALIGN,
 | |
|         ID_CORNERLABELORIENTATION,
 | |
|         ID_COLDEFAULTHEADER,
 | |
|         ID_COLNATIVEHEADER,
 | |
|         ID_COLNATIVELABELS,
 | |
|         ID_COLCUSTOMHEADER,
 | |
|         ID_TAB_STOP,
 | |
|         ID_TAB_WRAP,
 | |
|         ID_TAB_LEAVE,
 | |
|         ID_TAB_CUSTOM,
 | |
|         ID_GRIDLINECOLOUR,
 | |
|         ID_INSERTROW,
 | |
|         ID_INSERTCOL,
 | |
|         ID_DELETEROW,
 | |
|         ID_DELETECOL,
 | |
|         ID_CLEARGRID,
 | |
|         ID_EDITCELL,
 | |
|         ID_SETCORNERLABEL,
 | |
|         ID_SHOWSEL,
 | |
|         ID_CHANGESEL,
 | |
|         ID_SELCELLS,
 | |
|         ID_SELROWS,
 | |
|         ID_SELCOLS,
 | |
|         ID_SELROWSORCOLS,
 | |
|         ID_SET_CELL_FG_COLOUR,
 | |
|         ID_SET_CELL_BG_COLOUR,
 | |
|         ID_VTABLE,
 | |
|         ID_BUGS_TABLE,
 | |
|         ID_TABULAR_TABLE,
 | |
|         ID_SELECT_UNSELECT,
 | |
|         ID_SELECT_ALL,
 | |
|         ID_SELECT_ROW,
 | |
|         ID_SELECT_COL,
 | |
|         ID_SELECT_CELL,
 | |
|         ID_DESELECT_ALL,
 | |
|         ID_DESELECT_ROW,
 | |
|         ID_DESELECT_COL,
 | |
|         ID_DESELECT_CELL,
 | |
|         ID_SIZE_ROW,
 | |
|         ID_SIZE_COL,
 | |
|         ID_SIZE_ROW_LABEL,
 | |
|         ID_SIZE_COL_LABEL,
 | |
|         ID_SIZE_LABELS_COL,
 | |
|         ID_SIZE_LABELS_ROW,
 | |
|         ID_SIZE_GRID,
 | |
| 
 | |
|         ID_FREEZE_OR_THAW,
 | |
| 
 | |
|         ID_SET_HIGHLIGHT_WIDTH,
 | |
|         ID_SET_RO_HIGHLIGHT_WIDTH,
 | |
| 
 | |
|         ID_TESTFUNC,
 | |
| 
 | |
|         ID_RENDER_ROW_LABEL,
 | |
|         ID_RENDER_COL_LABEL,
 | |
|         ID_RENDER_GRID_LINES,
 | |
|         ID_RENDER_GRID_BORDER,
 | |
|         ID_RENDER_SELECT_HLIGHT,
 | |
|         ID_RENDER_LOMETRIC,
 | |
|         ID_RENDER_COORDS,
 | |
|         ID_RENDER_ZOOM,
 | |
|         ID_RENDER_MARGIN,
 | |
|         ID_RENDER_DEFAULT_SIZE,
 | |
|     };
 | |
| 
 | |
| #if wxUSE_LOG
 | |
|     wxLog *m_logOld;
 | |
| #endif // wxUSE_LOG
 | |
| 
 | |
|     // add the cells to selection when using commands from select menu?
 | |
|     bool m_addToSel;
 | |
| 
 | |
|     wxBitmap m_gridBitmap;
 | |
| 
 | |
|     wxDECLARE_EVENT_TABLE();
 | |
| };
 | |
| 
 | |
| class MyGridCellRenderer : public wxGridCellStringRenderer
 | |
| {
 | |
| public:
 | |
|     virtual void Draw(wxGrid& grid,
 | |
|                       wxGridCellAttr& attr,
 | |
|                       wxDC& dc,
 | |
|                       const wxRect& rect,
 | |
|                       int row, int col,
 | |
|                       bool isSelected) wxOVERRIDE;
 | |
| };
 | |
| 
 | |
| // ----------------------------------------------------------------------------
 | |
| // demonstration of virtual table which doesn't store all of its data in
 | |
| // memory
 | |
| // ----------------------------------------------------------------------------
 | |
| 
 | |
| class BigGridTable : public wxGridTableBase
 | |
| {
 | |
| public:
 | |
|     BigGridTable(long sizeGrid) { m_sizeGrid = sizeGrid; }
 | |
| 
 | |
|     int GetNumberRows() wxOVERRIDE { return m_sizeGrid; }
 | |
|     int GetNumberCols() wxOVERRIDE { return m_sizeGrid; }
 | |
|     wxString GetValue( int row, int col ) wxOVERRIDE
 | |
|     {
 | |
|         return wxString::Format("(%d, %d)", row, col);
 | |
|     }
 | |
| 
 | |
|     void SetValue( int , int , const wxString&  ) wxOVERRIDE { /* ignore */ }
 | |
|     bool IsEmptyCell( int , int  ) wxOVERRIDE { return false; }
 | |
| 
 | |
| private:
 | |
|     long m_sizeGrid;
 | |
| };
 | |
| 
 | |
| class BigGridFrame : public wxFrame
 | |
| {
 | |
| public:
 | |
|     BigGridFrame(long sizeGrid);
 | |
| 
 | |
| private:
 | |
|     wxGrid*       m_grid;
 | |
|     BigGridTable* m_table;
 | |
| };
 | |
| 
 | |
| // ----------------------------------------------------------------------------
 | |
| // an example of custom attr provider: this one makes all odd rows appear grey
 | |
| // ----------------------------------------------------------------------------
 | |
| 
 | |
| class MyGridCellAttrProvider : public wxGridCellAttrProvider
 | |
| {
 | |
| public:
 | |
|     MyGridCellAttrProvider();
 | |
| 
 | |
|     virtual wxGridCellAttr *GetAttr(int row, int col,
 | |
|                                     wxGridCellAttr::wxAttrKind  kind) const wxOVERRIDE;
 | |
| 
 | |
| private:
 | |
|     wxGridCellAttrPtr m_attrForOddRows;
 | |
| };
 | |
| 
 | |
| // ----------------------------------------------------------------------------
 | |
| // another, more realistic, grid example: shows typed columns and more
 | |
| // ----------------------------------------------------------------------------
 | |
| 
 | |
| class BugsGridTable : public wxGridTableBase
 | |
| {
 | |
| public:
 | |
|     BugsGridTable() { }
 | |
| 
 | |
|     virtual int GetNumberRows() wxOVERRIDE;
 | |
|     virtual int GetNumberCols() wxOVERRIDE;
 | |
|     virtual bool IsEmptyCell( int row, int col ) wxOVERRIDE;
 | |
|     virtual wxString GetValue( int row, int col ) wxOVERRIDE;
 | |
|     virtual void SetValue( int row, int col, const wxString& value ) wxOVERRIDE;
 | |
| 
 | |
|     virtual wxString GetColLabelValue( int col ) wxOVERRIDE;
 | |
| 
 | |
|     virtual wxString GetTypeName( int row, int col ) wxOVERRIDE;
 | |
|     virtual bool CanGetValueAs( int row, int col, const wxString& typeName ) wxOVERRIDE;
 | |
|     virtual bool CanSetValueAs( int row, int col, const wxString& typeName ) wxOVERRIDE;
 | |
| 
 | |
|     virtual long GetValueAsLong( int row, int col ) wxOVERRIDE;
 | |
|     virtual bool GetValueAsBool( int row, int col ) wxOVERRIDE;
 | |
| 
 | |
|     virtual void SetValueAsLong( int row, int col, long value ) wxOVERRIDE;
 | |
|     virtual void SetValueAsBool( int row, int col, bool value ) wxOVERRIDE;
 | |
| };
 | |
| 
 | |
| class BugsGridFrame : public wxFrame
 | |
| {
 | |
| public:
 | |
|     BugsGridFrame();
 | |
| };
 | |
| 
 | |
| 
 | |
| #endif // griddemo_h
 | |
| 
 |