// Author: Michael Bedward
// Modified by:
// RCS-ID: $Id$
-// Copyright: (c) Michael Bedward, Julian Smart
+// Copyright: (c) Michael Bedward, Julian Smart, Vadim Zeitlin
// Licence: wxWindows license
/////////////////////////////////////////////////////////////////////////////
// headers
// ----------------------------------------------------------------------------
-#if defined(__GNUG__) && !defined(__APPLE__)
- #pragma implementation
- #pragma interface
-#endif
-
// For compilers that support precompilation, includes "wx/wx.h".
#include "wx/wxprec.h"
EVT_MENU( ID_SET_CELL_FG_COLOUR, GridFrame::SetCellFgColour )
EVT_MENU( ID_SET_CELL_BG_COLOUR, GridFrame::SetCellBgColour )
- EVT_MENU( ID_ABOUT, GridFrame::About )
+ EVT_MENU( wxID_ABOUT, GridFrame::About )
EVT_MENU( wxID_EXIT, GridFrame::OnQuit )
EVT_MENU( ID_VTABLE, GridFrame::OnVTable)
EVT_MENU( ID_BUGS_TABLE, GridFrame::OnBugsTable)
EVT_MENU( ID_SELECT_ROW, GridFrame::SelectRow)
EVT_MENU( ID_SELECT_ALL, GridFrame::SelectAll)
EVT_MENU( ID_SELECT_UNSELECT, GridFrame::OnAddToSelectToggle)
+ EVT_MENU( ID_SHOW_SELECTION, GridFrame::OnShowSelection)
EVT_MENU( ID_SET_HIGHLIGHT_WIDTH, GridFrame::OnSetHighlightWidth)
EVT_MENU( ID_SET_RO_HIGHLIGHT_WIDTH, GridFrame::OnSetROHighlightWidth)
selectMenu->Append( ID_SELECT_UNSELECT, _T("Add new cells to the selection"),
_T("When off, old selection is deselected before ")
_T("selecting the new cells"), wxITEM_CHECK );
+ selectMenu->Append( ID_SHOW_SELECTION,
+ _T("&Show current selection\tCtrl-Alt-S"));
+ selectMenu->AppendSeparator();
selectMenu->Append( ID_SELECT_ALL, _T("Select all"));
selectMenu->Append( ID_SELECT_ROW, _T("Select row 2"));
selectMenu->Append( ID_SELECT_COL, _T("Select col 2"));
selectMenu->Append( ID_SELECT_CELL, _T("Select cell (3, 1)"));
+ selectMenu->AppendSeparator();
selectMenu->Append( ID_DESELECT_ALL, _T("Deselect all"));
selectMenu->Append( ID_DESELECT_ROW, _T("Deselect row 2"));
selectMenu->Append( ID_DESELECT_COL, _T("Deselect col 2"));
wxMenu *helpMenu = new wxMenu;
- helpMenu->Append( ID_ABOUT, _T("&About wxGrid demo") );
+ helpMenu->Append( wxID_ABOUT, _T("&About wxGrid demo") );
wxMenuBar *menuBar = new wxMenuBar;
menuBar->Append( fileMenu, _T("&File") );
wxTE_MULTILINE );
logger = new wxLogTextCtrl( logWin );
- m_logOld = logger->SetActiveTarget( logger );
- logger->SetTimestamp( NULL );
+ m_logOld = wxLog::SetActiveTarget( logger );
+ wxLog::SetTimestamp( NULL );
#endif // wxUSE_LOG
// this will create a grid and, by default, an associated grid
{
grid->BeginBatch();
for ( int n = 0; n < grid->GetNumberRows(); )
+ {
if ( grid->IsInSelection( n , 0 ) )
grid->DeleteRows( n, 1 );
- else
- n++;
+ else
+ n++;
+ }
grid->EndBatch();
}
}
{
grid->BeginBatch();
for ( int n = 0; n < grid->GetNumberCols(); )
+ {
if ( grid->IsInSelection( 0 , n ) )
grid->DeleteCols( n, 1 );
- else
- n++;
+ else
+ n++;
+ }
grid->EndBatch();
}
}
}
+void GridFrame::OnShowSelection(wxCommandEvent& WXUNUSED(event))
+{
+ // max number of elements to dump -- otherwise it can take too much time
+ static const size_t countMax = 100;
+
+ bool rows = false;
+
+ switch ( grid->GetSelectionMode() )
+ {
+ case wxGrid::wxGridSelectCells:
+ {
+ const wxGridCellCoordsArray cells(grid->GetSelectedCells());
+ size_t count = cells.size();
+ wxLogMessage(_T("%lu cells selected:"), (unsigned long)count);
+ if ( count > countMax )
+ {
+ wxLogMessage(_T("[too many selected cells, ")
+ _T("showing only the first %lu]"),
+ (unsigned long)countMax);
+ count = countMax;
+ }
+
+ for ( size_t n = 0; n < count; n++ )
+ {
+ const wxGridCellCoords& c = cells[n];
+ wxLogMessage(_T(" selected cell %lu: (%d, %d)"),
+ (unsigned long)n, c.GetCol(), c.GetRow());
+ }
+ }
+ break;
+
+ case wxGrid::wxGridSelectRows:
+ rows = true;
+ // fall through
+
+ case wxGrid::wxGridSelectColumns:
+ {
+ const wxChar *plural, *single;
+ if ( rows )
+ {
+ plural = _T("rows");
+ single = _T("row");
+ }
+ else // columns
+ {
+ plural = _T("columns");
+ single = _T("column");
+ }
+
+ const wxArrayInt sels(rows ? grid->GetSelectedRows()
+ : grid->GetSelectedCols());
+ size_t count = sels.size();
+ wxLogMessage(_T("%lu %s selected:"),
+ (unsigned long)count, plural);
+ if ( count > countMax )
+ {
+ wxLogMessage(_T("[too many selected %s, ")
+ _T("showing only the first %lu]"),
+ plural, (unsigned long)countMax);
+ count = countMax;
+ }
+
+ for ( size_t n = 0; n < count; n++ )
+ {
+ wxLogMessage(_T(" selected %s %lu: %d"),
+ single, (unsigned long)n, sels[n]);
+ }
+ }
+ break;
+
+ default:
+ wxFAIL_MSG( _T("unknown wxGrid selection mode") );
+ break;
+ }
+}
+
void GridFrame::OnSelectCell( wxGridEvent& ev )
{
logBuf = wxEmptyString;
void GridFrame::OnCellBeginDrag( wxGridEvent& ev )
{
- logBuf = _T("");
+ logBuf = wxEmptyString;
logBuf << _T("Got request to drag cell at")
<< _T(" row ") << ev.GetRow()
<< _T(" col ") << ev.GetCol();
void GridFrame::About( wxCommandEvent& WXUNUSED(ev) )
{
(void)wxMessageBox( _T("\n\nwxGrid demo \n\n")
- _T("Michael Bedward \n")
- _T("mbedward@ozemail.com.au \n\n"),
+ _T("Michael Bedward, Julian Smart, Vadim Zeitlin"),
_T("About"),
wxOK );
}
switch ( col )
{
case Col_Id:
+ return wxString::Format(_T("%d"), gd.id);
+
case Col_Priority:
+ return wxString::Format(_T("%d"), gd.prio);
+
case Col_Opened:
- wxFAIL_MSG(_T("unexpected column"));
- break;
+ return gd.opened ? _T("1") : _T("0");
case Col_Severity:
return severities[gd.severity];
}
}
-bool BugsGridTable::CanGetValueAs( int WXUNUSED(row), int col, const wxString& typeName )
+bool
+BugsGridTable::CanGetValueAs(int WXUNUSED(row),
+ int col,
+ const wxString& typeName)
{
if ( typeName == wxGRID_VALUE_STRING )
{