Getting closer to working tree/list wxDataViewCtrl.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@47153 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Robert Roebling
2007-07-05 19:15:03 +00:00
parent 50b2d54446
commit d2505ba254
2 changed files with 36 additions and 9 deletions

View File

@@ -191,6 +191,15 @@ public:
} }
virtual wxDataViewItem GetNthChild( const wxDataViewItem &parent, unsigned int n ) const virtual wxDataViewItem GetNthChild( const wxDataViewItem &parent, unsigned int n ) const
{ {
if (!parent.IsOk())
{
// root node
if (n == 0)
return wxDataViewItem( 1 );
return wxDataViewItem( 0 );
}
int ID = parent.GetID(); int ID = parent.GetID();
switch (ID) switch (ID)
{ {

View File

@@ -267,15 +267,19 @@ wxgtk_tree_model_get_iter (GtkTreeModel *tree_model,
wxDataViewItem item; wxDataViewItem item;
wxPrintf( "get_iter depth: %d\n", depth );
int i; int i;
for (i = 0; i < depth; i++) for (i = 0; i < depth; i++)
{ {
gint pos = gtk_tree_path_get_indices (path)[i]; gint pos = gtk_tree_path_get_indices (path)[i];
item = model->GetNthChild( item, (unsigned int) pos ); item = model->GetNthChild( item, (unsigned int) pos );
wxPrintf( "pos %d\n", pos );
if (!item.IsOk()) if (!item.IsOk())
{ {
wxPrintf( wxT("wrong item from path\n") ); wxPrintf( "wrong item from path\n" );
return FALSE; return FALSE;
} }
} }
@@ -438,18 +442,32 @@ wxgtk_tree_model_iter_nth_child (GtkTreeModel *tree_model,
GtkWxTreeModel *wxtree_model = (GtkWxTreeModel *) tree_model; GtkWxTreeModel *wxtree_model = (GtkWxTreeModel *) tree_model;
g_return_val_if_fail (GTK_IS_WX_TREE_MODEL (wxtree_model), FALSE); g_return_val_if_fail (GTK_IS_WX_TREE_MODEL (wxtree_model), FALSE);
g_return_val_if_fail (wxtree_model->stamp == parent->stamp, FALSE);
wxDataViewModel *model = wxtree_model->model; wxDataViewModel *model = wxtree_model->model;
wxDataViewItem item( (wxUint32) parent->user_data ); if (!parent)
item = model->GetNthChild( item, n ); {
wxDataViewItem item;
item = model->GetNthChild( item, n );
if (!item.IsOk())
return FALSE;
if (!item.IsOk()) iter->stamp = wxtree_model->stamp;
return FALSE; iter->user_data = (gpointer) item.GetID();
}
else
{
g_return_val_if_fail (wxtree_model->stamp == parent->stamp, FALSE);
iter->stamp = wxtree_model->stamp; wxDataViewItem item( (wxUint32) parent->user_data );
iter->user_data = (gpointer) item.GetID(); item = model->GetNthChild( item, n );
if (!item.IsOk())
return FALSE;
iter->stamp = wxtree_model->stamp;
iter->user_data = (gpointer) item.GetID();
}
return TRUE; return TRUE;
} }