+static gboolean gtk_tree_model_find_string(GtkTreeModel *model,
+ GtkTreeIter *rval, GtkTreeIter *parent, gint field, const gchar *key)
+{
+ g_debug("AWeatherGui: gtk_tree_model_find - field=%d key=%s", field, key);
+ char *text;
+ GtkTreeIter cur;
+ gint num_children = gtk_tree_model_iter_n_children(model, parent);
+ for (int i = 0; i < num_children; i++) {
+ gtk_tree_model_iter_nth_child(model, &cur, parent, i);
+ gtk_tree_model_get(model, &cur, field, &text, -1);
+ if (text != NULL && g_str_equal(text, key)) {
+ *rval = cur;
+ g_free(text);
+ return TRUE;
+ }
+ g_free(text);
+ if (gtk_tree_model_iter_has_child(model, &cur))
+ if (gtk_tree_model_find_string(model, rval, &cur, field, key))
+ return TRUE;
+ }
+ return FALSE;
+}