From 26a914927406b6e8f02b94f51edaa3d78516593e Mon Sep 17 00:00:00 2001 From: Maksym Veremeyenko Date: Wed, 15 Jun 2011 10:30:56 +0300 Subject: [PATCH] playlist open/close dialogs basic handlers added --- src/dv1394app.c | 88 ++++++++++++++++++++++++++++++++++++++++++++++++++++++- src/dv1394app.h | 1 + 2 files changed, 88 insertions(+), 1 deletions(-) diff --git a/src/dv1394app.c b/src/dv1394app.c index 6d0487b..6e5a2a3 100644 --- a/src/dv1394app.c +++ b/src/dv1394app.c @@ -162,6 +162,87 @@ void on_item_quit_activate( GtkMenuItem *menuitem, gpointer user_data ) gtk_main_quit( ); } +/** Main window - playlist open menu item selected. +*/ + +void on_item_open_playlist_activate( GtkMenuItem *menuitem, gpointer user_data ) +{ + dv1394app this = user_data; + GtkWidget *dialog; + + dialog = gtk_file_chooser_dialog_new ("Open File", + GTK_WINDOW (this->window), + GTK_FILE_CHOOSER_ACTION_OPEN, + GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, + GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT, + NULL); + + gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER (dialog), + (this->playlist_folder)?this->playlist_folder:getenv("HOME")); + + if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT) + { + char *filename; + + filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog)); + fprintf(stderr, "on_item_open_playlist_activate: %s\n", filename); + + if ( this->playlist_folder ) + g_free (this->playlist_folder); + this->playlist_folder = filename; + if ( this->playlist_folder ) + { + 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); +} + +/** Main window - playlist save menu item selected. +*/ + +void on_item_save_playlist_activate( GtkMenuItem *menuitem, gpointer user_data ) +{ + dv1394app this = user_data; + GtkWidget *dialog; + + dialog = gtk_file_chooser_dialog_new ("Save File", + GTK_WINDOW (this->window), + GTK_FILE_CHOOSER_ACTION_SAVE, + GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, + GTK_STOCK_SAVE, GTK_RESPONSE_ACCEPT, + NULL); + + gtk_file_chooser_set_do_overwrite_confirmation (GTK_FILE_CHOOSER (dialog), TRUE); + + gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER (dialog), + (this->playlist_folder)?this->playlist_folder:getenv("HOME")); + gtk_file_chooser_set_current_name (GTK_FILE_CHOOSER (dialog), "Untitled document"); + + if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT) + { + char *filename; + + filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog)); + fprintf(stderr, "on_item_save_playlist_activate: filename=[%s]\n", filename); + + if ( this->playlist_folder ) + g_free (this->playlist_folder); + this->playlist_folder = filename; + if ( this->playlist_folder ) + { + 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); +} + static gboolean on_page_switch_pressed( GtkWidget *button, gpointer user_data ) { dv1394app this = user_data; @@ -401,7 +482,12 @@ dv1394app dv1394app_init( GtkWidget *window, char *instance ) // gtk_signal_connect( GTK_OBJECT( widget ), "activate", GTK_SIGNAL_FUNC( on_item_quit_activate ), this ); // widget = lookup_widget( this->window, "button_quit" ); // gtk_signal_connect( GTK_OBJECT( widget ), "clicked", GTK_SIGNAL_FUNC( on_item_quit_activate ), this ); - + widget = lookup_widget( this->window, "button_open_playlist" ); + gtk_signal_connect( GTK_OBJECT( widget ), "clicked", GTK_SIGNAL_FUNC( on_item_open_playlist_activate ), this ); + widget = lookup_widget( this->window, "button_save_playlist" ); + gtk_signal_connect( GTK_OBJECT( widget ), "clicked", GTK_SIGNAL_FUNC( on_item_save_playlist_activate ), this ); + + /* Initialise the pages. */ dv1394app_register_page( this, page_operate_init( this ) ); dv1394app_register_page( this, page_command_init( this ) ); diff --git a/src/dv1394app.h b/src/dv1394app.h index 4243601..0287e1d 100644 --- a/src/dv1394app.h +++ b/src/dv1394app.h @@ -49,6 +49,7 @@ typedef struct int trim_out; int guard; int eof[16]; + char* playlist_folder; } *dv1394app, dv1394app_t; -- 1.7.4.4