X-Git-Url: https://www.fi.muni.cz/~kas/git//home/kas/public_html/git/?a=blobdiff_plain;ds=inline;f=libdocument%2Fev-link-action.c;h=f7fcb2bb50b2106d6a8c7854e8f428623375ee12;hb=d9458f7a82b916efcc7bebf576388ef9bf2e8e45;hp=bc0a8fc14ddbf53a7b0b4d8df0434b6a05034204;hpb=13a06349251874bd35d2f03c3fc93217cee749a2;p=evince.git diff --git a/libdocument/ev-link-action.c b/libdocument/ev-link-action.c index bc0a8fc1..f7fcb2bb 100644 --- a/libdocument/ev-link-action.c +++ b/libdocument/ev-link-action.c @@ -15,10 +15,12 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ +#include #include "ev-link-action.h" +#include "ev-document-type-builtins.h" enum { PROP_0, @@ -27,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 { @@ -47,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) @@ -54,27 +62,6 @@ G_DEFINE_TYPE (EvLinkAction, ev_link_action, G_TYPE_OBJECT) #define EV_LINK_ACTION_GET_PRIVATE(object) \ (G_TYPE_INSTANCE_GET_PRIVATE ((object), EV_TYPE_LINK_ACTION, EvLinkActionPrivate)) -GType -ev_link_action_type_get_type (void) -{ - static GType type = 0; - - if (G_UNLIKELY (type == 0)) { - static const GEnumValue values[] = { - { EV_LINK_ACTION_TYPE_GOTO_DEST, "EV_LINK_ACTION_TYPE_GOTO_DEST", "goto-dest" }, - { 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 } - }; - - type = g_enum_register_static ("EvLinkActionType", values); - } - - return type; -} - EvLinkActionType ev_link_action_get_action_type (EvLinkAction *self) { @@ -123,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, @@ -152,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, @@ -191,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, @@ -231,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); } @@ -308,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 * @@ -358,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)); +}