Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/backend
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 /backend
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 'backend')
-rw-r--r--backend/ev-bookmark.c66
-rw-r--r--backend/ev-bookmark.h9
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);