]> Pileus Git - ~andy/gtk/blob - gtk/a11y/gtkrenderercellaccessible.c
filechooser: Rename _gtk_file_is_path_not_local() to _gtk_file_has_native_path()
[~andy/gtk] / gtk / a11y / gtkrenderercellaccessible.c
1 /* GTK+ - accessibility implementations
2  * Copyright 2001 Sun Microsystems Inc.
3  *
4  * This library is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Lesser General Public
6  * License as published by the Free Software Foundation; either
7  * version 2 of the License, or (at your option) any later version.
8  *
9  * This library is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12  * Lesser General Public License for more details.
13  *
14  * You should have received a copy of the GNU Lesser General Public
15  * License along with this library. If not, see <http://www.gnu.org/licenses/>.
16  */
17
18 #include "config.h"
19
20 #include <gtk/gtk.h>
21 #include "gtkrenderercellaccessible.h"
22 #include "gtkintl.h"
23
24 struct _GtkRendererCellAccessiblePrivate
25 {
26   GtkCellRenderer *renderer;
27 };
28
29 enum {
30   PROP_0,
31   PROP_RENDERER
32 };
33
34 G_DEFINE_TYPE (GtkRendererCellAccessible, gtk_renderer_cell_accessible, GTK_TYPE_CELL_ACCESSIBLE)
35
36 static void
37 gtk_renderer_cell_accessible_set_property (GObject         *object,
38                                            guint            prop_id,
39                                            const GValue    *value,
40                                            GParamSpec      *pspec)
41 {
42   GtkRendererCellAccessible *accessible = GTK_RENDERER_CELL_ACCESSIBLE (object);
43
44   switch (prop_id)
45     {
46     case PROP_RENDERER:
47       accessible->priv->renderer = g_value_dup_object (value);
48       break;
49     default:
50       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
51       break;
52     }
53 }
54
55 static void
56 gtk_renderer_cell_accessible_get_property (GObject         *object,
57                                            guint            prop_id,
58                                            GValue          *value,
59                                            GParamSpec      *pspec)
60 {
61   GtkRendererCellAccessible *accessible = GTK_RENDERER_CELL_ACCESSIBLE (object);
62
63   switch (prop_id)
64     {
65     case PROP_RENDERER:
66       g_value_set_object (value, accessible->priv->renderer);
67       break;
68     default:
69       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
70       break;
71     }
72 }
73
74 static void
75 gtk_renderer_cell_accessible_finalize (GObject *object)
76 {
77   GtkRendererCellAccessible *renderer_cell = GTK_RENDERER_CELL_ACCESSIBLE (object);
78
79   if (renderer_cell->priv->renderer)
80     g_object_unref (renderer_cell->priv->renderer);
81
82   G_OBJECT_CLASS (gtk_renderer_cell_accessible_parent_class)->finalize (object);
83 }
84
85 static void
86 gtk_renderer_cell_accessible_class_init (GtkRendererCellAccessibleClass *klass)
87 {
88   GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
89
90   gobject_class->get_property = gtk_renderer_cell_accessible_get_property;
91   gobject_class->set_property = gtk_renderer_cell_accessible_set_property;
92   gobject_class->finalize = gtk_renderer_cell_accessible_finalize;
93
94   g_object_class_install_property (gobject_class,
95                                    PROP_RENDERER,
96                                    g_param_spec_object ("renderer",
97                                                         P_("Cell renderer"),
98                                                         P_("The cell renderer represented by this accessible"),
99                                                         GTK_TYPE_CELL_RENDERER,
100                                                         G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
101
102   g_type_class_add_private (klass, sizeof (GtkRendererCellAccessiblePrivate));
103 }
104
105 static void
106 gtk_renderer_cell_accessible_init (GtkRendererCellAccessible *renderer_cell)
107 {
108   renderer_cell->priv = G_TYPE_INSTANCE_GET_PRIVATE (renderer_cell,
109                                                      GTK_TYPE_RENDERER_CELL_ACCESSIBLE,
110                                                      GtkRendererCellAccessiblePrivate);
111 }
112
113 AtkObject *
114 gtk_renderer_cell_accessible_new (GtkCellRenderer *renderer)
115 {
116   AtkObject *object;
117
118   g_return_val_if_fail (GTK_IS_CELL_RENDERER (renderer), NULL);
119
120   object = g_object_new (_gtk_cell_renderer_get_accessible_type (renderer),
121                          "renderer", renderer,
122                          NULL);
123
124   atk_object_set_role (object, ATK_ROLE_TABLE_CELL);
125
126   return object;
127 }