Дано:
- дерево (пустое, то есть голое, поэтому скриншотов не будет, т. к. ему ещё не исполнилось 18 лет);
- тестовый обработчик.
Цель: создавать пару родительский — дочерний узел, причём так, чтобы родительские узлы не повторялись (т. е. если уже найден родитель с таким именем, дочерний узел цепляется ему).
Говнокод обработчика:
GValue* cur_gvalue;
gchar* cur_string;
GtkTreeIter app, notification;
if (!gtk_tree_model_get_iter_first(GTK_TREE_MODEL(drugStore), &app))
goto apps_empty;
do {
g_value_unset(cur_gvalue);
gtk_tree_model_get_value(GTK_TREE_MODEL(drugStore), &app, 0, cur_gvalue);
if (!g_strcmp0(g_value_get_string(cur_gvalue), "tist")) {
goto app_exists;
}
} while (gtk_tree_model_iter_next(GTK_TREE_MODEL(drugStore), &app));
apps_empty:
gtk_tree_store_append(drugStore, &app, NULL);
gtk_tree_store_set(drugStore, &app, 0, "tist", -1);
app_exists:
gtk_tree_store_append(drugStore, ¬ification, &app);
gtk_tree_store_set(drugStore, ¬ification, 0, "tist2", -1);