2012-01-31 5 views
1

мне нужно знать, какой GtkTreeView был передан в функцию из обработчика (идентичной функции, используемой для нескольких комбинаций кнопки/TreeView, так что это гораздо более эффективно, чем тонны различных функций)Различать между двумя объектами GtkTreeView

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

void 
add_button_clicked(GtkTreeView * treeview,GtkButton * widget){ 
    GtkTreeIter iter; 
    GtkListStore * store = GTK_LIST_STORE(gtk_tree_view_get_model(treeview)); 
    gtk_list_store_append (store, &iter); 

    if(items) 
     gtk_list_store_set (store, &iter, 
          ITEM_COL_ENABLED, 1, 
          -1); 
    else if(locations) 
     gtk_list_store_set (store, &iter, 
          LOCATION_COL_NAME, "Broken Shores", 
          LOCATION_COL_ENABLED, 1, 
          -1); 
} 

Как может Я различаю их?

+0

Cant вы даете 'user_data' в качестве настраиваемого параметра при подключении функции обратного вызова к событию? Можете ли вы показать, как вы * подключаете * обратный вызов к событию? – phimuemue

ответ

0

Вы можете прикреплять произвольные данные к любому GObject; это часто упускается из виду, но оно идеально подходит для идентификации древовидных представлений в вашем случае. При создании TreeView, сделайте следующее:

g_object_set_data(treeview, "id", GINT_TO_POINTER(1)); 

Затем в обратном вызове:

if(GPOINTER_TO_INT(g_object_get_data(treeview, "id")) == 1) { 
    /* This is tree view #1 */ 
} 
+0

Я действительно должен был использовать это, чтобы идентифицировать столбец в модели, которую я хотел редактировать, хороший ответ! –

Смежные вопросы