Re: New list/tree model questions
- From: Archit Baweja <bighead users sourceforge net>
- To: Havoc Pennington <hp redhat com>
- Cc: Maxim Koshelev <max krascoal ru>, gtk-app-devel-list gnome org
- Subject: Re: New list/tree model questions
- Date: 12 Mar 2002 10:19:44 +0530
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Hi
Now thats exactly what I was looking for! Thanks.
Archit Baweja
Havoc Pennington <hp redhat com> writes:
Maxim Koshelev <max krascoal ru> writes:
gtk_tree_model_get needs a iterator as parameter. So as far as I can
understand there is no
function to get row by data (like gtk_clist_find_row_from_data) in
new tree model.
Or I'm wrong?
No you're right about that, I just wasn't sure what you were asking.
Look at how find_row_from_data works:
gint
gtk_clist_find_row_from_data (GtkCList *clist,
gpointer data)
{
GList *list;
gint n;
g_return_val_if_fail (GTK_IS_CLIST (clist), -1);
for (n = 0, list = clist->row_list; list; n++, list = list->next)
if (GTK_CLIST_ROW (list)->data == data)
return n;
return -1;
}
You can write exactly the same thing for tree view (this assumes a
list rather than a tree):
gboolean
find_row_from_data (GtkTreeModel *model,
GtkTreeIter *iter,
int column,
void *data)
{
GtkTreeIter tmp;
void *this_data;
if (!gtk_tree_model_get_iter_first (model, &tmp))
return FALSE;
do
{
gtk_tree_model_get (model, &tmp, column, &this_data, -1);
if (this_data == data)
{
*iter = tmp;
return TRUE;
}
} while (gtk_tree_model_iter_next (model, &tmp));
return FALSE; /* FALSE return means not found */
}
Note that in both cases, this is a linear search and thus best
avoided. The tree model case only works for columns that contain
pointers, clearly, some columns can contain ints or strings or
whatever. The returned data from gtk_tree_model_get() will need
to be freed if it's a string or boxed type rather than
G_TYPE_POINTER.
To handle a tree in addition to a list, you need to recurse into the
model instead of just walking over it linearly.
Havoc
_______________________________________________
gtk-app-devel-list mailing list
gtk-app-devel-list gnome org
http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.0.6 (GNU/Linux)
Comment: Processed by Mailcrypt 3.5.6 and Gnu Privacy Guard <http://www.gnupg.org/>
iD8DBQE8jYjo2rWNPKmGjMcRAmBgAKCastoLeh/e4PuTSlrPgGAIpb+r9ACeOwBZ
P7VamuU81cSIYU1jagP2DDY=
=1ZlS
-----END PGP SIGNATURE-----
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]