[Xfce4-commits] <parole:master> Subtitles and audio tracks are now synchronized between infobar and menu.

Sean Davis noreply at xfce.org
Mon Jul 23 16:36:01 CEST 2012


Updating branch refs/heads/master
         to 1e059fd366078f6a3b9f1dbbdc503cc9306064e5 (commit)
       from bc565d9e862304dbc617fe56d7dd3116bdefe4f6 (commit)

commit 1e059fd366078f6a3b9f1dbbdc503cc9306064e5
Author: Sean Davis <smd.seandavis at gmail.com>
Date:   Mon Jul 23 10:34:24 2012 -0400

    Subtitles and audio tracks are now synchronized between infobar and menu.

 src/parole-player.c |  109 ++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 107 insertions(+), 2 deletions(-)

diff --git a/src/parole-player.c b/src/parole-player.c
index 997a0d3..dbae8e1 100644
--- a/src/parole-player.c
+++ b/src/parole-player.c
@@ -227,6 +227,10 @@ void		ratio_20_9_toggled_cb			(GtkWidget *widget,
 
 void	        parole_show_about			(GtkWidget *widget,
 							ParolePlayer *player);
+							
+static void parole_player_audiotrack_radio_menu_item_changed_cb(GtkWidget *widget, ParolePlayer *player);
+
+static void parole_player_subtitles_radio_menu_item_changed_cb(GtkWidget *widget, ParolePlayer *player);
 
 gboolean	parole_player_key_press 		(GtkWidget *widget, 
 							 GdkEventKey *ev, 
@@ -299,7 +303,7 @@ struct ParolePlayerPrivate
     GList			*subtitle_list;
     gboolean		update_languages;
     GtkWidget		*subtitles_group;
-    GSList			*audio_group;
+    GtkWidget		*audio_group;
     
     GtkWidget		*subtitles_menu;
     GtkWidget		*languages_menu;
@@ -592,6 +596,8 @@ parole_player_set_subtitles_list (ParolePlayer *player, GList *subtitle_list)
 	
 	GtkTreeIter iter;
 	
+	gint counter = 0;
+	
 	for (l = subtitle_list; l != NULL; l = l->next)
 	{
 		language = g_strdup (l->data);
@@ -605,8 +611,12 @@ parole_player_set_subtitles_list (ParolePlayer *player, GList *subtitle_list)
 		gtk_widget_show (menu_item);
 		
 		gtk_menu_shell_append (GTK_MENU_SHELL (player->priv->subtitles_menu), menu_item);
+		g_signal_connect (menu_item, "activate",
+		      G_CALLBACK (parole_player_subtitles_radio_menu_item_changed_cb), player);
 		
 		g_free (language);
+		
+		counter++;
 	}
 	
 	if (g_list_length (subtitle_list) != 1) {
@@ -661,7 +671,7 @@ parole_player_set_audio_list (ParolePlayer *player, GList *audio_list)
 		
 		if (player->priv->audio_group == NULL)
 		{
-			player->priv->audio_group = gtk_radio_menu_item_new_with_label (NULL, language);
+			player->priv->audio_group = GTK_WIDGET (gtk_radio_menu_item_new_with_label (NULL, language));
 			gtk_widget_show (GTK_WIDGET(player->priv->audio_group));
 			gtk_menu_shell_append (GTK_MENU_SHELL (player->priv->languages_menu), GTK_WIDGET(player->priv->audio_group));
 			gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(player->priv->audio_group), TRUE);
@@ -2524,16 +2534,111 @@ void parole_player_play_uri_disc (ParolePlayer *player, const gchar *uri, const
     }
 }
 
+void parole_player_set_audiotrack_radio_menu_item_selected(ParolePlayer *player, gint index)
+{
+	GList *menu_items, *menu_iter;
+	menu_items = gtk_container_get_children( GTK_CONTAINER (player->priv->languages_menu) );
+	
+	gint counter = 0;
+	for (menu_iter = menu_items; menu_iter != NULL; menu_iter = g_list_next(menu_iter))
+	{
+		if (counter == index) {
+			gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menu_iter->data), TRUE);
+			break;
+		}
+		counter++;
+	}
+	g_list_free(menu_items);
+}
+
+void parole_player_set_subtitle_radio_menu_item_selected(ParolePlayer *player, gint index)
+{
+	GList *menu_items, *menu_iter;
+	menu_items = gtk_container_get_children( GTK_CONTAINER (player->priv->subtitles_menu) );
+	
+	if (index == 0)
+	{
+		gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menu_items->data), TRUE);
+	}
+	else
+	{
+		gint counter = -3;
+		for (menu_iter = menu_items; menu_iter != NULL; menu_iter = g_list_next(menu_iter))
+		{
+			if (counter == index) {
+				gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menu_iter->data), TRUE);
+				break;
+			}
+			counter++;
+		}
+	}
+	g_list_free(menu_items);
+}
+
+void parole_player_audiotrack_radio_menu_item_changed_cb(GtkWidget *widget, ParolePlayer *player)
+{
+	gint radio_index;
+	
+	GList *menu_items, *menu_iter;
+	menu_items = gtk_container_get_children( GTK_CONTAINER (player->priv->languages_menu) );
+	
+	gint counter = 0;
+	for (menu_iter = menu_items; menu_iter != NULL; menu_iter = g_list_next(menu_iter))
+	{
+		if (gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(menu_iter->data)) == TRUE) {
+			radio_index = counter;
+			break;
+		}
+		counter++;
+	}
+	g_list_free(menu_items);
+	
+	gint combobox_index = gtk_combo_box_get_active(GTK_COMBO_BOX(player->priv->combobox_audiotrack));
+	if (radio_index != combobox_index)
+	gtk_combo_box_set_active(GTK_COMBO_BOX(player->priv->combobox_audiotrack), radio_index);
+}
+
+void parole_player_subtitles_radio_menu_item_changed_cb(GtkWidget *widget, ParolePlayer *player)
+{
+	gint radio_index;
+	
+	GList *menu_items, *menu_iter;
+	menu_items = gtk_container_get_children( GTK_CONTAINER (player->priv->subtitles_menu) );
+	
+	gint counter = 0;
+	for (menu_iter = menu_items; menu_iter != NULL; menu_iter = g_list_next(menu_iter))
+	{
+		if (counter == 0 || counter > 3)
+		{
+			if (gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(menu_iter->data)) == TRUE) {
+				radio_index = counter;
+				break;
+			}
+		}
+		counter++;
+	}
+	g_list_free(menu_items);
+	
+	if (radio_index != 0)
+	radio_index -= 3;
+
+	gint combobox_index = gtk_combo_box_get_active(GTK_COMBO_BOX(player->priv->combobox_subtitles));
+	if (radio_index != combobox_index)
+	gtk_combo_box_set_active(GTK_COMBO_BOX(player->priv->combobox_subtitles), radio_index);
+}
+
 void parole_player_combo_box_audiotrack_changed_cb(GtkWidget *widget, ParolePlayer *player)
 {
 	gint index = gtk_combo_box_get_active(GTK_COMBO_BOX(player->priv->combobox_audiotrack));
 	gst_set_current_audio_track(PAROLE_GST(player->priv->gst), index);
+	parole_player_set_audiotrack_radio_menu_item_selected(player, index);
 }
 
 void parole_player_combo_box_subtitles_changed_cb(GtkWidget *widget, ParolePlayer *player)
 {
 	gint index = gtk_combo_box_get_active(GTK_COMBO_BOX(player->priv->combobox_subtitles));
 	gst_set_current_subtitle_track(PAROLE_GST(player->priv->gst), index);
+	parole_player_set_subtitle_radio_menu_item_selected(player, index);
 }
 
 void parole_player_terminate (ParolePlayer *player)


More information about the Xfce4-commits mailing list