From: Stephane L. <ler...@pd...> - 2004-04-29 17:46:44
|
CVS Root: /cvs/gstreamer Module: gst-player Changes by: leroutier Date: Thu Apr 29 2004 10:46:42 PDT Log message: fixes bug #137488. make Iain Holmes patch conditionnal on gtk 2.4 presence (new file selector) Modified files: . : ChangeLog configure.ac src : main.c Links: http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-player/ChangeLog.diff?r1=1.69&r2=1.70 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-player/configure.ac.diff?r1=1.84&r2=1.85 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-player/src/main.c.diff?r1=1.69&r2=1.70 ====Begin Diffs==== Index: ChangeLog =================================================================== RCS file: /cvs/gstreamer/gst-player/ChangeLog,v retrieving revision 1.69 retrieving revision 1.70 diff -u -d -r1.69 -r1.70 --- a/ChangeLog 29 Mar 2004 17:19:47 -0000 1.69 +++ b/ChangeLog 29 Apr 2004 17:46:30 -0000 1.70 @@ -1,3 +1,9 @@ +2004-04-29 Stephane Loeuillet <ste...@ti...> + + * configure.ac, src/main.c: + fixes bug #137488. make Iain Holmes patch conditionnal on + gtk 2.4 presence (new file selector) 2004-03-29 Thomas Vander Stichele <thomas at apestaart dot org> * libs/gst/player/gstmediaplay.c: Index: configure.ac RCS file: /cvs/gstreamer/gst-player/configure.ac,v retrieving revision 1.84 retrieving revision 1.85 diff -u -d -r1.84 -r1.85 --- a/configure.ac 18 Mar 2004 11:03:45 -0000 1.84 +++ b/configure.ac 29 Apr 2004 17:46:30 -0000 1.85 @@ -116,8 +116,15 @@ SERVER_FILE_SUPPORTED=`for MIMETYPE in $SUPPORTED_MIME_TYPES; do echo -n "<item value=\"$MIMETYPE\"/>"; done` AC_SUBST(SERVER_FILE_SUPPORTED) -dnl check for GTK -PKG_CHECK_MODULES(GTK, gtk+-2.0 >= 2.2.0 gdk-2.0 >= 2.2.0,,exit) +dnl check for GTK >= 2.4 for gtk_file_chooser + PKG_CHECK_MODULES(GTK, gtk+-2.0 >= 2.4.0, [ + HAVE_GTK24=1 + AC_SUBST(HAVE_GTK24) + AC_DEFINE_UNQUOTED(HAVE_GTK24, 1, [do we have gtk+ >= 2.4 ?]) +],[ + dnl check for GTK >= 2.2 + PKG_CHECK_MODULES(GTK, gtk+-2.0 >= 2.2.0 gdk-2.0 >= 2.2.0,,exit) +]) AC_SUBST(GTK_LIBS) AC_SUBST(GTK_CFLAGS) Index: main.c RCS file: /cvs/gstreamer/gst-player/src/main.c,v --- a/main.c 14 Mar 2004 23:41:09 -0000 1.69 +++ b/main.c 29 Apr 2004 17:46:30 -0000 1.70 @@ -73,13 +73,13 @@ struct poptOption options[] = { {"xid", 'x', POPT_ARG_INT, &xid, 0, - N_("Xid of the window we will use for embedding"), + N_("Xid of the window we will use for embedding"), N_("XID")}, {"width", 'w', POPT_ARG_INT, &width, 0, - N_("Specify the width available in embedding window"), + N_("Specify the width available in embedding window"), N_("WIDTH")}, {"height", 'h', POPT_ARG_INT, &height, 0, - N_("Specify the height available in embedding window"), + N_("Specify the height available in embedding window"), N_("HEIGHT")}, {NULL, '\0', POPT_ARG_INCLUDE_TABLE, NULL, 0, "GStreamer", NULL}, {NULL, '\0', 0, NULL, 0, NULL, NULL} @@ -121,7 +121,7 @@ /* add a debug button */ if (debug) { gtk_dialog_add_button (GTK_DIALOG (error_dialog), GTK_STOCK_DIALOG_INFO, - GST_PLAYER_RESPONSE_DEBUG); + GST_PLAYER_RESPONSE_DEBUG); } /* make sure OK is on the right and default action to be HIG-compliant */ gtk_dialog_add_button (GTK_DIALOG (error_dialog), GTK_STOCK_OK, @@ -131,9 +131,9 @@ if (response == GST_PLAYER_RESPONSE_DEBUG) { gtk_widget_destroy (error_dialog); error_dialog = gtk_message_dialog_new (GTK_WINDOW (player->win), - GTK_DIALOG_MODAL, - GTK_MESSAGE_INFO, GTK_BUTTONS_OK, - "%s\n\nAdditional debug info: %s\n", error->message, debug); + GTK_DIALOG_MODAL, + GTK_MESSAGE_INFO, GTK_BUTTONS_OK, + "%s\n\nAdditional debug info: %s\n", error->message, debug); gtk_dialog_run (GTK_DIALOG (error_dialog)); gtk_widget_destroy (error_dialog); @@ -215,7 +215,7 @@ if (!player->embedded_mode) { gtk_widget_size_request (player->win, &requisition); gtk_window_resize (GTK_WINDOW (player->win), requisition.width, - requisition.height); + requisition.height); } @@ -227,11 +227,25 @@ g_return_if_fail (GST_IS_MEDIA_PLAY (player->mplay)); +#ifdef HAVE_GTK24 + fs = gtk_file_chooser_dialog_new (_("Select files"), + GTK_WINDOW (player->win), + GTK_FILE_CHOOSER_ACTION_OPEN, + GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, + GTK_STOCK_OPEN, GTK_RESPONSE_OK, NULL); + gtk_file_chooser_set_select_multiple (GTK_FILE_CHOOSER (fs), TRUE); +#else fs = gtk_file_selection_new (_("Select files")); gtk_file_selection_set_select_multiple (GTK_FILE_SELECTION (fs), TRUE); +#endif if (player->last_location != NULL) { + gtk_file_chooser_set_filename (GTK_FILE_CHOOSER (fs), gtk_file_selection_set_filename (GTK_FILE_SELECTION (fs), - player->last_location); + player->last_location); g_free (player->last_location); player->last_location = NULL; @@ -240,32 +254,59 @@ gtk_widget_hide (fs); if (response == GTK_RESPONSE_OK) { + GSList *filenames; + filenames = gtk_file_chooser_get_filenames (GTK_FILE_CHOOSER (fs)); + if (filenames) { + GSList *l; gchar **filenames; filenames = gtk_file_selection_get_selections (GTK_FILE_SELECTION (fs)); if (filenames[0]) { - char *tmp; gint i; + char *tmp; gst_media_play_ignore_playlist_changes (player->mplay, TRUE); gtk_playlist_clear (GTK_PLAYLIST (player->mplay->playlist)); + tmp = g_path_get_dirname (filenames->data); + for (l = filenames; l; l = l->next) { for (i = 0; filenames[i] != NULL; i++) - gtk_playlist_add_mrl (GTK_PLAYLIST (player->mplay->playlist), - filenames[i], NULL); + gtk_playlist_add_mrl (GTK_PLAYLIST (player->mplay->playlist), + l->data, NULL); + g_free (l->data); + } + filenames[i], NULL); tmp = g_path_get_dirname (filenames[0]); player->last_location = g_strconcat (tmp, G_DIR_SEPARATOR_S, NULL); g_free (tmp); } + g_slist_free (filenames); g_strfreev (filenames); gst_media_play_ignore_playlist_changes (player->mplay, FALSE); gst_media_play_set_location (player->mplay, - gtk_playlist_get_current_mrl (GTK_PLAYLIST (player->mplay->playlist))); + gtk_playlist_get_current_mrl (GTK_PLAYLIST (player->mplay->playlist))); on_play_pause_activate (widget, player); @@ -308,14 +349,14 @@ case 1: gtk_playlist_add_mrl (GTK_PLAYLIST (player->mplay->playlist), - gtk_entry_get_text (GTK_ENTRY (textbox)), NULL); + gtk_entry_get_text (GTK_ENTRY (textbox)), NULL); gst_media_play_set_location (player->mplay, - gtk_playlist_get_current_mrl (GTK_PLAYLIST (player->mplay-> - playlist))); + gtk_playlist_get_current_mrl (GTK_PLAYLIST (player->mplay-> + playlist))); if (player->last_location) - g_free (player->last_location); + g_free (player->last_location); player->last_location = - g_strdup (gtk_entry_get_text (GTK_ENTRY (textbox))); + g_strdup (gtk_entry_get_text (GTK_ENTRY (textbox))); break; default: @@ -402,7 +443,7 @@ @@ -416,7 +457,7 @@ @@ -430,7 +471,7 @@ @@ -525,10 +566,10 @@ gboolean res; res = gst_media_play_set_effect (player->mplay, - gtk_widget_get_name (widget)); + gtk_widget_get_name (widget)); if (!res) { error = g_error_new (GST_MEDIA_PLAY_ERROR, 0, - "Can not change effect after the first media has been loaded"); + "Can not change effect after the first media has been loaded"); on_error (player->mplay, error, NULL, player); g_error_free (error); @@ -542,7 +583,7 @@ /* Window is now effectively fullscreen */ if (player->fullscreen_mode) { gst_media_play_set_display_mode (player->mplay, - GST_MEDIA_PLAY_FULLSCREEN, event->width, event->height); + GST_MEDIA_PLAY_FULLSCREEN, event->width, event->height); gtk_widget_hide (player->menubar); return FALSE; @@ -558,7 +599,7 @@ } else { player->fullscreen_mode = FALSE; - GST_MEDIA_PLAY_NORMAL, 0, 0); + GST_MEDIA_PLAY_NORMAL, 0, 0); gtk_widget_show (player->menubar); return TRUE; @@ -572,10 +613,10 @@ g_return_val_if_fail (GST_IS_MEDIA_PLAY (player->mplay), 0); if (event->state != 0 && ((event->state & GDK_CONTROL_MASK) - || (event->state & GDK_MOD1_MASK) - || (event->state & GDK_MOD3_MASK) - || (event->state & GDK_MOD4_MASK) - || (event->state & GDK_MOD5_MASK))) + || (event->state & GDK_MOD1_MASK) + || (event->state & GDK_MOD3_MASK) + || (event->state & GDK_MOD4_MASK) + || (event->state & GDK_MOD5_MASK))) return FALSE; if ((event->keyval == GDK_Escape) || (event->keyval == GDK_f)) { @@ -599,7 +640,7 @@ if ((module) && (g_module_symbol (module, handler_name, &symbol))) g_signal_connect (G_OBJECT (object), signal_name, - G_CALLBACK (symbol), user_data); + G_CALLBACK (symbol), user_data); static void @@ -686,17 +727,17 @@ features = gst_plugin_get_feature_list (plugin); while (features) { - GstPluginFeature *feature = GST_PLUGIN_FEATURE (features->data); + GstPluginFeature *feature = GST_PLUGIN_FEATURE (features->data); - if (GST_IS_ELEMENT_FACTORY (feature)) { - GstElementFactory *factory = GST_ELEMENT_FACTORY (feature); + if (GST_IS_ELEMENT_FACTORY (feature)) { + GstElementFactory *factory = GST_ELEMENT_FACTORY (feature); - if (g_strrstr (factory->details.klass, classname)) - found_plugins_list = - g_list_append (found_plugins_list, - (char *) g_strdup (GST_OBJECT_NAME (factory))); - } - features = g_list_next (features); + if (g_strrstr (factory->details.klass, classname)) + found_plugins_list = + g_list_append (found_plugins_list, + (char *) g_strdup (GST_OBJECT_NAME (factory))); + } + features = g_list_next (features); } plugins = g_list_next (plugins); @@ -751,18 +792,18 @@ plugin_menu_item = gtk_radio_menu_item_new_with_label (group, name); group = - gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (plugin_menu_item)); + gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (plugin_menu_item)); if ((current_plugin_name) && - (g_strcasecmp (current_plugin_name, name) == 0)) { + (g_strcasecmp (current_plugin_name, name) == 0)) { gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM - (plugin_menu_item), TRUE); + (plugin_menu_item), TRUE); } else - (plugin_menu_item), FALSE); + (plugin_menu_item), FALSE); gtk_widget_set_name (plugin_menu_item, name); g_signal_connect (G_OBJECT (plugin_menu_item), "toggled", - G_CALLBACK (on_visual_toggled), player); + G_CALLBACK (on_visual_toggled), player); gtk_menu_shell_insert (GTK_MENU_SHELL (menu), plugin_menu_item, i); i++; vis_plugins_list = g_list_next (vis_plugins_list); @@ -818,10 +859,10 @@ - G_CALLBACK (on_effect_toggled), player); + G_CALLBACK (on_effect_toggled), player); effects_plugins_list = g_list_next (effects_plugins_list); @@ -850,10 +891,10 @@ gst_scheduler_factory_set_default_name ("opt"); if (!(p = gnome_program_init (PACKAGE, VERSION, LIBGNOMEUI_MODULE, - argc, argv, - GNOME_PARAM_POPT_TABLE, options, - GNOME_PARAM_HUMAN_READABLE_NAME, - _("GStreamer Player"), GNOME_PARAM_APP_DATADIR, DATADIR, NULL))) + argc, argv, + GNOME_PARAM_POPT_TABLE, options, + GNOME_PARAM_HUMAN_READABLE_NAME, + _("GStreamer Player"), GNOME_PARAM_APP_DATADIR, DATADIR, NULL))) g_error ("gnome_program_init failed"); @@ -889,7 +930,7 @@ "toggle_visualization_menu_item"); if (GTK_IS_WIDGET (vis_menu_item)) gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (vis_menu_item), - vis_enabled); + vis_enabled); if (vis_plugin_name) g_free (vis_plugin_name); @@ -948,12 +989,12 @@ while (argvn[i] != NULL) { - argvn[i], NULL); + argvn[i], NULL); i++; /* check if we should play on startup */ if (!gst_media_gconf_get_boolean ("play-on-startup", &play_on_startup)) |