-
-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);
-}
-
-
-