редактировать gtkcellrenderertext

Я пишу код gtk3 (на C), который использует древовидную структуру.

store = gtk_list_store_new (NUM_COLS, G_TYPE_STRING, G_TYPE_STRING,
                                                G_TYPE_STRING,
                                                G_TYPE_STRING,
                                                G_TYPE_STRING);

  tree = gtk_tree_view_new_with_model (GTK_TREE_MODEL (store));
  cell = gtk_cell_renderer_text_new ();
  col_pub=gtk_tree_view_column_new_with_attributes (
                                               "Title", cell,
                                               "text", COL_BIB_PUB,
                                               NULL);
gtk_tree_view_column_set_sort_column_id( col_pub, ID_PUB);
gtk_tree_view_append_column (GTK_TREE_VIEW (tree), col_pub);

Проблема в том, что я хочу, чтобы каждая ячейка дерева была редактируемой, поэтому мне нужно что-то вроде:

g_object_set(cell, "editable", TRUE, NULL);

но я понятия не имею, как подключить отредактированный флаг к файлу/буферу. Будет очень полезно, если кто-то любезно покажет путь... может быть очень короткий пример.


person BaRud    schedule 23.01.2013    source источник
comment
Вам нужно лучше объяснить, чего вы хотите достичь. А пока я предлагаю вам взглянуть на приложение gtk3-demo (которое поставляется с Gtk+). Есть пример GtkListStore с редактируемыми ячейками.   -  person erick2red    schedule 24.01.2013


Ответы (1)


Просто подключите Gtk.CellRendererText к сигналу. Все ваши TreeViewColumn, которые используют этот рендерер, будут подключаться к сигналу.

g_signal_connect (G_OBJECT (cell), "edited", G_CALLBACK (cb), NULL)

    void cb (GtkCellRendererText *rend, char*path, char*newtext, gpointer data)
{
    // Do whatever you want with the newtext
       ........          

    // Since this signal emitted after cell being edited,
    // you can use a global variable (a bool maybe) to indicate.
    // gboolean switcher = 0   
    switcher = 1
} 

Если это то, что вы хотите, так как ваш вопрос не ясен

person luciomrx    schedule 30.06.2014