Я пишу приложение, которое использует GTK для создания GUI.
. В приведенном ниже примере кода функция run_gui
запускает приложение GTK.
Когда что-то идет неправильно в одном из обработчиков событий, я хотел бы закрыть приложение GTK, и я бы хотел run_gui
знать, что приложение закрылось из-за сбоя. Кажется, что естественный способ сделать это - заставить g_application_run
возвращать определенный код состояния по возвращении.
Я узнал, что подходящим способом закрыть приложение будет вызов g_quit_application
из обработчика события ( поправьте пожалуйста если не так). Тем не менее, я хотел бы знать, как я могу установить код состояния, возвращаемый из g_application_run
, чтобы run_gui
мог проверить его и действовать соответствующим образом.
Код для иллюстрации того, что я хочу сделать:
#include <gtk/gtk.h>
static void activate(GtkApplication* app, gpointer user_data) {
GtkWidget* window = gtk_application_window_new (app);
gtk_window_set_title(GTK_WINDOW(window), "Window");
gtk_window_set_default_size(GTK_WINDOW(window), 200, 200);
gtk_widget_show_all(window);
bool success = do_something();
if (!success) {
/* How do I set the exit status of the GTK app? */
g_application_quit(G_APPLICATION(app));
}
}
void run_gui(void) {
GtkApplication* app = gtk_application_new("my.app", G_APPLICATION_FLAGS_NONE);
g_signal_connect(app, "activate", G_CALLBACK(activate), NULL);
int status = g_application_run(G_APPLICATION(app), 0, NULL);
g_object_unref(app);
if (status == 0) {
/* Do something about success */
} else {
/* Do something about failure */
}
}