+ g_object_unref (link);
+ }
+}
+
+static GtkTreeModel *
+create_loading_model (void)
+{
+ GtkTreeModel *retval;
+ GtkTreeIter iter;
+ gchar *markup;
+
+ /* Creates a fake model to indicate that we're loading */
+ retval = (GtkTreeModel *)gtk_list_store_new (EV_DOCUMENT_LINKS_COLUMN_NUM_COLUMNS,
+ G_TYPE_STRING,
+ G_TYPE_OBJECT,
+ G_TYPE_BOOLEAN);
+
+ gtk_list_store_append (GTK_LIST_STORE (retval), &iter);
+ markup = g_strdup_printf ("<span size=\"larger\" style=\"italic\">%s</span>", _("Loading..."));
+ gtk_list_store_set (GTK_LIST_STORE (retval), &iter,
+ EV_DOCUMENT_LINKS_COLUMN_MARKUP, markup,
+ EV_DOCUMENT_LINKS_COLUMN_EXPAND, FALSE,
+ EV_DOCUMENT_LINKS_COLUMN_LINK, NULL,
+ -1);
+ g_free (markup);
+
+ return retval;
+}
+
+static void
+print_section_cb (GtkWidget *menuitem, EvSidebarLinks *sidebar)
+{
+ GtkWidget *window;
+ GtkTreeSelection *selection;
+ GtkTreeModel *model;
+ GtkTreeIter iter;
+
+ selection = gtk_tree_view_get_selection
+ (GTK_TREE_VIEW (sidebar->priv->tree_view));
+
+ if (gtk_tree_selection_get_selected (selection, &model, &iter)) {
+ EvLink *link;
+ int first_page, last_page;
+
+ gtk_tree_model_get (model, &iter,
+ EV_DOCUMENT_LINKS_COLUMN_LINK, &link,
+ -1);
+ first_page = ev_link_get_page (link) + 1;
+
+ if (link)
+ g_object_unref (link);
+
+ if (gtk_tree_model_iter_next (model, &iter)) {
+ gtk_tree_model_get (model, &iter,
+ EV_DOCUMENT_LINKS_COLUMN_LINK, &link,
+ -1);
+ last_page = ev_link_get_page (link);
+
+ if (link)
+ g_object_unref (link);
+ } else {
+ last_page = ev_page_cache_get_n_pages (sidebar->priv->page_cache);
+ }
+
+ window = gtk_widget_get_toplevel (GTK_WIDGET (sidebar));
+ if (EV_IS_WINDOW (window)) {
+#ifdef WITH_GNOME_PRINT
+ ev_window_print_range (EV_WINDOW (window),
+ first_page, last_page);
+#endif