Made wxDataViewCtrl sample use a real, expandabl data tree

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@47459 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Robert Roebling
2007-07-14 13:54:14 +00:00
parent 94473fa8e4
commit 1e08ad102a
4 changed files with 267 additions and 80 deletions

View File

@@ -116,9 +116,12 @@ public:
wxDataViewModel* GetDataViewModel() { return m_wx_model; }
GtkWxTreeModel* GetOwner() { return m_owner; }
bool ItemAdded( const wxDataViewItem &parent, const wxDataViewItem &item );
protected:
void InitTree();
wxGtkTreeModelNode *FindNode( const wxDataViewItem &item );
wxGtkTreeModelNode *FindNode( GtkTreeIter *iter );
void BuildBranch( wxGtkTreeModelNode *branch );
@@ -602,6 +605,13 @@ void wxGtkTreeModel::BuildBranch( wxGtkTreeModelNode *node )
}
}
bool wxGtkTreeModel::ItemAdded( const wxDataViewItem &parent, const wxDataViewItem &item )
{
wxGtkTreeModelNode *parent_node = FindNode( parent );
parent_node->Append( new wxGtkTreeModelNode( parent_node, item ) );
return true;
}
gboolean wxGtkTreeModel::get_iter( GtkTreeIter *iter, GtkTreePath *path )
{
int depth = gtk_tree_path_get_depth( path );
@@ -634,7 +644,7 @@ GtkTreePath *wxGtkTreeModel::get_path( GtkTreeIter *iter )
while (node->GetParent())
{
wxGtkTreeModelNode *parent = node->GetParent();
int pos = parent->GetChildren().Index( parent );
int pos = parent->GetChildren().Index( node );
gtk_tree_path_prepend_index( retval, pos );
@@ -779,6 +789,20 @@ wxGtkTreeModelNode *wxGtkTreeModel::FindNode( GtkTreeIter *iter )
return result;
}
wxGtkTreeModelNode *wxGtkTreeModel::FindNode( const wxDataViewItem &item )
{
wxGtkTreeModelNode *result = wxGtkTreeModel_FindNode( m_root, item );
if (!result)
{
wxPrintf( "Not found %d\n", (int) item.GetID() );
char *crash = NULL;
*crash = 0;
}
return result;
}
//-----------------------------------------------------------------------------
// define new GTK+ class wxGtkRendererRenderer
//-----------------------------------------------------------------------------
@@ -1177,6 +1201,8 @@ wxGtkDataViewModelNotifier::~wxGtkDataViewModelNotifier()
bool wxGtkDataViewModelNotifier::ItemAdded( const wxDataViewItem &parent, const wxDataViewItem &item )
{
m_wxgtk_model->model->ItemAdded( parent, item );
GtkTreeIter iter;
iter.stamp = m_wxgtk_model->stamp;
iter.user_data = (gpointer) item.GetID();
@@ -2456,6 +2482,26 @@ bool wxDataViewCtrl::AppendColumn( wxDataViewColumn *col )
return true;
}
wxDataViewItem wxDataViewCtrl::GetSelection()
{
GtkTreeSelection *selection = gtk_tree_view_get_selection( GTK_TREE_VIEW(m_treeview) );
if (m_windowStyle & wxDV_MULTIPLE)
{
}
else
{
GtkTreeIter iter;
if (gtk_tree_selection_get_selected( selection, NULL, &iter ))
{
wxDataViewItem item( (wxUint32) iter.user_data );
return item;
}
}
return wxDataViewItem(0);
}
void wxDataViewCtrl::DoSetExpanderColumn()
{
}