LINUX.ORG.RU

gtk_dialog_run как понять на какую кнопку нажали?


0

0

Делаю независимый от гуи диалог.

						dialog = gtk_message_dialog_new(window,
  	                              GTK_DIALOG_DESTROY_WITH_PARENT,
    	                            GTK_MESSAGE_INFO,
      	                          GTK_BUTTONS_OK_CANCEL,
        	                        stream.SrvMessage);
				g_signal_connect_swapped(dialog,
													"response",
													G_CALLBACK(gtk_widget_destroy),
													dialog);
				gtk_dialog_run(GTK_DIALOG(dialog));	

Подскажите если я в g_signal_connect_swapped укажу свою ф-ию то как
 мне внутри ее проверить на какую кнопку нажали в диалоге?
anonymous

dlg = gtk_dialog_new_with_buttons ("Dialog", NULL, 0, GTK_STOCK_OK, GTK_RESPONSE_OK, GTK_STOCK_CLOSE, GTK_RESPONSE_CLOSE);
int r = gtk_dialog_run (dlg);
switch (r)
{
  case GTK_RESPONSE_OK: break; /* ok pressed */
  case GTK_RESPONSE_CLOSE: break; /* close pressed */
}

и не нужно никаких сигналов

ananas ★★★★★
()
Ответ на: комментарий от ananas

Нет ты не понимаешь... я не могу ждать что вернет gtk_dialog_run поскольку у меня застопориться GUI!

Мне нужно показать окошко и дальше чтоб гуи работало, чтоб можно было на кнопки нажимать, обновлять информацию

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

Твой код не подходит в этом случае

anonymous
()
Ответ на: комментарий от anonymous

void
on_response(GtkDialog *dialog,gint arg1,gpointer user_data)
{
   switch(arg1)
   {
   case GTK_RESPONSE_OK:
       g_print("GTK_RESPONSE_OK");
       break;
   case GTK_RESPONSE_CANCEL:
       g_print("GTK_RESPONSE_CANCEL");
       break;
   }
}

...

g_signal_connect(GTK_OBJECT(dialog),
                 "response", 
                 G_CALLBACK (on_response),
                 NULL);


Оно ?

kosmonavt
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.