From: Steve B. <sb...@us...> - 2002-07-18 16:44:47
|
CVS Root: /cvsroot/gstreamer Module: gst-player Changes by: sbaker3 Date: Thu Jul 18 2002 09:44:43 PDT Log message: add an Open Location menu entry for URLs Modified files: src : main.c Links: http://cvs.sf.net/cgi-bin/viewcvs.cgi/gstreamer/gst-player/src/main.c.diff?r1=1.12&r2=1.13 ====Begin Diffs==== Index: main.c =================================================================== RCS file: /cvsroot/gstreamer/gst-player/src/main.c,v retrieving revision 1.12 retrieving revision 1.13 diff -u -d -r1.12 -r1.13 --- main.c 11 Jul 2002 16:47:01 -0000 1.12 +++ main.c 18 Jul 2002 16:44:30 -0000 1.13 @@ -20,53 +20,78 @@ Check the README for more information.\n" - -typedef struct { - GtkWidget *selection; - GstMediaPlay *mplay; -} file_select; - static void -on_load_file_selected (GtkWidget *button, file_select *data) +on_load_file_selected (GtkWidget *button, GstMediaPlay *mplay) { GtkWidget *file_selection; - GstMediaPlay *mplay; - - file_selection = data->selection; - mplay = data->mplay; g_return_if_fail(GST_IS_MEDIA_PLAY(mplay)); - + file_selection = GTK_WIDGET(g_object_get_data(G_OBJECT(button), "file_selection")); gst_media_play_set_location (mplay, gtk_file_selection_get_filename (GTK_FILE_SELECTION (file_selection))); - - g_free(data); } -void +static void cb_open (GtkWidget *widget, GstMediaPlay *mplay) { - GtkWidget *file_selector; - - file_select *file_data = g_new0 (file_select, 1); + GtkWidget *file_selection; g_return_if_fail (GST_IS_MEDIA_PLAY(mplay)); - file_selector = gtk_file_selection_new (_("Please select a file to load.")); + file_selection = gtk_file_selection_new (_("Please select a file to load.")); - file_data->selection = file_selector; - file_data->mplay = mplay; + g_object_set_data(G_OBJECT(GTK_FILE_SELECTION(file_selection)->ok_button), "file_selection", file_selection); - g_signal_connect (G_OBJECT (GTK_FILE_SELECTION(file_selector)->ok_button), - "clicked", G_CALLBACK (on_load_file_selected), file_data); + g_signal_connect (G_OBJECT (GTK_FILE_SELECTION(file_selection)->ok_button), + "clicked", G_CALLBACK (on_load_file_selected), mplay); - gtk_signal_connect_object (GTK_OBJECT (GTK_FILE_SELECTION (file_selector)->ok_button), + gtk_signal_connect_object (GTK_OBJECT (GTK_FILE_SELECTION (file_selection)->ok_button), "clicked", GTK_SIGNAL_FUNC (gtk_widget_destroy), - (gpointer) file_selector); - gtk_signal_connect_object (GTK_OBJECT (GTK_FILE_SELECTION (file_selector)->cancel_button), + (gpointer) file_selection); + gtk_signal_connect_object (GTK_OBJECT (GTK_FILE_SELECTION (file_selection)->cancel_button), "clicked", GTK_SIGNAL_FUNC (gtk_widget_destroy), - (gpointer) file_selector); + (gpointer) file_selection); - gtk_widget_show (file_selector); + gtk_widget_show (file_selection); +} + +static void +on_open_location_selected (GtkDialog *dialog, gint response, GstMediaPlay *mplay) +{ + GtkWidget *textbox; + + if (response != GTK_RESPONSE_ACCEPT){ + return; + } + g_return_if_fail(GST_IS_MEDIA_PLAY(mplay)); + textbox = GTK_WIDGET(g_object_get_data(G_OBJECT(dialog), "textbox")); + gst_media_play_set_location (mplay, gtk_entry_get_text(GTK_ENTRY(textbox))); +} + +static void +cb_open_location (GtkWidget *widget, GstMediaPlay *mplay) +{ + GtkWidget *dialog; + GtkWidget *textbox; + + dialog = gtk_dialog_new_with_buttons("Please enter a URL to load.", GTK_WINDOW(gtk_widget_get_toplevel(widget)), + GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT, + GTK_STOCK_CANCEL, + GTK_RESPONSE_REJECT, + GTK_STOCK_OK, + GTK_RESPONSE_ACCEPT, + NULL); + + g_return_if_fail(GTK_IS_DIALOG(dialog)); + textbox = gtk_entry_new(); + gtk_entry_set_width_chars(GTK_ENTRY(textbox), 80); + gtk_container_add (GTK_CONTAINER (GTK_DIALOG(dialog)->vbox), textbox); + g_object_set_data(G_OBJECT(dialog), "textbox", textbox); + g_signal_connect (G_OBJECT(dialog), + "response", G_CALLBACK (on_open_location_selected), mplay); + gtk_signal_connect_object (GTK_OBJECT (dialog), + "response", GTK_SIGNAL_FUNC (gtk_widget_destroy), + (gpointer) dialog); + gtk_widget_show_all (dialog); } void @@ -222,6 +247,13 @@ static GnomeUIInfo file_menu [] = { GNOMEUIINFO_MENU_OPEN_ITEM (cb_open, NULL), + { + GNOME_APP_UI_ITEM, N_("Open _Location"), + NULL, + cb_open_location, NULL, NULL, + GNOME_APP_PIXMAP_NONE, NULL, + GDK_L, (GdkModifierType) GDK_CONTROL_MASK, NULL + }, GNOMEUIINFO_SEPARATOR, GNOMEUIINFO_MENU_EXIT_ITEM (cb_destroy, NULL), GNOMEUIINFO_END |