+static const gchar popup_menu_ui[] =
+ "<popup name=\"BookmarksPopup\" action=\"BookmarksPopupAction\">\n"
+ " <menuitem name=\"OpenBookmark\" action=\"OpenBookmark\"/>\n"
+ " <separator/>\n"
+ " <menuitem name=\"RenameBookmark\" action=\"RenameBookmark\"/>\n"
+ " <menuitem name=\"RemoveBookmark\" action=\"RemoveBookmark\"/>\n"
+ "</popup>\n";
+
+static gint
+ev_sidebar_bookmarks_get_selected_page (EvSidebarBookmarks *sidebar_bookmarks,
+ GtkTreeSelection *selection)
+{
+ GtkTreeModel *model;
+ GtkTreeIter iter;
+
+ if (gtk_tree_selection_get_selected (selection, &model, &iter)) {
+ guint page;
+
+ gtk_tree_model_get (model, &iter,
+ COLUMN_PAGE, &page,
+ -1);
+ return page;
+ }
+
+ return -1;
+}
+
+static void
+ev_bookmarks_popup_cmd_open_bookmark (GtkAction *action,
+ EvSidebarBookmarks *sidebar_bookmarks)
+{
+ EvSidebarBookmarksPrivate *priv = sidebar_bookmarks->priv;
+ GtkTreeSelection *selection;
+ gint page;
+
+ selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (priv->tree_view));
+ page = ev_sidebar_bookmarks_get_selected_page (sidebar_bookmarks, selection);
+ ev_document_model_set_page (priv->model, page);
+}
+
+static void
+ev_bookmarks_popup_cmd_rename_bookmark (GtkAction *action,
+ EvSidebarBookmarks *sidebar_bookmarks)
+{
+ EvSidebarBookmarksPrivate *priv = sidebar_bookmarks->priv;
+ GtkTreeView *tree_view = GTK_TREE_VIEW (priv->tree_view);
+ GtkTreeSelection *selection;
+ GtkTreeModel *model;
+ GtkTreeIter iter;
+
+
+ selection = gtk_tree_view_get_selection (tree_view);
+ if (gtk_tree_selection_get_selected (selection, &model, &iter)) {
+ GtkTreePath *path;
+
+ path = gtk_tree_model_get_path (model, &iter);
+ gtk_tree_view_set_cursor (tree_view, path,
+ gtk_tree_view_get_column (tree_view, 0),
+ TRUE);
+ gtk_tree_path_free (path);
+ }
+}
+
+static void
+ev_bookmarks_popup_cmd_remove_bookmark (GtkAction *action,
+ EvSidebarBookmarks *sidebar_bookmarks)
+{
+ EvSidebarBookmarksPrivate *priv = sidebar_bookmarks->priv;
+ GtkTreeSelection *selection;
+ gint page;
+ EvBookmark bm;
+
+ selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (priv->tree_view));
+ page = ev_sidebar_bookmarks_get_selected_page (sidebar_bookmarks, selection);
+ bm.page = page;
+ bm.title = NULL;
+ ev_bookmarks_delete (priv->bookmarks, &bm);
+}
+
+static const GtkActionEntry popup_entries[] = {
+ { "OpenBookmark", GTK_STOCK_OPEN, N_("_Open Bookmark"), NULL,
+ NULL, G_CALLBACK (ev_bookmarks_popup_cmd_open_bookmark) },
+ { "RenameBookmark", NULL, N_("_Rename Bookmark"), NULL,
+ NULL, G_CALLBACK (ev_bookmarks_popup_cmd_rename_bookmark) },
+ { "RemoveBookmark", NULL, N_("_Remove Bookmark"), NULL,
+ NULL, G_CALLBACK (ev_bookmarks_popup_cmd_remove_bookmark) }
+};
+