diff options
Diffstat (limited to 'test/previewer-plug.c')
-rw-r--r-- | test/previewer-plug.c | 92 |
1 files changed, 92 insertions, 0 deletions
diff --git a/test/previewer-plug.c b/test/previewer-plug.c new file mode 100644 index 0000000..239a611 --- /dev/null +++ b/test/previewer-plug.c @@ -0,0 +1,92 @@ +/* + * Copyright (C) 2011, 2012 Dan Nicholson <dbn.lists@gmail.com> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + * 02110-1301 USA. + */ + +#include <config.h> +#include <stdlib.h> +#include <gtk/gtk.h> +#if GTK_MAJOR_VERSION > 2 +#include <gtk/gtkx.h> +#endif +#include <gdk/gdkx.h> +#include "evbp-viewer.h" + +static inline void +no_debug(const gchar *domain, GLogLevelFlags level, + const gchar *message, gpointer data) +{ +} + +int +main(int argc, char *argv[]) +{ + Window win; + GFile *file; + gchar *uri; + GtkWidget *plug; + GtkWidget *box, *button; + GtkWidget *viewer; + GError *error = NULL; + + gtk_init(&argc, &argv); + + if (!getenv("EVBP_DEBUG")) + g_log_set_handler(G_LOG_DOMAIN, G_LOG_LEVEL_DEBUG, no_debug, NULL); + + if (argc < 3) { + g_printerr("No socket ID or filename supplied\n"); + exit(EXIT_FAILURE); + } + win = (Window)strtoul(argv[1], NULL, 10); + g_debug("Received socket window ID %lu\n", (unsigned long)win); + file = g_file_new_for_commandline_arg(argv[2]); + uri = g_file_get_uri(file); + g_object_unref(file); + + if (!ev_init()) { + g_printerr("No evince backends found\n"); + exit(EXIT_FAILURE); + } + ev_stock_icons_init(); + + /* create a plug and add our widget with a quit button */ + plug = gtk_plug_new(win); + box = gtk_vbox_new(FALSE, 10); + gtk_container_add(GTK_CONTAINER(plug), box); + button = gtk_button_new_with_label("Quit"); + g_signal_connect(button, "clicked", G_CALLBACK(gtk_main_quit), NULL); + gtk_box_pack_end(GTK_BOX(box), button, FALSE, FALSE, 0); + viewer = evbp_viewer_new(); + gtk_box_pack_start(GTK_BOX(box), viewer, TRUE, TRUE, 0); + gtk_widget_show_all(plug); + + /* load the file */ + if (!evbp_viewer_load_uri(EVBP_VIEWER(viewer), uri, &error)) { + g_printerr("could not open '%s': %s\n", uri, error->message); + g_error_free(error); + exit(EXIT_FAILURE); + } + g_free(uri); + + gtk_main(); + + ev_shutdown(); + ev_stock_icons_shutdown(); + + return 0; +} |