1 /* GAIL - The GNOME Accessibility Implementation Library
2 * Copyright 2001, 2002, 2003 Sun Microsystems Inc.
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.
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.
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the
16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
17 * Boston, MA 02111-1307, USA.
24 #include "gtkspinbuttonaccessible.h"
27 static void atk_value_interface_init (AtkValueIface *iface);
29 G_DEFINE_TYPE_WITH_CODE (GtkSpinButtonAccessible, _gtk_spin_button_accessible, GTK_TYPE_ENTRY_ACCESSIBLE,
30 G_IMPLEMENT_INTERFACE (ATK_TYPE_VALUE, atk_value_interface_init))
33 gtk_spin_button_accessible_value_changed (GtkAdjustment *adjustment,
36 GtkSpinButtonAccessible *spin_button;
38 if (adjustment == NULL || data == NULL)
41 spin_button = GTK_SPIN_BUTTON_ACCESSIBLE (data);
43 g_object_notify (G_OBJECT (spin_button), "accessible-value");
47 gtk_spin_button_accessible_initialize (AtkObject *obj,
50 GtkAdjustment *adjustment;
52 ATK_OBJECT_CLASS (_gtk_spin_button_accessible_parent_class)->initialize (obj, data);
54 adjustment = gtk_spin_button_get_adjustment (GTK_SPIN_BUTTON (data));
56 g_signal_connect (adjustment,
58 G_CALLBACK (gtk_spin_button_accessible_value_changed),
61 obj->role = ATK_ROLE_SPIN_BUTTON;
65 gtk_spin_button_accessible_notify_gtk (GObject *obj,
68 GtkWidget *widget = GTK_WIDGET (obj);
69 GtkSpinButtonAccessible *spin_button = GTK_SPIN_BUTTON_ACCESSIBLE (gtk_widget_get_accessible (widget));
71 if (strcmp (pspec->name, "adjustment") == 0)
73 GtkAdjustment* adjustment;
75 adjustment = gtk_spin_button_get_adjustment (GTK_SPIN_BUTTON (widget));
76 g_signal_connect (adjustment, "value-changed",
77 G_CALLBACK (gtk_spin_button_accessible_value_changed),
81 GTK_WIDGET_ACCESSIBLE_CLASS (_gtk_spin_button_accessible_parent_class)->notify_gtk (obj, pspec);
87 _gtk_spin_button_accessible_class_init (GtkSpinButtonAccessibleClass *klass)
89 AtkObjectClass *class = ATK_OBJECT_CLASS (klass);
90 GtkWidgetAccessibleClass *widget_class = (GtkWidgetAccessibleClass*)klass;
92 widget_class->notify_gtk = gtk_spin_button_accessible_notify_gtk;
94 class->initialize = gtk_spin_button_accessible_initialize;
98 _gtk_spin_button_accessible_init (GtkSpinButtonAccessible *button)
103 gtk_spin_button_accessible_get_current_value (AtkValue *obj,
107 GtkAdjustment *adjustment;
109 widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (obj));
110 adjustment = gtk_spin_button_get_adjustment (GTK_SPIN_BUTTON (widget));
111 if (adjustment == NULL)
114 memset (value, 0, sizeof (GValue));
115 g_value_init (value, G_TYPE_DOUBLE);
116 g_value_set_double (value, gtk_adjustment_get_value (adjustment));
120 gtk_spin_button_accessible_get_maximum_value (AtkValue *obj,
124 GtkAdjustment *adjustment;
126 widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (obj));
127 adjustment = gtk_spin_button_get_adjustment (GTK_SPIN_BUTTON (widget));
128 if (adjustment == NULL)
131 memset (value, 0, sizeof (GValue));
132 g_value_init (value, G_TYPE_DOUBLE);
133 g_value_set_double (value, gtk_adjustment_get_upper (adjustment));
137 gtk_spin_button_accessible_get_minimum_value (AtkValue *obj,
141 GtkAdjustment *adjustment;
143 widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (obj));
144 adjustment = gtk_spin_button_get_adjustment (GTK_SPIN_BUTTON (widget));
145 if (adjustment == NULL)
148 memset (value, 0, sizeof (GValue));
149 g_value_init (value, G_TYPE_DOUBLE);
150 g_value_set_double (value, gtk_adjustment_get_lower (adjustment));
154 gtk_spin_button_accessible_get_minimum_increment (AtkValue *obj,
158 GtkAdjustment *adjustment;
160 widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (obj));
161 adjustment = gtk_spin_button_get_adjustment (GTK_SPIN_BUTTON (widget));
162 if (adjustment == NULL)
165 memset (value, 0, sizeof (GValue));
166 g_value_init (value, G_TYPE_DOUBLE);
167 g_value_set_double (value, gtk_adjustment_get_minimum_increment (adjustment));
171 gtk_spin_button_accessible_set_current_value (AtkValue *obj,
175 GtkAdjustment *adjustment;
177 widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (obj));
178 adjustment = gtk_spin_button_get_adjustment (GTK_SPIN_BUTTON (widget));
179 if (adjustment == NULL)
182 gtk_adjustment_set_value (adjustment, g_value_get_double (value));
188 atk_value_interface_init (AtkValueIface *iface)
190 iface->get_current_value = gtk_spin_button_accessible_get_current_value;
191 iface->get_maximum_value = gtk_spin_button_accessible_get_maximum_value;
192 iface->get_minimum_value = gtk_spin_button_accessible_get_minimum_value;
193 iface->get_minimum_increment = gtk_spin_button_accessible_get_minimum_increment;
194 iface->set_current_value = gtk_spin_button_accessible_set_current_value;