From fb2957900c9c38ffa03b4ab2ea6cbcc1e23ecc7d Mon Sep 17 00:00:00 2001 From: Robin Dunn Date: Tue, 15 Feb 2000 07:08:42 +0000 Subject: [PATCH] Some cleanup. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6020 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- include/wx/generic/grid.h | 42 +------------ src/generic/grid.cpp | 125 +++----------------------------------- 2 files changed, 11 insertions(+), 156 deletions(-) diff --git a/include/wx/generic/grid.h b/include/wx/generic/grid.h index cb3bde6196..a572f9d4a0 100644 --- a/include/wx/generic/grid.h +++ b/include/wx/generic/grid.h @@ -145,9 +145,9 @@ public: // Reset the value in the control back to its starting value virtual void Reset() = 0; - // If the editor is enabled by pressing keys on the grid, this - // will be called to let the editor do something about that key - // if desired. + // If the editor is enabled by pressing keys on the grid, + // this will be called to let the editor do something about + // that first key if desired. virtual void StartingKey(wxKeyEvent& event); // Some types of controls on some platforms may need some help @@ -547,42 +547,6 @@ WX_DECLARE_EXPORTED_OBJARRAY(wxGridCellCoords, wxGridCellCoordsArray); -// This set of classes is to provide for the use of different types of -// cell edit controls in the grid while avoiding the wx class info -// system in deference to wxPython - -class WXDLLEXPORT wxGridTextCtrl : public wxTextCtrl -{ -public: - wxGridTextCtrl() {} - wxGridTextCtrl( wxWindow *, - wxGrid *, - bool isCellControl, - wxWindowID id, - const wxString& value = wxEmptyString, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = 0 ); - - void SetStartValue( const wxString& ); - wxString GetStartValue() { return startValue; } - -private: - wxGrid *m_grid; - - // TRUE for controls placed over cells, - // FALSE for a control on a grid control panel - bool m_isCellControl; - - wxString startValue; - - void OnKeyDown( wxKeyEvent& ); - - DECLARE_DYNAMIC_CLASS( wxGridTextCtrl ) - DECLARE_EVENT_TABLE() -}; - - // ---------------------------------------------------------------------------- // wxGrid // ---------------------------------------------------------------------------- diff --git a/src/generic/grid.cpp b/src/generic/grid.cpp index 56e2480219..1c7a6320f0 100644 --- a/src/generic/grid.cpp +++ b/src/generic/grid.cpp @@ -1354,117 +1354,6 @@ void wxGridStringTable::SetColLabelValue( int col, const wxString& value ) ////////////////////////////////////////////////////////////////////// - -IMPLEMENT_DYNAMIC_CLASS( wxGridTextCtrl, wxTextCtrl ) - -BEGIN_EVENT_TABLE( wxGridTextCtrl, wxTextCtrl ) - EVT_KEY_DOWN( wxGridTextCtrl::OnKeyDown ) -END_EVENT_TABLE() - - -wxGridTextCtrl::wxGridTextCtrl( wxWindow *par, - wxGrid *grid, - bool isCellControl, - wxWindowID id, - const wxString& value, - const wxPoint& pos, - const wxSize& size, - long style ) - : wxTextCtrl( par, id, value, pos, size, style ) -{ - m_grid = grid; - m_isCellControl = isCellControl; -} - - -void wxGridTextCtrl::OnKeyDown( wxKeyEvent& event ) -{ - switch ( event.KeyCode() ) - { -#if 0 - case WXK_ESCAPE: - m_grid->SetEditControlValue( startValue ); - SetInsertionPointEnd(); - break; -#else - case WXK_ESCAPE: - m_grid->EnableCellEditControl( FALSE ); -#endif - case WXK_UP: - case WXK_DOWN: - case WXK_LEFT: - case WXK_RIGHT: - case WXK_PRIOR: - case WXK_NEXT: - case WXK_SPACE: - if ( m_isCellControl ) - { - // send the event to the parent grid, skipping the - // event if nothing happens - // - event.Skip( m_grid->ProcessEvent( event ) ); - } - else - { - // default text control response within the top edit - // control - // - event.Skip(); - } - break; - - case WXK_RETURN: - if ( m_isCellControl ) - { - if ( !m_grid->ProcessEvent( event ) ) - { -#if defined(__WXMOTIF__) || defined(__WXGTK__) - // wxMotif needs a little extra help... - // - int pos = GetInsertionPoint(); - wxString s( GetValue() ); - s = s.Left(pos) + "\n" + s.Mid(pos); - SetValue(s); - SetInsertionPoint( pos ); -#else - // the other ports can handle a Return key press - // - event.Skip(); -#endif - } - } - break; - case WXK_HOME: - case WXK_END: - if ( m_isCellControl ) - { - // send the event to the parent grid, skipping the - // event if nothing happens - // - event.Skip( m_grid->ProcessEvent( event ) ); - } - else - { - // default text control response within the top edit - // control - // - event.Skip(); - } - break; - - default: - event.Skip(); - } -} - -void wxGridTextCtrl::SetStartValue( const wxString& s ) -{ - startValue = s; - wxTextCtrl::SetValue(s); -} - - - ////////////////////////////////////////////////////////////////////// IMPLEMENT_DYNAMIC_CLASS( wxGridRowLabelWindow, wxWindow ) @@ -1813,6 +1702,11 @@ bool wxGrid::SetTable( wxGridTableBase *table, bool takeOwnership ) { if ( m_created ) { + // RD: Actually, this should probably be allowed. I think it would be + // nice to be able to switch multiple Tables in and out of a single + // View at runtime. Is there anything in the implmentation that would + // prevent this? + wxFAIL_MSG( wxT("wxGrid::CreateGrid or wxGrid::SetTable called more than once") ); return FALSE; } @@ -3678,7 +3572,7 @@ void wxGrid::SetCurrentCell( const wxGridCellCoords& coords ) // Clear the old current cell highlight wxRect r = BlockToDeviceRect(m_currentCellCoords, m_currentCellCoords); - m_currentCellCoords = coords; // Otherwise refresh redraws the hilit! + m_currentCellCoords = coords; // Otherwise refresh redraws the highlight! m_gridWin->Refresh( FALSE, &r ); } @@ -3688,13 +3582,9 @@ void wxGrid::SetCurrentCell( const wxGridCellCoords& coords ) if ( m_displayed ) { -#if 0 - ShowCellEditControl(); -#else wxClientDC dc(m_gridWin); PrepareDC(dc); DrawCellHighlight(dc); -#endif if ( IsSelection() ) { @@ -3811,7 +3701,6 @@ void wxGrid::DrawCellHighlight( wxDC& dc ) dc.SetPen(wxPen(m_gridLineColour, 3, wxSOLID)); dc.SetBrush(*wxTRANSPARENT_BRUSH); - //dc.SetLogicalFunction(wxINVERT); dc.DrawRectangle(rect); } @@ -4258,6 +4147,8 @@ void wxGrid::HideCellEditControl() void wxGrid::SetEditControlValue( const wxString& value ) { + // RD: The new Editors get the value from the table themselves now. This + // method can probably be removed... }