X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/7ee7191cee3842b45a27908fb7219e29c7f8f24d..e887bad5f3a10f5b0c1f173c34c694dda283d0cf:/src/common/datavcmn.cpp diff --git a/src/common/datavcmn.cpp b/src/common/datavcmn.cpp index ac5f5c6932..7fbe7957d8 100644 --- a/src/common/datavcmn.cpp +++ b/src/common/datavcmn.cpp @@ -268,6 +268,7 @@ unsigned int wxDataViewIndexListModel::GetRow( const wxDataViewItem &item ) cons wxDataViewItem wxDataViewIndexListModel::GetItem( unsigned int row ) const { + wxASSERT( row < m_hash.GetCount() ); return wxDataViewItem( m_hash[row] ); } @@ -371,6 +372,13 @@ bool wxDataViewRendererBase::StartEditing( const wxDataViewItem &item, wxRect la m_editorCtrl->SetFocus(); #endif + // Now we should send Editing Started event + wxDataViewEvent event( wxEVT_COMMAND_DATAVIEW_ITEM_EDITING_STARTED, GetOwner()->GetOwner()->GetId() ); + event.SetDataViewColumn( GetOwner() ); + event.SetModel( GetOwner()->GetOwner()->GetModel() ); + event.SetItem( item ); + GetOwner()->GetOwner()->GetEventHandler()->ProcessEvent( event ); + return true; } @@ -400,6 +408,13 @@ bool wxDataViewRendererBase::FinishEditing() GetOwner()->GetOwner()->GetModel()->ValueChanged( m_item, col ); // m_editorCtrl->PopEventHandler( true ); + + // Now we should send Editing Done event + wxDataViewEvent event( wxEVT_COMMAND_DATAVIEW_ITEM_EDITING_DONE, GetOwner()->GetOwner()->GetId() ); + event.SetDataViewColumn( GetOwner() ); + event.SetModel( GetOwner()->GetOwner()->GetModel() ); + event.SetItem( m_item ); + GetOwner()->GetOwner()->GetEventHandler()->ProcessEvent( event ); return true; } @@ -538,18 +553,12 @@ IMPLEMENT_ABSTRACT_CLASS(wxDataViewCtrlBase, wxControl) wxDataViewCtrlBase::wxDataViewCtrlBase() { m_model = NULL; - m_cols.DeleteContents( true ); m_expander_column = 0; m_indent = 8; } wxDataViewCtrlBase::~wxDataViewCtrlBase() { - // IMPORTANT: before calling DecRef() on our model (since it may - // result in a free() call), erase all columns (since - // they hold a pointer to our model) - m_cols.Clear(); - if (m_model) { m_model->DecRef(); @@ -579,113 +588,124 @@ wxDataViewModel* wxDataViewCtrlBase::GetModel() return m_model; } -bool wxDataViewCtrlBase::AppendTextColumn( const wxString &label, unsigned int model_column, +wxDataViewColumn * +wxDataViewCtrlBase::AppendTextColumn( const wxString &label, unsigned int model_column, wxDataViewCellMode mode, int width, wxAlignment align, int flags ) { - return AppendColumn( new wxDataViewColumn( label, + wxDataViewColumn *ret = new wxDataViewColumn( label, new wxDataViewTextRenderer( wxT("string"), mode, (int)align ), - model_column, width, align, flags ) ); + model_column, width, align, flags ); + AppendColumn( ret ); + return ret; } -bool wxDataViewCtrlBase::AppendToggleColumn( const wxString &label, unsigned int model_column, +wxDataViewColumn * +wxDataViewCtrlBase::AppendToggleColumn( const wxString &label, unsigned int model_column, wxDataViewCellMode mode, int width, wxAlignment align, int flags ) { - return AppendColumn( new wxDataViewColumn( label, + + wxDataViewColumn *ret = new wxDataViewColumn( label, new wxDataViewToggleRenderer( wxT("bool"), mode, (int)align ), - model_column, width, align, flags ) ); + model_column, width, align, flags ); + AppendColumn( ret ); + return ret; } -bool wxDataViewCtrlBase::AppendProgressColumn( const wxString &label, unsigned int model_column, +wxDataViewColumn * +wxDataViewCtrlBase::AppendProgressColumn( const wxString &label, unsigned int model_column, wxDataViewCellMode mode, int width, wxAlignment align, int flags ) { - return AppendColumn( new wxDataViewColumn( label, + wxDataViewColumn *ret = new wxDataViewColumn( label, new wxDataViewProgressRenderer( wxEmptyString, wxT("long"), mode, (int)align ), - model_column, width, align, flags ) ); + model_column, width, align, flags ); + AppendColumn( ret ); + return ret; } -bool wxDataViewCtrlBase::AppendDateColumn( const wxString &label, unsigned int model_column, +wxDataViewColumn * +wxDataViewCtrlBase::AppendDateColumn( const wxString &label, unsigned int model_column, wxDataViewCellMode mode, int width, wxAlignment align, int flags ) { - return AppendColumn( new wxDataViewColumn( label, + wxDataViewColumn *ret = new wxDataViewColumn( label, new wxDataViewDateRenderer( wxT("datetime"), mode, (int)align ), - model_column, width, align, flags ) ); + model_column, width, align, flags ); + AppendColumn( ret ); + return ret; } -bool wxDataViewCtrlBase::AppendBitmapColumn( const wxString &label, unsigned int model_column, +wxDataViewColumn * +wxDataViewCtrlBase::AppendBitmapColumn( const wxString &label, unsigned int model_column, wxDataViewCellMode mode, int width, wxAlignment align, int flags ) { - return AppendColumn( new wxDataViewColumn( label, + wxDataViewColumn *ret = new wxDataViewColumn( label, new wxDataViewBitmapRenderer( wxT("wxBitmap"), mode, (int)align ), - model_column, width, align, flags ) ); + model_column, width, align, flags ); + AppendColumn( ret ); + return ret; } -bool wxDataViewCtrlBase::AppendTextColumn( const wxBitmap &label, unsigned int model_column, +wxDataViewColumn * +wxDataViewCtrlBase::AppendTextColumn( const wxBitmap &label, unsigned int model_column, wxDataViewCellMode mode, int width, wxAlignment align, int flags ) { - return AppendColumn( new wxDataViewColumn( label, + wxDataViewColumn *ret = new wxDataViewColumn( label, new wxDataViewTextRenderer( wxT("string"), mode, (int)align ), - model_column, width, align, flags ) ); + model_column, width, align, flags ); + AppendColumn( ret ); + return ret; } -bool wxDataViewCtrlBase::AppendToggleColumn( const wxBitmap &label, unsigned int model_column, +wxDataViewColumn * +wxDataViewCtrlBase::AppendToggleColumn( const wxBitmap &label, unsigned int model_column, wxDataViewCellMode mode, int width, wxAlignment align, int flags ) { - return AppendColumn( new wxDataViewColumn( label, + wxDataViewColumn *ret = new wxDataViewColumn( label, new wxDataViewToggleRenderer( wxT("bool"), mode, (int)align ), - model_column, width, align, flags ) ); + model_column, width, align, flags ); + AppendColumn( ret ); + return ret; } -bool wxDataViewCtrlBase::AppendProgressColumn( const wxBitmap &label, unsigned int model_column, +wxDataViewColumn * +wxDataViewCtrlBase::AppendProgressColumn( const wxBitmap &label, unsigned int model_column, wxDataViewCellMode mode, int width, wxAlignment align, int flags ) { - return AppendColumn( new wxDataViewColumn( label, + wxDataViewColumn *ret = new wxDataViewColumn( label, new wxDataViewProgressRenderer( wxEmptyString, wxT("long"), mode, (int)align ), - model_column, width, align, flags ) ); + model_column, width, align, flags ); + AppendColumn( ret ); + return ret; } -bool wxDataViewCtrlBase::AppendDateColumn( const wxBitmap &label, unsigned int model_column, +wxDataViewColumn * +wxDataViewCtrlBase::AppendDateColumn( const wxBitmap &label, unsigned int model_column, wxDataViewCellMode mode, int width, wxAlignment align, int flags ) { - return AppendColumn( new wxDataViewColumn( label, + wxDataViewColumn *ret = new wxDataViewColumn( label, new wxDataViewDateRenderer( wxT("datetime"), mode, (int)align ), - model_column, width, align, flags ) ); + model_column, width, align, flags ); + AppendColumn( ret ); + return ret; } -bool wxDataViewCtrlBase::AppendBitmapColumn( const wxBitmap &label, unsigned int model_column, +wxDataViewColumn * +wxDataViewCtrlBase::AppendBitmapColumn( const wxBitmap &label, unsigned int model_column, wxDataViewCellMode mode, int width, wxAlignment align, int flags ) { - return AppendColumn( new wxDataViewColumn( label, + wxDataViewColumn *ret = new wxDataViewColumn( label, new wxDataViewBitmapRenderer( wxT("wxBitmap"), mode, (int)align ), - model_column, width, align, flags ) ); + model_column, width, align, flags ); + AppendColumn( ret ); + return ret; } -bool wxDataViewCtrlBase::AppendColumn( wxDataViewColumn *col ) +bool +wxDataViewCtrlBase::AppendColumn( wxDataViewColumn *col ) { - m_cols.Append( (wxObject*) col ); col->SetOwner( (wxDataViewCtrl*) this ); return true; } -unsigned int wxDataViewCtrlBase::GetColumnCount() const -{ - return m_cols.GetCount(); -} - -bool wxDataViewCtrlBase::DeleteColumn( unsigned int WXUNUSED(pos) ) -{ - return false; -} - -bool wxDataViewCtrlBase::ClearColumns() -{ - return false; -} - -wxDataViewColumn* wxDataViewCtrlBase::GetColumn( unsigned int pos ) -{ - return (wxDataViewColumn*) m_cols[ pos ]; -} - // --------------------------------------------------------- // wxDataViewEvent // --------------------------------------------------------- @@ -693,7 +713,15 @@ wxDataViewColumn* wxDataViewCtrlBase::GetColumn( unsigned int pos ) IMPLEMENT_DYNAMIC_CLASS(wxDataViewEvent,wxNotifyEvent) DEFINE_EVENT_TYPE(wxEVT_COMMAND_DATAVIEW_ITEM_SELECTED) +DEFINE_EVENT_TYPE(wxEVT_COMMAND_DATAVIEW_ITEM_DESELECTED) DEFINE_EVENT_TYPE(wxEVT_COMMAND_DATAVIEW_ITEM_ACTIVATED) +DEFINE_EVENT_TYPE(wxEVT_COMMAND_DATAVIEW_ITEM_COLLAPSING) +DEFINE_EVENT_TYPE(wxEVT_COMMAND_DATAVIEW_ITEM_COLLAPSED) +DEFINE_EVENT_TYPE(wxEVT_COMMAND_DATAVIEW_ITEM_EXPANDING) +DEFINE_EVENT_TYPE(wxEVT_COMMAND_DATAVIEW_ITEM_EXPANDED) +DEFINE_EVENT_TYPE(wxEVT_COMMAND_DATAVIEW_ITEM_EDITING_STARTED) +DEFINE_EVENT_TYPE(wxEVT_COMMAND_DATAVIEW_ITEM_EDITING_DONE) + DEFINE_EVENT_TYPE(wxEVT_COMMAND_DATAVIEW_COLUMN_HEADER_CLICK) DEFINE_EVENT_TYPE(wxEVT_COMMAND_DATAVIEW_COLUMN_HEADER_RIGHT_CLICK) DEFINE_EVENT_TYPE(wxEVT_COMMAND_DATAVIEW_COLUMN_SORTED) @@ -705,3 +733,4 @@ DEFINE_EVENT_TYPE(wxEVT_COMMAND_DATAVIEW_MODEL_VALUE_CHANGED) DEFINE_EVENT_TYPE(wxEVT_COMMAND_DATAVIEW_MODEL_CLEARED) #endif +