From fdf6ceaeede339118ddc2d389ba60be8e3bae9c1 Mon Sep 17 00:00:00 2001 From: Carlos Garcia Campos Date: Thu, 04 May 2006 08:24:19 +0000 Subject: Add support for Named Action links 2006-05-03 Carlos Garcia Campos * backend/ev-link-action.[ch]: * pdf/ev-poppler.cc: (ev_link_from_action): * shell/ev-view-private.h: * shell/ev-view.c: (ev_view_handle_link), (tip_from_action_named): * shell/ev-window.c: (do_action_named), (view_external_link_cb): Add support for Named Action links --- (limited to 'backend') diff --git a/backend/ev-link-action.c b/backend/ev-link-action.c index 23f4194..bc0a8fc 100644 --- a/backend/ev-link-action.c +++ b/backend/ev-link-action.c @@ -26,7 +26,8 @@ enum { PROP_DEST, PROP_URI, PROP_FILENAME, - PROP_PARAMS + PROP_PARAMS, + PROP_NAME }; struct _EvLinkAction { @@ -45,6 +46,7 @@ struct _EvLinkActionPrivate { gchar *uri; gchar *filename; gchar *params; + gchar *name; }; G_DEFINE_TYPE (EvLinkAction, ev_link_action, G_TYPE_OBJECT) @@ -63,6 +65,7 @@ ev_link_action_type_get_type (void) { EV_LINK_ACTION_TYPE_GOTO_REMOTE, "EV_LINK_ACTION_TYPE_GOTO_REMOTE", "goto-remote" }, { EV_LINK_ACTION_TYPE_LAUNCH, "EV_LINK_ACTION_TYPE_LAUNCH", "launch" }, { EV_LINK_ACTION_TYPE_EXTERNAL_URI, "EV_LINK_ACTION_TYPE_EXTERNAL_URI", "external-uri"}, + { EV_LINK_ACTION_TYPE_NAMED, "EV_LINK_ACTION_TYPE_NAMED", "named"}, { 0, NULL, NULL } }; @@ -112,6 +115,14 @@ ev_link_action_get_params (EvLinkAction *self) return self->priv->params; } +const gchar * +ev_link_action_get_name (EvLinkAction *self) +{ + g_return_val_if_fail (EV_IS_LINK_ACTION (self), NULL); + + return self->priv->name; +} + static void ev_link_action_get_property (GObject *object, guint prop_id, @@ -138,6 +149,9 @@ ev_link_action_get_property (GObject *object, case PROP_PARAMS: g_value_set_string (value, self->priv->params); break; + case PROP_NAME: + g_value_set_string (value, self->priv->name); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, @@ -173,6 +187,10 @@ ev_link_action_set_property (GObject *object, g_free (self->priv->params); self->priv->params = g_value_dup_string (value); break; + case PROP_NAME: + g_free (self->priv->name); + self->priv->name = g_value_dup_string (value); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, @@ -208,6 +226,11 @@ ev_link_action_finalize (GObject *object) priv->params = NULL; } + if (priv->name) { + g_free (priv->name); + priv->name = NULL; + } + G_OBJECT_CLASS (ev_link_action_parent_class)->finalize (object); } @@ -220,6 +243,7 @@ ev_link_action_init (EvLinkAction *ev_link_action) ev_link_action->priv->uri = NULL; ev_link_action->priv->filename = NULL; ev_link_action->priv->params = NULL; + ev_link_action->priv->name = NULL; } static void @@ -276,6 +300,14 @@ ev_link_action_class_init (EvLinkActionClass *ev_link_action_class) NULL, G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); + g_object_class_install_property (g_object_class, + PROP_NAME, + g_param_spec_string ("name", + "Name", + "The link action name", + NULL, + G_PARAM_READWRITE | + G_PARAM_CONSTRUCT_ONLY)); } EvLinkAction * @@ -317,3 +349,12 @@ ev_link_action_new_launch (const gchar *filename, "type", EV_LINK_ACTION_TYPE_LAUNCH, NULL)); } + +EvLinkAction * +ev_link_action_new_named (const gchar *name) +{ + return EV_LINK_ACTION (g_object_new (EV_TYPE_LINK_ACTION, + "name", name, + "type", EV_LINK_ACTION_TYPE_NAMED, + NULL)); +} diff --git a/backend/ev-link-action.h b/backend/ev-link-action.h index 6ca8d57..32211fe 100644 --- a/backend/ev-link-action.h +++ b/backend/ev-link-action.h @@ -44,6 +44,7 @@ typedef enum { EV_LINK_ACTION_TYPE_GOTO_REMOTE, EV_LINK_ACTION_TYPE_EXTERNAL_URI, EV_LINK_ACTION_TYPE_LAUNCH, + EV_LINK_ACTION_TYPE_NAMED /* We'll probably fill this in more as we support the other types of * actions */ } EvLinkActionType; @@ -56,6 +57,7 @@ EvLinkDest *ev_link_action_get_dest (EvLinkAction *self); const gchar *ev_link_action_get_uri (EvLinkAction *self); const gchar *ev_link_action_get_filename (EvLinkAction *self); const gchar *ev_link_action_get_params (EvLinkAction *self); +const gchar *ev_link_action_get_name (EvLinkAction *self); EvLinkAction *ev_link_action_new_dest (EvLinkDest *dest); EvLinkAction *ev_link_action_new_remote (EvLinkDest *dest, @@ -63,6 +65,7 @@ EvLinkAction *ev_link_action_new_remote (EvLinkDest *dest, EvLinkAction *ev_link_action_new_external_uri (const gchar *uri); EvLinkAction *ev_link_action_new_launch (const gchar *filename, const gchar *params); +EvLinkAction *ev_link_action_new_named (const gchar *name); G_END_DECLS -- cgit v0.9.1