2015-10-16 3 views
0

у меня есть диалог 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

, но я не уверен, как использовать его в своем коде.

благодаря

ответ

1

Посмотрите на подпись обработчика ответа: что response_id выглядит многообещающим, верно? Сравните это с GTK_RESPONSE_OK (или другими значениями), чтобы узнать, что пользователь решил.

+0

Я не знаю, что такое обработчик ответа –

+1

Это функция обработчика сигнала, связанная с сигналом «отклик», в вашем случае 'add_new_set()'. – jku

+0

не знал этого, спасибо за объяснение –

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