X-Git-Url: http://research.m1stereo.tv/gitweb?a=blobdiff_plain;f=src%2Fplaylist.c;h=4ff0a4b46598043097377b3f5f6beb5ddde3acab;hb=48dee11ecb5cc6c4006f8dcc47ca4c7cf57b8b0e;hp=59af44ed99f158490d65c79786e51b7c0d08be44;hpb=2f6977742c11282474158a3e7bc27a7ecae5c0d0;p=melted_gui diff --git a/src/playlist.c b/src/playlist.c index 59af44e..4ff0a4b 100644 --- a/src/playlist.c +++ b/src/playlist.c @@ -28,10 +28,32 @@ #include #include -#include "omnplay.h" +#include "playlist.h" #include "ui.h" #include "timecode.h" +int playlist_item_index(instance_t* app, int start, int idx) +{ + if(start < 0 || start >= app->playlist.count) + return -1; + + while(1) + { + if(app->playlist.item[start].omn_idx == idx) + return start; + + if(app->playlist.item[start].type & PLAYLIST_BLOCK_END) + break; + + start++; + }; + + return -1; +}; + + +#if 0 + static int load_file_ply(omnplay_instance_t* app, char* filename) { FILE* f; @@ -157,6 +179,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 +191,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 +230,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 +250,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 +259,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 +273,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 +292,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) @@ -273,7 +328,10 @@ void omnplay_playlist_draw(omnplay_instance_t* app) { char ch[3]; - snprintf(ch, sizeof(ch), "%c", 'A' + app->playlist.item[i].player); + 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); @@ -330,7 +388,10 @@ static gboolean omnplay_playlist_draw_item_proc( if(i != item->idx) return FALSE; - snprintf(ch, sizeof(ch), "%c", 'A' + app->playlist.item[i].player); + 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, "", @@ -397,3 +458,5 @@ void omnplay_playlist_draw_item_rem(omnplay_instance_t* app, int idx, char* rem) gtk_tree_model_foreach(GTK_TREE_MODEL(list_store), omnplay_playlist_draw_item_rem_proc, item); }; + +#endif