annotate finch/libgnt/gntslider.c @ 27005:cf373257effb

Don't do IPv6 AAAA lookups if there is no IPv6 address configured on this machine. From the getaddrinfo() man page: "If hints.ai_flags includes the AI_ADDRCONFIG flag, then IPv4 addresses are returned in the list pointed to by result only if the local system has at least one IPv4 address configured, and IPv6 addresses are only returned if the local system has at least one IPv6 address configured." It's my understanding that this flag is non-standard (a GNUism perhaps), which is why it's surrounded in #ifdefs.
author Mark Doliner <mark@kingant.net>
date Wed, 20 May 2009 17:24:52 +0000
parents 9187d331aebe
children 88d889b54df4
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
18352
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
1 /**
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
2 * GNT - The GLib Ncurses Toolkit
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
3 *
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
4 * GNT is the legal property of its developers, whose names are too numerous
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
5 * to list here. Please refer to the COPYRIGHT file distributed with this
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
6 * source distribution.
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
7 *
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
8 * This library is free software; you can redistribute it and/or modify
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
9 * it under the terms of the GNU General Public License as published by
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
10 * the Free Software Foundation; either version 2 of the License, or
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
11 * (at your option) any later version.
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
12 *
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
13 * This program is distributed in the hope that it will be useful,
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
16 * GNU General Public License for more details.
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
17 *
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
18 * You should have received a copy of the GNU General Public License
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
19 * along with this program; if not, write to the Free Software
19680
44b4e8bd759b The FSF changed its address a while ago; our files were out of date.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19410
diff changeset
20 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
18352
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
21 */
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
22
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
23 #include "gntcolors.h"
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
24 #include "gntkeys.h"
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
25 #include "gntslider.h"
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
26 #include "gntstyle.h"
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
27
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
28 enum
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
29 {
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
30 SIG_VALUE_CHANGED,
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
31 SIGS,
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
32 };
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
33
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
34 static guint signals[SIGS] = { 0 };
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
35
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
36 static GntWidgetClass *parent_class = NULL;
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
37
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
38 /* returns TRUE if the value was changed */
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
39 static gboolean
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
40 sanitize_value(GntSlider *slider)
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
41 {
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
42 if (slider->current < slider->min)
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
43 slider->current = slider->min;
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
44 else if (slider->current > slider->max)
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
45 slider->current = slider->max;
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
46 else
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
47 return FALSE;
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
48 return TRUE;
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
49 }
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
50
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
51 static void
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
52 redraw_slider(GntSlider *slider)
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
53 {
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
54 GntWidget *widget = GNT_WIDGET(slider);
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
55 if (GNT_WIDGET_IS_FLAG_SET(widget, GNT_WIDGET_MAPPED))
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
56 gnt_widget_draw(widget);
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
57 }
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
58
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
59 static void
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
60 slider_value_changed(GntSlider *slider)
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
61 {
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
62 g_signal_emit(slider, signals[SIG_VALUE_CHANGED], 0, slider->current);
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
63 }
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
64
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
65 static void
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
66 gnt_slider_draw(GntWidget *widget)
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
67 {
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
68 GntSlider *slider = GNT_SLIDER(widget);
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
69 int attr = 0;
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
70 int position, size = 0;
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
71
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
72 if (slider->vertical)
18354
d5d1c12a5ad4 Remove some duplication, and make the slider a little nicer.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18352
diff changeset
73 size = widget->priv.height;
18352
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
74 else
18354
d5d1c12a5ad4 Remove some duplication, and make the slider a little nicer.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18352
diff changeset
75 size = widget->priv.width;
18352
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
76
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
77 if (gnt_widget_has_focus(widget))
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
78 attr |= GNT_COLOR_HIGHLIGHT;
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
79 else
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
80 attr |= GNT_COLOR_HIGHLIGHT_D;
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
81
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
82 if (slider->max != slider->min)
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
83 position = ((size - 1) * (slider->current - slider->min)) / (slider->max - slider->min);
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
84 else
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
85 position = 0;
18354
d5d1c12a5ad4 Remove some duplication, and make the slider a little nicer.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18352
diff changeset
86 if (slider->vertical) {
21250
9187d331aebe Add gnt_color_pair, which will replace color codes with 'appropriate' text
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 19680
diff changeset
87 mvwvline(widget->window, size-position, 0, ACS_VLINE | gnt_color_pair(GNT_COLOR_NORMAL) | A_BOLD,
18354
d5d1c12a5ad4 Remove some duplication, and make the slider a little nicer.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18352
diff changeset
88 position);
21250
9187d331aebe Add gnt_color_pair, which will replace color codes with 'appropriate' text
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 19680
diff changeset
89 mvwvline(widget->window, 0, 0, ACS_VLINE | gnt_color_pair(GNT_COLOR_NORMAL),
18354
d5d1c12a5ad4 Remove some duplication, and make the slider a little nicer.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18352
diff changeset
90 size-position);
d5d1c12a5ad4 Remove some duplication, and make the slider a little nicer.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18352
diff changeset
91 } else {
21250
9187d331aebe Add gnt_color_pair, which will replace color codes with 'appropriate' text
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 19680
diff changeset
92 mvwhline(widget->window, 0, 0, ACS_HLINE | gnt_color_pair(GNT_COLOR_NORMAL) | A_BOLD,
18354
d5d1c12a5ad4 Remove some duplication, and make the slider a little nicer.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18352
diff changeset
93 position);
21250
9187d331aebe Add gnt_color_pair, which will replace color codes with 'appropriate' text
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 19680
diff changeset
94 mvwhline(widget->window, 0, position, ACS_HLINE | gnt_color_pair(GNT_COLOR_NORMAL),
18354
d5d1c12a5ad4 Remove some duplication, and make the slider a little nicer.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18352
diff changeset
95 size - position);
d5d1c12a5ad4 Remove some duplication, and make the slider a little nicer.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18352
diff changeset
96 }
d5d1c12a5ad4 Remove some duplication, and make the slider a little nicer.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18352
diff changeset
97
18352
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
98 mvwaddch(widget->window,
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
99 slider->vertical ? (size - position - 1) : 0,
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
100 slider->vertical ? 0 : position,
21250
9187d331aebe Add gnt_color_pair, which will replace color codes with 'appropriate' text
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 19680
diff changeset
101 ACS_CKBOARD | gnt_color_pair(attr));
18352
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
102 }
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
103
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
104 static void
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
105 gnt_slider_size_request(GntWidget *widget)
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
106 {
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
107 if (GNT_SLIDER(widget)->vertical) {
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
108 widget->priv.width = 1;
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
109 widget->priv.height = 5;
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
110 } else {
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
111 widget->priv.width = 5;
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
112 widget->priv.height = 1;
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
113 }
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
114 }
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
115
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
116 static void
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
117 gnt_slider_map(GntWidget *widget)
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
118 {
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
119 if (widget->priv.width == 0 || widget->priv.height == 0)
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
120 gnt_widget_size_request(widget);
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
121 GNTDEBUG;
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
122 }
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
123
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
124 static gboolean
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
125 step_back(GntBindable *bindable, GList *null)
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
126 {
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
127 GntSlider *slider = GNT_SLIDER(bindable);
18354
d5d1c12a5ad4 Remove some duplication, and make the slider a little nicer.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18352
diff changeset
128 gnt_slider_advance_step(slider, -1);
18352
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
129 return TRUE;
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
130 }
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
131
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
132 static gboolean
19410
3650db1f02d3 Have small and large steps for the slider.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18515
diff changeset
133 small_step_back(GntBindable *bindable, GList *null)
3650db1f02d3 Have small and large steps for the slider.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18515
diff changeset
134 {
3650db1f02d3 Have small and large steps for the slider.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18515
diff changeset
135 GntSlider *slider = GNT_SLIDER(bindable);
3650db1f02d3 Have small and large steps for the slider.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18515
diff changeset
136 gnt_slider_set_value(slider, slider->current - slider->smallstep);
3650db1f02d3 Have small and large steps for the slider.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18515
diff changeset
137 return TRUE;
3650db1f02d3 Have small and large steps for the slider.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18515
diff changeset
138 }
3650db1f02d3 Have small and large steps for the slider.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18515
diff changeset
139
3650db1f02d3 Have small and large steps for the slider.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18515
diff changeset
140 static gboolean
3650db1f02d3 Have small and large steps for the slider.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18515
diff changeset
141 large_step_back(GntBindable *bindable, GList *null)
3650db1f02d3 Have small and large steps for the slider.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18515
diff changeset
142 {
3650db1f02d3 Have small and large steps for the slider.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18515
diff changeset
143 GntSlider *slider = GNT_SLIDER(bindable);
3650db1f02d3 Have small and large steps for the slider.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18515
diff changeset
144 gnt_slider_set_value(slider, slider->current - slider->largestep);
3650db1f02d3 Have small and large steps for the slider.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18515
diff changeset
145 return TRUE;
3650db1f02d3 Have small and large steps for the slider.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18515
diff changeset
146 }
3650db1f02d3 Have small and large steps for the slider.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18515
diff changeset
147
3650db1f02d3 Have small and large steps for the slider.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18515
diff changeset
148 static gboolean
18352
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
149 step_forward(GntBindable *bindable, GList *list)
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
150 {
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
151 GntSlider *slider = GNT_SLIDER(bindable);
18354
d5d1c12a5ad4 Remove some duplication, and make the slider a little nicer.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18352
diff changeset
152 gnt_slider_advance_step(slider, 1);
18352
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
153 return TRUE;
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
154 }
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
155
19410
3650db1f02d3 Have small and large steps for the slider.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18515
diff changeset
156 static gboolean
3650db1f02d3 Have small and large steps for the slider.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18515
diff changeset
157 small_step_forward(GntBindable *bindable, GList *null)
3650db1f02d3 Have small and large steps for the slider.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18515
diff changeset
158 {
3650db1f02d3 Have small and large steps for the slider.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18515
diff changeset
159 GntSlider *slider = GNT_SLIDER(bindable);
3650db1f02d3 Have small and large steps for the slider.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18515
diff changeset
160 gnt_slider_set_value(slider, slider->current + slider->smallstep);
3650db1f02d3 Have small and large steps for the slider.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18515
diff changeset
161 return TRUE;
3650db1f02d3 Have small and large steps for the slider.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18515
diff changeset
162 }
3650db1f02d3 Have small and large steps for the slider.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18515
diff changeset
163
3650db1f02d3 Have small and large steps for the slider.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18515
diff changeset
164 static gboolean
3650db1f02d3 Have small and large steps for the slider.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18515
diff changeset
165 large_step_forward(GntBindable *bindable, GList *null)
3650db1f02d3 Have small and large steps for the slider.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18515
diff changeset
166 {
3650db1f02d3 Have small and large steps for the slider.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18515
diff changeset
167 GntSlider *slider = GNT_SLIDER(bindable);
3650db1f02d3 Have small and large steps for the slider.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18515
diff changeset
168 gnt_slider_set_value(slider, slider->current + slider->largestep);
3650db1f02d3 Have small and large steps for the slider.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18515
diff changeset
169 return TRUE;
3650db1f02d3 Have small and large steps for the slider.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18515
diff changeset
170 }
3650db1f02d3 Have small and large steps for the slider.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18515
diff changeset
171
3650db1f02d3 Have small and large steps for the slider.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18515
diff changeset
172 static gboolean
3650db1f02d3 Have small and large steps for the slider.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18515
diff changeset
173 move_min_value(GntBindable *bindable, GList *null)
3650db1f02d3 Have small and large steps for the slider.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18515
diff changeset
174 {
3650db1f02d3 Have small and large steps for the slider.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18515
diff changeset
175 GntSlider *slider = GNT_SLIDER(bindable);
3650db1f02d3 Have small and large steps for the slider.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18515
diff changeset
176 gnt_slider_set_value(slider, slider->min);
3650db1f02d3 Have small and large steps for the slider.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18515
diff changeset
177 return TRUE;
3650db1f02d3 Have small and large steps for the slider.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18515
diff changeset
178 }
3650db1f02d3 Have small and large steps for the slider.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18515
diff changeset
179
3650db1f02d3 Have small and large steps for the slider.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18515
diff changeset
180 static gboolean
3650db1f02d3 Have small and large steps for the slider.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18515
diff changeset
181 move_max_value(GntBindable *bindable, GList *null)
3650db1f02d3 Have small and large steps for the slider.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18515
diff changeset
182 {
3650db1f02d3 Have small and large steps for the slider.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18515
diff changeset
183 GntSlider *slider = GNT_SLIDER(bindable);
3650db1f02d3 Have small and large steps for the slider.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18515
diff changeset
184 gnt_slider_set_value(slider, slider->max);
3650db1f02d3 Have small and large steps for the slider.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18515
diff changeset
185 return TRUE;
3650db1f02d3 Have small and large steps for the slider.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18515
diff changeset
186 }
3650db1f02d3 Have small and large steps for the slider.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18515
diff changeset
187
18352
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
188 static void
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
189 gnt_slider_class_init(GntSliderClass *klass)
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
190 {
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
191 GntBindableClass *bindable = GNT_BINDABLE_CLASS(klass);
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
192 parent_class = GNT_WIDGET_CLASS(klass);
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
193 parent_class->draw = gnt_slider_draw;
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
194 parent_class->map = gnt_slider_map;
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
195 parent_class->size_request = gnt_slider_size_request;
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
196
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
197 klass->changed = NULL;
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
198
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
199 signals[SIG_VALUE_CHANGED] =
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
200 g_signal_new("changed",
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
201 G_TYPE_FROM_CLASS(klass),
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
202 G_SIGNAL_RUN_LAST,
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
203 G_STRUCT_OFFSET(GntSliderClass, changed),
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
204 NULL, NULL,
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
205 g_cclosure_marshal_VOID__INT,
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
206 G_TYPE_NONE, 1, G_TYPE_INT);
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
207
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
208 gnt_bindable_class_register_action(bindable, "step-backward", step_back, GNT_KEY_LEFT, NULL);
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
209 gnt_bindable_register_binding(bindable, "step-backward", GNT_KEY_DOWN, NULL);
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
210 gnt_bindable_class_register_action(bindable, "step-forward", step_forward, GNT_KEY_RIGHT, NULL);
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
211 gnt_bindable_register_binding(bindable, "step-forward", GNT_KEY_UP, NULL);
19410
3650db1f02d3 Have small and large steps for the slider.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18515
diff changeset
212 gnt_bindable_class_register_action(bindable, "small-step-backward", small_step_back, GNT_KEY_CTRL_LEFT, NULL);
3650db1f02d3 Have small and large steps for the slider.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18515
diff changeset
213 gnt_bindable_register_binding(bindable, "small-step-backward", GNT_KEY_CTRL_DOWN, NULL);
3650db1f02d3 Have small and large steps for the slider.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18515
diff changeset
214 gnt_bindable_class_register_action(bindable, "small-step-forward", small_step_forward, GNT_KEY_CTRL_RIGHT, NULL);
3650db1f02d3 Have small and large steps for the slider.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18515
diff changeset
215 gnt_bindable_register_binding(bindable, "small-step-forward", GNT_KEY_CTRL_UP, NULL);
3650db1f02d3 Have small and large steps for the slider.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18515
diff changeset
216 gnt_bindable_class_register_action(bindable, "large-step-backward", large_step_back, GNT_KEY_PGDOWN, NULL);
3650db1f02d3 Have small and large steps for the slider.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18515
diff changeset
217 gnt_bindable_class_register_action(bindable, "large-step-forward", large_step_forward, GNT_KEY_PGUP, NULL);
3650db1f02d3 Have small and large steps for the slider.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18515
diff changeset
218 gnt_bindable_class_register_action(bindable, "min-value", move_min_value, GNT_KEY_HOME, NULL);
3650db1f02d3 Have small and large steps for the slider.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18515
diff changeset
219 gnt_bindable_class_register_action(bindable, "max-value", move_max_value, GNT_KEY_END, NULL);
18352
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
220
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
221 gnt_style_read_actions(G_OBJECT_CLASS_TYPE(klass), GNT_BINDABLE_CLASS(klass));
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
222 }
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
223
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
224 static void
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
225 gnt_slider_init(GTypeInstance *instance, gpointer class)
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
226 {
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
227 GntWidget *widget = GNT_WIDGET(instance);
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
228 GNT_WIDGET_SET_FLAGS(widget, GNT_WIDGET_NO_SHADOW | GNT_WIDGET_NO_BORDER | GNT_WIDGET_CAN_TAKE_FOCUS);
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
229 widget->priv.minw = 1;
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
230 widget->priv.minh = 1;
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
231 GNTDEBUG;
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
232 }
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
233
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
234 /******************************************************************************
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
235 * GntSlider API
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
236 *****************************************************************************/
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
237 GType
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
238 gnt_slider_get_gtype(void)
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
239 {
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
240 static GType type = 0;
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
241
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
242 if(type == 0)
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
243 {
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
244 static const GTypeInfo info = {
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
245 sizeof(GntSliderClass),
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
246 NULL, /* base_init */
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
247 NULL, /* base_finalize */
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
248 (GClassInitFunc)gnt_slider_class_init,
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
249 NULL, /* class_finalize */
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
250 NULL, /* class_data */
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
251 sizeof(GntSlider),
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
252 0, /* n_preallocs */
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
253 gnt_slider_init, /* instance_init */
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
254 NULL /* value_table */
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
255 };
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
256
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
257 type = g_type_register_static(GNT_TYPE_WIDGET,
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
258 "GntSlider",
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
259 &info, 0);
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
260 }
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
261
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
262 return type;
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
263 }
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
264
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
265 GntWidget *gnt_slider_new(gboolean vertical, int max, int min)
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
266 {
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
267 GntWidget *widget = g_object_new(GNT_TYPE_SLIDER, NULL);
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
268 GntSlider *slider = GNT_SLIDER(widget);
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
269
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
270 slider->vertical = vertical;
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
271
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
272 if (vertical) {
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
273 GNT_WIDGET_SET_FLAGS(widget, GNT_WIDGET_GROW_Y);
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
274 } else {
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
275 GNT_WIDGET_SET_FLAGS(widget, GNT_WIDGET_GROW_X);
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
276 }
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
277
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
278 gnt_slider_set_range(slider, max, min);
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
279 slider->step = 1;
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
280
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
281 return widget;
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
282 }
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
283
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
284 void gnt_slider_set_value(GntSlider *slider, int value)
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
285 {
19410
3650db1f02d3 Have small and large steps for the slider.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18515
diff changeset
286 int old;
18352
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
287 if (slider->current == value)
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
288 return;
19410
3650db1f02d3 Have small and large steps for the slider.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18515
diff changeset
289 old = slider->current;
18352
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
290 slider->current = value;
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
291 sanitize_value(slider);
19410
3650db1f02d3 Have small and large steps for the slider.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18515
diff changeset
292 if (old == slider->current)
3650db1f02d3 Have small and large steps for the slider.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18515
diff changeset
293 return;
18352
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
294 redraw_slider(slider);
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
295 slider_value_changed(slider);
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
296 }
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
297
18515
3b19fa8d0177 Add _get_value for slider.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18354
diff changeset
298 int gnt_slider_get_value(GntSlider *slider)
3b19fa8d0177 Add _get_value for slider.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18354
diff changeset
299 {
3b19fa8d0177 Add _get_value for slider.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18354
diff changeset
300 return slider->current;
3b19fa8d0177 Add _get_value for slider.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18354
diff changeset
301 }
3b19fa8d0177 Add _get_value for slider.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18354
diff changeset
302
18352
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
303 int gnt_slider_advance_step(GntSlider *slider, int steps)
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
304 {
19410
3650db1f02d3 Have small and large steps for the slider.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18515
diff changeset
305 gnt_slider_set_value(slider, slider->current + steps * slider->step);
18352
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
306 return slider->current;
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
307 }
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
308
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
309 void gnt_slider_set_step(GntSlider *slider, int step)
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
310 {
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
311 slider->step = step;
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
312 }
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
313
19410
3650db1f02d3 Have small and large steps for the slider.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18515
diff changeset
314 void gnt_slider_set_small_step(GntSlider *slider, int step)
3650db1f02d3 Have small and large steps for the slider.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18515
diff changeset
315 {
3650db1f02d3 Have small and large steps for the slider.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18515
diff changeset
316 slider->smallstep = step;
3650db1f02d3 Have small and large steps for the slider.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18515
diff changeset
317 }
3650db1f02d3 Have small and large steps for the slider.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18515
diff changeset
318
3650db1f02d3 Have small and large steps for the slider.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18515
diff changeset
319 void gnt_slider_set_large_step(GntSlider *slider, int step)
3650db1f02d3 Have small and large steps for the slider.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18515
diff changeset
320 {
3650db1f02d3 Have small and large steps for the slider.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18515
diff changeset
321 slider->largestep = step;
3650db1f02d3 Have small and large steps for the slider.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18515
diff changeset
322 }
3650db1f02d3 Have small and large steps for the slider.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18515
diff changeset
323
18352
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
324 void gnt_slider_set_range(GntSlider *slider, int max, int min)
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
325 {
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
326 slider->max = MAX(max, min);
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
327 slider->min = MIN(max, min);
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
328 sanitize_value(slider);
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
329 }
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
330
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
331 static void
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
332 update_label(GntSlider *slider, int current_value, GntLabel *label)
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
333 {
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
334 char value[256];
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
335 g_snprintf(value, sizeof(value), "%d/%d", current_value, slider->max);
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
336 gnt_label_set_text(label, value);
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
337 }
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
338
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
339 void gnt_slider_reflect_label(GntSlider *slider, GntLabel *label)
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
340 {
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
341 g_signal_connect(G_OBJECT(slider), "changed", G_CALLBACK(update_label), label);
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
342 }
f1dbe3151051 Add a slider widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
343