static void cell_edited_callback (GtkCellRendererText *cell, gchar *path_string, gchar *new_text, UIData *ui) { GtkTreeModel *model; GtkTreeIter iter; model = gtk_tree_view_get_model (GTK_TREE_VIEW (ui->treeview)); gtk_tree_model_get_iter_from_string (model, &iter, path_string); gtk_list_store_set (GTK_LIST_STORE (model), &iter, CLUE_KEYWORD_COLUMN, new_text, -1); commit_changes (ui); }
static void clue_remove_clicked (GtkButton *button, UIData *ui) { GtkTreeSelection *selection; GtkTreeModel *model; GtkTreeIter iter; GtkTreePath *path; gboolean valid; gint len; valid = FALSE; selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (ui->treeview)); if (!gtk_tree_selection_get_selected (selection, &model, &iter)) return; /* Get the path and move to the previous node :) */ path = gtk_tree_model_get_path (model, &iter); if (path) valid = gtk_tree_path_prev (path); gtk_list_store_remove (GTK_LIST_STORE (model), &iter); len = gtk_tree_model_iter_n_children (model, NULL); if (len > 0) { if (gtk_list_store_iter_is_valid (GTK_LIST_STORE (model), &iter)) { gtk_tree_selection_select_iter (selection, &iter); } else { if (path && valid) { gtk_tree_model_get_iter (model, &iter, path); gtk_tree_selection_select_iter (selection, &iter); } } } else { gtk_widget_set_sensitive (ui->clue_edit, FALSE); gtk_widget_set_sensitive (ui->clue_remove, FALSE); } gtk_widget_grab_focus (ui->treeview); gtk_tree_path_free (path); commit_changes (ui); }
static void cell_edited_cb (GtkCellRendererText *cell, gchar *path_string, gchar *new_text, UIData *ui) { GtkTreeModel *model; GtkTreeIter iter; model = gtk_tree_view_get_model (GTK_TREE_VIEW (ui->treeview)); gtk_tree_model_get_iter_from_string (model, &iter, path_string); if (new_text == NULL || *g_strstrip (new_text) == '\0') gtk_button_clicked (GTK_BUTTON (ui->clue_remove)); else { gtk_list_store_set ( GTK_LIST_STORE (model), &iter, CLUE_KEYWORD_COLUMN, new_text, -1); commit_changes (ui); } }