у меня есть диалог GTK с кнопкой OK Я хочу конкретная функция, которая будет выполняться при нажатии кнопки OK будет нажата, так что я использовал следующий код:как я могу использовать GTK ответы
static struct data callback_params;
callback_params.entry = gtk_entry_new();
callback_params.file = config;
gtk_container_add(GTK_CONTAINER(content_area), callback_params.entry);
g_signal_connect(dialog,"response",G_CALLBACK (add_new_set),&callback_params);
g_signal_connect_swapped (dialog, "response",G_CALLBACK (gtk_widget_destroy),dialog);
gtk_window_set_modal (GTK_WINDOW(dialog), TRUE);
gtk_widget_show_all (dialog);
void add_new_set(GtkDialog *dialog, gint response_id, gpointer callback_params)
{
g_print ("%s\n",gtk_entry_get_text ((GtkEntry *)((struct data *) callback_params)->entry));
fputs("set \"",((FILE *)((struct data *) callback_params)->file));
fputs(gtk_entry_get_text ((GtkEntry *)((struct data *) callback_params)->entry),((FILE *)((struct data *) callback_params)->file));
fputs("\"",((FILE *)((struct data *) callback_params)->file));
}
, который работает отлично, за исключением того, что кнопка close (x) выполняет эту функцию, я понимаю, что это нормальное поведение для сигнала «ответа», я хочу, чтобы (x) закрыл диалоговое окно и не выполнил функцию
I полагайте, что это должно иметь какое-то отношение к ответам на gtk, например: GTK_RESPONSE_OK GTK_RESPONSE_CL OSE
, но я не уверен, как использовать его в своем коде.
благодаря
Я не знаю, что такое обработчик ответа –
Это функция обработчика сигнала, связанная с сигналом «отклик», в вашем случае 'add_new_set()'. – jku
не знал этого, спасибо за объяснение –