1
/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
4
* Copyright (C) Álvaro Peña 2013 <alvaropg@gmail.com>
6
* Almanah is free software: you can redistribute it and/or modify
7
* it under the terms of the GNU General Public License as published by
8
* the Free Software Foundation, either version 3 of the License, or
9
* (at your option) any later version.
11
* Almanah is distributed in the hope that it will be useful,
12
* but WITHOUT ANY WARRANTY; without even the implied warranty of
13
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
* GNU General Public License for more details.
16
* You should have received a copy of the GNU General Public License
17
* along with Almanah. If not, see <http://www.gnu.org/licenses/>.
20
#include <glib/gi18n.h>
22
#include "tag-accessible.h"
25
struct _AlmanahTagAccessiblePrivate
30
static void almanah_tag_accessible_initialize (AtkObject *obj, gpointer data);
32
static const gchar* almanah_tag_accessible_get_name (AtkObject *accessible);
34
static void almanah_tag_accessible_atk_action_iface_init (AtkActionIface *iface);
35
gboolean almanah_tag_accessible_atk_action_do_action (AtkAction *action, gint i);
36
gint almanah_tag_accessible_atk_action_get_n_actions (AtkAction *action);
37
const gchar* almanah_tag_accessible_atk_action_get_description (AtkAction *action, gint i);
38
const gchar* almanah_tag_accessible_atk_action_get_name (AtkAction *action, gint i);
39
const gchar* almanah_tag_accessible_atk_action_get_keybinding (AtkAction *action, gint i);
40
gboolean almanah_tag_accessible_atk_action_set_description (AtkAction *action, gint i, const gchar *desc);
41
const gchar* almanah_tag_accessible_atk_action_get_localized_name (AtkAction *action, gint i);
43
G_DEFINE_TYPE_WITH_CODE (AlmanahTagAccessible, almanah_tag_accessible, GTK_TYPE_WIDGET_ACCESSIBLE,
44
G_IMPLEMENT_INTERFACE (ATK_TYPE_ACTION, almanah_tag_accessible_atk_action_iface_init))
47
almanah_tag_accessible_class_init (AlmanahTagAccessibleClass *klass)
49
AtkObjectClass *class = ATK_OBJECT_CLASS (klass);
51
g_type_class_add_private (klass, sizeof (AlmanahTagAccessiblePrivate));
53
class->get_name = almanah_tag_accessible_get_name;
54
class->initialize = almanah_tag_accessible_initialize;
58
almanah_tag_accessible_init (AlmanahTagAccessible *self)
63
almanah_tag_accessible_initialize (AtkObject *obj, gpointer data)
67
ATK_OBJECT_CLASS (almanah_tag_accessible_parent_class)->initialize (obj, data);
69
obj->role = ATK_ROLE_DRAWING_AREA;
72
/* Code adapted from gtklabelaccessible in GTK+ project */
74
almanah_tag_accessible_get_name (AtkObject *accessible)
78
g_return_val_if_fail (ALMANAH_IS_TAG_ACCESSIBLE (accessible), NULL);
80
name = ATK_OBJECT_CLASS (almanah_tag_accessible_parent_class)->get_name (accessible);
84
/* Get the text on the tag */
87
widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (accessible));
88
g_return_val_if_fail (widget != NULL, NULL);
89
g_return_val_if_fail (ALMANAH_IS_TAG (widget), NULL);
91
return almanah_tag_get_tag (ALMANAH_TAG (widget));
96
almanah_tag_accessible_atk_action_iface_init (AtkActionIface *iface)
98
iface->do_action = almanah_tag_accessible_atk_action_do_action;
99
iface->get_n_actions = almanah_tag_accessible_atk_action_get_n_actions;
100
iface->get_description = almanah_tag_accessible_atk_action_get_description;
101
iface->get_name = almanah_tag_accessible_atk_action_get_name;
102
iface->get_keybinding = almanah_tag_accessible_atk_action_get_keybinding;
103
iface->set_description = almanah_tag_accessible_atk_action_set_description;
104
iface->get_localized_name = almanah_tag_accessible_atk_action_get_localized_name;
108
almanah_tag_accessible_atk_action_do_action (AtkAction *action, gint i)
112
widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (action));
113
g_return_val_if_fail (widget != NULL, FALSE);
116
almanah_tag_remove (ALMANAH_TAG (widget));
123
almanah_tag_accessible_atk_action_get_n_actions (AtkAction *action)
129
almanah_tag_accessible_atk_action_get_description (AtkAction *action, gint i)
132
return "Remove the tag from the entry";
138
almanah_tag_accessible_atk_action_get_name (AtkAction *action, gint i)
147
almanah_tag_accessible_atk_action_get_keybinding (AtkAction *action, gint i)
156
almanah_tag_accessible_atk_action_set_description (AtkAction *action, gint i, const gchar *desc)
162
almanah_tag_accessible_atk_action_get_localized_name (AtkAction *action, gint i)
165
return _("Remove the tag from the entry");