258 lines
7.1 KiB
C
258 lines
7.1 KiB
C
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
// Name: griddemo.h
|
||
|
// Purpose: Grid control wxWindows sample
|
||
|
// Author: Michael Bedward
|
||
|
// Modified by:
|
||
|
// RCS-ID: $Id$
|
||
|
// Copyright: (c) Michael Bedward, Julian Smart
|
||
|
// Licence: wxWindows license
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
|
||
|
|
||
|
#ifndef griddemo_h
|
||
|
#define griddemo_h
|
||
|
|
||
|
class wxGrid;
|
||
|
|
||
|
class GridApp : public wxApp
|
||
|
{
|
||
|
public:
|
||
|
bool OnInit();
|
||
|
};
|
||
|
|
||
|
|
||
|
class GridFrame : public wxFrame
|
||
|
{
|
||
|
wxGrid *grid;
|
||
|
wxTextCtrl *logWin;
|
||
|
wxLogTextCtrl *logger;
|
||
|
wxString logBuf;
|
||
|
|
||
|
void SetDefaults();
|
||
|
|
||
|
void ToggleRowLabels( wxCommandEvent& );
|
||
|
void ToggleColLabels( wxCommandEvent& );
|
||
|
void ToggleEditing( wxCommandEvent& );
|
||
|
void ToggleRowSizing( wxCommandEvent& );
|
||
|
void ToggleColSizing( wxCommandEvent& );
|
||
|
void ToggleGridSizing( 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 SetGridLineColour( wxCommandEvent& );
|
||
|
|
||
|
void SetCellFgColour(wxCommandEvent &);
|
||
|
void SetCellBgColour(wxCommandEvent &);
|
||
|
|
||
|
void InsertRow( wxCommandEvent& );
|
||
|
void InsertCol( wxCommandEvent& );
|
||
|
void DeleteSelectedRows( wxCommandEvent& );
|
||
|
void DeleteSelectedCols( wxCommandEvent& );
|
||
|
void ClearGrid( wxCommandEvent& );
|
||
|
void SelectCells( wxCommandEvent& );
|
||
|
void SelectRows( wxCommandEvent& );
|
||
|
void SelectCols( 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 OnLabelLeftClick( wxGridEvent& );
|
||
|
void OnCellLeftClick( wxGridEvent& );
|
||
|
void OnRowSize( wxGridSizeEvent& );
|
||
|
void OnColSize( wxGridSizeEvent& );
|
||
|
void OnSelectCell( wxGridEvent& );
|
||
|
void OnRangeSelected( wxGridRangeSelectEvent& );
|
||
|
void OnCellValueChanged( wxGridEvent& );
|
||
|
|
||
|
void OnEditorShown(wxGridEvent&);
|
||
|
void OnEditorHidden(wxGridEvent&);
|
||
|
|
||
|
void OnSetHighlightWidth(wxCommandEvent&);
|
||
|
void OnSetROHighlightWidth(wxCommandEvent&);
|
||
|
|
||
|
public:
|
||
|
GridFrame();
|
||
|
~GridFrame();
|
||
|
|
||
|
void OnQuit( wxCommandEvent& );
|
||
|
void About( wxCommandEvent& );
|
||
|
void OnVTable( wxCommandEvent& );
|
||
|
void OnBugsTable( wxCommandEvent& );
|
||
|
void OnSmallGrid( wxCommandEvent& );
|
||
|
|
||
|
enum
|
||
|
{
|
||
|
ID_TOGGLEROWLABELS = 100,
|
||
|
ID_TOGGLECOLLABELS,
|
||
|
ID_TOGGLEEDIT,
|
||
|
ID_TOGGLEROWSIZING,
|
||
|
ID_TOGGLECOLSIZING,
|
||
|
ID_TOGGLEGRIDSIZING,
|
||
|
ID_TOGGLEGRIDLINES,
|
||
|
ID_AUTOSIZECOLS,
|
||
|
ID_CELLOVERFLOW,
|
||
|
ID_RESIZECELL,
|
||
|
ID_SETLABELCOLOUR,
|
||
|
ID_SETLABELTEXTCOLOUR,
|
||
|
ID_SETLABEL_FONT,
|
||
|
ID_ROWLABELALIGN,
|
||
|
ID_ROWLABELHORIZALIGN,
|
||
|
ID_ROWLABELVERTALIGN,
|
||
|
ID_COLLABELALIGN,
|
||
|
ID_COLLABELHORIZALIGN,
|
||
|
ID_COLLABELVERTALIGN,
|
||
|
ID_GRIDLINECOLOUR,
|
||
|
ID_INSERTROW,
|
||
|
ID_INSERTCOL,
|
||
|
ID_DELETEROW,
|
||
|
ID_DELETECOL,
|
||
|
ID_CLEARGRID,
|
||
|
ID_CHANGESEL,
|
||
|
ID_SELCELLS,
|
||
|
ID_SELROWS,
|
||
|
ID_SELCOLS,
|
||
|
ID_SET_CELL_FG_COLOUR,
|
||
|
ID_SET_CELL_BG_COLOUR,
|
||
|
ID_ABOUT,
|
||
|
ID_VTABLE,
|
||
|
ID_BUGS_TABLE,
|
||
|
ID_SMALL_GRID,
|
||
|
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_SET_HIGHLIGHT_WIDTH,
|
||
|
ID_SET_RO_HIGHLIGHT_WIDTH,
|
||
|
|
||
|
ID_TESTFUNC
|
||
|
};
|
||
|
|
||
|
wxLog *m_logOld;
|
||
|
|
||
|
// add the cells to selection when using commands from select menu?
|
||
|
bool m_addToSel;
|
||
|
|
||
|
DECLARE_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);
|
||
|
};
|
||
|
|
||
|
// ----------------------------------------------------------------------------
|
||
|
// 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() { return m_sizeGrid; }
|
||
|
int GetNumberCols() { return m_sizeGrid; }
|
||
|
wxString GetValue( int row, int col )
|
||
|
{
|
||
|
return wxString::Format(wxT("(%d, %d)"), row, col);
|
||
|
}
|
||
|
|
||
|
void SetValue( int , int , const wxString& ) { /* ignore */ }
|
||
|
bool IsEmptyCell( int , int ) { 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 ~MyGridCellAttrProvider();
|
||
|
|
||
|
virtual wxGridCellAttr *GetAttr(int row, int col,
|
||
|
wxGridCellAttr::wxAttrKind kind) const;
|
||
|
|
||
|
private:
|
||
|
wxGridCellAttr *m_attrForOddRows;
|
||
|
};
|
||
|
|
||
|
// ----------------------------------------------------------------------------
|
||
|
// another, more realistic, grid example: shows typed columns and more
|
||
|
// ----------------------------------------------------------------------------
|
||
|
|
||
|
class BugsGridTable : public wxGridTableBase
|
||
|
{
|
||
|
public:
|
||
|
BugsGridTable();
|
||
|
|
||
|
virtual int GetNumberRows();
|
||
|
virtual int GetNumberCols();
|
||
|
virtual bool IsEmptyCell( int row, int col );
|
||
|
virtual wxString GetValue( int row, int col );
|
||
|
virtual void SetValue( int row, int col, const wxString& value );
|
||
|
|
||
|
virtual wxString GetColLabelValue( int col );
|
||
|
|
||
|
virtual wxString GetTypeName( int row, int col );
|
||
|
virtual bool CanGetValueAs( int row, int col, const wxString& typeName );
|
||
|
virtual bool CanSetValueAs( int row, int col, const wxString& typeName );
|
||
|
|
||
|
virtual long GetValueAsLong( int row, int col );
|
||
|
virtual bool GetValueAsBool( int row, int col );
|
||
|
|
||
|
virtual void SetValueAsLong( int row, int col, long value );
|
||
|
virtual void SetValueAsBool( int row, int col, bool value );
|
||
|
};
|
||
|
|
||
|
class BugsGridFrame : public wxFrame
|
||
|
{
|
||
|
public:
|
||
|
BugsGridFrame();
|
||
|
};
|
||
|
|
||
|
|
||
|
#endif // griddemo_h
|
||
|
|