1/* GTK - The GIMP Toolkit
2 * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
3 *
4 * GtkSpinButton widget for GTK+
5 * Copyright (C) 1998 Lars Hamann and Stefan Jeske
6 *
7 * This library is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Lesser General Public
9 * License as published by the Free Software Foundation; either
10 * version 2 of the License, or (at your option) any later version.
11 *
12 * This library is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * Lesser General Public License for more details.
16 *
17 * You should have received a copy of the GNU Lesser General Public
18 * License along with this library. If not, see <http://www.gnu.org/licenses/>.
19 */
20
21/*
22 * Modified by the GTK+ Team and others 1997-2000. See the AUTHORS
23 * file for a list of people on the GTK+ Team. See the ChangeLog
24 * files for a list of changes. These files are distributed with
25 * GTK+ at ftp://ftp.gtk.org/pub/gtk/.
26 */
27
28#ifndef __GTK_SPIN_BUTTON_H__
29#define __GTK_SPIN_BUTTON_H__
30
31
32#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
33#error "Only <gtk/gtk.h> can be included directly."
34#endif
35
36#include <gtk/gtkwidget.h>
37
38
39G_BEGIN_DECLS
40
41#define GTK_TYPE_SPIN_BUTTON (gtk_spin_button_get_type ())
42#define GTK_SPIN_BUTTON(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_SPIN_BUTTON, GtkSpinButton))
43#define GTK_IS_SPIN_BUTTON(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_SPIN_BUTTON))
44
45/**
46 * GTK_INPUT_ERROR:
47 *
48 * Constant to return from a signal handler for the ::input
49 * signal in case of conversion failure.
50 *
51 * See [signal@Gtk.SpinButton::input].
52 */
53#define GTK_INPUT_ERROR -1
54
55/**
56 * GtkSpinButtonUpdatePolicy:
57 * @GTK_UPDATE_ALWAYS: When refreshing your `GtkSpinButton`, the value is
58 * always displayed
59 * @GTK_UPDATE_IF_VALID: When refreshing your `GtkSpinButton`, the value is
60 * only displayed if it is valid within the bounds of the spin button's
61 * adjustment
62 *
63 * Determines whether the spin button displays values outside the adjustment
64 * bounds.
65 *
66 * See [method@Gtk.SpinButton.set_update_policy].
67 */
68typedef enum
69{
70 GTK_UPDATE_ALWAYS,
71 GTK_UPDATE_IF_VALID
72} GtkSpinButtonUpdatePolicy;
73
74/**
75 * GtkSpinType:
76 * @GTK_SPIN_STEP_FORWARD: Increment by the adjustments step increment.
77 * @GTK_SPIN_STEP_BACKWARD: Decrement by the adjustments step increment.
78 * @GTK_SPIN_PAGE_FORWARD: Increment by the adjustments page increment.
79 * @GTK_SPIN_PAGE_BACKWARD: Decrement by the adjustments page increment.
80 * @GTK_SPIN_HOME: Go to the adjustments lower bound.
81 * @GTK_SPIN_END: Go to the adjustments upper bound.
82 * @GTK_SPIN_USER_DEFINED: Change by a specified amount.
83 *
84 * The values of the GtkSpinType enumeration are used to specify the
85 * change to make in gtk_spin_button_spin().
86 */
87typedef enum
88{
89 GTK_SPIN_STEP_FORWARD,
90 GTK_SPIN_STEP_BACKWARD,
91 GTK_SPIN_PAGE_FORWARD,
92 GTK_SPIN_PAGE_BACKWARD,
93 GTK_SPIN_HOME,
94 GTK_SPIN_END,
95 GTK_SPIN_USER_DEFINED
96} GtkSpinType;
97
98
99typedef struct _GtkSpinButton GtkSpinButton;
100
101GDK_AVAILABLE_IN_ALL
102GType gtk_spin_button_get_type (void) G_GNUC_CONST;
103
104GDK_AVAILABLE_IN_ALL
105void gtk_spin_button_configure (GtkSpinButton *spin_button,
106 GtkAdjustment *adjustment,
107 double climb_rate,
108 guint digits);
109
110GDK_AVAILABLE_IN_ALL
111GtkWidget* gtk_spin_button_new (GtkAdjustment *adjustment,
112 double climb_rate,
113 guint digits);
114
115GDK_AVAILABLE_IN_ALL
116GtkWidget* gtk_spin_button_new_with_range (double min,
117 double max,
118 double step);
119
120GDK_AVAILABLE_IN_ALL
121void gtk_spin_button_set_adjustment (GtkSpinButton *spin_button,
122 GtkAdjustment *adjustment);
123
124GDK_AVAILABLE_IN_ALL
125GtkAdjustment* gtk_spin_button_get_adjustment (GtkSpinButton *spin_button);
126
127GDK_AVAILABLE_IN_ALL
128void gtk_spin_button_set_digits (GtkSpinButton *spin_button,
129 guint digits);
130GDK_AVAILABLE_IN_ALL
131guint gtk_spin_button_get_digits (GtkSpinButton *spin_button);
132
133GDK_AVAILABLE_IN_ALL
134void gtk_spin_button_set_increments (GtkSpinButton *spin_button,
135 double step,
136 double page);
137GDK_AVAILABLE_IN_ALL
138void gtk_spin_button_get_increments (GtkSpinButton *spin_button,
139 double *step,
140 double *page);
141
142GDK_AVAILABLE_IN_ALL
143void gtk_spin_button_set_range (GtkSpinButton *spin_button,
144 double min,
145 double max);
146GDK_AVAILABLE_IN_ALL
147void gtk_spin_button_get_range (GtkSpinButton *spin_button,
148 double *min,
149 double *max);
150
151GDK_AVAILABLE_IN_ALL
152double gtk_spin_button_get_value (GtkSpinButton *spin_button);
153
154GDK_AVAILABLE_IN_ALL
155int gtk_spin_button_get_value_as_int (GtkSpinButton *spin_button);
156
157GDK_AVAILABLE_IN_ALL
158void gtk_spin_button_set_value (GtkSpinButton *spin_button,
159 double value);
160
161GDK_AVAILABLE_IN_ALL
162void gtk_spin_button_set_update_policy (GtkSpinButton *spin_button,
163 GtkSpinButtonUpdatePolicy policy);
164GDK_AVAILABLE_IN_ALL
165GtkSpinButtonUpdatePolicy gtk_spin_button_get_update_policy (GtkSpinButton *spin_button);
166
167GDK_AVAILABLE_IN_ALL
168void gtk_spin_button_set_numeric (GtkSpinButton *spin_button,
169 gboolean numeric);
170GDK_AVAILABLE_IN_ALL
171gboolean gtk_spin_button_get_numeric (GtkSpinButton *spin_button);
172
173GDK_AVAILABLE_IN_ALL
174void gtk_spin_button_spin (GtkSpinButton *spin_button,
175 GtkSpinType direction,
176 double increment);
177
178GDK_AVAILABLE_IN_ALL
179void gtk_spin_button_set_wrap (GtkSpinButton *spin_button,
180 gboolean wrap);
181GDK_AVAILABLE_IN_ALL
182gboolean gtk_spin_button_get_wrap (GtkSpinButton *spin_button);
183
184GDK_AVAILABLE_IN_ALL
185void gtk_spin_button_set_snap_to_ticks (GtkSpinButton *spin_button,
186 gboolean snap_to_ticks);
187GDK_AVAILABLE_IN_ALL
188gboolean gtk_spin_button_get_snap_to_ticks (GtkSpinButton *spin_button);
189
190GDK_AVAILABLE_IN_ALL
191void gtk_spin_button_set_climb_rate (GtkSpinButton *spin_button,
192 double climb_rate);
193GDK_AVAILABLE_IN_ALL
194double gtk_spin_button_get_climb_rate (GtkSpinButton *spin_button);
195
196GDK_AVAILABLE_IN_ALL
197void gtk_spin_button_update (GtkSpinButton *spin_button);
198
199
200G_END_DECLS
201
202#endif /* __GTK_SPIN_BUTTON_H__ */
203

source code of gtk/gtk/gtkspinbutton.h