Различают два gtktreeviews - PullRequest
       2

Различают два gtktreeviews

1 голос
/ 31 января 2012

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

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

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);
}

Как можноЯ различаю два?

1 Ответ

0 голосов
/ 01 февраля 2012

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

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 */
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...