diff options
author | Marco 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) |
commit | c43d8117b5174476437718101d58117ad9191c84 (patch) | |
tree | 4cc70b597e14b8d6084e0f39711860f4c21a76fa /shell | |
parent | 63291b1562445867a2c7b113cccadc2dd63a2925 (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.c | 29 | ||||
-rw-r--r-- | shell/ev-application.h | 9 | ||||
-rw-r--r-- | shell/ev-sidebar-bookmarks.c | 7 |
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); } } |