Add testfilelauncher
authorMatthias Clasen <mclasen@redhat.com>
Sun, 14 May 2023 18:11:12 +0000 (14:11 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Mon, 15 May 2023 04:20:24 +0000 (00:20 -0400)
This is a test to use GtkFileLauncher a bit
more intensively than usual.

tests/meson.build
tests/testfilelauncher.c [new file with mode: 0644]

index c2d08c26de4f79f0d48d738e457b8ce998f63610..c9c6e6a4cd9d14767ff08bfe784c0093d0d4ae1c 100644 (file)
@@ -1,5 +1,6 @@
 gtk_tests = [
   # testname, optional extra sources
+  ['testfilelauncher'],
   ['input'],
   ['testpopup'],
   ['testupload'],
diff --git a/tests/testfilelauncher.c b/tests/testfilelauncher.c
new file mode 100644 (file)
index 0000000..3a44037
--- /dev/null
@@ -0,0 +1,47 @@
+#include <gtk/gtk.h>
+
+static void
+launched_cb (GObject *source,
+             GAsyncResult *result,
+             gpointer data)
+{
+  GtkFileLauncher *launcher = GTK_FILE_LAUNCHER (source);
+  GError *error = NULL;
+
+  if (!gtk_file_launcher_launch_finish (launcher, result, &error))
+    {
+      g_print ("Launching failed: %s\n", error->message);
+      g_error_free (error);
+    }
+}
+
+int
+main (int argc, char *argv[])
+{
+  GtkWidget *window;
+  GtkFileLauncher *launcher;
+
+  gtk_init ();
+
+  window = gtk_window_new ();
+
+  launcher = gtk_file_launcher_new (NULL);
+
+  gtk_window_present (GTK_WINDOW (window));
+
+  for (int i = 1; i < argc; i++)
+    {
+      GFile *file = g_file_new_for_commandline_arg (argv[i]);
+
+      g_print ("launching %s\n", argv[i]);
+
+      gtk_file_launcher_set_file (launcher, file);
+      gtk_file_launcher_launch (launcher, GTK_WINDOW (window), NULL, launched_cb, NULL);
+      g_object_unref (file);
+    }
+
+  while (g_list_model_get_n_items (gtk_window_get_toplevels ()) > 0)
+    g_main_context_iteration (NULL, FALSE);
+
+  return 0;
+}