Thanks ZZ, your code helped me making my code more general. Thanks a lot. Now I can edit the cells well. But my final goal is to write them in a file. I will check a bit and come back if I need further help. On Thu, 2013-01-24 at 15:18 +0100, z...@excite.it wrote: > On Thursday 24 January 2013 11:02:37 Rudra Banerjee wrote: > > On Thu, 2013-01-24 at 10:45 +0100, David Nečas wrote: > > > Have you read the tutorial? > > > > > > http://scentric.net/tutorial/sec-editable-cells.html > > David, > > Thanks for your reply. > > Yes, I have read that tutorial. > > After reading that I have learned how to make the cell editable. But the > > problem still confuses me. And also, as I said, how to use this. > > That tut says I need a function "cell_edited_callback" to make the edit > > in file. But bit clueless about how to do that. > > > > _______________________________________________ > > gtk-app-devel-list mailing list > > gtk-app-devel-list@gnome.org > > https://mail.gnome.org/mailman/listinfo/gtk-app-devel-list > > Hi, > i used something like that in gtk2 and it used to work, > hope it helps and is understandable as my code is sometimes > a little bit convoluted as I'm self-taught, > > Ciao, > ZZ > > static void list_edited(GtkCellRendererText * cell, gchar * path_string, > gchar * new_text, gpointer user_data) > { > GtkTreeView *treeview = (GtkTreeView *)user_data; > GtkTreeModel *model; > GtkTreeIter iter; > guint column; > > /* Column number is passed as renderer object data */ > gpointer columnptr = g_object_get_data(G_OBJECT(cell), "column"); > > column = GPOINTER_TO_UINT(columnptr); > > /* Get the iterator */ > model = gtk_tree_view_get_model(treeview); > gtk_tree_model_get_iter_from_string(model, &iter, path_string); > > /* Update the model */ > gtk_list_store_set(GTK_LIST_STORE(model), &iter, column, new_text, -1); > } > > static void text_editing_started (GtkCellRenderer ATTRIBUTE_UNUSED *cell, > GtkCellEditable *editable, > const gchar *path, GCallback data) > { > debug_err_msg("%s: started", __FUNCTION__); > > if (GTK_IS_ENTRY (editable)) { > GtkEntry *entry = GTK_ENTRY (editable); > GCallback cb_func = data; > g_signal_connect(GTK_OBJECT(entry), "activate", > (GCallback)cb_func, (char *)xstrdup(path)); > } > } > > > GtkWidget *string_list_create(int num, GCallback func, int show_hide, int > editable,...) > { > GtkCellRenderer *renderer; > GtkTreeViewColumn *column; > GtkListStore *store; > GtkWidget *tree; > GtkTreeSelection *selection; > GType *types; > va_list titles; > int i; > char *tmp; > char *label; > double align; > > types = (GType *) malloc((num + 1) * sizeof(GType)); > for (i = 0; i < num; i++) { > types[i] = G_TYPE_STRING; > } > > store = gtk_list_store_newv(num, types); > xfree(&types); > tree = gtk_tree_view_new_with_model(GTK_TREE_MODEL(store)); > gtk_tree_view_set_rules_hint(GTK_TREE_VIEW(tree), TRUE); > /* Setup the selection handler */ > selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(tree)); > gtk_tree_selection_set_mode(selection, GTK_SELECTION_SINGLE); > > if (func) { > g_signal_connect(selection, "changed", G_CALLBACK(func), NULL); > } > /* The view now holds a reference. We can get rid of our own reference > */ > g_object_unref(G_OBJECT(store)); > > va_start(titles, editable); > for (i = 0; i < num; i++) { > /* Create a cell renderer */ > renderer = gtk_cell_renderer_text_new(); > > tmp = va_arg(titles, char *); > align = va_arg(titles, double); > > if (editable == EDITABLE || (editable == CUSTOM && > va_arg(titles, int) == EDITABLE)) { > g_object_set(renderer,"editable", TRUE, NULL); > g_object_set_data(G_OBJECT(renderer), "column", > GUINT_TO_POINTER(i)); > g_signal_connect(GTK_OBJECT(renderer), "edited", > G_CALLBACK(list_edited), tree); > if (editable == CUSTOM) { > g_signal_connect(GTK_OBJECT(renderer), > "editing-started", G_CALLBACK(text_editing_started), > (gpointer) va_arg(titles, void*)); > } > } > > if (!tmp || show_hide == HIDE ) tmp = ""; > > if (g_utf8_validate(tmp, -1, NULL) != TRUE) { > label = g_locale_to_utf8(tmp , -1, NULL, NULL, NULL); > /* Create a column, associating the "text" attribute of > the cell_renderer to the column of the model */ > column = > gtk_tree_view_column_new_with_attributes(label, renderer, "text", i, NULL); > xfree(&label); > } else { > column = gtk_tree_view_column_new_with_attributes(tmp, > renderer, "text", i, NULL); > } > g_object_set (renderer,"xalign", align, NULL); > /* Add the column to the view. */ > gtk_tree_view_append_column(GTK_TREE_VIEW(tree), column); > } > va_end(titles); > return tree; > } > _______________________________________________ > gtk-app-devel-list mailing list > gtk-app-devel-list@gnome.org > https://mail.gnome.org/mailman/listinfo/gtk-app-devel-list
_______________________________________________ gtk-app-devel-list mailing list gtk-app-devel-list@gnome.org https://mail.gnome.org/mailman/listinfo/gtk-app-devel-list