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 /backend | |
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 'backend')
-rw-r--r-- | backend/ev-bookmark.c | 66 | ||||
-rw-r--r-- | backend/ev-bookmark.h | 9 |
2 files changed, 68 insertions, 7 deletions
diff --git a/backend/ev-bookmark.c b/backend/ev-bookmark.c index f28c32b..f2d9f23 100644 --- a/backend/ev-bookmark.c +++ b/backend/ev-bookmark.c @@ -28,11 +28,13 @@ enum { PROP_0, PROP_TITLE, PROP_TYPE, - PROP_PAGE + PROP_PAGE, + PROP_URI }; struct _EvBookmarkPrivate { char *title; + char *uri; EvBookmarkType type; int page; }; @@ -86,6 +88,29 @@ ev_bookmark_set_title (EvBookmark* self, const char *title) g_object_notify (G_OBJECT (self), "title"); } +const char * +ev_bookmark_get_uri (EvBookmark *self) +{ + g_return_val_if_fail (EV_IS_BOOKMARK (self), NULL); + + return self->priv->uri; +} + +void +ev_bookmark_set_uri (EvBookmark* self, const char *uri) +{ + g_assert (EV_IS_BOOKMARK (self)); + g_assert (uri != NULL); + + if (self->priv->uri != NULL) { + g_free (self->priv->uri); + } + + self->priv->uri = g_strdup (uri); + + g_object_notify (G_OBJECT (self), "uri"); +} + EvBookmarkType ev_bookmark_get_bookmark_type (EvBookmark *self) { @@ -134,6 +159,9 @@ ev_bookmark_get_property (GObject *object, guint prop_id, GValue *value, case PROP_TITLE: g_value_set_string (value, self->priv->title); break; + case PROP_URI: + g_value_set_string (value, self->priv->uri); + break; case PROP_TYPE: g_value_set_enum (value, self->priv->type); break; @@ -160,6 +188,9 @@ ev_bookmark_set_property (GObject *object, guint prop_id, const GValue *value, case PROP_TITLE: ev_bookmark_set_title (self, g_value_get_string (value)); break; + case PROP_URI: + ev_bookmark_set_uri (self, g_value_get_string (value)); + break; case PROP_TYPE: ev_bookmark_set_bookmark_type (self, g_value_get_enum (value)); break; @@ -222,6 +253,14 @@ ev_bookmark_class_init (EvBookmarkClass *ev_window_class) G_PARAM_READWRITE)); g_object_class_install_property (g_object_class, + PROP_URI, + g_param_spec_string ("uri", + "Bookmark URI", + "The bookmark URI", + NULL, + G_PARAM_READWRITE)); + + g_object_class_install_property (g_object_class, PROP_TYPE, g_param_spec_enum ("type", "Bookmark Type", @@ -242,13 +281,30 @@ ev_bookmark_class_init (EvBookmarkClass *ev_window_class) } EvBookmark * -ev_bookmark_new (const char *title, - EvBookmarkType type, - int page) +ev_bookmark_new_title (const char *title) +{ + return EV_BOOKMARK (g_object_new (EV_TYPE_BOOKMARK, + "title", title, + "type", EV_BOOKMARK_TYPE_TITLE, + NULL)); +} + +EvBookmark * +ev_bookmark_new_link (const char *title, int page) { return EV_BOOKMARK (g_object_new (EV_TYPE_BOOKMARK, "title", title, "page", page, - "type", type, + "type", EV_BOOKMARK_TYPE_LINK, + NULL)); +} + +EvBookmark * +ev_bookmark_new_external (const char *title, const char *uri) +{ + return EV_BOOKMARK (g_object_new (EV_TYPE_BOOKMARK, + "title", title, + "uri", uri, + "type", EV_BOOKMARK_TYPE_EXTERNAL_URI, NULL)); } diff --git a/backend/ev-bookmark.h b/backend/ev-bookmark.h index 6b68838..654ee94 100644 --- a/backend/ev-bookmark.h +++ b/backend/ev-bookmark.h @@ -56,12 +56,17 @@ struct _EvBookmarkClass { GType ev_bookmark_type_get_type (void); GType ev_bookmark_get_type (void); -EvBookmark *ev_bookmark_new (const char *title, - EvBookmarkType type, +EvBookmark *ev_bookmark_new_title (const char *title); +EvBookmark *ev_bookmark_new_link (const char *title, int page); +EvBookmark *ev_bookmark_new_external (const char *title, + const char *uri); const char *ev_bookmark_get_title (EvBookmark *bookmark); void ev_bookmark_set_title (EvBookmark *bookmark, const char *title); +const char *ev_bookmark_get_uri (EvBookmark *bookmark); +void ev_bookmark_set_uri (EvBookmark *bookmark, + const char *uri); EvBookmarkType ev_bookmark_get_bookmark_type (EvBookmark *bookmark); void ev_bookmark_set_bookmark_type (EvBookmark *bookmark, EvBookmarkType type); |