Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«ΠžΡΠ½ΠΎΠ²Ρ‹ программирования Π² LinuxΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 294

Автор ΠœΡΡ‚ΡŒΡŽ НСйл

Π”Π°Π»Π΅Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊ Π±Ρ‹ Π²Ρ‹ создавали Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ с ΠΊΠ½ΠΎΠΏΠΊΠ°ΠΌΠΈ OK ΠΈ Cancel, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚

GTK_RESPONSE_ACCEPT
ΠΈ
GTK_RESPONSE_REJECT
ΠΏΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ этих ΠΊΠ½ΠΎΠΏΠΎΠΊ:

GtkWidget *dialog = gtk_dialog_new_with_buttons("Important question",

Β parent_window,

Β GTK_DIALOG_DESTROY_WITH_PARENT, GTK_STOCK_OK,

Β GTK_RESPONSE_ACCEPT, GTK_STOCK_CANCEL,

Β GTK_RESPONSE_REJECT, NULL);

ΠœΡ‹ ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΠ»ΠΈΡΡŒ Π½Π° Π΄Π²ΡƒΡ… ΠΊΠ½ΠΎΠΏΠΊΠ°Ρ…, Π½ΠΎ Π½Π° самом Π΄Π΅Π»Π΅ Π½Π° количСство ΠΊΠ½ΠΎΠΏΠΎΠΊ Π² Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠΌ ΠΎΠΊΠ½Π΅ Π½Π΅Ρ‚ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ. Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹Π±ΠΈΡ€Π°Ρ‚ΡŒ ΠΈΠ· ряда Ρ„Π»Π°Π³ΠΎΠ² Ρ‚ΠΈΠΏΠ° ΠΎΡ‚ΠΊΠ»ΠΈΠΊΠ°. Π€Π»Π°Π³ΠΈ

accept
(ΠΏΡ€ΠΈΠ½ΡΡ‚ΡŒ) ΠΈ
reject
(ΠΎΡ‚Π²Π΅Ρ€Π³Π½ΡƒΡ‚ΡŒ) Π½Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ Π² стандартС GNOME ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² Π²Π°ΡˆΠΈΡ… прилоТСниях ΠΏΠΎ Π²Π°ΡˆΠ΅ΠΌΡƒ ΡƒΡΠΌΠΎΡ‚Ρ€Π΅Π½ΠΈΡŽ. (ΠŸΠΎΠΌΠ½ΠΈΡ‚Π΅ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ
accept
Π² вашСм ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΠ·Π½Π°Ρ‡Π°Ρ‚ΡŒ "ΠΏΡ€ΠΈΠ½ΡΡ‚ΡŒ".) Π”Ρ€ΡƒΠ³ΠΈΠ΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΎΡ‚ΠΊΠ»ΠΈΠΊ OK ΠΈ CANCEL, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ Π² Ρ‚ΠΈΠΏΠ΅
GtkResponseType enum
Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅.

ЕстСствСнно, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ содСрТимоС Π² вашС Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ ΠΈ для этого ΠΎΠ±ΡŠΠ΅ΠΊΡ‚

GtkDialog
содСрТит Π³ΠΎΡ‚ΠΎΠ²Ρ‹ΠΉ ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΎΡ‡Π½Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€
GtkVBox
для заполнСния Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Π°ΠΌΠΈ. Π’Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ прямо ΠΈΠ· ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°:

GtkWidget *vbox = GTK_DIALOG(dialog)->vbox;

Π­Ρ‚ΠΎΡ‚

GtkVBox
примСняСтся ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌ способом с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ
gtk_box_pack_start
ΠΈΠ»ΠΈ Ρ‡Π΅Π³ΠΎ-Ρ‚ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ.

ПослС Ρ‚ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ создано, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ шаг β€” ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ ΠΈ ΠΆΠ΄Π°Ρ‚ΡŒ ΠΎΡ‚ Π½Π΅Π³ΠΎ ΠΎΡ‚Π²Π΅Ρ‚Π°. Π‘Π΄Π΅Π»Π°Ρ‚ΡŒ это ΠΌΠΎΠΆΠ½ΠΎ двумя способами: Π² модальном Ρ€Π΅ΠΆΠΈΠΌΠ΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Π»ΠΎΠΊΠΈΡ€ΡƒΠ΅Ρ‚ вСсь Π²Π²ΠΎΠ΄ Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π°, ΠΈΠ»ΠΈ Π² нСмодальном Ρ€Π΅ΠΆΠΈΠΌΠ΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ воспринимаСт Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ ΠΊΠ°ΠΊ любоС Π΄Ρ€ΡƒΠ³ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ. Π”Π°Π²Π°ΠΉΡ‚Π΅ сначала рассмотрим запуск модального Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π°.

МодальноС диалоговоС окно

МодальноС Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ заставляСт ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΎΡ‚Π²Π΅Ρ‚ΠΈΡ‚ΡŒ Π΄ΠΎ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ смоТСт Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒΡΡ любоС Π΄Ρ€ΡƒΠ³ΠΎΠ΅ дСйствиС. Оно ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π² Ρ‚Π΅Ρ… ситуациях, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ собираСтся ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ, сопряТСнноС с ΡΠ΅Ρ€ΡŒΠ΅Π·Π½Ρ‹ΠΌΠΈ послСдствиями, ΠΈΠ»ΠΈ Π½ΡƒΠΆΠ½ΠΎ вывСсти сообщСния ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ… ΠΈ прСдупрСТдСниях.

Π”ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΌΠΎΠ΄Π°Π»ΡŒΠ½Ρ‹ΠΌ, установив Ρ„Π»Π°Π³

GTK_DIALOG_MODAL
ΠΈ Π²Ρ‹Π·Π²Π°Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ
gtk_widget_show
, Π½ΠΎ Π΅ΡΡ‚ΡŒ Π»ΡƒΡ‡ΡˆΠΈΠΉ ΠΏΡƒΡ‚ΡŒ. Ѐункция
gtk_dialog_run
Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ Π·Π° вас всю Ρ‚ΡΠΆΠ΅Π»ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ, остановив дальнСйшСС Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°ΠΆΠ°Ρ‚Π° ΠΊΠ½ΠΎΠΏΠΊΠ° Π² Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠΌ ΠΎΠΊΠ½Π΅.

Когда ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π½Π°ΠΆΠΈΠΌΠ°Π΅Ρ‚ ΠΊΠ½ΠΎΠΏΠΊΡƒ (ΠΈΠ»ΠΈ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ уничтоТаСтся), функция

gtk_dialog_run
Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Ρ‚ΠΈΠΏΠ°
int
, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ, Π½Π°ΠΆΠ°Ρ‚ΡƒΡŽ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ. Π’ GTK+ ΠΎΡ‡Π΅Π½ΡŒ кстати ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ Ρ‚ΠΈΠΏ
enum
для описания Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ.

<b>typedef enum {</b>

<b>Β GTK_RESPONSE_NONEΒ = -1,</b>

<b>Β GTK_RESPONSE_REJECTΒ = -2,</b>

<b>Β GTK_RESPONSE_ACCEPTΒ = -3,</b>

<b>Β GTK_RESPONSE_DELETE_EVENT = -4</b>

<b>Β GTK_RESPONSE_OKΒ = -5,</b>

<b>Β GTK_RESPONSE_CANCELΒ = -6,</b>

<b>Β GTK_RESPONSE_CLOSEΒ = -7,</b>

<b>Β GTK_RESPONSE_YESΒ = -8,</b>

<b>Β GTK_RESPONSE_NOΒ = -9,</b>

<b>Β GTK_RESPONSE_APPLYΒ = -10,</b>

<b>Β GTK_RESPONSE_HELPΒ = -11</b>

<b>} GtkResponseType;</b>

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΠ±ΡŠΡΡΠ½ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄ ΠΎΡ‚ΠΊΠ»ΠΈΠΊΠ°, ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΡ‹ΠΉ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ

gtk_dialog_new_with_buttons
, β€” это ΠΊΠΎΠ΄ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π° Ρ‚ΠΈΠΏΠ°
GtkResponseType
, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ функция
gtk_dialog_run
Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚, ΠΊΠΎΠ³Π΄Π° Π½Π°ΠΆΠ°Ρ‚Π° ΠΊΠ½ΠΎΠΏΠΊΠ°. Если Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ уничтоТаСтся (это происходит, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Ρ‰Π΅Π»ΠΊΠ°Π΅Ρ‚ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ ΠΌΡ‹ΡˆΠΈ ΠΏΠΈΠΊΡ‚ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ закрытия), Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚
GTK_RESPONSE_NONE
.

Для Π²Ρ‹Π·ΠΎΠ²Π° ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² идСально ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ конструкция

switch
:

GtkWidget* dialog = create_dialog();

int result = gtk_dialog_run(GTK_DIALOG(dialog));

switch(result) {

case GTK_RESPONSE_ACCEPT:

Β delete_file();

Β break;

сазС GTK_RESPONSE_REJECT:

Β do_nothing();

Β break;

default:

Β dialog_was_cancelled();

Β break;

}

gtk_widget_destroy(dialog);

Π­Ρ‚ΠΎ всС, Ρ‡Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ для простых ΠΌΠΎΠ΄Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΎΠΊΠΎΠ½ Π² ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ‚Π΅ инструмСнтов GTK+. Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ ΠΎΡ‡Π΅Π½ΡŒ нСбольшой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΈ ΠΏΠΎΡ‚Ρ€Π°Ρ‡Π΅Π½ΠΎ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ усилий. Π’ ΠΊΠΎΠ½Ρ†Π΅ Π½ΡƒΠΆΠ½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ провСсти чистку с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

gtk_widget_destroy
.

Если Π²Π°ΠΌ понадобится нСмодальноС Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ, всС Π±ΡƒΠ΄Π΅Ρ‚ Π½Π΅ Ρ‚Π°ΠΊ просто. Π’Ρ‹ Π½Π΅ смоТСтС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ

gtk_dialog_run
, вмСсто Π½Π΅Π΅ придСтся ΡΠ²ΡΠ·Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π° с ΠΊΠ½ΠΎΠΏΠΊΠ°ΠΌΠΈ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π°.

ΠΠ΅ΠΌΠΎΠ΄Π°Π»ΡŒΠ½Ρ‹Π΅ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²Ρ‹Π΅ ΠΎΠΊΠ½Π°

ΠœΡ‹ рассмотрСли, ΠΊΠ°ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ

gtk_dialog_run
для создания модального (Π±Π»ΠΎΠΊΠΈΡ€ΡƒΡŽΡ‰Π΅Π³ΠΎ) Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π°. НСмодальноС ΠΎΠΊΠ½ΠΎ дСйствуСт нСсколько ΠΈΠ½Π°Ρ‡Π΅, хотя ΠΈ создаСтся Ρ‚Π΅ΠΌ ΠΆΠ΅ способом. ВмСсто Π²Ρ‹Π·ΠΎΠ²Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ
gtk_dialog_run
Π²Ρ‹ связываСтС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π° с сигналом ΠΎΡ‚ΠΊΠ»ΠΈΠΊΠ° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°
GtkDialog
, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ гСнСрируСтся ΠΏΡ€ΠΈ Ρ‰Π΅Π»Ρ‡ΠΊΠ΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΌΡ‹ΡˆΡŒΡŽ ΠΈΠ»ΠΈ ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΎΠΊΠ½Π°.

БвязываниС сигнала ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π° выполняСтся ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ с Ρ‚ΠΎΠΉ лишь Ρ€Π°Π·Π½ΠΈΡ†Π΅ΠΉ, Ρ‡Ρ‚ΠΎ Ρƒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π° появляСтся Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ ΠΎΡ‚ΠΊΠ»ΠΈΠΊΠ°, ΠΈΠ³Ρ€Π°ΡŽΡ‰ΠΈΠΉ Ρ‚Ρƒ ΠΆΠ΅ Ρ€ΠΎΠ»ΡŒ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ΄ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

gtk_dialog_run
. Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π΄Π°Π»Π΅Π΅ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΏΠΎΠΊΠ°Π·Π°Π½Ρ‹ основныС ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ использования нСмодального Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π°:

void dialog_button_clicked(GtkWidget *dialog, gint response,

Β gpointer user_data) {

Β switch (response) {