summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristopher Davis <christopherdavis@gnome.org>2022-12-22 17:40:29 -0600
committerChristopher Davis <christopherdavis@gnome.org>2023-01-04 18:19:00 -0500
commitb8cb578cc2beab91b8d599d34bea577ab1ab9d28 (patch)
tree3eed39462d30c3e3491e8541e3e1a87bcaada259
parentbed12335ed041317e9383e3512fb6f4da22ddaeb (diff)
downloadgnome-logs-b8cb578cc2beab91b8d599d34bea577ab1ab9d28.tar.gz
window: Use GtkFileDialog instead of GtkFileChooser*
The GtkFileChooser APIs are deprecated in favor of the new GtkFileDialog API.
-rw-r--r--meson.build2
-rw-r--r--src/gl-window.c145
2 files changed, 76 insertions, 71 deletions
diff --git a/meson.build b/meson.build
index 26c6754..e10377c 100644
--- a/meson.build
+++ b/meson.build
@@ -61,7 +61,7 @@ endif
gl_deps = [
dependency('gio-unix-2.0', version : '>=2.43.90'),
- dependency('gtk4', version : '>=4.6.0'),
+ dependency('gtk4', version : '>=4.9.0'),
dependency('libadwaita-1', version : '>=1.2.alpha'),
dependency('libsystemd')
]
diff --git a/src/gl-window.c b/src/gl-window.c
index 3c439cb..021248c 100644
--- a/src/gl-window.c
+++ b/src/gl-window.c
@@ -105,83 +105,91 @@ on_error_dialog_response (GtkDialog *dialog,
}
static void
-on_dialog_response (GtkNativeDialog *dialog,
- gint res,
- gpointer *user_data)
+on_save_finish (GObject *source_object,
+ GAsyncResult *res,
+ gpointer user_data)
{
GlWindowPrivate *priv;
GlEventViewList *event_list;
+ GtkFileDialog *dialog;
+ gboolean have_error = FALSE;
+ gchar *file_content;
+ GFile *output_file;
+ GFileOutputStream *file_ostream;
+ GError *error = NULL;
+ GtkWidget *error_dialog;
priv = gl_window_get_instance_private (GL_WINDOW (user_data));
event_list = GL_EVENT_VIEW_LIST (priv->event_list);
+ dialog = GTK_FILE_DIALOG (source_object);
+
+ output_file = gtk_file_dialog_save_finish (dialog, res, &error);
- if (res == GTK_RESPONSE_ACCEPT)
+ if (error != NULL)
{
- gboolean have_error = FALSE;
- gchar *file_content;
- GFile *output_file;
- GFileOutputStream *file_ostream;
- GError *error = NULL;
- GtkWidget *error_dialog;
-
- file_content = gl_event_view_list_get_output_logs (event_list);
- output_file = gtk_file_chooser_get_file (GTK_FILE_CHOOSER (dialog));
- file_ostream = g_file_replace (output_file, NULL, TRUE,
- G_FILE_CREATE_NONE, NULL, &error);
- if (error != NULL)
- {
- have_error = TRUE;
+ have_error = TRUE;
+ g_warning ("Error while replacing exported log messages file: %s",
+ error->message);
- g_warning ("Error while replacing exported log messages file: %s",
- error->message);
- g_clear_error (&error);
- }
+ g_clear_error (&error);
+ g_object_unref (output_file);
+ return;
+ }
- /* Check against NULL pointer to avoid a crash when exporting and there
- * are no log entries. */
- if (file_content != NULL)
- {
- g_output_stream_write (G_OUTPUT_STREAM (file_ostream), file_content,
- strlen (file_content), NULL, &error);
- }
+ file_content = gl_event_view_list_get_output_logs (event_list);
+ file_ostream = g_file_replace (output_file, NULL, TRUE,
+ G_FILE_CREATE_NONE, NULL, &error);
+ if (error != NULL)
+ {
+ have_error = TRUE;
- if (error != NULL)
- {
- have_error = TRUE;
+ g_warning ("Error while replacing exported log messages file: %s",
+ error->message);
+ g_clear_error (&error);
+ }
- g_warning ("Error while replacing exported log messages file: %s",
- error->message);
- g_clear_error (&error);
- }
+ /* Check against NULL pointer to avoid a crash when exporting and there
+ * are no log entries. */
+ if (file_content != NULL)
+ {
+ g_output_stream_write (G_OUTPUT_STREAM (file_ostream), file_content,
+ strlen (file_content), NULL, &error);
+ }
- g_output_stream_close (G_OUTPUT_STREAM (file_ostream), NULL, &error);
- if (error != NULL)
- {
- have_error = TRUE;
+ if (error != NULL)
+ {
+ have_error = TRUE;
- g_warning ("Error while replacing exported log messages file: %s",
- error->message);
- g_clear_error (&error);
- }
+ g_warning ("Error while replacing exported log messages file: %s",
+ error->message);
+ g_clear_error (&error);
+ }
- if (have_error == TRUE)
- {
- error_dialog = gtk_message_dialog_new (GTK_WINDOW (user_data),
- GTK_DIALOG_MODAL,
- GTK_MESSAGE_ERROR,
- GTK_BUTTONS_CLOSE,
- "%s",
- _("Unable to export log messages to a file"));
- g_signal_connect (error_dialog, "response", G_CALLBACK (on_error_dialog_response), NULL);
- gtk_window_present (GTK_WINDOW (error_dialog));
- }
+ g_output_stream_close (G_OUTPUT_STREAM (file_ostream), NULL, &error);
+ if (error != NULL)
+ {
+ have_error = TRUE;
- g_free (file_content);
- g_object_unref (file_ostream);
- g_object_unref (output_file);
+ g_warning ("Error while replacing exported log messages file: %s",
+ error->message);
+ g_clear_error (&error);
+ }
+
+ if (have_error == TRUE)
+ {
+ error_dialog = gtk_message_dialog_new (GTK_WINDOW (user_data),
+ GTK_DIALOG_MODAL,
+ GTK_MESSAGE_ERROR,
+ GTK_BUTTONS_CLOSE,
+ "%s",
+ _("Unable to export log messages to a file"));
+ g_signal_connect (error_dialog, "response", G_CALLBACK (on_error_dialog_response), NULL);
+ gtk_window_present (GTK_WINDOW (error_dialog));
}
- g_object_unref (dialog);
+ g_free (file_content);
+ g_object_unref (file_ostream);
+ g_object_unref (output_file);
}
static void
@@ -189,20 +197,17 @@ on_export (GSimpleAction *action,
GVariant *variant,
gpointer user_data)
{
- GtkFileChooser *file_chooser;
- GtkFileChooserNative *dialog;
+ GtkFileDialog *dialog;
- dialog = gtk_file_chooser_native_new (_("Save logs"),
- GTK_WINDOW (user_data),
- GTK_FILE_CHOOSER_ACTION_SAVE,
- _("_Save"),
- _("_Cancel"));
+ dialog = gtk_file_dialog_new ();
- file_chooser = GTK_FILE_CHOOSER (dialog);
- gtk_file_chooser_set_current_name (file_chooser, _("log messages"));
+ gtk_file_dialog_set_initial_name (dialog, _("log messages"));
- g_signal_connect (dialog, "response", (GCallback) on_dialog_response, user_data);
- gtk_native_dialog_show (GTK_NATIVE_DIALOG (dialog));
+ gtk_file_dialog_save (dialog,
+ GTK_WINDOW (user_data),
+ NULL,
+ on_save_finish,
+ user_data);
}
static void