diff options
author | Alexey Yakovenko <waker@users.sourceforge.net> | 2014-02-12 21:45:00 +0100 |
---|---|---|
committer | Alexey Yakovenko <waker@users.sourceforge.net> | 2014-02-12 21:45:00 +0100 |
commit | 2135fdf53fcaca8a9fd079960db85ea987d8bfbf (patch) | |
tree | 393a3c8c4a9c5445c5a15dbbc026753b58045b69 /plugins/gtkui | |
parent | 4db09a9c8c98d9c3f0ac975fcb4789b954a52325 (diff) |
gtkui: ported playback controls toolbar to widget system
Diffstat (limited to 'plugins/gtkui')
-rw-r--r-- | plugins/gtkui/gtkui.c | 17 | ||||
-rw-r--r-- | plugins/gtkui/trkproperties.c | 2 | ||||
-rw-r--r-- | plugins/gtkui/widgets.c | 95 | ||||
-rw-r--r-- | plugins/gtkui/widgets.h | 3 |
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 |