comparison finch/libgnt/gntprogressbar.c @ 26638:cd7fa6306f85

Indentation changes, initialization changes etc.
author Sadrul Habib Chowdhury <imadil@gmail.com>
date Sun, 12 Apr 2009 18:58:27 +0000
parents 35430bc421c2
children a372ea58c3ae
comparison
equal deleted inserted replaced
26637:35430bc421c2 26638:cd7fa6306f85
25 25
26 #include <string.h> 26 #include <string.h>
27 27
28 typedef struct _GntProgressBarPrivate 28 typedef struct _GntProgressBarPrivate
29 { 29 {
30 gdouble fraction; 30 gdouble fraction;
31 gboolean show_value; 31 gboolean show_value;
32 GntProgressBarOrientation orientation; 32 GntProgressBarOrientation orientation;
33 } GntProgressBarPrivate; 33 } GntProgressBarPrivate;
34 34
35 struct _GntProgressBar
36 {
37 GntWidget parent;
38 #if !GLIB_CHECK_VERSION(2,4,0)
39 GntProgressBarPrivate priv;
40 #endif
41 };
42
43 #if GLIB_CHECK_VERSION(2,4,0)
35 #define GNT_PROGRESS_BAR_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GNT_TYPE_PROGRESS_BAR, GntProgressBarPrivate)) 44 #define GNT_PROGRESS_BAR_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GNT_TYPE_PROGRESS_BAR, GntProgressBarPrivate))
36 45 #else
46 #define GNT_PROGRESS_BAR_GET_PRIVATE(o) &(GNT_PROGRESS_BAR(o)->priv)
47 #endif
37 48
38 static GntWidgetClass *parent_class = NULL; 49 static GntWidgetClass *parent_class = NULL;
39 50
40 51
41 static void 52 static void
42 gnt_progress_bar_draw (GntWidget *widget) 53 gnt_progress_bar_draw (GntWidget *widget)
43 { 54 {
44 GntProgressBarPrivate *priv = GNT_PROGRESS_BAR_GET_PRIVATE (GNT_PROGRESS_BAR (widget)); 55 GntProgressBarPrivate *priv = GNT_PROGRESS_BAR_GET_PRIVATE (GNT_PROGRESS_BAR (widget));
45 gchar progress[6]; /* strlen("100 %") == 5 */ 56 gchar progress[8];
46 gint start, end, i, pos; 57 gint start, end, i, pos;
47 58
48 g_snprintf (progress, sizeof (progress), "%.0f %%", priv->fraction * 100); 59 g_snprintf (progress, sizeof (progress), "%.1f%%", priv->fraction * 100);
49 60
50 switch (priv->orientation) 61 switch (priv->orientation) {
51 { 62 case GNT_PROGRESS_LEFT_TO_RIGHT:
52 case GNT_PROGRESS_LEFT_TO_RIGHT: 63 case GNT_PROGRESS_RIGHT_TO_LEFT:
53 case GNT_PROGRESS_RIGHT_TO_LEFT: 64 start = (priv->orientation == GNT_PROGRESS_LEFT_TO_RIGHT ? 0 : (1.0 - priv->fraction) * widget->priv.width);
54 start = (priv->orientation == GNT_PROGRESS_LEFT_TO_RIGHT ? 0 : (1.0 - priv->fraction) * widget->priv.width); 65 end = (priv->orientation == GNT_PROGRESS_LEFT_TO_RIGHT ? widget->priv.width * priv->fraction : widget->priv.width);
55 end = (priv->orientation == GNT_PROGRESS_LEFT_TO_RIGHT ? widget->priv.width * priv->fraction : widget->priv.width); 66
56 67 /* background */
57 /* background */ 68 for (i = 0; i < widget->priv.height; i++)
58 for (i = 0; i < widget->priv.height; i++) 69 mvwhline (widget->window, i, 0, ' ' | gnt_color_pair (GNT_COLOR_HIGHLIGHT) | A_REVERSE, widget->priv.width);
59 mvwhline (widget->window, i, 0, ' ' | gnt_color_pair (GNT_COLOR_HIGHLIGHT) | A_REVERSE, widget->priv.width); 70
60 71 /* foreground */
61 /* foreground */ 72 for (i = 0; i < widget->priv.height; i++)
62 for (i = 0; i < widget->priv.height; i++) 73 mvwhline (widget->window, i, start, ' ' | gnt_color_pair (GNT_COLOR_HIGHLIGHT), end);
63 mvwhline (widget->window, i, start, ' ' | gnt_color_pair (GNT_COLOR_HIGHLIGHT), end); 74
64 75 /* text */
65 /* text */ 76 if (priv->show_value) {
66 if (priv->show_value) 77 for (i = 0; i < strlen(progress); i++) {
67 { 78 pos = widget->priv.width / 2 - strlen (progress) / 2 + i;
68 for (i = 0; i < strlen(progress); i++) 79 wattrset (widget->window, gnt_color_pair (GNT_COLOR_HIGHLIGHT) | ((pos >= start && pos <= end) ? A_NORMAL : A_REVERSE));
69 { 80 mvwprintw (widget->window, widget->priv.height / 2, pos, "%c", progress[i]);
70 pos = widget->priv.width / 2 - strlen (progress) / 2 + i; 81 }
71 wattrset (widget->window, gnt_color_pair (GNT_COLOR_HIGHLIGHT) | ((pos >= start && pos <= end) ? A_NORMAL : A_REVERSE)); 82 wattrset (widget->window, gnt_color_pair (GNT_COLOR_HIGHLIGHT));
72 mvwprintw (widget->window, widget->priv.height / 2, pos, "%c", progress[i]); 83 }
73 } 84
74 wattrset (widget->window, gnt_color_pair (GNT_COLOR_HIGHLIGHT)); 85 break;
75 } 86 case GNT_PROGRESS_TOP_TO_BOTTOM:
76 87 case GNT_PROGRESS_BOTTOM_TO_TOP:
77 break; 88 start = (priv->orientation == GNT_PROGRESS_TOP_TO_BOTTOM ? 0 : (1.0 - priv->fraction) * widget->priv.height);
78 case GNT_PROGRESS_TOP_TO_BOTTOM: 89 end = (priv->orientation == GNT_PROGRESS_TOP_TO_BOTTOM ? widget->priv.height * priv->fraction : widget->priv.height);
79 case GNT_PROGRESS_BOTTOM_TO_TOP: 90
80 start = (priv->orientation == GNT_PROGRESS_TOP_TO_BOTTOM ? 0 : (1.0 - priv->fraction) * widget->priv.height); 91 /* background */
81 end = (priv->orientation == GNT_PROGRESS_TOP_TO_BOTTOM ? widget->priv.height * priv->fraction : widget->priv.height); 92 for (i = 0; i < widget->priv.width; i++)
82 93 mvwvline (widget->window, 0, i, ' ' | gnt_color_pair (GNT_COLOR_HIGHLIGHT) | A_REVERSE, widget->priv.height);
83 /* background */ 94
84 for (i = 0; i < widget->priv.width; i++) 95 /* foreground */
85 mvwvline (widget->window, 0, i, ' ' | gnt_color_pair (GNT_COLOR_HIGHLIGHT) | A_REVERSE, widget->priv.height); 96 for (i = 0; i < widget->priv.width; i++)
86 97 mvwvline (widget->window, start, i, ' ' | gnt_color_pair (GNT_COLOR_HIGHLIGHT), end);
87 /* foreground */ 98
88 for (i = 0; i < widget->priv.width; i++) 99 /* text */
89 mvwvline (widget->window, start, i, ' ' | gnt_color_pair (GNT_COLOR_HIGHLIGHT), end); 100 if (priv->show_value) {
90 101 for (i = 0; i < strlen(progress); i++) {
91 /* text */ 102 pos = widget->priv.height / 2 - strlen (progress) / 2 + i;
92 if (priv->show_value) 103 wattrset (widget->window, gnt_color_pair (GNT_COLOR_HIGHLIGHT) | ((pos >= start && pos <= end) ? A_NORMAL : A_REVERSE));
93 { 104 mvwprintw (widget->window, pos, widget->priv.width / 2, "%c\n", progress[i]);
94 for (i = 0; i < strlen(progress); i++) 105 }
95 { 106 wattrset (widget->window, gnt_color_pair (GNT_COLOR_HIGHLIGHT));
96 pos = widget->priv.height / 2 - strlen (progress) / 2 + i; 107 }
97 wattrset (widget->window, gnt_color_pair (GNT_COLOR_HIGHLIGHT) | ((pos >= start && pos <= end) ? A_NORMAL : A_REVERSE)); 108
98 mvwprintw (widget->window, pos, widget->priv.width / 2, "%c\n", progress[i]); 109 break;
99 } 110 default:
100 wattrset (widget->window, gnt_color_pair (GNT_COLOR_HIGHLIGHT)); 111 g_assert_not_reached ();
101 } 112 }
102
103 break;
104 default:
105 g_assert_not_reached ();
106 }
107 } 113 }
108 114
109 static void 115 static void
110 gnt_progress_bar_size_request (GntWidget *widget) 116 gnt_progress_bar_size_request (GntWidget *widget)
111 { 117 {
112 gnt_widget_set_size (widget, widget->priv.minw, widget->priv.minh); 118 gnt_widget_set_size (widget, widget->priv.minw, widget->priv.minh);
113 } 119 }
114 120
115 static void 121 static void
116 gnt_progress_bar_class_init (gpointer klass, gpointer class_data) 122 gnt_progress_bar_class_init (gpointer klass, gpointer class_data)
117 { 123 {
118 GObjectClass *g_class = G_OBJECT_CLASS (klass); 124 GObjectClass *g_class = G_OBJECT_CLASS (klass);
119 125
120 parent_class = GNT_WIDGET_CLASS (klass); 126 parent_class = GNT_WIDGET_CLASS (klass);
121 127
122 g_type_class_add_private (g_class, sizeof (GntProgressBarPrivate)); 128 #if GLIB_CHECK_VERSION(2,4,0)
123 129 g_type_class_add_private (g_class, sizeof (GntProgressBarPrivate));
124 parent_class->draw = gnt_progress_bar_draw; 130 #endif
125 parent_class->size_request = gnt_progress_bar_size_request; 131
132 parent_class->draw = gnt_progress_bar_draw;
133 parent_class->size_request = gnt_progress_bar_size_request;
126 } 134 }
127 135
128 static void 136 static void
129 gnt_progress_bar_init (GTypeInstance *instance, gpointer g_class) 137 gnt_progress_bar_init (GTypeInstance *instance, gpointer g_class)
130 { 138 {
131 GntWidget *widget = GNT_WIDGET (instance); 139 GntWidget *widget = GNT_WIDGET (instance);
132 GntProgressBarPrivate *priv = GNT_PROGRESS_BAR_GET_PRIVATE (GNT_PROGRESS_BAR (widget)); 140 GntProgressBarPrivate *priv = GNT_PROGRESS_BAR_GET_PRIVATE (GNT_PROGRESS_BAR (widget));
133 141
134 gnt_widget_set_take_focus (widget, FALSE); 142 gnt_widget_set_take_focus (widget, FALSE);
135 GNT_WIDGET_SET_FLAGS (widget, GNT_WIDGET_NO_BORDER | GNT_WIDGET_NO_SHADOW); 143 GNT_WIDGET_SET_FLAGS (widget, GNT_WIDGET_NO_BORDER | GNT_WIDGET_NO_SHADOW | GNT_WIDGET_GROW_X);
136 144
137 widget->priv.minw = 1; 145 widget->priv.minw = 1;
138 widget->priv.minh = 1; 146 widget->priv.minh = 1;
139 147
140 priv->show_value = FALSE; 148 priv->show_value = TRUE;
141 } 149 }
142 150
143 GType 151 GType
144 gnt_progress_bar_get_type (void) 152 gnt_progress_bar_get_type (void)
145 { 153 {
146 static GType type = 0; 154 static GType type = 0;
147 155
148 if (type == 0) 156 if (type == 0) {
149 { 157 static const GTypeInfo info = {
150 static const GTypeInfo info = 158 sizeof (GntProgressBarClass),
151 { 159 NULL, /* base_init */
152 sizeof (GntProgressBarClass), 160 NULL, /* base_finalize */
153 NULL, /* base_init */ 161 gnt_progress_bar_class_init, /* class_init */
154 NULL, /* base_finalize */ 162 NULL, /* class_finalize */
155 gnt_progress_bar_class_init, /* class_init */ 163 NULL, /* class_data */
156 NULL, /* class_finalize */ 164 sizeof (GntProgressBar),
157 NULL, /* class_data */ 165 0, /* n_preallocs */
158 sizeof (GntProgressBar), 166 gnt_progress_bar_init, /* instance_init */
159 0, /* n_preallocs */ 167 NULL /* value_table */
160 gnt_progress_bar_init, /* instance_init */ 168 };
161 NULL /* value_table */ 169
162 }; 170 type = g_type_register_static (GNT_TYPE_WIDGET, "GntProgressBar", &info, 0);
163 171 }
164 type = g_type_register_static (GNT_TYPE_WIDGET, "GntProgressBar", &info, 0); 172
165 } 173 return type;
166
167 return type;
168 } 174 }
169 175
170 GntWidget * 176 GntWidget *
171 gnt_progress_bar_new (void) 177 gnt_progress_bar_new (void)
172 { 178 {
173 GntWidget *widget = g_object_new (GNT_TYPE_PROGRESS_BAR, NULL); 179 GntWidget *widget = g_object_new (GNT_TYPE_PROGRESS_BAR, NULL);
174 return widget; 180 return widget;
175 } 181 }
176 182
177 void 183 void
178 gnt_progress_bar_set_fraction (GntProgressBar *pbar, gdouble fraction) 184 gnt_progress_bar_set_fraction (GntProgressBar *pbar, gdouble fraction)
179 { 185 {
180 GntProgressBarPrivate *priv = GNT_PROGRESS_BAR_GET_PRIVATE (pbar); 186 GntProgressBarPrivate *priv = GNT_PROGRESS_BAR_GET_PRIVATE (pbar);
181 187
182 if (fraction > 1.0) 188 if (fraction > 1.0)
183 priv->fraction = 1.0; 189 priv->fraction = 1.0;
184 else if (fraction < 0.0) 190 else if (fraction < 0.0)
185 priv->fraction = 0.0; 191 priv->fraction = 0.0;
186 else 192 else
187 priv->fraction = fraction; 193 priv->fraction = fraction;
188 194
189 gnt_progress_bar_draw (GNT_WIDGET (pbar)); 195 if ((GNT_WIDGET_FLAGS(pbar) & GNT_WIDGET_MAPPED))
190 gnt_widget_queue_update (GNT_WIDGET (pbar)); 196 gnt_widget_draw(GNT_WIDGET(pbar));
191 } 197 }
192 198
193 void 199 void
194 gnt_progress_bar_set_orientation (GntProgressBar *pbar, 200 gnt_progress_bar_set_orientation (GntProgressBar *pbar,
195 GntProgressBarOrientation orientation) 201 GntProgressBarOrientation orientation)
196 { 202 {
197 GntProgressBarPrivate *priv = GNT_PROGRESS_BAR_GET_PRIVATE (pbar); 203 GntProgressBarPrivate *priv = GNT_PROGRESS_BAR_GET_PRIVATE (pbar);
198 priv->orientation = orientation; 204 priv->orientation = orientation;
199 205 if (orientation == GNT_PROGRESS_LEFT_TO_RIGHT ||
200 gnt_progress_bar_draw (GNT_WIDGET (pbar)); 206 orientation == GNT_PROGRESS_RIGHT_TO_LEFT) {
201 gnt_widget_queue_update (GNT_WIDGET (pbar)); 207 GNT_WIDGET_SET_FLAGS(pbar, GNT_WIDGET_GROW_X);
208 GNT_WIDGET_UNSET_FLAGS(pbar, GNT_WIDGET_GROW_Y);
209 } else {
210 GNT_WIDGET_UNSET_FLAGS(pbar, GNT_WIDGET_GROW_X);
211 GNT_WIDGET_SET_FLAGS(pbar, GNT_WIDGET_GROW_Y);
212 }
213
214 if ((GNT_WIDGET_FLAGS(pbar) & GNT_WIDGET_MAPPED))
215 gnt_widget_draw(GNT_WIDGET(pbar));
202 } 216 }
203 217
204 void 218 void
205 gnt_progress_bar_set_show_progress (GntProgressBar *pbar, gboolean show) 219 gnt_progress_bar_set_show_progress (GntProgressBar *pbar, gboolean show)
206 { 220 {
207 GntProgressBarPrivate *priv = GNT_PROGRESS_BAR_GET_PRIVATE (pbar); 221 GntProgressBarPrivate *priv = GNT_PROGRESS_BAR_GET_PRIVATE (pbar);
208 priv->show_value = show; 222 priv->show_value = show;
209 } 223 }
210 224
211 gdouble 225 gdouble
212 gnt_progress_bar_get_fraction (GntProgressBar *pbar) 226 gnt_progress_bar_get_fraction (GntProgressBar *pbar)
213 { 227 {
214 GntProgressBarPrivate *priv = GNT_PROGRESS_BAR_GET_PRIVATE (pbar); 228 GntProgressBarPrivate *priv = GNT_PROGRESS_BAR_GET_PRIVATE (pbar);
215 return priv->fraction; 229 return priv->fraction;
216 } 230 }
217 231
218 GntProgressBarOrientation 232 GntProgressBarOrientation
219 gnt_progress_bar_get_orientation (GntProgressBar *pbar) 233 gnt_progress_bar_get_orientation (GntProgressBar *pbar)
220 { 234 {
221 GntProgressBarPrivate *priv = GNT_PROGRESS_BAR_GET_PRIVATE (pbar); 235 GntProgressBarPrivate *priv = GNT_PROGRESS_BAR_GET_PRIVATE (pbar);
222 return priv->orientation; 236 return priv->orientation;
223 } 237 }
224 238
225 gboolean 239 gboolean
226 gnt_progress_bar_get_show_progress (GntProgressBar *pbar) 240 gnt_progress_bar_get_show_progress (GntProgressBar *pbar)
227 { 241 {
228 GntProgressBarPrivate *priv = GNT_PROGRESS_BAR_GET_PRIVATE (pbar); 242 GntProgressBarPrivate *priv = GNT_PROGRESS_BAR_GET_PRIVATE (pbar);
229 return priv->show_value; 243 return priv->show_value;
230 } 244 }
231 245