ΠΠ°Π»Π΅Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊ Π±Ρ Π²Ρ ΡΠΎΠ·Π΄Π°Π²Π°Π»ΠΈ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ Ρ ΠΊΠ½ΠΎΠΏΠΊΠ°ΠΌΠΈ OK ΠΈ Cancel, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ
GTK_RESPONSE_ACCEPTGTK_RESPONSE_REJECTGtkWidget *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);ΠΡ ΠΎΡΡΠ°Π½ΠΎΠ²ΠΈΠ»ΠΈΡΡ Π½Π° Π΄Π²ΡΡ ΠΊΠ½ΠΎΠΏΠΊΠ°Ρ , Π½ΠΎ Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ Π½Π° ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΊΠ½ΠΎΠΏΠΎΠΊ Π² Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠΌ ΠΎΠΊΠ½Π΅ Π½Π΅Ρ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠΉ. ΠΠΎΠ»Π΅Π΅ ΡΠΎΠ³ΠΎ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΡΠ±ΠΈΡΠ°ΡΡ ΠΈΠ· ΡΡΠ΄Π° ΡΠ»Π°Π³ΠΎΠ² ΡΠΈΠΏΠ° ΠΎΡΠΊΠ»ΠΈΠΊΠ°. Π€Π»Π°Π³ΠΈ
acceptrejectacceptGtkResponseType enumΠΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ, Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ Π²ΡΡΠ°Π²ΠΈΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ Π² Π²Π°ΡΠ΅ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ ΠΈ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡ
GtkDialogGtkVBoxGtkWidget *vbox = GTK_DIALOG(dialog)->vbox;ΠΡΠΎΡ
GtkVBoxgtk_box_pack_startΠΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ ΠΊΠ°ΠΊ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΎ, ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠ°Π³ β ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΡΡ Π΅Π³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΈ ΠΆΠ΄Π°ΡΡ ΠΎΡ Π½Π΅Π³ΠΎ ΠΎΡΠ²Π΅ΡΠ°. Π‘Π΄Π΅Π»Π°ΡΡ ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π΄Π²ΡΠΌΡ ΡΠΏΠΎΡΠΎΠ±Π°ΠΌΠΈ: Π² ΠΌΠΎΠ΄Π°Π»ΡΠ½ΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅, ΠΊΠΎΡΠΎΡΡΠΉ Π±Π»ΠΎΠΊΠΈΡΡΠ΅Ρ Π²Π΅ΡΡ Π²Π²ΠΎΠ΄ Π·Π° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π°, ΠΈΠ»ΠΈ Π² Π½Π΅ΠΌΠΎΠ΄Π°Π»ΡΠ½ΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΠΎΡΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ ΠΊΠ°ΠΊ Π»ΡΠ±ΠΎΠ΅ Π΄ΡΡΠ³ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ. ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ½Π°ΡΠ°Π»Π° ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ Π·Π°ΠΏΡΡΠΊ ΠΌΠΎΠ΄Π°Π»ΡΠ½ΠΎΠ³ΠΎ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π°.
ΠΠΎΠ΄Π°Π»ΡΠ½ΠΎΠ΅ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ
ΠΠΎΠ΄Π°Π»ΡΠ½ΠΎΠ΅ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ Π·Π°ΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΎΡΠ²Π΅ΡΠΈΡΡ Π΄ΠΎ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΡΠΌΠΎΠΆΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡΡΡ Π»ΡΠ±ΠΎΠ΅ Π΄ΡΡΠ³ΠΎΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅. ΠΠ½ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π² ΡΠ΅Ρ ΡΠΈΡΡΠ°ΡΠΈΡΡ , ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΡΠΎΠ±ΠΈΡΠ°Π΅ΡΡΡ ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ-ΡΠΎ, ΡΠΎΠΏΡΡΠΆΠ΅Π½Π½ΠΎΠ΅ Ρ ΡΠ΅ΡΡΠ΅Π·Π½ΡΠΌΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΠ²ΠΈΡΠΌΠΈ, ΠΈΠ»ΠΈ Π½ΡΠΆΠ½ΠΎ Π²ΡΠ²Π΅ΡΡΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ°Ρ ΠΈ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡΡ .
ΠΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΠΌΠΎΠ΄Π°Π»ΡΠ½ΡΠΌ, ΡΡΡΠ°Π½ΠΎΠ²ΠΈΠ² ΡΠ»Π°Π³
GTK_DIALOG_MODALgtk_widget_showgtk_dialog_runΠΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π½Π°ΠΆΠΈΠΌΠ°Π΅Ρ ΠΊΠ½ΠΎΠΏΠΊΡ (ΠΈΠ»ΠΈ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ ΡΠ½ΠΈΡΡΠΎΠΆΠ°Π΅ΡΡΡ), ΡΡΠ½ΠΊΡΠΈΡ
gtk_dialog_runintenum<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_buttonsGtkResponseTypegtk_dialog_runGTK_RESPONSE_NONEΠΠ»Ρ Π²ΡΠ·ΠΎΠ²Π° ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ² ΠΈΠ΄Π΅Π°Π»ΡΠ½ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ
switchGtkWidget* 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_rungtk_dialog_runGtkDialogΠ‘Π²ΡΠ·ΡΠ²Π°Π½ΠΈΠ΅ ΡΠΈΠ³Π½Π°Π»Π° ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠ³ΠΎ Π²ΡΠ·ΠΎΠ²Π° Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΎΠ±ΡΡΠ½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ Ρ ΡΠΎΠΉ Π»ΠΈΡΡ ΡΠ°Π·Π½ΠΈΡΠ΅ΠΉ, ΡΡΠΎ Ρ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠ³ΠΎ Π²ΡΠ·ΠΎΠ²Π° ΠΏΠΎΡΠ²Π»ΡΠ΅ΡΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ ΠΎΡΠΊΠ»ΠΈΠΊΠ°, ΠΈΠ³ΡΠ°ΡΡΠΈΠΉ ΡΡ ΠΆΠ΅ ΡΠΎΠ»Ρ, ΡΡΠΎ ΠΊΠΎΠ΄ Π²ΠΎΠ·Π²ΡΠ°ΡΠ° ΡΡΠ½ΠΊΡΠΈΠΈ
gtk_dialog_runvoid dialog_button_clicked(GtkWidget *dialog, gint response,Β gpointer user_data) {Β switch (response) {