1 /* gmpc-progress.c generated by valac 0.12.0, the Vala compiler
2 * generated from gmpc-progress.vala, do not modify */
3
4 /* Gnome Music Player Client (GMPC)
5 * Copyright (C) 2004-2011 Qball Cow <qball@gmpclient.org>
6 * Project homepage: http://gmpclient.org/
7
8 * This program is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License as published by
10 * the Free Software Foundation; either version 2 of the License, or
11 * (at your option) any later version.
12
13 * This program is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 * GNU General Public License for more details.
17
18 * You should have received a copy of the GNU General Public License along
19 * with this program; if not, write to the Free Software Foundation, Inc.,
20 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
21 */
22
23 #include <glib.h>
24 #include <glib-object.h>
25 #include <gtk/gtk.h>
26 #include <gtktransition.h>
27 #include "gmpc-extras.h"
28 #include <gdk/gdk.h>
29 #include <stdlib.h>
30 #include <string.h>
31 #include <float.h>
32 #include <math.h>
33
34 #define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
35 #define _g_free0(var) (var = (g_free (var), NULL))
36
37 struct _GmpcProgressPrivate {
38 guint total;
39 guint current;
40 gboolean do_countdown;
41 GtkScale* scale;
42 GtkLabel* label;
43 gulong set_value_handler;
44 GtkWindow* tooltip;
45 GtkLabel* tooltip_label;
46 gint press;
47 };
48
49
50 static gpointer gmpc_progress_parent_class = NULL;
51
52 #define use_transition TRUE
53 #define GMPC_PROGRESS_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GMPC_TYPE_PROGRESS, GmpcProgressPrivate))
54 enum {
55 GMPC_PROGRESS_DUMMY_PROPERTY,
56 GMPC_PROGRESS_HIDE_TEXT
57 };
58 static gboolean gmpc_progress_tooltip_expose_event_callback (GmpcProgress* self, GtkWidget* tooltip, GdkEventExpose* event);
59 static gboolean gmpc_progress_enter_notify_event_callback (GmpcProgress* self, GtkWidget* scale, GdkEventCrossing* event);
60 static gboolean _gmpc_progress_tooltip_expose_event_callback_gtk_widget_expose_event (GtkWidget* _sender, GdkEventExpose* event, gpointer self);
61 static gboolean gmpc_progress_motion_notify_event_callback (GmpcProgress* self, GtkWidget* scale, GdkEventMotion* event);
62 static void gmpc_progress_value_changed (GmpcProgress* self, GtkScale* range);
63 static gboolean gmpc_progress_button_release_event_callback (GmpcProgress* self, GtkWidget* scale, GdkEventButton* event);
64 static gboolean gmpc_progress_button_press_event_callback (GmpcProgress* self, GdkEventButton* event, GtkScale* scale);
65 static gboolean gmpc_progress_scroll_event_callback (GmpcProgress* self, GtkWidget* scale, GdkEventScroll* event);
66 static GObject * gmpc_progress_constructor (GType type, guint n_construct_properties, GObjectConstructParam * construct_properties);
67 static gboolean _gmpc_progress_scroll_event_callback_gtk_widget_scroll_event (GtkWidget* _sender, GdkEventScroll* event, gpointer self);
68 static gboolean _gmpc_progress_button_release_event_callback_gtk_widget_button_release_event (GtkWidget* _sender, GdkEventButton* event, gpointer self);
69 static gboolean _gmpc_progress_motion_notify_event_callback_gtk_widget_motion_notify_event (GtkWidget* _sender, GdkEventMotion* event, gpointer self);
70 static gboolean _gmpc_progress_enter_notify_event_callback_gtk_widget_enter_notify_event (GtkWidget* _sender, GdkEventCrossing* event, gpointer self);
71 static gboolean _gmpc_progress_enter_notify_event_callback_gtk_widget_leave_notify_event (GtkWidget* _sender, GdkEventCrossing* event, gpointer self);
72 static void gmpc_progress_finalize (GObject* obj);
73 static void _vala_gmpc_progress_get_property (GObject * object, guint property_id, GValue * value, GParamSpec * pspec);
74 static void _vala_gmpc_progress_set_property (GObject * object, guint property_id, const GValue * value, GParamSpec * pspec);
75
76
77 /**
78 * Paint a nice box around it
79 */
gmpc_progress_tooltip_expose_event_callback(GmpcProgress * self,GtkWidget * tooltip,GdkEventExpose * event)80 static gboolean gmpc_progress_tooltip_expose_event_callback (GmpcProgress* self, GtkWidget* tooltip, GdkEventExpose* event) {
81 gboolean result = FALSE;
82 GtkStyle* _tmp0_ = NULL;
83 g_return_val_if_fail (self != NULL, FALSE);
84 g_return_val_if_fail (tooltip != NULL, FALSE);
85 _tmp0_ = gtk_widget_get_style (tooltip);
86 gtk_paint_box (_tmp0_, (*event).window, GTK_STATE_NORMAL, GTK_SHADOW_OUT, NULL, tooltip, "tooltip", 0, 0, tooltip->allocation.width, tooltip->allocation.height);
87 result = FALSE;
88 return result;
89 }
90
91
_gmpc_progress_tooltip_expose_event_callback_gtk_widget_expose_event(GtkWidget * _sender,GdkEventExpose * event,gpointer self)92 static gboolean _gmpc_progress_tooltip_expose_event_callback_gtk_widget_expose_event (GtkWidget* _sender, GdkEventExpose* event, gpointer self) {
93 gboolean result;
94 result = gmpc_progress_tooltip_expose_event_callback (self, _sender, event);
95 return result;
96 }
97
98
gmpc_progress_enter_notify_event_callback(GmpcProgress * self,GtkWidget * scale,GdkEventCrossing * event)99 static gboolean gmpc_progress_enter_notify_event_callback (GmpcProgress* self, GtkWidget* scale, GdkEventCrossing* event) {
100 gboolean result = FALSE;
101 g_return_val_if_fail (self != NULL, FALSE);
102 g_return_val_if_fail (scale != NULL, FALSE);
103 if ((*event).type == GDK_ENTER_NOTIFY) {
104 GtkWindow* _tmp0_ = NULL;
105 GtkLabel* _tmp1_ = NULL;
106 if (self->priv->tooltip != NULL) {
107 gtk_object_destroy ((GtkObject*) self->priv->tooltip);
108 }
109 _tmp0_ = (GtkWindow*) gtk_window_new (GTK_WINDOW_POPUP);
110 _g_object_unref0 (self->priv->tooltip);
111 self->priv->tooltip = g_object_ref_sink (_tmp0_);
112 _tmp1_ = (GtkLabel*) gtk_label_new ("test");
113 _g_object_unref0 (self->priv->tooltip_label);
114 self->priv->tooltip_label = g_object_ref_sink (_tmp1_);
115 gtk_container_add ((GtkContainer*) self->priv->tooltip, (GtkWidget*) self->priv->tooltip_label);
116 gtk_container_set_border_width ((GtkContainer*) self->priv->tooltip, (guint) 4);
117 gtk_widget_set_app_paintable ((GtkWidget*) self->priv->tooltip, TRUE);
118 g_signal_connect_object ((GtkWidget*) self->priv->tooltip, "expose-event", (GCallback) _gmpc_progress_tooltip_expose_event_callback_gtk_widget_expose_event, self, 0);
119 }
120 if ((*event).type == GDK_LEAVE_NOTIFY) {
121 if (self->priv->tooltip != NULL) {
122 gtk_object_destroy ((GtkObject*) self->priv->tooltip);
123 _g_object_unref0 (self->priv->tooltip);
124 self->priv->tooltip = NULL;
125 }
126 }
127 result = FALSE;
128 return result;
129 }
130
131
gmpc_progress_motion_notify_event_callback(GmpcProgress * self,GtkWidget * scale,GdkEventMotion * event)132 static gboolean gmpc_progress_motion_notify_event_callback (GmpcProgress* self, GtkWidget* scale, GdkEventMotion* event) {
133 gboolean result = FALSE;
134 g_return_val_if_fail (self != NULL, FALSE);
135 g_return_val_if_fail (scale != NULL, FALSE);
136 if ((*event).type == GDK_MOTION_NOTIFY) {
137 if (self->priv->tooltip != NULL) {
138 gint e_hour = 0;
139 gint e_minutes = 0;
140 gint e_seconds = 0;
141 gint t_hour;
142 gint t_minutes;
143 gint t_seconds;
144 gchar* _tmp0_;
145 gchar* a;
146 GtkStyle* _tmp1_ = NULL;
147 guint p;
148 guint _tmp2_ = 0U;
149 gchar* _tmp7_ = NULL;
150 gchar* _tmp8_;
151 gchar* _tmp9_;
152 t_hour = ((gint) self->priv->total) / 3600;
153 t_minutes = (((gint) self->priv->total) % 3600) / 60;
154 t_seconds = ((gint) self->priv->total) % 60;
155 _tmp0_ = g_strdup ("");
156 a = _tmp0_;
157 _tmp1_ = gtk_widget_get_style (scale);
158 p = (guint) (self->priv->total * ((*event).x / ((gdouble) (scale->allocation.width - _tmp1_->xthickness))));
159 if (p > self->priv->total) {
160 _tmp2_ = self->priv->total;
161 } else {
162 _tmp2_ = p;
163 }
164 p = _tmp2_;
165 if (self->priv->do_countdown) {
166 gchar* _tmp3_;
167 _tmp3_ = g_strconcat (a, "-", NULL);
168 _g_free0 (a);
169 a = _tmp3_;
170 p = self->priv->total - p;
171 }
172 e_hour = ((gint) p) / 3600;
173 e_minutes = ((gint) (p % 3600)) / 60;
174 e_seconds = (gint) (p % 60);
175 if (e_hour > 0) {
176 gchar* _tmp4_ = NULL;
177 gchar* _tmp5_;
178 gchar* _tmp6_;
179 _tmp4_ = g_strdup_printf ("%02i:", e_hour);
180 _tmp5_ = _tmp4_;
181 _tmp6_ = g_strconcat (a, _tmp5_, NULL);
182 _g_free0 (a);
183 a = _tmp6_;
184 _g_free0 (_tmp5_);
185 }
186 _tmp7_ = g_strdup_printf ("%02i:%02i", e_minutes, e_seconds);
187 _tmp8_ = _tmp7_;
188 _tmp9_ = g_strconcat (a, _tmp8_, NULL);
189 _g_free0 (a);
190 a = _tmp9_;
191 _g_free0 (_tmp8_);
192 if (self->priv->total > 0) {
193 gchar* _tmp10_;
194 gchar* _tmp14_ = NULL;
195 gchar* _tmp15_;
196 gchar* _tmp16_;
197 _tmp10_ = g_strconcat (a, " - ", NULL);
198 _g_free0 (a);
199 a = _tmp10_;
200 if (t_hour > 0) {
201 gchar* _tmp11_ = NULL;
202 gchar* _tmp12_;
203 gchar* _tmp13_;
204 _tmp11_ = g_strdup_printf ("%02i:", t_hour);
205 _tmp12_ = _tmp11_;
206 _tmp13_ = g_strconcat (a, _tmp12_, NULL);
207 _g_free0 (a);
208 a = _tmp13_;
209 _g_free0 (_tmp12_);
210 }
211 _tmp14_ = g_strdup_printf ("%02i:%02i", t_minutes, t_seconds);
212 _tmp15_ = _tmp14_;
213 _tmp16_ = g_strconcat (a, _tmp15_, NULL);
214 _g_free0 (a);
215 a = _tmp16_;
216 _g_free0 (_tmp15_);
217 }
218 if (self->priv->do_countdown) {
219 gint _tmp17_;
220 _tmp17_ = strlen (a);
221 gtk_label_set_width_chars (self->priv->tooltip_label, (gint) _tmp17_);
222 } else {
223 gint _tmp18_;
224 _tmp18_ = strlen (a);
225 gtk_label_set_width_chars (self->priv->tooltip_label, ((gint) _tmp18_) + 1);
226 }
227 gtk_label_set_text (self->priv->tooltip_label, a);
228 gtk_widget_show_all ((GtkWidget*) self->priv->tooltip);
229 gtk_widget_realize ((GtkWidget*) self->priv->tooltip);
230 gtk_window_move (self->priv->tooltip, ((gint) (*event).x_root) - (((GtkWidget*) self->priv->tooltip)->allocation.width / 2), ((gint) (*event).y_root) + ((GtkWidget*) self->priv->tooltip)->allocation.height);
231 _g_free0 (a);
232 }
233 }
234 result = FALSE;
235 return result;
236 }
237
238
gmpc_progress_value_changed(GmpcProgress * self,GtkScale * range)239 static void gmpc_progress_value_changed (GmpcProgress* self, GtkScale* range) {
240 g_return_if_fail (self != NULL);
241 g_return_if_fail (range != NULL);
242 if (self->priv->total > 0) {
243 gdouble _tmp0_;
244 guint seconds;
245 _tmp0_ = gtk_range_get_value ((GtkRange*) range);
246 seconds = (guint) (self->priv->total * _tmp0_);
247 if (seconds != self->priv->current) {
248 g_signal_emit_by_name (self, "seek-event", seconds);
249 }
250 }
251 }
252
253
gmpc_progress_button_release_event_callback(GmpcProgress * self,GtkWidget * scale,GdkEventButton * event)254 static gboolean gmpc_progress_button_release_event_callback (GmpcProgress* self, GtkWidget* scale, GdkEventButton* event) {
255 gboolean result = FALSE;
256 g_return_val_if_fail (self != NULL, FALSE);
257 g_return_val_if_fail (scale != NULL, FALSE);
258 self->priv->press--;
259 result = FALSE;
260 return result;
261 }
262
263
gmpc_progress_button_press_event_callback(GmpcProgress * self,GdkEventButton * event,GtkScale * scale)264 static gboolean gmpc_progress_button_press_event_callback (GmpcProgress* self, GdkEventButton* event, GtkScale* scale) {
265 gboolean result = FALSE;
266 g_return_val_if_fail (self != NULL, FALSE);
267 g_return_val_if_fail (scale != NULL, FALSE);
268 self->priv->press++;
269 if ((*event).type == GDK_BUTTON_PRESS) {
270 gboolean _tmp0_ = FALSE;
271 if ((*event).button == 3) {
272 guint cur;
273 guint tot;
274 self->priv->do_countdown = !self->priv->do_countdown;
275 cur = self->priv->current;
276 tot = self->priv->total;
277 self->priv->current = (guint) 0;
278 self->priv->total = self->priv->current;
279 gmpc_progress_set_time (self, tot, cur);
280 }
281 if ((*event).button == 2) {
282 _tmp0_ = TRUE;
283 } else {
284 _tmp0_ = (*event).button == 1;
285 }
286 if (_tmp0_) {
287 GtkStyle* _tmp1_ = NULL;
288 guint p;
289 guint _tmp2_ = 0U;
290 _tmp1_ = gtk_widget_get_style ((GtkWidget*) scale);
291 p = (guint) (self->priv->total * ((*event).x / ((gdouble) (((GtkWidget*) scale)->allocation.width - _tmp1_->xthickness))));
292 if (p > self->priv->total) {
293 _tmp2_ = self->priv->total;
294 } else {
295 _tmp2_ = p;
296 }
297 p = _tmp2_;
298 g_signal_emit_by_name (self, "seek-event", p);
299 result = TRUE;
300 return result;
301 }
302 } else {
303 if ((*event).type == GDK_2BUTTON_PRESS) {
304 gboolean _tmp3_ = FALSE;
305 if ((*event).button == 2) {
306 _tmp3_ = TRUE;
307 } else {
308 _tmp3_ = (*event).button == 1;
309 }
310 if (_tmp3_) {
311 GtkStyle* _tmp4_ = NULL;
312 guint p;
313 guint _tmp5_ = 0U;
314 _tmp4_ = gtk_widget_get_style ((GtkWidget*) scale);
315 p = (guint) (self->priv->total * ((*event).x / ((gdouble) (((GtkWidget*) scale)->allocation.width - _tmp4_->xthickness))));
316 if (p > self->priv->total) {
317 _tmp5_ = self->priv->total;
318 } else {
319 _tmp5_ = p;
320 }
321 p = _tmp5_;
322 g_signal_emit_by_name (self, "seek-event", p);
323 result = TRUE;
324 return result;
325 }
326 }
327 }
328 result = FALSE;
329 return result;
330 }
331
332
gmpc_progress_scroll_event_callback(GmpcProgress * self,GtkWidget * scale,GdkEventScroll * event)333 static gboolean gmpc_progress_scroll_event_callback (GmpcProgress* self, GtkWidget* scale, GdkEventScroll* event) {
334 gboolean result = FALSE;
335 g_return_val_if_fail (self != NULL, FALSE);
336 g_return_val_if_fail (scale != NULL, FALSE);
337 if ((*event).direction == GDK_SCROLL_UP) {
338 g_signal_emit_by_name (self, "seek-event", self->priv->current + 5);
339 } else {
340 if ((*event).direction == GDK_SCROLL_DOWN) {
341 g_signal_emit_by_name (self, "seek-event", self->priv->current - 5);
342 }
343 }
344 result = FALSE;
345 return result;
346 }
347
348
gmpc_progress_set_time(GmpcProgress * self,guint total,guint current)349 void gmpc_progress_set_time (GmpcProgress* self, guint total, guint current) {
350 gboolean _tmp0_ = FALSE;
351 g_return_if_fail (self != NULL);
352 if (self->priv->press > 0) {
353 return;
354 }
355 if (self->priv->total != total) {
356 gtk_widget_set_sensitive ((GtkWidget*) self->priv->scale, total > 0);
357 }
358 if (self->priv->total != total) {
359 _tmp0_ = TRUE;
360 } else {
361 _tmp0_ = self->priv->current != current;
362 }
363 if (_tmp0_) {
364 gboolean _tmp1_;
365 self->priv->total = total;
366 self->priv->current = current;
367 g_signal_handler_block (self->priv->scale, self->priv->set_value_handler);
368 if (self->priv->total > 0) {
369 gtk_range_set_value ((GtkRange*) self->priv->scale, self->priv->current / ((gdouble) self->priv->total));
370 } else {
371 gtk_range_set_value ((GtkRange*) self->priv->scale, 0.0);
372 }
373 g_signal_handler_unblock (self->priv->scale, self->priv->set_value_handler);
374 _tmp1_ = gmpc_progress_get_hide_text (self);
375 if (_tmp1_ == FALSE) {
376 gint e_hour = 0;
377 gint e_minutes = 0;
378 gint e_seconds = 0;
379 gint t_hour;
380 gint t_minutes;
381 gint t_seconds;
382 gchar* _tmp2_;
383 gchar* a;
384 guint p;
385 gchar* _tmp7_ = NULL;
386 gchar* _tmp8_;
387 gchar* _tmp9_;
388 t_hour = ((gint) self->priv->total) / 3600;
389 t_minutes = (((gint) self->priv->total) % 3600) / 60;
390 t_seconds = ((gint) self->priv->total) % 60;
391 _tmp2_ = g_strdup ("");
392 a = _tmp2_;
393 p = self->priv->current;
394 if (self->priv->do_countdown) {
395 gchar* _tmp3_;
396 p = self->priv->total - self->priv->current;
397 _tmp3_ = g_strconcat (a, "-", NULL);
398 _g_free0 (a);
399 a = _tmp3_;
400 }
401 e_hour = ((gint) p) / 3600;
402 e_minutes = ((gint) (p % 3600)) / 60;
403 e_seconds = (gint) (p % 60);
404 if (e_hour > 0) {
405 gchar* _tmp4_ = NULL;
406 gchar* _tmp5_;
407 gchar* _tmp6_;
408 _tmp4_ = g_strdup_printf ("%02i:", e_hour);
409 _tmp5_ = _tmp4_;
410 _tmp6_ = g_strconcat (a, _tmp5_, NULL);
411 _g_free0 (a);
412 a = _tmp6_;
413 _g_free0 (_tmp5_);
414 }
415 _tmp7_ = g_strdup_printf ("%02i:%02i", e_minutes, e_seconds);
416 _tmp8_ = _tmp7_;
417 _tmp9_ = g_strconcat (a, _tmp8_, NULL);
418 _g_free0 (a);
419 a = _tmp9_;
420 _g_free0 (_tmp8_);
421 if (self->priv->total > 0) {
422 gchar* _tmp10_;
423 gchar* _tmp14_ = NULL;
424 gchar* _tmp15_;
425 gchar* _tmp16_;
426 _tmp10_ = g_strconcat (a, " - ", NULL);
427 _g_free0 (a);
428 a = _tmp10_;
429 if (t_hour > 0) {
430 gchar* _tmp11_ = NULL;
431 gchar* _tmp12_;
432 gchar* _tmp13_;
433 _tmp11_ = g_strdup_printf ("%02i:", t_hour);
434 _tmp12_ = _tmp11_;
435 _tmp13_ = g_strconcat (a, _tmp12_, NULL);
436 _g_free0 (a);
437 a = _tmp13_;
438 _g_free0 (_tmp12_);
439 }
440 _tmp14_ = g_strdup_printf ("%02i:%02i", t_minutes, t_seconds);
441 _tmp15_ = _tmp14_;
442 _tmp16_ = g_strconcat (a, _tmp15_, NULL);
443 _g_free0 (a);
444 a = _tmp16_;
445 _g_free0 (_tmp15_);
446 }
447 if (self->priv->do_countdown) {
448 gint _tmp17_;
449 _tmp17_ = strlen (a);
450 gtk_label_set_width_chars (self->priv->label, (gint) _tmp17_);
451 } else {
452 gint _tmp18_;
453 _tmp18_ = strlen (a);
454 gtk_label_set_width_chars (self->priv->label, ((gint) _tmp18_) + 1);
455 }
456 gtk_label_set_text (self->priv->label, a);
457 _g_free0 (a);
458 }
459 }
460 }
461
462
gmpc_progress_construct(GType object_type)463 GmpcProgress* gmpc_progress_construct (GType object_type) {
464 GmpcProgress * self = NULL;
465 self = (GmpcProgress*) g_object_new (object_type, NULL);
466 return self;
467 }
468
469
gmpc_progress_new(void)470 GmpcProgress* gmpc_progress_new (void) {
471 return gmpc_progress_construct (GMPC_TYPE_PROGRESS);
472 }
473
474
gmpc_progress_get_hide_text(GmpcProgress * self)475 gboolean gmpc_progress_get_hide_text (GmpcProgress* self) {
476 gboolean result;
477 g_return_val_if_fail (self != NULL, FALSE);
478 result = self->_hide_text;
479 return result;
480 }
481
482
gmpc_progress_set_hide_text(GmpcProgress * self,gboolean value)483 void gmpc_progress_set_hide_text (GmpcProgress* self, gboolean value) {
484 g_return_if_fail (self != NULL);
485 self->_hide_text = value;
486 if (self->_hide_text) {
487 gtk_widget_hide ((GtkWidget*) self->priv->label);
488 } else {
489 gtk_widget_show ((GtkWidget*) self->priv->label);
490 }
491 g_object_notify ((GObject *) self, "hide-text");
492 }
493
494
_gmpc_progress_scroll_event_callback_gtk_widget_scroll_event(GtkWidget * _sender,GdkEventScroll * event,gpointer self)495 static gboolean _gmpc_progress_scroll_event_callback_gtk_widget_scroll_event (GtkWidget* _sender, GdkEventScroll* event, gpointer self) {
496 gboolean result;
497 result = gmpc_progress_scroll_event_callback (self, _sender, event);
498 return result;
499 }
500
501
_gmpc_progress_button_release_event_callback_gtk_widget_button_release_event(GtkWidget * _sender,GdkEventButton * event,gpointer self)502 static gboolean _gmpc_progress_button_release_event_callback_gtk_widget_button_release_event (GtkWidget* _sender, GdkEventButton* event, gpointer self) {
503 gboolean result;
504 result = gmpc_progress_button_release_event_callback (self, _sender, event);
505 return result;
506 }
507
508
_gmpc_progress_motion_notify_event_callback_gtk_widget_motion_notify_event(GtkWidget * _sender,GdkEventMotion * event,gpointer self)509 static gboolean _gmpc_progress_motion_notify_event_callback_gtk_widget_motion_notify_event (GtkWidget* _sender, GdkEventMotion* event, gpointer self) {
510 gboolean result;
511 result = gmpc_progress_motion_notify_event_callback (self, _sender, event);
512 return result;
513 }
514
515
_gmpc_progress_enter_notify_event_callback_gtk_widget_enter_notify_event(GtkWidget * _sender,GdkEventCrossing * event,gpointer self)516 static gboolean _gmpc_progress_enter_notify_event_callback_gtk_widget_enter_notify_event (GtkWidget* _sender, GdkEventCrossing* event, gpointer self) {
517 gboolean result;
518 result = gmpc_progress_enter_notify_event_callback (self, _sender, event);
519 return result;
520 }
521
522
_gmpc_progress_enter_notify_event_callback_gtk_widget_leave_notify_event(GtkWidget * _sender,GdkEventCrossing * event,gpointer self)523 static gboolean _gmpc_progress_enter_notify_event_callback_gtk_widget_leave_notify_event (GtkWidget* _sender, GdkEventCrossing* event, gpointer self) {
524 gboolean result;
525 result = gmpc_progress_enter_notify_event_callback (self, _sender, event);
526 return result;
527 }
528
529
gmpc_progress_constructor(GType type,guint n_construct_properties,GObjectConstructParam * construct_properties)530 static GObject * gmpc_progress_constructor (GType type, guint n_construct_properties, GObjectConstructParam * construct_properties) {
531 GObject * obj;
532 GObjectClass * parent_class;
533 GmpcProgress * self;
534 GtkHScale* _tmp0_ = NULL;
535 gulong _tmp1_;
536 GtkLabel* _tmp2_ = NULL;
537 parent_class = G_OBJECT_CLASS (gmpc_progress_parent_class);
538 obj = parent_class->constructor (type, n_construct_properties, construct_properties);
539 self = GMPC_PROGRESS (obj);
540 _tmp0_ = (GtkHScale*) gtk_hscale_new (NULL);
541 _g_object_unref0 (self->priv->scale);
542 self->priv->scale = (GtkScale*) g_object_ref_sink (_tmp0_);
543 gtk_range_set_range ((GtkRange*) self->priv->scale, 0.0, 1.0);
544 gtk_scale_set_draw_value (self->priv->scale, FALSE);
545 _tmp1_ = g_signal_connect_swapped (self->priv->scale, "value_changed", (GCallback) gmpc_progress_value_changed, self);
546 self->priv->set_value_handler = _tmp1_;
547 gtk_range_set_update_policy ((GtkRange*) self->priv->scale, GTK_UPDATE_DISCONTINUOUS);
548 gtk_widget_set_sensitive ((GtkWidget*) self->priv->scale, FALSE);
549 gtk_box_set_spacing ((GtkBox*) self, 0);
550 gtk_widget_add_events ((GtkWidget*) self->priv->scale, (gint) GDK_SCROLL_MASK);
551 gtk_widget_add_events ((GtkWidget*) self->priv->scale, (gint) GDK_POINTER_MOTION_MASK);
552 gtk_widget_add_events ((GtkWidget*) self->priv->scale, (gint) GDK_ENTER_NOTIFY_MASK);
553 gtk_widget_add_events ((GtkWidget*) self->priv->scale, (gint) GDK_LEAVE_NOTIFY_MASK);
554 g_signal_connect_object ((GtkWidget*) self->priv->scale, "scroll-event", (GCallback) _gmpc_progress_scroll_event_callback_gtk_widget_scroll_event, self, 0);
555 g_signal_connect_object (self->priv->scale, "button-press-event", (GCallback) gmpc_progress_button_press_event_callback, (GObject*) self, G_CONNECT_SWAPPED | G_CONNECT_AFTER);
556 g_signal_connect_object ((GtkWidget*) self->priv->scale, "button-release-event", (GCallback) _gmpc_progress_button_release_event_callback_gtk_widget_button_release_event, self, 0);
557 g_signal_connect_object ((GtkWidget*) self->priv->scale, "motion-notify-event", (GCallback) _gmpc_progress_motion_notify_event_callback_gtk_widget_motion_notify_event, self, 0);
558 g_signal_connect_object ((GtkWidget*) self->priv->scale, "enter-notify-event", (GCallback) _gmpc_progress_enter_notify_event_callback_gtk_widget_enter_notify_event, self, 0);
559 g_signal_connect_object ((GtkWidget*) self->priv->scale, "leave-notify-event", (GCallback) _gmpc_progress_enter_notify_event_callback_gtk_widget_leave_notify_event, self, 0);
560 _tmp2_ = (GtkLabel*) gtk_label_new ("");
561 _g_object_unref0 (self->priv->label);
562 self->priv->label = g_object_ref_sink (_tmp2_);
563 gtk_misc_set_alignment ((GtkMisc*) self->priv->label, 0.5f, 0.5f);
564 gtk_widget_set_no_show_all ((GtkWidget*) self->priv->label, TRUE);
565 gtk_box_pack_start ((GtkBox*) self, (GtkWidget*) self->priv->scale, TRUE, TRUE, (guint) 0);
566 gtk_box_pack_end ((GtkBox*) self, (GtkWidget*) self->priv->label, FALSE, FALSE, (guint) 0);
567 gtk_widget_show ((GtkWidget*) self->priv->scale);
568 gtk_widget_show ((GtkWidget*) self->priv->label);
569 gtk_widget_show ((GtkWidget*) self);
570 return obj;
571 }
572
573
gmpc_progress_class_init(GmpcProgressClass * klass)574 static void gmpc_progress_class_init (GmpcProgressClass * klass) {
575 gmpc_progress_parent_class = g_type_class_peek_parent (klass);
576 g_type_class_add_private (klass, sizeof (GmpcProgressPrivate));
577 G_OBJECT_CLASS (klass)->get_property = _vala_gmpc_progress_get_property;
578 G_OBJECT_CLASS (klass)->set_property = _vala_gmpc_progress_set_property;
579 G_OBJECT_CLASS (klass)->constructor = gmpc_progress_constructor;
580 G_OBJECT_CLASS (klass)->finalize = gmpc_progress_finalize;
581 g_object_class_install_property (G_OBJECT_CLASS (klass), GMPC_PROGRESS_HIDE_TEXT, g_param_spec_boolean ("hide-text", "hide-text", "hide-text", FALSE, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE | G_PARAM_WRITABLE));
582 g_signal_new ("seek_event", GMPC_TYPE_PROGRESS, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__UINT, G_TYPE_NONE, 1, G_TYPE_UINT);
583 }
584
585
gmpc_progress_instance_init(GmpcProgress * self)586 static void gmpc_progress_instance_init (GmpcProgress * self) {
587 self->priv = GMPC_PROGRESS_GET_PRIVATE (self);
588 self->priv->total = (guint) 0;
589 self->priv->current = (guint) 0;
590 self->priv->do_countdown = FALSE;
591 self->_hide_text = FALSE;
592 self->priv->scale = NULL;
593 self->priv->label = NULL;
594 self->priv->set_value_handler = (gulong) 0;
595 self->priv->tooltip = NULL;
596 self->priv->tooltip_label = NULL;
597 self->priv->press = 0;
598 }
599
600
gmpc_progress_finalize(GObject * obj)601 static void gmpc_progress_finalize (GObject* obj) {
602 GmpcProgress * self;
603 self = GMPC_PROGRESS (obj);
604 if (self->priv->tooltip != NULL) {
605 gtk_object_destroy ((GtkObject*) self->priv->tooltip);
606 _g_object_unref0 (self->priv->tooltip);
607 self->priv->tooltip = NULL;
608 }
609 _g_object_unref0 (self->priv->scale);
610 _g_object_unref0 (self->priv->label);
611 _g_object_unref0 (self->priv->tooltip);
612 _g_object_unref0 (self->priv->tooltip_label);
613 G_OBJECT_CLASS (gmpc_progress_parent_class)->finalize (obj);
614 }
615
616
gmpc_progress_get_type(void)617 GType gmpc_progress_get_type (void) {
618 static volatile gsize gmpc_progress_type_id__volatile = 0;
619 if (g_once_init_enter (&gmpc_progress_type_id__volatile)) {
620 static const GTypeInfo g_define_type_info = { sizeof (GmpcProgressClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) gmpc_progress_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (GmpcProgress), 0, (GInstanceInitFunc) gmpc_progress_instance_init, NULL };
621 GType gmpc_progress_type_id;
622 gmpc_progress_type_id = g_type_register_static (GTK_TYPE_VBOX, "GmpcProgress", &g_define_type_info, 0);
623 g_once_init_leave (&gmpc_progress_type_id__volatile, gmpc_progress_type_id);
624 }
625 return gmpc_progress_type_id__volatile;
626 }
627
628
_vala_gmpc_progress_get_property(GObject * object,guint property_id,GValue * value,GParamSpec * pspec)629 static void _vala_gmpc_progress_get_property (GObject * object, guint property_id, GValue * value, GParamSpec * pspec) {
630 GmpcProgress * self;
631 self = GMPC_PROGRESS (object);
632 switch (property_id) {
633 case GMPC_PROGRESS_HIDE_TEXT:
634 g_value_set_boolean (value, gmpc_progress_get_hide_text (self));
635 break;
636 default:
637 G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
638 break;
639 }
640 }
641
642
_vala_gmpc_progress_set_property(GObject * object,guint property_id,const GValue * value,GParamSpec * pspec)643 static void _vala_gmpc_progress_set_property (GObject * object, guint property_id, const GValue * value, GParamSpec * pspec) {
644 GmpcProgress * self;
645 self = GMPC_PROGRESS (object);
646 switch (property_id) {
647 case GMPC_PROGRESS_HIDE_TEXT:
648 gmpc_progress_set_hide_text (self, g_value_get_boolean (value));
649 break;
650 default:
651 G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
652 break;
653 }
654 }
655
656
657
658