X-Git-Url: https://www.fi.muni.cz/~kas/git//home/kas/public_html/git/?a=blobdiff_plain;f=backend%2Fev-link-dest.c;h=09f840afb2079d1f98a3d4ddeb5d6b77e86cbfad;hb=e02e3fde2610db645a005f276286795025426186;hp=2fd2f4d55c64fdbf916bcb615846f806e51e7bae;hpb=67297a0108ba18a69972c98ee1771c3dad41d55b;p=evince.git diff --git a/backend/ev-link-dest.c b/backend/ev-link-dest.c index 2fd2f4d5..09f840af 100644 --- a/backend/ev-link-dest.c +++ b/backend/ev-link-dest.c @@ -29,7 +29,8 @@ enum { PROP_BOTTOM, PROP_RIGHT, PROP_ZOOM, - PROP_NAMED + PROP_NAMED, + PROP_PAGE_LABEL }; struct _EvLinkDest { @@ -51,6 +52,7 @@ struct _EvLinkDestPrivate { double right; double zoom; gchar *named; + gchar *page_label; }; G_DEFINE_TYPE (EvLinkDest, ev_link_dest, G_TYPE_OBJECT) @@ -72,6 +74,7 @@ ev_link_dest_type_get_type (void) { EV_LINK_DEST_TYPE_FITV, "EV_LINK_DEST_TYPE_FITV", "fitv" }, { EV_LINK_DEST_TYPE_FITR, "EV_LINK_DEST_TYPE_FITR", "fitr" }, { EV_LINK_DEST_TYPE_NAMED, "EV_LINK_DEST_TYPE_NAMED", "named" }, + { EV_LINK_DEST_TYPE_PAGE_LABEL, "EV_LINK_DEST_TYPE_PAGE_LABEL", "page_label" }, { EV_LINK_DEST_TYPE_UNKNOWN, "EV_LINK_DEST_TYPE_UNKNOWN", "unknown" }, { 0, NULL, NULL } }; @@ -146,6 +149,14 @@ ev_link_dest_get_named_dest (EvLinkDest *self) return self->priv->named; } +const gchar * +ev_link_dest_get_page_label (EvLinkDest *self) +{ + g_return_val_if_fail (EV_IS_LINK_DEST (self), NULL); + + return self->priv->page_label; +} + static void ev_link_dest_get_property (GObject *object, guint prop_id, @@ -181,6 +192,9 @@ ev_link_dest_get_property (GObject *object, case PROP_NAMED: g_value_set_string (value, self->priv->named); break; + case PROP_PAGE_LABEL: + g_value_set_string (value, self->priv->page_label); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, @@ -222,6 +236,9 @@ ev_link_dest_set_property (GObject *object, case PROP_NAMED: self->priv->named = g_value_dup_string (value); break; + case PROP_PAGE_LABEL: + self->priv->page_label = g_value_dup_string (value); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, @@ -241,6 +258,10 @@ ev_link_dest_finalize (GObject *object) g_free (priv->named); priv->named = NULL; } + if (priv->page_label) { + g_free (priv->page_label); + priv->page_label = NULL; + } G_OBJECT_CLASS (ev_link_dest_parent_class)->finalize (object); } @@ -345,6 +366,14 @@ ev_link_dest_class_init (EvLinkDestClass *ev_link_dest_class) NULL, G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); + g_object_class_install_property (g_object_class, + PROP_PAGE_LABEL, + g_param_spec_string ("page_label", + "Label of the page", + "The label of the destination page", + NULL, + G_PARAM_READWRITE | + G_PARAM_CONSTRUCT_ONLY)); } EvLinkDest * @@ -427,3 +456,12 @@ ev_link_dest_new_named (const gchar *named_dest) "type", EV_LINK_DEST_TYPE_NAMED, NULL)); } + +EvLinkDest * +ev_link_dest_new_page_label (const gchar *page_label) +{ + return EV_LINK_DEST (g_object_new (EV_TYPE_LINK_DEST, + "page_label", page_label, + "type", EV_LINK_DEST_TYPE_PAGE_LABEL, + NULL)); +}