diff --git a/src/ag-app.c b/src/ag-app.c index e40e567..6ef26e9 100644 --- a/src/ag-app.c +++ b/src/ag-app.c @@ -342,3 +342,19 @@ ag_app_class_init(AgAppClass *klass) application_class->open = ag_app_open; } +void +ag_app_message_dialog(GtkWidget *window, GtkMessageType message_type, gchar *fmt, ...) +{ + gchar *msg; + va_list args; + GtkWidget *dialog; + + va_start(args, fmt); + msg = g_strdup_vprintf(fmt, args); + va_end(args); + + dialog = gtk_message_dialog_new(GTK_WINDOW(window), GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT, message_type, GTK_BUTTONS_OK, "%s", msg); + g_free(msg); + gtk_dialog_run(GTK_DIALOG(dialog)); + gtk_widget_destroy(dialog); +} diff --git a/src/ag-app.h b/src/ag-app.h index c5f363d..945f49b 100644 --- a/src/ag-app.h +++ b/src/ag-app.h @@ -37,6 +37,7 @@ void ag_app_raise(AgApp *self); void ag_app_run_action(AgApp *app, gboolean is_remote, const AstrognomeOptions *options); +void ag_app_message_dialog(GtkWidget *window, GtkMessageType message_type, gchar *fmt, ...); G_END_DECLS diff --git a/src/ag-window.c b/src/ag-window.c index a240e05..5231d4a 100644 --- a/src/ag-window.c +++ b/src/ag-window.c @@ -165,7 +165,9 @@ ag_window_save_action(GSimpleAction *action, GVariant *parameter, gpointer user_ ag_window_save_as(window, &err); } - // TODO: Check err! + if (err) { + ag_app_message_dialog(GTK_WIDGET(window), GTK_MESSAGE_ERROR, "%s", err->message); + } } static void @@ -177,7 +179,9 @@ ag_window_save_as_action(GSimpleAction *action, GVariant *parameter, gpointer us recalculate_chart(window); ag_window_save_as(window, &err); - // TODO: Check err! + if (err) { + ag_app_message_dialog(GTK_WIDGET(window), GTK_MESSAGE_ERROR, "%s", err->message); + } } static void @@ -253,7 +257,9 @@ ag_window_export_svg_action(GSimpleAction *action, GVariant *parameter, gpointer ag_window_export_svg(window, &err); - // TODO: Check err! + if (err) { + ag_app_message_dialog(GTK_WIDGET(window), GTK_MESSAGE_ERROR, "%s", err->message); + } } const gchar *