summaryrefslogtreecommitdiff
path: root/plugins/gtkui
diff options
context:
space:
mode:
authorGravatar Alexey Yakovenko <waker@users.sourceforge.net>2014-02-12 21:45:00 +0100
committerGravatar Alexey Yakovenko <waker@users.sourceforge.net>2014-02-12 21:45:00 +0100
commit2135fdf53fcaca8a9fd079960db85ea987d8bfbf (patch)
tree393a3c8c4a9c5445c5a15dbbc026753b58045b69 /plugins/gtkui
parent4db09a9c8c98d9c3f0ac975fcb4789b954a52325 (diff)
gtkui: ported playback controls toolbar to widget system
Diffstat (limited to 'plugins/gtkui')
-rw-r--r--plugins/gtkui/gtkui.c17
-rw-r--r--plugins/gtkui/trkproperties.c2
-rw-r--r--plugins/gtkui/widgets.c95
-rw-r--r--plugins/gtkui/widgets.h3
4 files changed, 100 insertions, 17 deletions
diff --git a/plugins/gtkui/gtkui.c b/plugins/gtkui/gtkui.c
index 3e245901..0aaab36c 100644
--- a/plugins/gtkui/gtkui.c
+++ b/plugins/gtkui/gtkui.c
@@ -131,8 +131,6 @@ struct fromto_t {
static gboolean
update_win_title_idle (gpointer data);
-static gboolean
-redraw_seekbar_cb (gpointer nothing);
// update status bar and window title
static int sb_context_id = -1;
@@ -399,7 +397,6 @@ gtkpl_songchanged_wrapper (DB_playItem_t *from, DB_playItem_t *to) {
deadbeef->pl_item_ref (to);
}
g_idle_add (update_win_title_idle, ft);
- g_idle_add (redraw_seekbar_cb, NULL);
if (searchwin && gtk_widget_get_window (searchwin)) {
int iconified = gdk_window_get_state(gtk_widget_get_window (searchwin)) & GDK_WINDOW_STATE_ICONIFIED;
if (gtk_widget_get_visible (searchwin) && !iconified) {
@@ -675,19 +672,6 @@ update_win_title_idle (gpointer data) {
return FALSE;
}
-static gboolean
-redraw_seekbar_cb (gpointer nothing) {
- return FALSE;
-#if 0
- int iconified = gdk_window_get_state(gtk_widget_get_window(mainwin)) & GDK_WINDOW_STATE_ICONIFIED;
- if (!gtk_widget_get_visible (mainwin) || iconified) {
- return FALSE;
- }
- seekbar_redraw ();
- return FALSE;
-#endif
-}
-
int
gtkui_add_new_playlist (void) {
int cnt = deadbeef->plt_get_count ();
@@ -980,6 +964,7 @@ gtkui_thread (void *ctx) {
w_reg_widget (_("VBox"), 0, w_vbox_create, "vbox", NULL);
w_reg_widget (_("Button"), 0, w_button_create, "button", NULL);
w_reg_widget (_("Seekbar"), 0, w_seekbar_create, "seekbar", NULL);
+ w_reg_widget (_("Playback controls"), 0, w_playtb_create, "playtb", NULL);
mainwin = create_mainwin ();
diff --git a/plugins/gtkui/trkproperties.c b/plugins/gtkui/trkproperties.c
index 8ab5981f..c2c72b16 100644
--- a/plugins/gtkui/trkproperties.c
+++ b/plugins/gtkui/trkproperties.c
@@ -428,7 +428,7 @@ show_track_properties_dlg (int ctx) {
tracks = malloc (sizeof (DB_playItem_t *) * num);
if (!tracks) {
- fprintf (stderr, "gtkui: failed to alloc %d bytes to store selected tracks\n", num * sizeof (void *));
+ fprintf (stderr, "gtkui: failed to alloc %d bytes to store selected tracks\n", (int)(num * sizeof (void *)));
deadbeef->pl_unlock ();
return;
}
diff --git a/plugins/gtkui/widgets.c b/plugins/gtkui/widgets.c
index 7d753b30..af8affa2 100644
--- a/plugins/gtkui/widgets.c
+++ b/plugins/gtkui/widgets.c
@@ -40,6 +40,7 @@
#include "../../fastftoi.h"
#include "actions.h"
#include "ddbseekbar.h"
+#include "callbacks.h"
//#define trace(...) { fprintf(stderr, __VA_ARGS__); }
#define trace(fmt,...)
@@ -201,6 +202,10 @@ typedef struct {
float last_songpos;
} w_seekbar_t;
+typedef struct {
+ ddb_gtkui_widget_t base;
+} w_playtb_t;
+
static int design_mode;
static ddb_gtkui_widget_t *rootwidget;
@@ -3534,3 +3539,93 @@ w_seekbar_create (void) {
w->timer = g_timeout_add (1000/gtkui_get_gui_refresh_rate (), seekbar_frameupdate, w);
return (ddb_gtkui_widget_t*)w;
}
+
+// play toolbar
+ddb_gtkui_widget_t *
+w_playtb_create (void) {
+ w_playtb_t *w = malloc (sizeof (w_playtb_t));
+ memset (w, 0, sizeof (w_playtb_t));
+ w->base.widget = gtk_hbox_new (FALSE, 0);
+ w->base.flags = DDB_GTKUI_WIDGET_FLAG_NON_EXPANDABLE;
+ gtk_widget_show (w->base.widget);
+
+ GtkWidget *stopbtn;
+ GtkWidget *image128;
+ GtkWidget *playbtn;
+ GtkWidget *image2;
+ GtkWidget *pausebtn;
+ GtkWidget *image3;
+ GtkWidget *prevbtn;
+ GtkWidget *image4;
+ GtkWidget *nextbtn;
+ GtkWidget *image5;
+
+
+ stopbtn = gtk_button_new ();
+ gtk_widget_show (stopbtn);
+ gtk_box_pack_start (GTK_BOX (w->base.widget), stopbtn, FALSE, FALSE, 0);
+ gtk_widget_set_can_focus(stopbtn, FALSE);
+ gtk_button_set_relief (GTK_BUTTON (stopbtn), GTK_RELIEF_NONE);
+
+ image128 = gtk_image_new_from_stock ("gtk-media-stop", GTK_ICON_SIZE_BUTTON);
+ gtk_widget_show (image128);
+ gtk_container_add (GTK_CONTAINER (stopbtn), image128);
+
+ playbtn = gtk_button_new ();
+ gtk_widget_show (playbtn);
+ gtk_box_pack_start (GTK_BOX (w->base.widget), playbtn, FALSE, FALSE, 0);
+ gtk_widget_set_can_focus(playbtn, FALSE);
+ gtk_button_set_relief (GTK_BUTTON (playbtn), GTK_RELIEF_NONE);
+
+ image2 = gtk_image_new_from_stock ("gtk-media-play", GTK_ICON_SIZE_BUTTON);
+ gtk_widget_show (image2);
+ gtk_container_add (GTK_CONTAINER (playbtn), image2);
+
+ pausebtn = gtk_button_new ();
+ gtk_widget_show (pausebtn);
+ gtk_box_pack_start (GTK_BOX (w->base.widget), pausebtn, FALSE, FALSE, 0);
+ gtk_widget_set_can_focus(pausebtn, FALSE);
+ gtk_button_set_relief (GTK_BUTTON (pausebtn), GTK_RELIEF_NONE);
+
+ image3 = gtk_image_new_from_stock ("gtk-media-pause", GTK_ICON_SIZE_BUTTON);
+ gtk_widget_show (image3);
+ gtk_container_add (GTK_CONTAINER (pausebtn), image3);
+
+ prevbtn = gtk_button_new ();
+ gtk_widget_show (prevbtn);
+ gtk_box_pack_start (GTK_BOX (w->base.widget), prevbtn, FALSE, FALSE, 0);
+ gtk_widget_set_can_focus(prevbtn, FALSE);
+ gtk_button_set_relief (GTK_BUTTON (prevbtn), GTK_RELIEF_NONE);
+
+ image4 = gtk_image_new_from_stock ("gtk-media-previous", GTK_ICON_SIZE_BUTTON);
+ gtk_widget_show (image4);
+ gtk_container_add (GTK_CONTAINER (prevbtn), image4);
+
+ nextbtn = gtk_button_new ();
+ gtk_widget_show (nextbtn);
+ gtk_box_pack_start (GTK_BOX (w->base.widget), nextbtn, FALSE, FALSE, 0);
+ gtk_widget_set_can_focus(nextbtn, FALSE);
+ gtk_button_set_relief (GTK_BUTTON (nextbtn), GTK_RELIEF_NONE);
+
+ image5 = gtk_image_new_from_stock ("gtk-media-next", GTK_ICON_SIZE_BUTTON);
+ gtk_widget_show (image5);
+ gtk_container_add (GTK_CONTAINER (nextbtn), image5);
+ w_override_signals (w->base.widget, w);
+
+ g_signal_connect ((gpointer) stopbtn, "clicked",
+ G_CALLBACK (on_stopbtn_clicked),
+ NULL);
+ g_signal_connect ((gpointer) playbtn, "clicked",
+ G_CALLBACK (on_playbtn_clicked),
+ NULL);
+ g_signal_connect ((gpointer) pausebtn, "clicked",
+ G_CALLBACK (on_pausebtn_clicked),
+ NULL);
+ g_signal_connect ((gpointer) prevbtn, "clicked",
+ G_CALLBACK (on_prevbtn_clicked),
+ NULL);
+ g_signal_connect ((gpointer) nextbtn, "clicked",
+ G_CALLBACK (on_nextbtn_clicked),
+ NULL);
+ return (ddb_gtkui_widget_t*)w;
+}
diff --git a/plugins/gtkui/widgets.h b/plugins/gtkui/widgets.h
index 5a517e55..295db5d9 100644
--- a/plugins/gtkui/widgets.h
+++ b/plugins/gtkui/widgets.h
@@ -125,4 +125,7 @@ w_button_create (void);
ddb_gtkui_widget_t *
w_seekbar_create (void);
+ddb_gtkui_widget_t *
+w_playtb_create (void);
+
#endif