diff options
Diffstat (limited to 'tests/simple.c')
-rw-r--r-- | tests/simple.c | 67 |
1 files changed, 61 insertions, 6 deletions
diff --git a/tests/simple.c b/tests/simple.c index 63ae18f2f6..17991b3465 100644 --- a/tests/simple.c +++ b/tests/simple.c @@ -20,15 +20,59 @@ void -hello (void) +copy (void) { - g_print ("hello world\n"); + GdkClipboard *clipboard = gdk_display_get_clipboard (gdk_display_get_default ()); + GFile *file = g_file_new_for_path ("/home/mclasen/faw-sig"); + + gdk_clipboard_set (clipboard, G_TYPE_FILE, file); + + g_object_unref (file); +} + +static void +value_received (GObject *object, + GAsyncResult *result, + gpointer data) +{ + const GValue *value; + GError *error = NULL; + GSList *l; + + value = gdk_clipboard_read_value_finish (GDK_CLIPBOARD (object), result, &error); + if (value == NULL) + { + g_print ("Failed to read: %s\n", error->message); + g_error_free (error); + return; + } + + for (l = g_value_get_boxed (value); l; l = l->next) + g_print ("%s\n", g_file_get_path (l->data)); +} + +void +paste (void) +{ + GdkClipboard *clipboard = gdk_display_get_clipboard (gdk_display_get_default ()); + + gdk_clipboard_read_value_async (clipboard, GDK_TYPE_FILE_LIST, 0, NULL, value_received, NULL); + +} + +static void +clipboard_changed (GdkClipboard *clipboard) +{ + GdkContentFormats *formats = gdk_clipboard_get_formats (clipboard); + g_autofree char *s = gdk_content_formats_to_string (formats); + g_print ("clipboard contents now: %s, local: %d\n", s, gdk_clipboard_is_local (clipboard)); } int main (int argc, char *argv[]) { - GtkWidget *window, *button; + GtkWidget *window, *button, *box; + GdkClipboard *clipboard; gtk_init (); @@ -37,11 +81,22 @@ main (int argc, char *argv[]) gtk_window_set_resizable (GTK_WINDOW (window), FALSE); g_signal_connect (window, "destroy", G_CALLBACK (gtk_main_quit), NULL); + box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0); + button = gtk_button_new (); - gtk_button_set_label (GTK_BUTTON (button), "hello world"); - g_signal_connect (button, "clicked", G_CALLBACK (hello), NULL); + gtk_button_set_label (GTK_BUTTON (button), "copy"); + g_signal_connect (button, "clicked", G_CALLBACK (copy), NULL); + gtk_container_add (GTK_CONTAINER (box), button); + + button = gtk_button_new (); + gtk_button_set_label (GTK_BUTTON (button), "paste"); + g_signal_connect (button, "clicked", G_CALLBACK (paste), NULL); + gtk_container_add (GTK_CONTAINER (box), button); + + gtk_container_add (GTK_CONTAINER (window), box); - gtk_container_add (GTK_CONTAINER (window), button); + clipboard = gdk_display_get_clipboard (gdk_display_get_default ()); + g_signal_connect (clipboard, "changed", G_CALLBACK (clipboard_changed), NULL); gtk_widget_show (window); |