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

commit 1e059fd366078f6a3b9f1dbbdc503cc9306064e5
Author: Sean Davis <[email protected]>
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)
_______________________________________________
Xfce4-commits mailing list
[email protected]
https://mail.xfce.org/mailman/listinfo/xfce4-commits

Reply via email to