Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/shell
diff options
context:
space:
mode:
authorMarco Pesenti Gritti <marco@gnome.org>2005-01-07 13:35:18 (GMT)
committer Marco Pesenti Gritti <marco@src.gnome.org>2005-01-07 13:35:18 (GMT)
commitc43d8117b5174476437718101d58117ad9191c84 (patch)
tree4cc70b597e14b8d6084e0f39711860f4c21a76fa /shell
parent63291b1562445867a2c7b113cccadc2dd63a2925 (diff)
Add a way to open bookmarks
2005-01-07 Marco Pesenti Gritti <marco@gnome.org> * shell/ev-application.c: (ev_application_open), (ev_application_open_bookmark): * shell/ev-application.h: Add a way to open bookmarks * backend/ev-bookmark.c: (ev_bookmark_get_uri), (ev_bookmark_set_uri), (ev_bookmark_get_property), (ev_bookmark_set_property), (ev_bookmark_class_init), (ev_bookmark_new_title), (ev_bookmark_new_link), (ev_bookmark_new_external): Support for external uris, better constructors. * backend/ev-bookmark.h: * pdf/xpdf/pdf-document.cc: * shell/ev-sidebar-bookmarks.c: (selection_changed_cb): Handle external uris
Diffstat (limited to 'shell')
-rw-r--r--shell/ev-application.c29
-rw-r--r--shell/ev-application.h9
-rw-r--r--shell/ev-sidebar-bookmarks.c7
3 files changed, 40 insertions, 5 deletions
diff --git a/shell/ev-application.c b/shell/ev-application.c
index 4f006cc..6fe50aa 100644
--- a/shell/ev-application.c
+++ b/shell/ev-application.c
@@ -29,8 +29,9 @@
#include <gtk/gtkstock.h>
#include <gtk/gtkwidget.h>
#include <gtk/gtkmain.h>
+#include <libgnomevfs/gnome-vfs-utils.h>
-#include <ev-window.h>
+#include "ev-window.h"
struct _EvApplicationPrivate {
GList *windows;
@@ -168,6 +169,32 @@ ev_application_open (EvApplication *application, GError *err)
gtk_widget_destroy (GTK_WIDGET (chooser));
}
+void
+ev_application_open_bookmark (EvApplication *application,
+ EvDocument *document,
+ EvBookmark *bookmark,
+ GError *error)
+{
+ EvBookmarkType type;
+ const char *uri;
+ int page;
+
+ type = ev_bookmark_get_bookmark_type (bookmark);
+
+ switch (type) {
+ case EV_BOOKMARK_TYPE_TITLE:
+ break;
+ case EV_BOOKMARK_TYPE_LINK:
+ page = ev_bookmark_get_page (bookmark);
+ ev_document_set_page (document, page);
+ break;
+ case EV_BOOKMARK_TYPE_EXTERNAL_URI:
+ uri = ev_bookmark_get_uri (bookmark);
+ gnome_vfs_url_show (uri);
+ break;
+ }
+}
+
static void
ev_application_class_init (EvApplicationClass *ev_application_class)
{
diff --git a/shell/ev-application.h b/shell/ev-application.h
index b9f64c1..674d799 100644
--- a/shell/ev-application.h
+++ b/shell/ev-application.h
@@ -27,6 +27,8 @@
#include <glib-object.h>
#include "ev-window.h"
+#include "ev-document.h"
+#include "ev-bookmark.h"
G_BEGIN_DECLS
@@ -54,8 +56,13 @@ struct _EvApplicationClass {
GType ev_application_get_type (void);
EvApplication *ev_application_get_instance (void);
-void ev_application_open (EvApplication *application, GError *err);
+void ev_application_open (EvApplication *application,
+ GError *err);
EvWindow *ev_application_new_window (EvApplication *application);
+void ev_application_open_bookmark (EvApplication *application,
+ EvDocument *document,
+ EvBookmark *bookmark,
+ GError *err);
G_END_DECLS
diff --git a/shell/ev-sidebar-bookmarks.c b/shell/ev-sidebar-bookmarks.c
index 29851b9..e54e4a5 100644
--- a/shell/ev-sidebar-bookmarks.c
+++ b/shell/ev-sidebar-bookmarks.c
@@ -29,6 +29,7 @@
#include "ev-sidebar-bookmarks.h"
#include "ev-document-bookmarks.h"
+#include "ev-application.h"
/* Amount of time we devote to each iteration of the idle, in microseconds */
#define IDLE_WORK_LENGTH 5000
@@ -104,8 +105,8 @@ selection_changed_cb (GtkTreeSelection *selection,
if (gtk_tree_selection_get_selected (selection, &model, &iter)) {
EvBookmark *bookmark;
+ EvApplication *app;
GValue value = {0, };
- int page;
gtk_tree_model_get_value (model, &iter,
BOOKMARKS_COLUMN_BOOKMARK, &value);
@@ -113,8 +114,8 @@ selection_changed_cb (GtkTreeSelection *selection,
bookmark = EV_BOOKMARK (g_value_get_object (&value));
g_return_if_fail (bookmark != NULL);
- page = ev_bookmark_get_page (bookmark);
- ev_document_set_page (document, page);
+ app = ev_application_get_instance ();
+ ev_application_open_bookmark (app, document, bookmark, NULL);
}
}