/*
 * test-copy.c -- offer stuff in the clipboard
 *
 * Written by Michael Natterer <mitch@gimp.org>
 *
 * Use this code for whatever you like.
 */

#include <gtk/gtk.h>

static void
get_func (GtkClipboard     *clipboard,
          GtkSelectionData *selection,
          guint             info,
          gpointer          data)
{
  gchar *filename = data;
  gchar *buf;
  gsize  buf_size;

  if (! g_file_get_contents (filename, &buf, &buf_size, NULL))
    g_error ("g_file_get_contents");

  gtk_selection_data_set (selection, selection->target,
                          8, (guchar *) buf, buf_size);

  g_free (buf);

  gtk_main_quit ();
}

gint
main (gint   argc,
      gchar *argv[])
{
  GtkClipboard   *clipboard;
  GtkTargetEntry  target;

  if (argc < 3)
    {
      g_printerr ("Usage: %s <mimetype> <filename>\n", argv[0]);
      return -1;
    }

  target.target = argv[1];
  target.flags  = 0;
  target.info   = 1;

  gtk_init (&argc, &argv);

  clipboard = gtk_clipboard_get_for_display (gdk_display_get_default (),
                                             GDK_SELECTION_CLIPBOARD);

  if (! clipboard)
    g_error ("gtk_clipboard_get_for_display");

  if (! gtk_clipboard_set_with_data (clipboard, &target, 1,
                                     get_func, NULL,
                                     argv[2]))
    g_error ("gtk_clipboard_set_with_data");

  gtk_main ();

  return 0;
}
