From 504dc1986b9455653a57900cdb93ce78c6e475ae Mon Sep 17 00:00:00 2001 From: Maksym Veremeyenko Date: Wed, 15 Jun 2011 11:04:57 +0300 Subject: [PATCH] minimalistic playlist support added --- src/dv1394app.c | 72 ++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 66 insertions(+), 6 deletions(-) diff --git a/src/dv1394app.c b/src/dv1394app.c index 6e5a2a3..3471a5a 100644 --- a/src/dv1394app.c +++ b/src/dv1394app.c @@ -162,10 +162,72 @@ void on_item_quit_activate( GtkMenuItem *menuitem, gpointer user_data ) gtk_main_quit( ); } +static void playlist_open(dv1394app this, char* filename) +{ + FILE* f; + + if( this->selected_unit >= 0 && this->command) + { + f = fopen(filename, "rt"); + if (f) + { + while( !feof(f) ) + { + char* s; + char l[PATH_MAX]; + + /* load string */ + fgets(l, sizeof(l), f); + + /* remove newlines */ + if( (s = strchr(l, '\n')) ) *s = 0; + if( (s = strchr(l, '\r')) ) *s = 0; + if( (s = strchr(l, '\t')) ) *s = 0; + + /* check for empty line */ + if(l[0]) + mvcp_unit_append( this->command, this->selected_unit, l, -1, -1 ); + } + + fclose(f); + } + } + +} + +static void playlist_save(dv1394app this, char* filename) +{ + int index; + mvcp_list_entry_t entry; + mvcp_list list; + FILE* f; + + if( this->selected_unit >= 0 && this->command) + { + f = fopen(filename, "wt"); + if (f) + { + list = mvcp_list_init( this->command, this->selected_unit); + + if ( list ) + { + for ( index = 0; list && index < mvcp_list_count( list ); index ++ ) + { + mvcp_list_get( list, index, &entry ); + fprintf(f, "%s\n", entry.full); + } + mvcp_list_close( list ); + } + + fclose(f); + } + } +} + /** Main window - playlist open menu item selected. */ -void on_item_open_playlist_activate( GtkMenuItem *menuitem, gpointer user_data ) +static void on_item_open_playlist_activate( GtkMenuItem *menuitem, gpointer user_data ) { dv1394app this = user_data; GtkWidget *dialog; @@ -185,7 +247,7 @@ void on_item_open_playlist_activate( GtkMenuItem *menuitem, gpointer user_data ) char *filename; filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog)); - fprintf(stderr, "on_item_open_playlist_activate: %s\n", filename); + playlist_open(this, filename); if ( this->playlist_folder ) g_free (this->playlist_folder); @@ -195,7 +257,6 @@ void on_item_open_playlist_activate( GtkMenuItem *menuitem, gpointer user_data ) char* e = strrchr(this->playlist_folder, '/'); if(e) *e = 0; } - fprintf(stderr, "on_item_open_playlist_activate: this->playlist_folder=[%s]\n", this->playlist_folder); } gtk_widget_destroy (dialog); @@ -204,7 +265,7 @@ void on_item_open_playlist_activate( GtkMenuItem *menuitem, gpointer user_data ) /** Main window - playlist save menu item selected. */ -void on_item_save_playlist_activate( GtkMenuItem *menuitem, gpointer user_data ) +static void on_item_save_playlist_activate( GtkMenuItem *menuitem, gpointer user_data ) { dv1394app this = user_data; GtkWidget *dialog; @@ -227,7 +288,7 @@ void on_item_save_playlist_activate( GtkMenuItem *menuitem, gpointer user_data ) char *filename; filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog)); - fprintf(stderr, "on_item_save_playlist_activate: filename=[%s]\n", filename); + playlist_save(this, filename); if ( this->playlist_folder ) g_free (this->playlist_folder); @@ -237,7 +298,6 @@ void on_item_save_playlist_activate( GtkMenuItem *menuitem, gpointer user_data ) char* e = strrchr(this->playlist_folder, '/'); if(e) *e = 0; } - fprintf(stderr, "on_item_save_playlist_activate: this->playlist_folder=[%s]\n", this->playlist_folder); } gtk_widget_destroy (dialog); -- 1.7.4.4