X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/ea805d32e479bdc35471419067d74efca8aefbff..a4a38f76763ba8eb94d9e9b167ff05b0b32e72b4:/samples/grid/griddemo.cpp diff --git a/samples/grid/griddemo.cpp b/samples/grid/griddemo.cpp index 2b3ba6df60..f10c12a51c 100644 --- a/samples/grid/griddemo.cpp +++ b/samples/grid/griddemo.cpp @@ -160,6 +160,8 @@ BEGIN_EVENT_TABLE( GridFrame, wxFrame ) EVT_MENU( ID_COLNATIVEHEADER, GridFrame::SetNativeColHeader ) EVT_MENU( ID_COLDEFAULTHEADER, GridFrame::SetDefaultColHeader ) EVT_MENU( ID_COLCUSTOMHEADER, GridFrame::SetCustomColHeader ) + EVT_MENU_RANGE( ID_TAB_STOP, ID_TAB_LEAVE, GridFrame::SetTabBehaviour ) + EVT_MENU( ID_TAB_CUSTOM, GridFrame::SetTabCustomHandler ) EVT_MENU( ID_TOGGLEGRIDLINES, GridFrame::ToggleGridLines ) EVT_MENU( ID_AUTOSIZECOLS, GridFrame::AutoSizeCols ) EVT_MENU( ID_CELLOVERFLOW, GridFrame::CellOverflow ) @@ -209,6 +211,11 @@ BEGIN_EVENT_TABLE( GridFrame, wxFrame ) EVT_MENU( ID_SIZE_LABELS_ROW, GridFrame::AutoSizeLabelsRow ) EVT_MENU( ID_SIZE_GRID, GridFrame::AutoSizeTable ) + EVT_MENU( ID_HIDECOL, GridFrame::HideCol ) + EVT_MENU( ID_SHOWCOL, GridFrame::ShowCol ) + EVT_MENU( ID_HIDEROW, GridFrame::HideRow ) + EVT_MENU( ID_SHOWROW, GridFrame::ShowRow ) + EVT_MENU( ID_SET_HIGHLIGHT_WIDTH, GridFrame::OnSetHighlightWidth) EVT_MENU( ID_SET_RO_HIGHLIGHT_WIDTH, GridFrame::OnSetROHighlightWidth) @@ -291,7 +298,10 @@ GridFrame::GridFrame() viewMenu->AppendCheckItem(ID_AUTOSIZECOLS, "&Auto-size cols"); viewMenu->AppendCheckItem(ID_CELLOVERFLOW, "&Overflow cells"); viewMenu->AppendCheckItem(ID_RESIZECELL, "&Resize cell (7,1)"); - + viewMenu->Append(ID_HIDECOL, "&Hide column A"); + viewMenu->Append(ID_SHOWCOL, "&Show column A"); + viewMenu->Append(ID_HIDEROW, "&Hide row 2"); + viewMenu->Append(ID_SHOWROW, "&Show row 2"); wxMenu *rowLabelMenu = new wxMenu; viewMenu->Append( ID_ROWLABELALIGN, wxT("R&ow label alignment"), @@ -320,6 +330,12 @@ GridFrame::GridFrame() colHeaderMenu->AppendRadioItem( ID_COLNATIVEHEADER, wxT("&Native") ); colHeaderMenu->AppendRadioItem( ID_COLCUSTOMHEADER, wxT("&Custom") ); + wxMenu *tabBehaviourMenu = new wxMenu; + tabBehaviourMenu->AppendRadioItem(ID_TAB_STOP, "&Stop at the boundary"); + tabBehaviourMenu->AppendRadioItem(ID_TAB_WRAP, "&Wrap at the boundary"); + tabBehaviourMenu->AppendRadioItem(ID_TAB_LEAVE, "&Leave the grid"); + tabBehaviourMenu->AppendRadioItem(ID_TAB_CUSTOM, "&Custom tab handler"); + viewMenu->AppendSubMenu(tabBehaviourMenu, "&Tab behaviour"); wxMenu *colMenu = new wxMenu; colMenu->Append( ID_SETLABELCOLOUR, wxT("Set &label colour...") ); @@ -436,6 +452,9 @@ GridFrame::GridFrame() grid->SetCellValue( 0, 5, wxT("Press\nCtrl+arrow\nto skip over\ncells") ); grid->SetRowSize( 99, 60 ); + grid->SetCellValue(98, 98, "Test background colour setting"); + grid->SetCellBackgroundColour(98, 99, wxColour(255, 127, 127)); + grid->SetCellBackgroundColour(99, 98, wxColour(255, 127, 127)); grid->SetCellValue( 99, 99, wxT("Ctrl+End\nwill go to\nthis cell") ); grid->SetCellValue( 1, 0, wxT("This default cell will overflow into neighboring cells, but not if you turn overflow off.")); @@ -457,6 +476,7 @@ GridFrame::GridFrame() grid->SetCellRenderer(3, 0, new wxGridCellBoolRenderer); grid->SetCellEditor(3, 0, new wxGridCellBoolEditor); + grid->SetCellBackgroundColour(3, 0, wxColour(255, 127, 127)); wxGridCellAttr *attr; attr = new wxGridCellAttr; @@ -661,6 +681,42 @@ void GridFrame::SetDefaultColHeader( wxCommandEvent& WXUNUSED(ev) ) } +void GridFrame::OnGridCustomTab(wxGridEvent& event) +{ + // just for testing, make the cursor move up and down instead of the usual + // left and right + if ( event.ShiftDown() ) + { + if ( grid->GetGridCursorRow() > 0 ) + grid->MoveCursorUp( false ); + } + else + { + if ( grid->GetGridCursorRow() < grid->GetNumberRows() - 1 ) + grid->MoveCursorDown( false ); + } +} + +void GridFrame::SetTabBehaviour(wxCommandEvent& event) +{ + // To make any built-in behaviour work, we need to disable the custom TAB + // handler, otherwise it would be overriding them. + grid->Disconnect(wxEVT_GRID_TABBING, + wxGridEventHandler(GridFrame::OnGridCustomTab)); + + grid->SetTabBehaviour( + static_cast<wxGrid::TabBehaviour>(event.GetId() - ID_TAB_STOP) + ); +} + +void GridFrame::SetTabCustomHandler(wxCommandEvent&) +{ + grid->Connect(wxEVT_GRID_TABBING, + wxGridEventHandler(GridFrame::OnGridCustomTab), + NULL, this); +} + + void GridFrame::ToggleGridLines( wxCommandEvent& WXUNUSED(ev) ) { grid->EnableGridLines( @@ -944,6 +1000,7 @@ void GridFrame::AutoSizeLabelsRow(wxCommandEvent& WXUNUSED(event)) void GridFrame::AutoSizeTable(wxCommandEvent& WXUNUSED(event)) { grid->AutoSize(); + Layout(); } @@ -2260,3 +2317,23 @@ void GridFrame::OnRenderPaint( wxPaintEvent& event ) m_gridBitmap.GetHeight(), &memDc, 0, 0 ); } + +void GridFrame::HideCol( wxCommandEvent& WXUNUSED(event) ) +{ + grid->HideCol(0); +} + +void GridFrame::ShowCol( wxCommandEvent& WXUNUSED(event) ) +{ + grid->ShowCol(0); +} + +void GridFrame::HideRow( wxCommandEvent& WXUNUSED(event) ) +{ + grid->HideRow(1); +} + +void GridFrame::ShowRow( wxCommandEvent& WXUNUSED(event) ) +{ + grid->ShowRow(1); +}