From: Robert Roebling Date: Sun, 26 Aug 2007 14:48:29 +0000 (+0000) Subject: Patch from Bo for recent API changes X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/afebb87be1467f24f4ffe5e8cca2a94acc5248c8?ds=inline Patch from Bo for recent API changes git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@48398 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/include/wx/generic/dataview.h b/include/wx/generic/dataview.h index 136d7b944b..37ae7f74b1 100644 --- a/include/wx/generic/dataview.h +++ b/include/wx/generic/dataview.h @@ -314,6 +314,8 @@ protected: // wxDataViewCtrl // --------------------------------------------------------- +WX_DECLARE_LIST(wxDataViewColumn, wxDataViewColumnList ); + class WXDLLIMPEXP_ADV wxDataViewCtrl: public wxDataViewCtrlBase, public wxScrollHelperNative { @@ -354,6 +356,11 @@ public: virtual void DoSetExpanderColumn(); virtual void DoSetIndent(); + virtual unsigned int GetColumnCount() const; + virtual wxDataViewColumn* GetColumn( unsigned int pos ) const; + virtual bool DeleteColumn( wxDataViewColumn *column ); + virtual bool ClearColumns(); + virtual wxDataViewItem GetSelection() const; virtual int GetSelections( wxDataViewItemArray & sel ) const; virtual void SetSelections( const wxDataViewItemArray & sel ); @@ -369,6 +376,9 @@ public: virtual void HitTest( const wxPoint & point, wxDataViewItem & item, wxDataViewColumn* &column ) const; virtual wxRect GetItemRect( const wxDataViewItem & item, const wxDataViewColumn *column = NULL ) const; + virtual void Expand( const wxDataViewItem & item ); + virtual void Collapse( const wxDataViewItem & item ); + protected: virtual int GetSelections( wxArrayInt & sel ) const; virtual void SetSelections( const wxArrayInt & sel ); @@ -400,6 +410,7 @@ public: // utility functions not part of the API wxWindow *GetMainWindow() { return (wxWindow*) m_clientArea; } private: + wxDataViewColumnList m_cols; wxDataViewModelNotifier *m_notifier; wxDataViewMainWindow *m_clientArea; wxDataViewHeaderWindow *m_headerArea; diff --git a/src/common/datavcmn.cpp b/src/common/datavcmn.cpp index 5ecd70e872..0b287e6a5b 100644 --- a/src/common/datavcmn.cpp +++ b/src/common/datavcmn.cpp @@ -335,6 +335,7 @@ wxDataViewItem wxDataViewIndexListModel::GetNextSibling( const wxDataViewItem &i // --------------------------------------------------------- // wxDataViewRendererBase // --------------------------------------------------------- +static wxDataViewItem g_item; IMPLEMENT_ABSTRACT_CLASS(wxDataViewRendererBase, wxObject) @@ -372,6 +373,14 @@ 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 ); + g_item = item; + GetOwner()->GetOwner()->GetEventHandler()->ProcessEvent( event ); + return true; } @@ -401,6 +410,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( g_item ); + GetOwner()->GetOwner()->GetEventHandler()->ProcessEvent( event ); return true; } diff --git a/src/generic/datavgen.cpp b/src/generic/datavgen.cpp index 2d8182e377..936dc0f164 100644 --- a/src/generic/datavgen.cpp +++ b/src/generic/datavgen.cpp @@ -511,6 +511,9 @@ public: void DestroyTree(); void HitTest( const wxPoint & point, wxDataViewItem & item, wxDataViewColumn* &column ); wxRect GetItemRect( const wxDataViewItem & item, const wxDataViewColumn* column ); + + void Expand( unsigned int row ) { OnExpanding( row ); } + void Collapse( unsigned int row ) { OnCollapsing( row ); } private: wxDataViewTreeNode * GetTreeNodeByRow( unsigned int row ); //We did not need this temporarily @@ -1878,6 +1881,7 @@ void wxDataViewMainWindow::OnRenameTimer() wxDataViewItem item = GetItemByRow( m_currentRow ); m_currentCol->GetRenderer()->StartEditing( item, labelRect ); + } //------------------------------------------------------------------ @@ -3496,6 +3500,7 @@ wxDataViewItem wxDataViewMainWindow::GetSelection() const //----------------------------------------------------------------------------- // wxDataViewCtrl //----------------------------------------------------------------------------- +WX_DEFINE_LIST(wxDataViewColumnList); IMPLEMENT_DYNAMIC_CLASS(wxDataViewCtrl, wxDataViewCtrlBase) @@ -3600,6 +3605,7 @@ bool wxDataViewCtrl::AppendColumn( wxDataViewColumn *col ) if (!wxDataViewCtrlBase::AppendColumn(col)) return false; + m_cols.Append( col ); OnColumnChange(); return true; } @@ -3622,6 +3628,47 @@ void wxDataViewCtrl::DoSetIndent() m_clientArea->UpdateDisplay(); } +unsigned int wxDataViewCtrl::GetColumnCount() const +{ + return m_cols.GetCount(); +} + +wxDataViewColumn* wxDataViewCtrl::GetColumn( unsigned int pos ) const +{ + wxDataViewColumnList::const_iterator iter; + int i = 0; + for (iter = m_cols.begin(); iter!=m_cols.end(); iter++) + { + if (i == pos) + return *iter; + + if ((*iter)->IsHidden()) + continue; + i ++; + } + return NULL; +} + +bool wxDataViewCtrl::DeleteColumn( wxDataViewColumn *column ) +{ + wxDataViewColumnList::Node * ret = m_cols.Find( column ); + if (ret == NULL) + return false; + + m_cols.Erase(ret); + delete column; + OnColumnChange(); + + return true; +} + +bool wxDataViewCtrl::ClearColumns() +{ + m_cols.clear(); + OnColumnChange(); + return true; +} + //Selection code with wxDataViewItem as parameters wxDataViewItem wxDataViewCtrl::GetSelection() const { @@ -3811,6 +3858,20 @@ int wxDataViewCtrl::GetRowByItem( const wxDataViewItem & item ) const return m_clientArea->GetRowByItem( item ); } +void wxDataViewCtrl::Expand( const wxDataViewItem & item ) +{ + int row = m_clientArea->GetRowByItem( item ); + if (row != -1) + m_clientArea->Expand(row); +} + +void wxDataViewCtrl::Collapse( const wxDataViewItem & item ) +{ + int row = m_clientArea->GetRowByItem( item ); + if (row != -1) + m_clientArea->Collapse(row); +} + #endif // !wxUSE_GENERICDATAVIEWCTRL