gint main (gint argc, gchar **argv) { PopplerDocument *document; GtkWidget *win; GtkWidget *hbox; GtkWidget *notebook; GtkWidget *treeview; GtkTreeSelection *selection; GFile *file; gchar *uri; GTimer *timer; GError *error = NULL; if (argc != 2) { g_print ("Usage: poppler-glib-demo FILE\n"); return 1; } /* Threading is always enabled starting from GLib 2.24.0 */ #if !GLIB_CHECK_VERSION (2, 24, 0) if (!g_thread_supported ()) g_thread_init (NULL); #endif gtk_init (&argc, &argv); file = g_file_new_for_commandline_arg (argv[1]); uri = g_file_get_uri (file); timer = g_timer_new (); document = poppler_document_new_from_file (uri, NULL, &error); g_timer_stop (timer); if (error) { while (g_error_matches (error, POPPLER_ERROR, POPPLER_ERROR_ENCRYPTED)) { GtkDialog *dialog; const gchar *password; dialog = pgd_demo_get_auth_dialog (file); if (gtk_dialog_run (dialog) != GTK_RESPONSE_OK) { g_print ("Error: no password provided\n"); g_object_unref (file); g_free (uri); return 1; } g_clear_error (&error); password = g_object_get_data (G_OBJECT (dialog), "pgd-password"); g_timer_start (timer); document = poppler_document_new_from_file (uri, password, &error); g_timer_stop (timer); gtk_widget_destroy (GTK_WIDGET (dialog)); } if (error) { g_print ("Error: %s\n", error->message); g_error_free (error); g_object_unref (file); g_free (uri); return 1; } } g_object_unref (file); g_free (uri); g_print ("Document successfully loaded in %.4f seconds\n", g_timer_elapsed (timer, NULL)); g_timer_destroy (timer); /* Main window */ win = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_default_size (GTK_WINDOW (win), 600, 600); gtk_window_set_title (GTK_WINDOW (win), "Poppler GLib Demo"); g_signal_connect (G_OBJECT (win), "delete-event", G_CALLBACK (gtk_main_quit), NULL); hbox = gtk_hbox_new (FALSE, 6); treeview = pgd_demo_list_create (); gtk_box_pack_start (GTK_BOX (hbox), treeview, FALSE, TRUE, 0); gtk_widget_show (treeview); notebook = pdg_demo_notebook_create (document); gtk_box_pack_start (GTK_BOX (hbox), notebook, TRUE, TRUE, 0); gtk_widget_show (notebook); selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (treeview)); g_signal_connect (G_OBJECT (selection), "changed", G_CALLBACK (pgd_demo_changed), (gpointer) notebook); gtk_container_add (GTK_CONTAINER (win), hbox); gtk_widget_show (hbox); gtk_widget_show (win); gtk_main (); g_object_unref (document); return 0; }
gint main (gint argc, gchar **argv) { PopplerDocument *document; GtkWidget *win; GtkWidget *hbox; GtkWidget *notebook; GtkWidget *treeview; GtkTreeSelection *selection; gchar *uri; GTimer *timer; GError *error = NULL; if (argc != 2) { g_print ("Usage: poppler-glib-demo FILE\n"); return 1; } if (!g_thread_supported ()) g_thread_init (NULL); gtk_init (&argc, &argv); if (g_ascii_strncasecmp (argv[1], "file://", strlen ("file://")) == 0) { uri = g_strdup (argv[1]); } else { uri = g_filename_to_uri (argv[1], NULL, &error); if (error) { g_print ("Error: %s\n", error->message); g_error_free (error); return 1; } } timer = g_timer_new (); document = poppler_document_new_from_file (uri, NULL, &error); g_timer_stop (timer); if (error) { g_print ("Error: %s\n", error->message); g_error_free (error); g_free (uri); return 1; } g_free (uri); g_print ("Document successfully loaded in %.4f seconds\n", g_timer_elapsed (timer, NULL)); g_timer_destroy (timer); /* Main window */ win = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_default_size (GTK_WINDOW (win), 600, 600); gtk_window_set_title (GTK_WINDOW (win), "Poppler GLib Demo"); g_signal_connect (G_OBJECT (win), "delete-event", G_CALLBACK (gtk_main_quit), NULL); hbox = gtk_hbox_new (FALSE, 6); treeview = pgd_demo_list_create (); gtk_box_pack_start (GTK_BOX (hbox), treeview, FALSE, TRUE, 0); gtk_widget_show (treeview); notebook = pdg_demo_notebook_create (document); gtk_box_pack_start (GTK_BOX (hbox), notebook, TRUE, TRUE, 0); gtk_widget_show (notebook); selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (treeview)); g_signal_connect (G_OBJECT (selection), "changed", G_CALLBACK (pgd_demo_changed), (gpointer) notebook); gtk_container_add (GTK_CONTAINER (win), hbox); gtk_widget_show (hbox); gtk_widget_show (win); gtk_main (); g_object_unref (document); return 0; }
gint main (gint argc, gchar **argv) { PopplerDocument *document; GtkWidget *win; GtkWidget *hbox; GtkWidget *notebook; GtkWidget *treeview; GtkTreeSelection *selection; GFile *file; GTimer *timer; GError *error = NULL; GtkAccelGroup *gtk_accel; GClosure *closure; if (argc != 2) { g_print ("Usage: poppler-glib-demo FILE\n"); return 1; } gtk_init (&argc, &argv); file = g_file_new_for_commandline_arg (argv[1]); timer = g_timer_new (); document = poppler_document_new_from_gfile (file, NULL, NULL, &error); g_timer_stop (timer); if (error) { while (g_error_matches (error, POPPLER_ERROR, POPPLER_ERROR_ENCRYPTED)) { GtkDialog *dialog; const gchar *password; dialog = pgd_demo_get_auth_dialog (file); if (gtk_dialog_run (dialog) != GTK_RESPONSE_OK) { g_print ("Error: no password provided\n"); g_object_unref (file); return 1; } g_clear_error (&error); password = g_object_get_data (G_OBJECT (dialog), "pgd-password"); g_timer_start (timer); document = poppler_document_new_from_gfile (file, password, NULL, &error); g_timer_stop (timer); gtk_widget_destroy (GTK_WIDGET (dialog)); } if (error) { g_print ("Error: %s\n", error->message); g_error_free (error); g_object_unref (file); return 1; } } g_object_unref (file); g_print ("Document successfully loaded in %.4f seconds\n", g_timer_elapsed (timer, NULL)); g_timer_destroy (timer); /* Main window */ win = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_default_size (GTK_WINDOW (win), 600, 600); gtk_window_set_title (GTK_WINDOW (win), "Poppler GLib Demo"); g_signal_connect (G_OBJECT (win), "delete-event", G_CALLBACK (gtk_main_quit), NULL); gtk_accel = gtk_accel_group_new (); closure = g_cclosure_new (G_CALLBACK (gtk_main_quit), NULL, NULL); gtk_accel_group_connect (gtk_accel, gdk_keyval_from_name ("q"), GDK_CONTROL_MASK, 0, closure); g_closure_unref (closure); gtk_window_add_accel_group (GTK_WINDOW(win), gtk_accel); hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6); treeview = pgd_demo_list_create (); gtk_box_pack_start (GTK_BOX (hbox), treeview, FALSE, TRUE, 0); gtk_widget_show (treeview); notebook = pdg_demo_notebook_create (document); gtk_box_pack_start (GTK_BOX (hbox), notebook, TRUE, TRUE, 0); gtk_widget_show (notebook); selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (treeview)); g_signal_connect (G_OBJECT (selection), "changed", G_CALLBACK (pgd_demo_changed), (gpointer) notebook); gtk_container_add (GTK_CONTAINER (win), hbox); gtk_widget_show (hbox); gtk_widget_show (win); gtk_main (); g_object_unref (document); return 0; }