Как определить, какая модель связана с древовидным представлением при обратном вызове? - PullRequest
0 голосов
/ 24 февраля 2012

В Gtk 2.0 событие переключения ячеек, например, передает обработанную ячейку и путь к обратному вызову.Но чтобы изменить базовые данные модели, мне нужно знать, для какого дерева или для какой модели это событие.Как правильно определить это?

РЕДАКТИРОВАТЬ:

Чтобы уточнить, сигнал GtkCellRenderer переключается вызывает обратный вызов с 3 параметрами: *cell_renderer, *path, user_data.В этом обратном вызове как получить модель, которая связана с древовидной структурой, которая получила этот сигнал?

1 Ответ

0 голосов
/ 01 марта 2012

Когда вы подключаете «переключаемый» сигнал, вы можете передать GtkTreeView или модель как user_data. Я не эксперт по Gtk + с языком программирования C :), но, думаю, вам поможет следующий код:

void cb_toggled (GtkCellRendererToggle *cell_renderer,gchar *path, gpointer user_data)
{
    GtkListStore *store = (GtkListStore *) user_data;
    ...
}

int main(int argc, char **argv)
{
    ...
    g_signal_connect(G_OBJECT(cell_renderer), "toggled", G_CALLBACK(cb_toggled), (gpointer)gtk_tree_view_get_model(treeview));
    ...
}
...