static void drag_data_handler( GtkWidget *widget, GdkDragContext *context, gint x, gint y, GtkSelectionData *sel_data, guint info, guint time, gpointer data) { gboolean append = (widget == ((gmpv_handle *)data)->gui->playlist); if(sel_data && gtk_selection_data_get_length(sel_data) > 0) { gmpv_handle *ctx = data; gchar **uri_list = gtk_selection_data_get_uris(sel_data); ctx->paused = FALSE; if(uri_list) { int i; for(i = 0; uri_list[i]; i++) { mpv_load( ctx, uri_list[i], (append || i != 0), TRUE ); } g_strfreev(uri_list); } else { const guchar *raw_data = gtk_selection_data_get_data(sel_data); mpv_load(ctx, (const gchar *)raw_data, append, TRUE); } } }
void seek(gmpv_handle *ctx, gdouble time) { const gchar *cmd[] = {"seek", NULL, "absolute", NULL}; if(!ctx->loaded) { mpv_load(ctx, NULL, FALSE, TRUE); } else { gchar *value_str = g_strdup_printf("%.2f", time); cmd[1] = value_str; mpv_command(ctx->mpv_ctx, cmd); update_seek_bar(ctx); g_free(value_str); } }
static gboolean load_files(gpointer data) { gmpv_handle *ctx = data; if(ctx->files) { gint i = 0; ctx->paused = FALSE; playlist_widget_clear(PLAYLIST_WIDGET(ctx->gui->playlist)); for(i = 0; ctx->files[i]; i++) { gchar *name = get_name_from_path(ctx->files[i]); if(ctx->init_load) { playlist_widget_append ( PLAYLIST_WIDGET (ctx->gui->playlist), name, ctx->files[i] ); } else { mpv_load( ctx, ctx->files[i], (i != 0), TRUE ); } g_free(name); } g_strfreev(ctx->files); } return FALSE; }