1
<refentry id="GtkAdjustment">
3
<refentrytitle role="top_of_page">GtkAdjustment</refentrytitle>
4
<manvolnum>3</manvolnum>
5
<refmiscinfo>GTK Library</refmiscinfo>
9
<refname>GtkAdjustment</refname>
10
<refpurpose>A GtkObject representing an adjustable bounded value</refpurpose>
11
<!--[<xref linkend="desc" endterm="desc.title"/>]-->
14
<refsynopsisdiv role="synopsis">
15
<title role="synopsis.title">Synopsis</title>
19
#include <gtk/gtk.h>
22
<link linkend="GtkAdjustment-struct">GtkAdjustment</link>;
23
<link linkend="GtkObject">GtkObject</link>* <link linkend="gtk-adjustment-new">gtk_adjustment_new</link> (<link linkend="gdouble">gdouble</link> value,
24
<link linkend="gdouble">gdouble</link> lower,
25
<link linkend="gdouble">gdouble</link> upper,
26
<link linkend="gdouble">gdouble</link> step_increment,
27
<link linkend="gdouble">gdouble</link> page_increment,
28
<link linkend="gdouble">gdouble</link> page_size);
29
<link linkend="gdouble">gdouble</link> <link linkend="gtk-adjustment-get-value">gtk_adjustment_get_value</link> (<link linkend="GtkAdjustment">GtkAdjustment</link> *adjustment);
30
<link linkend="void">void</link> <link linkend="gtk-adjustment-set-value">gtk_adjustment_set_value</link> (<link linkend="GtkAdjustment">GtkAdjustment</link> *adjustment,
31
<link linkend="gdouble">gdouble</link> value);
32
<link linkend="void">void</link> <link linkend="gtk-adjustment-clamp-page">gtk_adjustment_clamp_page</link> (<link linkend="GtkAdjustment">GtkAdjustment</link> *adjustment,
33
<link linkend="gdouble">gdouble</link> lower,
34
<link linkend="gdouble">gdouble</link> upper);
35
<link linkend="void">void</link> <link linkend="gtk-adjustment-changed">gtk_adjustment_changed</link> (<link linkend="GtkAdjustment">GtkAdjustment</link> *adjustment);
36
<link linkend="void">void</link> <link linkend="gtk-adjustment-value-changed">gtk_adjustment_value_changed</link> (<link linkend="GtkAdjustment">GtkAdjustment</link> *adjustment);
42
<refsect1 role="object_hierarchy">
43
<title role="object_hierarchy.title">Object Hierarchy</title>
46
<link linkend="GObject">GObject</link>
47
+----<link linkend="GInitiallyUnowned">GInitiallyUnowned</link>
48
+----<link linkend="GtkObject">GtkObject</link>
58
<refsect1 role="properties">
59
<title role="properties.title">Properties</title>
62
"<link linkend="GtkAdjustment--lower">lower</link>" <link linkend="gdouble">gdouble</link> : Read / Write
63
"<link linkend="GtkAdjustment--page-increment">page-increment</link>" <link linkend="gdouble">gdouble</link> : Read / Write
64
"<link linkend="GtkAdjustment--page-size">page-size</link>" <link linkend="gdouble">gdouble</link> : Read / Write
65
"<link linkend="GtkAdjustment--step-increment">step-increment</link>" <link linkend="gdouble">gdouble</link> : Read / Write
66
"<link linkend="GtkAdjustment--upper">upper</link>" <link linkend="gdouble">gdouble</link> : Read / Write
67
"<link linkend="GtkAdjustment--value">value</link>" <link linkend="gdouble">gdouble</link> : Read / Write
71
<refsect1 role="signal_proto">
72
<title role="signal_proto.title">Signals</title>
75
"<link linkend="GtkAdjustment-changed">changed</link>" : Run First / No Recursion
76
"<link linkend="GtkAdjustment-value-changed">value-changed</link>" : Run First / No Recursion
81
<refsect1 role="desc">
82
<title role="desc.title">Description</title>
84
The <link linkend="GtkAdjustment"><type>GtkAdjustment</type></link> object represents a value which has an associated lower
85
and upper bound, together with step and page increments, and a page size.
86
It is used within several GTK+ widgets, including
87
<link linkend="GtkSpinButton"><type>GtkSpinButton</type></link>, <link linkend="GtkViewport"><type>GtkViewport</type></link>, and <link linkend="GtkRange"><type>GtkRange</type></link> (which is a base class for
88
<link linkend="GtkHScrollbar"><type>GtkHScrollbar</type></link>, <link linkend="GtkVScrollbar"><type>GtkVScrollbar</type></link>, <link linkend="GtkHScale"><type>GtkHScale</type></link>, and <link linkend="GtkVScale"><type>GtkVScale</type></link>).
91
The <link linkend="GtkAdjustment"><type>GtkAdjustment</type></link> object does not update the value itself. Instead
92
it is left up to the owner of the <link linkend="GtkAdjustment"><type>GtkAdjustment</type></link> to control the value.
95
The owner of the <link linkend="GtkAdjustment"><type>GtkAdjustment</type></link> typically calls the
96
<link linkend="gtk-adjustment-value-changed"><function>gtk_adjustment_value_changed()</function></link> and <link linkend="gtk-adjustment-changed"><function>gtk_adjustment_changed()</function></link> functions
97
after changing the value and its bounds. This results in the emission of the
98
"value_changed" or "changed" signal respectively.
102
<refsect1 role="details">
103
<title role="details.title">Details</title>
105
<title><anchor id="GtkAdjustment-struct" role="struct"/>GtkAdjustment</title>
106
<indexterm><primary>GtkAdjustment</primary></indexterm><programlisting>typedef struct _GtkAdjustment GtkAdjustment;</programlisting>
108
The <link linkend="GtkAdjustment-struct"><type>GtkAdjustment</type></link> struct contains the following fields.
110
<informaltable pgwide="1" frame="none" role="struct">
111
<tgroup cols="2"><colspec colwidth="2*"/><colspec colwidth="8*"/>
115
<entry><link linkend="gdouble"><type>gdouble</type></link> lower;</entry>
116
<entry>the minimum value.</entry>
120
<entry><link linkend="gdouble"><type>gdouble</type></link> upper;</entry>
121
<entry>the maximum value.</entry>
125
<entry><link linkend="gdouble"><type>gdouble</type></link> value;</entry>
126
<entry>the current value.</entry>
130
<entry><link linkend="gdouble"><type>gdouble</type></link> step_increment;</entry>
131
<entry>the increment to use to make minor changes to the value.
132
In a <link linkend="GtkScrollbar"><type>GtkScrollbar</type></link> this increment is used when the mouse is clicked on the
133
arrows at the top and bottom of the scrollbar, to scroll by a small amount.
138
<entry><link linkend="gdouble"><type>gdouble</type></link> page_increment;</entry>
139
<entry>the increment to use to make major changes to the value.
140
In a <link linkend="GtkScrollbar"><type>GtkScrollbar</type></link> this increment is used when the mouse is clicked in the
141
trough, to scroll by a large amount.
146
<entry><link linkend="gdouble"><type>gdouble</type></link> page_size;</entry>
147
<entry>the page size.
148
In a <link linkend="GtkScrollbar"><type>GtkScrollbar</type></link> this is the size of the area which is currently visible.
152
</tbody></tgroup></informaltable>
156
<title><anchor id="gtk-adjustment-new" role="function"/>gtk_adjustment_new ()</title>
157
<indexterm><primary>gtk_adjustment_new</primary></indexterm><programlisting><link linkend="GtkObject">GtkObject</link>* gtk_adjustment_new (<link linkend="gdouble">gdouble</link> value,
158
<link linkend="gdouble">gdouble</link> lower,
159
<link linkend="gdouble">gdouble</link> upper,
160
<link linkend="gdouble">gdouble</link> step_increment,
161
<link linkend="gdouble">gdouble</link> page_increment,
162
<link linkend="gdouble">gdouble</link> page_size);</programlisting>
164
Creates a new <link linkend="GtkAdjustment"><type>GtkAdjustment</type></link>.
165
</para><variablelist role="params">
166
<varlistentry><term><parameter>value</parameter> :</term>
167
<listitem><simpara>the initial value.
168
</simpara></listitem></varlistentry>
169
<varlistentry><term><parameter>lower</parameter> :</term>
170
<listitem><simpara>the minimum value.
171
</simpara></listitem></varlistentry>
172
<varlistentry><term><parameter>upper</parameter> :</term>
173
<listitem><simpara>the maximum value.
174
</simpara></listitem></varlistentry>
175
<varlistentry><term><parameter>step_increment</parameter> :</term>
176
<listitem><simpara>the step increment.
177
</simpara></listitem></varlistentry>
178
<varlistentry><term><parameter>page_increment</parameter> :</term>
179
<listitem><simpara>the page increment.
180
</simpara></listitem></varlistentry>
181
<varlistentry><term><parameter>page_size</parameter> :</term>
182
<listitem><simpara>the page size.
183
</simpara></listitem></varlistentry>
184
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara>a new <link linkend="GtkAdjustment"><type>GtkAdjustment</type></link>.
187
</simpara></listitem></varlistentry>
188
</variablelist></refsect2>
190
<title><anchor id="gtk-adjustment-get-value" role="function"/>gtk_adjustment_get_value ()</title>
191
<indexterm><primary>gtk_adjustment_get_value</primary></indexterm><programlisting><link linkend="gdouble">gdouble</link> gtk_adjustment_get_value (<link linkend="GtkAdjustment">GtkAdjustment</link> *adjustment);</programlisting>
193
Gets the current value of the adjustment. See
194
<link linkend="gtk-adjustment-set-value"><function>gtk_adjustment_set_value()</function></link>.</para>
197
</para><variablelist role="params">
198
<varlistentry><term><parameter>adjustment</parameter> :</term>
199
<listitem><simpara> a <link linkend="GtkAdjustment"><type>GtkAdjustment</type></link>
200
</simpara></listitem></varlistentry>
201
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> The current value of the adjustment.
202
</simpara></listitem></varlistentry>
203
</variablelist></refsect2>
205
<title><anchor id="gtk-adjustment-set-value" role="function"/>gtk_adjustment_set_value ()</title>
206
<indexterm><primary>gtk_adjustment_set_value</primary></indexterm><programlisting><link linkend="void">void</link> gtk_adjustment_set_value (<link linkend="GtkAdjustment">GtkAdjustment</link> *adjustment,
207
<link linkend="gdouble">gdouble</link> value);</programlisting>
209
Sets the <link linkend="GtkAdjustment"><type>GtkAdjustment</type></link> value. The value is clamped to lie between
210
<literal>adjustment->lower</literal> and
211
<literal>adjustment->upper</literal>.
214
Note that for adjustments which are used in a <link linkend="GtkScrollbar"><type>GtkScrollbar</type></link>, the effective
215
range of allowed values goes from <literal>adjustment->lower</literal> to
216
<literal>adjustment->upper - adjustment->page_size</literal>.
217
</para><variablelist role="params">
218
<varlistentry><term><parameter>adjustment</parameter> :</term>
219
<listitem><simpara>a <link linkend="GtkAdjustment"><type>GtkAdjustment</type></link>.
220
</simpara></listitem></varlistentry>
221
<varlistentry><term><parameter>value</parameter> :</term>
222
<listitem><simpara>the new value.
225
</simpara></listitem></varlistentry>
226
</variablelist></refsect2>
228
<title><anchor id="gtk-adjustment-clamp-page" role="function"/>gtk_adjustment_clamp_page ()</title>
229
<indexterm><primary>gtk_adjustment_clamp_page</primary></indexterm><programlisting><link linkend="void">void</link> gtk_adjustment_clamp_page (<link linkend="GtkAdjustment">GtkAdjustment</link> *adjustment,
230
<link linkend="gdouble">gdouble</link> lower,
231
<link linkend="gdouble">gdouble</link> upper);</programlisting>
233
Updates the <link linkend="GtkAdjustment"><type>GtkAdjustment</type></link> <parameter>value</parameter> to ensure that the range between <parameter>lower</parameter>
234
and <parameter>upper</parameter> is in the current page (i.e. between <parameter>value</parameter> and <parameter>value</parameter> +
235
<parameter>page_size</parameter>).
236
If the range is larger than the page size, then only the start of it will
237
be in the current page.
238
A "changed" signal will be emitted if the value is changed.
239
</para><variablelist role="params">
240
<varlistentry><term><parameter>adjustment</parameter> :</term>
241
<listitem><simpara>a <link linkend="GtkAdjustment"><type>GtkAdjustment</type></link>.
242
</simpara></listitem></varlistentry>
243
<varlistentry><term><parameter>lower</parameter> :</term>
244
<listitem><simpara>the lower value.
245
</simpara></listitem></varlistentry>
246
<varlistentry><term><parameter>upper</parameter> :</term>
247
<listitem><simpara>the upper value.
250
</simpara></listitem></varlistentry>
251
</variablelist></refsect2>
253
<title><anchor id="gtk-adjustment-changed" role="function"/>gtk_adjustment_changed ()</title>
254
<indexterm><primary>gtk_adjustment_changed</primary></indexterm><programlisting><link linkend="void">void</link> gtk_adjustment_changed (<link linkend="GtkAdjustment">GtkAdjustment</link> *adjustment);</programlisting>
256
Emits a "changed" signal from the <link linkend="GtkAdjustment"><type>GtkAdjustment</type></link>.
257
This is typically called by the owner of the <link linkend="GtkAdjustment"><type>GtkAdjustment</type></link> after it has
258
changed any of the <link linkend="GtkAdjustment"><type>GtkAdjustment</type></link> fields other than the value.
259
</para><variablelist role="params">
260
<varlistentry><term><parameter>adjustment</parameter> :</term>
261
<listitem><simpara>a <link linkend="GtkAdjustment"><type>GtkAdjustment</type></link>
264
</simpara></listitem></varlistentry>
265
</variablelist></refsect2>
267
<title><anchor id="gtk-adjustment-value-changed" role="function"/>gtk_adjustment_value_changed ()</title>
268
<indexterm><primary>gtk_adjustment_value_changed</primary></indexterm><programlisting><link linkend="void">void</link> gtk_adjustment_value_changed (<link linkend="GtkAdjustment">GtkAdjustment</link> *adjustment);</programlisting>
270
Emits a "value_changed" signal from the <link linkend="GtkAdjustment"><type>GtkAdjustment</type></link>.
271
This is typically called by the owner of the <link linkend="GtkAdjustment"><type>GtkAdjustment</type></link> after it has
272
changed the <link linkend="GtkAdjustment"><type>GtkAdjustment</type></link> value field.
273
</para><variablelist role="params">
274
<varlistentry><term><parameter>adjustment</parameter> :</term>
275
<listitem><simpara>a <link linkend="GtkAdjustment"><type>GtkAdjustment</type></link>
278
</simpara></listitem></varlistentry>
279
</variablelist></refsect2>
282
<refsect1 role="property_details">
283
<title role="property_details.title">Property Details</title>
284
<refsect2><title><anchor id="GtkAdjustment--lower"/>The "<literal>lower</literal>" property</title>
285
<indexterm role="2.4"><primary>GtkAdjustment:lower</primary></indexterm><programlisting> "lower" <link linkend="gdouble">gdouble</link> : Read / Write</programlisting>
287
The minimum value of the adjustment.</para>
290
</para><para>Default value: 0</para>
294
<refsect2><title><anchor id="GtkAdjustment--page-increment"/>The "<literal>page-increment</literal>" property</title>
295
<indexterm role="2.4"><primary>GtkAdjustment:page-increment</primary></indexterm><programlisting> "page-increment" <link linkend="gdouble">gdouble</link> : Read / Write</programlisting>
297
The page increment of the adjustment.</para>
300
</para><para>Default value: 0</para>
304
<refsect2><title><anchor id="GtkAdjustment--page-size"/>The "<literal>page-size</literal>" property</title>
305
<indexterm role="2.4"><primary>GtkAdjustment:page-size</primary></indexterm><programlisting> "page-size" <link linkend="gdouble">gdouble</link> : Read / Write</programlisting>
307
The page size of the adjustment.
308
Note that the page-size is irrelevant and should be set to zero
309
if the adjustment is used for a simple scalar value, e.g. in a
310
<link linkend="GtkSpinButton"><type>GtkSpinButton</type></link>.</para>
313
</para><para>Default value: 0</para>
317
<refsect2><title><anchor id="GtkAdjustment--step-increment"/>The "<literal>step-increment</literal>" property</title>
318
<indexterm role="2.4"><primary>GtkAdjustment:step-increment</primary></indexterm><programlisting> "step-increment" <link linkend="gdouble">gdouble</link> : Read / Write</programlisting>
320
The step increment of the adjustment.</para>
323
</para><para>Default value: 0</para>
327
<refsect2><title><anchor id="GtkAdjustment--upper"/>The "<literal>upper</literal>" property</title>
328
<indexterm role="2.4"><primary>GtkAdjustment:upper</primary></indexterm><programlisting> "upper" <link linkend="gdouble">gdouble</link> : Read / Write</programlisting>
330
The maximum value of the adjustment.
331
Note that values will be restricted by
332
<literal>upper - page-size</literal> if the page-size
333
property is nonzero.</para>
336
</para><para>Default value: 0</para>
340
<refsect2><title><anchor id="GtkAdjustment--value"/>The "<literal>value</literal>" property</title>
341
<indexterm role="2.4"><primary>GtkAdjustment:value</primary></indexterm><programlisting> "value" <link linkend="gdouble">gdouble</link> : Read / Write</programlisting>
343
The value of the adjustment.</para>
346
</para><para>Default value: 0</para>
353
<refsect1 role="signals">
354
<title role="signals.title">Signal Details</title>
355
<refsect2><title><anchor id="GtkAdjustment-changed"/>The "changed" signal</title>
356
<indexterm><primary>GtkAdjustment::changed</primary></indexterm><programlisting><link linkend="void">void</link> user_function (<link linkend="GtkAdjustment">GtkAdjustment</link> *adjustment,
357
<link linkend="gpointer">gpointer</link> user_data) : Run First / No Recursion</programlisting>
359
Emitted when one or more of the <link linkend="GtkAdjustment"><type>GtkAdjustment</type></link> fields have been changed,
360
other than the value field.
361
</para><variablelist role="params">
362
<varlistentry><term><parameter>adjustment</parameter> :</term>
363
<listitem><simpara>the object which received the signal.
365
</simpara></listitem></varlistentry>
366
<varlistentry><term><parameter>user_data</parameter> :</term>
367
<listitem><simpara>user data set when the signal handler was connected.</simpara></listitem></varlistentry>
368
</variablelist></refsect2><refsect2><title><anchor id="GtkAdjustment-value-changed"/>The "value-changed" signal</title>
369
<indexterm><primary>GtkAdjustment::value-changed</primary></indexterm><programlisting><link linkend="void">void</link> user_function (<link linkend="GtkAdjustment">GtkAdjustment</link> *adjustment,
370
<link linkend="gpointer">gpointer</link> user_data) : Run First / No Recursion</programlisting>
372
Emitted when the <link linkend="GtkAdjustment"><type>GtkAdjustment</type></link> value field has been changed.
373
</para><variablelist role="params">
374
<varlistentry><term><parameter>adjustment</parameter> :</term>
375
<listitem><simpara>the object which received the signal.
377
</simpara></listitem></varlistentry>
378
<varlistentry><term><parameter>user_data</parameter> :</term>
379
<listitem><simpara>user data set when the signal handler was connected.</simpara></listitem></varlistentry>
380
</variablelist></refsect2>