X-Git-Url: http://research.m1stereo.tv/gitweb?a=blobdiff_plain;f=src%2Fplaylist.c;h=f2416a70479062797ebdce1eaab3a7758dc3bc5e;hb=8a59ea0de242375817b55fab9f2deedd713889f7;hp=b2513dba1ab0c38d2aab3ba417822d20ef66a134;hpb=6c233b1d2e9cf8ea8444c6477eace4bbdc3d44d5;p=melted_gui diff --git a/src/playlist.c b/src/playlist.c index b2513db..f2416a7 100644 --- a/src/playlist.c +++ b/src/playlist.c @@ -157,6 +157,7 @@ void omnplay_playlist_load(omnplay_instance_t* app) { int r; GtkWidget *dialog; + GtkFileFilter *filter; dialog = gtk_file_chooser_dialog_new("Open File", GTK_WINDOW (app->window), @@ -168,6 +169,15 @@ void omnplay_playlist_load(omnplay_instance_t* app) gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(dialog), (app->playlist.path)?app->playlist.path:getenv("HOME")); + filter = gtk_file_filter_new(); + gtk_file_filter_set_name(filter, "Playlist formatted (*.ply)"); + gtk_file_filter_add_pattern(filter, "*.ply"); + gtk_file_chooser_add_filter(GTK_FILE_CHOOSER (dialog), filter); + filter = gtk_file_filter_new(); + gtk_file_filter_set_name(filter, "All types (*.*)"); + gtk_file_filter_add_pattern(filter, "*.*"); + gtk_file_chooser_add_filter(GTK_FILE_CHOOSER (dialog), filter); + r = gtk_dialog_run(GTK_DIALOG(dialog)); if(r == GTK_RESPONSE_ACCEPT) @@ -198,6 +208,13 @@ static int save_file_ply(omnplay_instance_t* app, char* filename) int i; FILE* f; char tc1[12], tc2[12], tc3[12]; + char* fname = filename; + + filename = (char*)malloc(PATH_MAX); + strncpy(filename, fname, PATH_MAX); + i = strlen(filename); + if(i < 4 || strcasecmp(filename + i - 4, ".ply")) + strcat(filename, ".ply"); if((f = fopen(filename, "wt"))) { @@ -211,6 +228,8 @@ static int save_file_ply(omnplay_instance_t* app, char* filename) frames2tc(app->playlist.item[i].dur, 25.0, tc3)); }; + free(filename); + return 0; }; @@ -218,12 +237,13 @@ void omnplay_playlist_save(omnplay_instance_t* app) { int r; GtkWidget *dialog; + GtkFileFilter *filter; dialog = gtk_file_chooser_dialog_new("Save File", GTK_WINDOW (app->window), GTK_FILE_CHOOSER_ACTION_SAVE, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, - GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT, + GTK_STOCK_SAVE, GTK_RESPONSE_ACCEPT, NULL); gtk_file_chooser_set_do_overwrite_confirmation(GTK_FILE_CHOOSER(dialog), TRUE); @@ -231,6 +251,17 @@ void omnplay_playlist_save(omnplay_instance_t* app) gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(dialog), (app->playlist.path)?app->playlist.path:getenv("HOME")); + filter = gtk_file_filter_new(); + gtk_file_filter_set_name(filter, "Playlist formatted (*.ply)"); + gtk_file_filter_add_pattern(filter, "*.ply"); + gtk_file_chooser_add_filter(GTK_FILE_CHOOSER (dialog), filter); + g_object_set_data(G_OBJECT(filter), "id", GINT_TO_POINTER(0)); + filter = gtk_file_filter_new(); + gtk_file_filter_set_name(filter, "Text (*.txt)"); + gtk_file_filter_add_pattern(filter, "*.*"); + gtk_file_chooser_add_filter(GTK_FILE_CHOOSER (dialog), filter); + g_object_set_data(G_OBJECT(filter), "id", GINT_TO_POINTER(1)); + r = gtk_dialog_run(GTK_DIALOG(dialog)); if(r == GTK_RESPONSE_ACCEPT) @@ -239,6 +270,8 @@ void omnplay_playlist_save(omnplay_instance_t* app) filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog)); + r = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(gtk_file_chooser_get_filter(GTK_FILE_CHOOSER(dialog))), "id")); + r = save_file_ply(app, filename); if(app->playlist.path) @@ -271,12 +304,19 @@ void omnplay_playlist_draw(omnplay_instance_t* app) for(i = 0;i < app->playlist.count; i++) { + char ch[3]; + + if(OMNPLAY_PLAYLIST_BLOCK_BEGIN & app->playlist.item[i].type) + snprintf(ch, sizeof(ch), "%c", 'A' + app->playlist.item[i].player); + else + ch[0] = 0; + gtk_list_store_append(list_store, &iter); gtk_list_store_set(list_store, &iter, 0, "", 1, app->playlist.block_icons[app->playlist.item[i].type], - 2, (0 == app->playlist.item[i].player)?"A":"B", + 2, ch, 3, app->playlist.item[i].id, 4, frames2tc(app->playlist.item[i].in, 25.0, tc1), 5, frames2tc(app->playlist.item[i].dur, 25.0, tc2), @@ -318,6 +358,7 @@ static gboolean omnplay_playlist_draw_item_proc( { int i; char tc1[12], tc2[12]; + char ch[3]; omnplay_playlist_draw_item_t* item = (omnplay_playlist_draw_item_t*)user_data; omnplay_instance_t* app = item->app; @@ -325,10 +366,15 @@ static gboolean omnplay_playlist_draw_item_proc( if(i != item->idx) return FALSE; + if(OMNPLAY_PLAYLIST_BLOCK_BEGIN & app->playlist.item[i].type) + snprintf(ch, sizeof(ch), "%c", 'A' + app->playlist.item[i].player); + else + ch[0] = 0; + gtk_list_store_set(item->list_store, iter, 0, "", 1, app->playlist.block_icons[app->playlist.item[i].type], - 2, (0 == app->playlist.item[i].player)?"A":"B", + 2, ch, 3, app->playlist.item[i].id, 4, frames2tc(app->playlist.item[i].in, 25.0, tc1), 5, frames2tc(app->playlist.item[i].dur, 25.0, tc2),