X-Git-Url: http://research.m1stereo.tv/gitweb?a=blobdiff_plain;f=src%2Fplaylist.c;h=f2416a70479062797ebdce1eaab3a7758dc3bc5e;hb=8a59ea0de242375817b55fab9f2deedd713889f7;hp=59af44ed99f158490d65c79786e51b7c0d08be44;hpb=2f6977742c11282474158a3e7bc27a7ecae5c0d0;p=melted_gui diff --git a/src/playlist.c b/src/playlist.c index 59af44e..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) @@ -273,7 +306,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 +366,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, "",