diff options
author | infirit <[email protected]> | 2014-12-09 11:49:58 +0100 |
---|---|---|
committer | infirit <[email protected]> | 2014-12-09 23:02:27 +0100 |
commit | 125dc8050524cecad32af8db8f4dfdea80ca65af (patch) | |
tree | e27d93e5243cc6da365601c0ecd44ce6465af77b | |
parent | 1feffa2b7fba6bab62fe044777dad6e3278e848b (diff) | |
download | atril-125dc8050524cecad32af8db8f4dfdea80ca65af.tar.bz2 atril-125dc8050524cecad32af8db8f4dfdea80ca65af.tar.xz |
[libdocument] Add new action to change layers state
Based on evince commit: 1181d9437b5046c5429c6a5b5ab5af6d683a6d79
From: Carlos Garcia Campos <[email protected]>
-rw-r--r-- | libdocument/ev-link-action.c | 102 | ||||
-rw-r--r-- | libdocument/ev-link-action.h | 9 |
2 files changed, 109 insertions, 2 deletions
diff --git a/libdocument/ev-link-action.c b/libdocument/ev-link-action.c index 3a7dfde6..3019e673 100644 --- a/libdocument/ev-link-action.c +++ b/libdocument/ev-link-action.c @@ -29,7 +29,10 @@ enum { PROP_URI, PROP_FILENAME, PROP_PARAMS, - PROP_NAME + PROP_NAME, + PROP_SHOW_LIST, + PROP_HIDE_LIST, + PROP_TOGGLE_LIST }; struct _EvLinkAction { @@ -49,6 +52,9 @@ struct _EvLinkActionPrivate { gchar *filename; gchar *params; gchar *name; + GList *show_list; + GList *hide_list; + GList *toggle_list; }; G_DEFINE_TYPE (EvLinkAction, ev_link_action, G_TYPE_OBJECT) @@ -104,6 +110,30 @@ ev_link_action_get_name (EvLinkAction *self) return self->priv->name; } +GList * +ev_link_action_get_show_list (EvLinkAction *self) +{ + g_return_val_if_fail (EV_IS_LINK_ACTION (self), NULL); + + return self->priv->show_list; +} + +GList * +ev_link_action_get_hide_list (EvLinkAction *self) +{ + g_return_val_if_fail (EV_IS_LINK_ACTION (self), NULL); + + return self->priv->hide_list; +} + +GList * +ev_link_action_get_toggle_list (EvLinkAction *self) +{ + g_return_val_if_fail (EV_IS_LINK_ACTION (self), NULL); + + return self->priv->toggle_list; +} + static void ev_link_action_get_property (GObject *object, guint prop_id, @@ -133,6 +163,15 @@ ev_link_action_get_property (GObject *object, case PROP_NAME: g_value_set_string (value, self->priv->name); break; + case PROP_SHOW_LIST: + g_value_set_pointer (value, self->priv->show_list); + break; + case PROP_HIDE_LIST: + g_value_set_pointer (value, self->priv->hide_list); + break; + case PROP_TOGGLE_LIST: + g_value_set_pointer (value, self->priv->toggle_list); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, @@ -172,6 +211,15 @@ ev_link_action_set_property (GObject *object, g_free (self->priv->name); self->priv->name = g_value_dup_string (value); break; + case PROP_SHOW_LIST: + self->priv->show_list = g_value_get_pointer (value); + break; + case PROP_HIDE_LIST: + self->priv->hide_list = g_value_get_pointer (value); + break; + case PROP_TOGGLE_LIST: + self->priv->toggle_list = g_value_get_pointer (value); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, @@ -212,6 +260,24 @@ ev_link_action_finalize (GObject *object) priv->name = NULL; } + if (priv->show_list) { + g_list_foreach (priv->show_list, (GFunc)g_object_unref, NULL); + g_list_free (priv->show_list); + priv->show_list = NULL; + } + + if (priv->hide_list) { + g_list_foreach (priv->hide_list, (GFunc)g_object_unref, NULL); + g_list_free (priv->hide_list); + priv->hide_list = NULL; + } + + if (priv->toggle_list) { + g_list_foreach (priv->toggle_list, (GFunc)g_object_unref, NULL); + g_list_free (priv->toggle_list); + priv->toggle_list = NULL; + } + G_OBJECT_CLASS (ev_link_action_parent_class)->finalize (object); } @@ -289,6 +355,27 @@ 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_SHOW_LIST, + g_param_spec_pointer ("show-list", + "ShowList", + "The list of layers that should be shown", + G_PARAM_READWRITE | + G_PARAM_CONSTRUCT_ONLY)); + g_object_class_install_property (g_object_class, + PROP_HIDE_LIST, + g_param_spec_pointer ("hide-list", + "HideList", + "The list of layers that should be hidden", + G_PARAM_READWRITE | + G_PARAM_CONSTRUCT_ONLY)); + g_object_class_install_property (g_object_class, + PROP_TOGGLE_LIST, + g_param_spec_pointer ("toggle-list", + "ToggleList", + "The list of layers that should be toggled", + G_PARAM_READWRITE | + G_PARAM_CONSTRUCT_ONLY)); } EvLinkAction * @@ -339,3 +426,16 @@ ev_link_action_new_named (const gchar *name) "type", EV_LINK_ACTION_TYPE_NAMED, NULL)); } + +EvLinkAction * +ev_link_action_new_layers_state (GList *show_list, + GList *hide_list, + GList *toggle_list) +{ + return EV_LINK_ACTION (g_object_new (EV_TYPE_LINK_ACTION, + "show-list", show_list, + "hide-list", hide_list, + "toggle-list", toggle_list, + "type", EV_LINK_ACTION_TYPE_LAYERS_STATE, + NULL)); +} diff --git a/libdocument/ev-link-action.h b/libdocument/ev-link-action.h index 1d525649..99664e5a 100644 --- a/libdocument/ev-link-action.h +++ b/libdocument/ev-link-action.h @@ -46,7 +46,8 @@ typedef enum { EV_LINK_ACTION_TYPE_GOTO_REMOTE, EV_LINK_ACTION_TYPE_EXTERNAL_URI, EV_LINK_ACTION_TYPE_LAUNCH, - EV_LINK_ACTION_TYPE_NAMED + EV_LINK_ACTION_TYPE_NAMED, + EV_LINK_ACTION_TYPE_LAYERS_STATE /* We'll probably fill this in more as we support the other types of * actions */ } EvLinkActionType; @@ -59,6 +60,9 @@ 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); +GList *ev_link_action_get_show_list (EvLinkAction *self); +GList *ev_link_action_get_hide_list (EvLinkAction *self); +GList *ev_link_action_get_toggle_list (EvLinkAction *self); EvLinkAction *ev_link_action_new_dest (EvLinkDest *dest); EvLinkAction *ev_link_action_new_remote (EvLinkDest *dest, @@ -67,6 +71,9 @@ 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); +EvLinkAction *ev_link_action_new_layers_state (GList *show_list, + GList *hide_list, + GList *toggle_list); G_END_DECLS |