]> git.saurik.com Git - wxWidgets.git/commitdiff
Patch from Bo for recent API changes
authorRobert Roebling <robert@roebling.de>
Sun, 26 Aug 2007 14:48:29 +0000 (14:48 +0000)
committerRobert Roebling <robert@roebling.de>
Sun, 26 Aug 2007 14:48:29 +0000 (14:48 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@48398 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/generic/dataview.h
src/common/datavcmn.cpp
src/generic/datavgen.cpp

index 136d7b944b45db14d504f60a9aa01353b67f7ba8..37ae7f74b13ae73251f76a383af3483e10c3f6ca 100644 (file)
@@ -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;
index 5ecd70e872028987ed6b339e8b1bdce3a083dff6..0b287e6a5b280d4f1aea991213cad7a27d438769 100644 (file)
@@ -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;
 }
index 2d8182e377523a752fec835f5aed2d58ba06887f..936dc0f16470ff6ecf449ea7642f95ded9a15fc0 100644 (file)
@@ -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