X-Git-Url: http://research.m1stereo.tv/gitweb?a=blobdiff_plain;f=src%2Fplaylist.c;h=f2416a70479062797ebdce1eaab3a7758dc3bc5e;hb=e026fa7b787111f88332588c2c4ce9f01ab4183d;hp=1b136c6729a8a35e8669be84b7a1b26f5503824e;hpb=90d47169af231ca20a49584cae0e1f5fa6f93a9e;p=omnplay diff --git a/src/playlist.c b/src/playlist.c index 1b136c6..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)