split wxEVT_GRID_CELL_CHANGE into wxEVT_GRID_CELL_CHANGING/ED pair for consistency with all the other controls; provide access to new/old value of the cell in the event object

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@57505 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2008-12-22 22:58:49 +00:00
parent 1a8a13ee88
commit 763163a80a
9 changed files with 292 additions and 142 deletions

View File

@@ -225,7 +225,7 @@ void wxGridCellEnumRenderer::SetParameters(const wxString& params)
wxGridCellEnumEditor::wxGridCellEnumEditor(const wxString& choices)
:wxGridCellChoiceEditor()
{
m_startint = -1;
m_index = -1;
if (!choices.empty())
SetParameters(choices);
@@ -234,7 +234,7 @@ wxGridCellEnumEditor::wxGridCellEnumEditor(const wxString& choices)
wxGridCellEditor *wxGridCellEnumEditor::Clone() const
{
wxGridCellEnumEditor *editor = new wxGridCellEnumEditor();
editor->m_startint = m_startint;
editor->m_index = m_index;
return editor;
}
@@ -247,40 +247,49 @@ void wxGridCellEnumEditor::BeginEdit(int row, int col, wxGrid* grid)
if ( table->CanGetValueAs(row, col, wxGRID_VALUE_NUMBER) )
{
m_startint = table->GetValueAsLong(row, col);
m_index = table->GetValueAsLong(row, col);
}
else
{
wxString startValue = table->GetValue(row, col);
if (startValue.IsNumber() && !startValue.empty())
{
startValue.ToLong(&m_startint);
startValue.ToLong(&m_index);
}
else
{
m_startint=-1;
m_index = -1;
}
}
Combo()->SetSelection(m_startint);
Combo()->SetSelection(m_index);
Combo()->SetInsertionPointEnd();
Combo()->SetFocus();
}
bool wxGridCellEnumEditor::EndEdit(int row, int col, wxGrid* grid)
bool wxGridCellEnumEditor::EndEdit(const wxString& WXUNUSED(oldval),
wxString *newval)
{
int pos = Combo()->GetSelection();
bool changed = (pos != m_startint);
if (changed)
{
if (grid->GetTable()->CanSetValueAs(row, col, wxGRID_VALUE_NUMBER))
grid->GetTable()->SetValueAsLong(row, col, pos);
else
grid->GetTable()->SetValue(row, col,wxString::Format(wxT("%i"),pos));
}
long idx = Combo()->GetSelection();
if ( idx == m_index )
return false;
return changed;
m_index = idx;
if ( newval )
newval->Printf("%ld", m_index);
return true;
}
void wxGridCellEnumEditor::ApplyEdit(int row, int col, wxGrid* grid)
{
wxGridTableBase * const table = grid->GetTable();
if ( table->CanSetValueAs(row, col, wxGRID_VALUE_NUMBER) )
table->SetValueAsLong(row, col, m_index);
else
table->SetValue(row, col, wxString::Format("%ld", m_index));
}
#endif // wxUSE_COMBOBOX