Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/backend
diff options
context:
space:
mode:
authorCarlos Garcia Campos <carlosgc@gnome.org>2006-05-04 08:24:19 (GMT)
committer Carlos Garcia Campos <carlosgc@src.gnome.org>2006-05-04 08:24:19 (GMT)
commitfdf6ceaeede339118ddc2d389ba60be8e3bae9c1 (patch)
treec9fd3fa8641dc887248dae7e75c3a2f4cdebce00 /backend
parentcbb0117c2cd79100c000ab0cb85ddde421478280 (diff)
Add support for Named Action links
2006-05-03 Carlos Garcia Campos <carlosgc@gnome.org> * 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
Diffstat (limited to 'backend')
-rw-r--r--backend/ev-link-action.c43
-rw-r--r--backend/ev-link-action.h3
2 files changed, 45 insertions, 1 deletions
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