X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/d2520c85b013473a5861426aa639ad6ba8c83510..9cc02d047b474cfcd26e3af6eff6a15ef2d93a40:/samples/newgrid/griddemo.cpp diff --git a/samples/newgrid/griddemo.cpp b/samples/newgrid/griddemo.cpp index f8b14785a4..a27d77ad0a 100644 --- a/samples/newgrid/griddemo.cpp +++ b/samples/newgrid/griddemo.cpp @@ -29,12 +29,14 @@ #endif #ifndef WX_PRECOMP -#include "wx/wx.h" + #include "wx/wx.h" #endif #include "wx/colordlg.h" +#include "wx/fontdlg.h" #include "wx/grid.h" +#include "wx/generic/gridctrl.h" #include "griddemo.h" @@ -75,6 +77,7 @@ BEGIN_EVENT_TABLE( GridFrame, wxFrame ) EVT_MENU( ID_AUTOSIZECOLS, GridFrame::AutoSizeCols ) EVT_MENU( ID_SETLABELCOLOUR, GridFrame::SetLabelColour ) EVT_MENU( ID_SETLABELTEXTCOLOUR, GridFrame::SetLabelTextColour ) + EVT_MENU( ID_SETLABEL_FONT, GridFrame::SetLabelFont ) EVT_MENU( ID_ROWLABELHORIZALIGN, GridFrame::SetRowLabelHorizAlignment ) EVT_MENU( ID_ROWLABELVERTALIGN, GridFrame::SetRowLabelVertAlignment ) EVT_MENU( ID_COLLABELHORIZALIGN, GridFrame::SetColLabelHorizAlignment ) @@ -96,6 +99,7 @@ BEGIN_EVENT_TABLE( GridFrame, wxFrame ) EVT_MENU( wxID_EXIT, GridFrame::OnQuit ) EVT_MENU( ID_VTABLE, GridFrame::OnVTable) EVT_MENU( ID_BUGS_TABLE, GridFrame::OnBugsTable) + EVT_MENU( ID_SMALL_GRID, GridFrame::OnSmallGrid) EVT_MENU( ID_DESELECT_CELL, GridFrame::DeselectCell) EVT_MENU( ID_DESELECT_COL, GridFrame::DeselectCol) @@ -134,6 +138,7 @@ GridFrame::GridFrame() wxMenu *fileMenu = new wxMenu; fileMenu->Append( ID_VTABLE, "&Virtual table test\tCtrl-V"); fileMenu->Append( ID_BUGS_TABLE, "&Bugs table test\tCtrl-B"); + fileMenu->Append( ID_SMALL_GRID, "&Small Grid test\tCtrl-S"); fileMenu->AppendSeparator(); fileMenu->Append( wxID_EXIT, "E&xit\tAlt-X" ); @@ -168,11 +173,12 @@ GridFrame::GridFrame() colLabelMenu->Append( ID_COLLABELVERTALIGN, "&Vertical" ); wxMenu *colMenu = new wxMenu; - colMenu->Append( ID_SETLABELCOLOUR, "Set &label colour" ); - colMenu->Append( ID_SETLABELTEXTCOLOUR, "Set label &text colour" ); - colMenu->Append( ID_GRIDLINECOLOUR, "&Grid line colour" ); - colMenu->Append( ID_SET_CELL_FG_COLOUR, "Set cell &foreground colour" ); - colMenu->Append( ID_SET_CELL_BG_COLOUR, "Set cell &background colour" ); + colMenu->Append( ID_SETLABELCOLOUR, "Set &label colour..." ); + colMenu->Append( ID_SETLABELTEXTCOLOUR, "Set label &text colour..." ); + colMenu->Append( ID_SETLABEL_FONT, "Set label fo&nt..." ); + colMenu->Append( ID_GRIDLINECOLOUR, "&Grid line colour..." ); + colMenu->Append( ID_SET_CELL_FG_COLOUR, "Set cell &foreground colour..." ); + colMenu->Append( ID_SET_CELL_BG_COLOUR, "Set cell &background colour..." ); wxMenu *editMenu = new wxMenu; editMenu->Append( ID_INSERTROW, "Insert &row" ); @@ -241,11 +247,16 @@ GridFrame::GridFrame() grid->SetRowSize( 0, 60 ); grid->SetCellValue( 0, 0, "Ctrl+Home\nwill go to\nthis cell" ); - grid->SetCellValue( 0, 1, "Blah" ); + grid->SetCellValue( 0, 1, "A long piece of text to demonstrate wrapping." ); + grid->SetCellRenderer(0 , 1, new wxGridCellAutoWrapStringRenderer); + grid->SetCellEditor( 0, 1 , new wxGridCellAutoWrapStringEditor); + grid->SetCellValue( 0, 2, "Blah" ); grid->SetCellValue( 0, 3, "Read only" ); grid->SetReadOnly( 0, 3 ); + grid->SetCellValue( 0, 4, "Can veto edit this cell" ); + grid->SetCellValue( 0, 5, "Press\nCtrl+arrow\nto skip over\ncells" ); grid->SetRowSize( 99, 60 ); @@ -262,7 +273,7 @@ GridFrame::GridFrame() grid->SetCellAlignment(4, 4, wxALIGN_CENTRE, wxALIGN_CENTRE); grid->SetCellRenderer(4, 4, new MyGridCellRenderer); - grid->SetCellValue(3, 0, "1"); + grid->SetCellValue(3, 0, "0"); grid->SetCellRenderer(3, 0, new wxGridCellBoolRenderer); grid->SetCellEditor(3, 0, new wxGridCellBoolEditor); @@ -271,23 +282,27 @@ GridFrame::GridFrame() attr->SetTextColour(*wxBLUE); grid->SetColAttr(5, attr); attr = new wxGridCellAttr; - attr->SetBackgroundColour(*wxBLUE); + attr->SetBackgroundColour(*wxRED); grid->SetRowAttr(5, attr); grid->SetCellValue(2, 4, "a wider column"); grid->SetColSize(4, 120); grid->SetColMinimalWidth(4, 120); - grid->SetColFormatFloat(5); - grid->SetCellValue(0, 5, "3.1415"); - grid->SetCellValue(1, 5, "1415"); - grid->SetCellValue(2, 5, "12345.67890"); + grid->SetCellTextColour(5, 8, *wxGREEN); + grid->SetCellValue(5, 8, "Bg from row attr\nText col from cell attr"); + grid->SetCellValue(5, 5, "Bg from row attr\nText col from col attr"); - grid->SetColFormatFloat(6, 6, 2); + grid->SetColFormatFloat(6); grid->SetCellValue(0, 6, "3.1415"); grid->SetCellValue(1, 6, "1415"); grid->SetCellValue(2, 6, "12345.67890"); + grid->SetColFormatFloat(7, 6, 2); + grid->SetCellValue(0, 7, "3.1415"); + grid->SetCellValue(1, 7, "1415"); + grid->SetCellValue(2, 7, "12345.67890"); + wxBoxSizer *topSizer = new wxBoxSizer( wxVERTICAL ); topSizer->Add( grid, 1, @@ -449,6 +464,14 @@ void GridFrame::SetLabelTextColour( wxCommandEvent& WXUNUSED(ev) ) } } +void GridFrame::SetLabelFont( wxCommandEvent& WXUNUSED(ev) ) +{ + wxFont font = wxGetFontFromUser(this); + if ( font.Ok() ) + { + grid->SetLabelFont(font); + } +} void GridFrame::SetRowLabelHorizAlignment( wxCommandEvent& WXUNUSED(ev) ) { @@ -579,8 +602,8 @@ void GridFrame::DeleteSelectedRows( wxCommandEvent& WXUNUSED(ev) ) for ( int n = 0; n < grid->GetNumberRows(); ) if ( grid->IsInSelection( n , 0 ) ) grid->DeleteRows( n, 1 ); - else - n++; + else + n++; grid->EndBatch(); } } @@ -594,8 +617,8 @@ void GridFrame::DeleteSelectedCols( wxCommandEvent& WXUNUSED(ev) ) for ( int n = 0; n < grid->GetNumberCols(); ) if ( grid->IsInSelection( 0 , n ) ) grid->DeleteCols( n, 1 ); - else - n++; + else + n++; grid->EndBatch(); } } @@ -704,7 +727,7 @@ void GridFrame::OnLabelLeftClick( wxGridEvent& ev ) if ( ev.ShiftDown() ) logBuf << " (shift down)"; if ( ev.ControlDown() ) logBuf << " (control down)"; - wxLogMessage( "%s", logBuf.c_str() ); + wxLogMessage( wxT("%s"), logBuf.c_str() ); // you must call event skip if you want default grid processing // @@ -717,7 +740,7 @@ void GridFrame::OnCellLeftClick( wxGridEvent& ev ) logBuf = ""; logBuf << "Left click at row " << ev.GetRow() << " col " << ev.GetCol(); - wxLogMessage( "%s", logBuf.c_str() ); + wxLogMessage( wxT("%s"), logBuf.c_str() ); // you must call event skip if you want default grid processing // (cell highlighting etc.) @@ -730,7 +753,7 @@ void GridFrame::OnRowSize( wxGridSizeEvent& ev ) { logBuf = ""; logBuf << "Resized row " << ev.GetRowOrCol(); - wxLogMessage( "%s", logBuf.c_str() ); + wxLogMessage( wxT("%s"), logBuf.c_str() ); ev.Skip(); } @@ -740,7 +763,7 @@ void GridFrame::OnColSize( wxGridSizeEvent& ev ) { logBuf = ""; logBuf << "Resized col " << ev.GetRowOrCol(); - wxLogMessage( "%s", logBuf.c_str() ); + wxLogMessage( wxT("%s"), logBuf.c_str() ); ev.Skip(); } @@ -759,7 +782,7 @@ void GridFrame::OnSelectCell( wxGridEvent& ev ) << ", ShiftDown: "<< (ev.ShiftDown() ? 'T':'F') << ", AltDown: "<< (ev.AltDown() ? 'T':'F') << ", MetaDown: "<< (ev.MetaDown() ? 'T':'F') << " )"; - wxLogMessage( "%s", logBuf.c_str() ); + wxLogMessage( wxT("%s"), logBuf.c_str() ); // you must call Skip() if you want the default processing // to occur in wxGrid @@ -781,7 +804,7 @@ void GridFrame::OnRangeSelected( wxGridRangeSelectEvent& ev ) << ", ShiftDown: "<< (ev.ShiftDown() ? 'T':'F') << ", AltDown: "<< (ev.AltDown() ? 'T':'F') << ", MetaDown: "<< (ev.MetaDown() ? 'T':'F') << " )"; - wxLogMessage( "%s", logBuf.c_str() ); + wxLogMessage( wxT("%s"), logBuf.c_str() ); ev.Skip(); } @@ -793,21 +816,41 @@ void GridFrame::OnCellValueChanged( wxGridEvent& ev ) << " row " << ev.GetRow() << " col " << ev.GetCol(); - wxLogMessage( "%s", logBuf.c_str() ); + wxLogMessage( wxT("%s"), logBuf.c_str() ); ev.Skip(); } void GridFrame::OnEditorShown( wxGridEvent& ev ) { - wxLogMessage( "Cell editor shown." ); + + if ( (ev.GetCol() == 4) && + (ev.GetRow() == 0) && + (wxMessageBox(_T("Are you sure you wish to edit this cell"), + _T("Checking"),wxYES_NO) == wxNO ) ) { + + ev.Veto(); + return; + } + + wxLogMessage( wxT("Cell editor shown.") ); ev.Skip(); } void GridFrame::OnEditorHidden( wxGridEvent& ev ) { - wxLogMessage( "Cell editor hidden." ); + + if ( (ev.GetCol() == 4) && + (ev.GetRow() == 0) && + (wxMessageBox(_T("Are you sure you wish to finish editing this cell"), + _T("Checking"),wxYES_NO) == wxNO ) ) { + + ev.Veto(); + return; + } + + wxLogMessage( wxT("Cell editor hidden.") ); ev.Skip(); } @@ -833,6 +876,17 @@ void GridFrame::OnBugsTable(wxCommandEvent& ) frame->Show(TRUE); } +void GridFrame::OnSmallGrid(wxCommandEvent& ) +{ + wxFrame* frame = new wxFrame(NULL, -1, "A Small Grid", + wxDefaultPosition, wxSize(640, 480)); + wxPanel* panel = new wxPanel(frame, -1); + wxGrid* grid = new wxGrid(panel, -1, wxPoint(10,10), wxSize(400,400), + wxWANTS_CHARS | wxSIMPLE_BORDER); + grid->CreateGrid(3,3); + frame->Show(TRUE); +} + void GridFrame::OnVTable(wxCommandEvent& ) { static long s_sizeGrid = 10000; @@ -898,9 +952,10 @@ MyGridCellAttrProvider::~MyGridCellAttrProvider() m_attrForOddRows->DecRef(); } -wxGridCellAttr *MyGridCellAttrProvider::GetAttr(int row, int col) const +wxGridCellAttr *MyGridCellAttrProvider::GetAttr(int row, int col, + wxGridCellAttr::wxAttrKind kind /* = wxGridCellAttr::Any */) const { - wxGridCellAttr *attr = wxGridCellAttrProvider::GetAttr(row, col); + wxGridCellAttr *attr = wxGridCellAttrProvider::GetAttr(row, col, kind); if ( row % 2 ) { @@ -1251,8 +1306,7 @@ BugsGridFrame::BugsGridFrame() grid->SetMargins(0, 0); grid->Fit(); - wxSize size = grid->GetSize(); - size.x += 10; - size.y += 10; - SetClientSize(size); + SetClientSize(grid->GetSize()); } + +