OSDN Git Service

LinGui: add subtitle list to queue display
authorjstebbins <jstebbins@b64f7644-9d1e-0410-96f1-a4d463321fa5>
Tue, 23 Jun 2009 20:00:55 +0000 (20:00 +0000)
committerjstebbins <jstebbins@b64f7644-9d1e-0410-96f1-a4d463321fa5>
Tue, 23 Jun 2009 20:00:55 +0000 (20:00 +0000)
git-svn-id: svn://localhost/HandBrake/trunk@2605 b64f7644-9d1e-0410-96f1-a4d463321fa5

gtk/src/callbacks.c
gtk/src/ghb.ui
gtk/src/queuehandler.c
gtk/src/subtitlehandler.c

index 0267d2e..bf44181 100644 (file)
@@ -2976,7 +2976,7 @@ ghb_file_menu_add_dvd(signal_user_data_t *ud)
        static GtkActionGroup *agroup = NULL;
        static gint merge_id;
 
-       g_debug("ghb_file_menu_add_dvd()\n");
+       g_debug("ghb_file_menu_add_dvd()");
        link = drives = dvd_device_list();
        if (drives != NULL)
        {
index 1627fb3..9bc771a 100644 (file)
@@ -5756,6 +5756,7 @@ libmpeg2 authors:
   Brion Vibber
   Martin Vogt
   Fredrik Vraalsen
+
 libogg authors:
   Christopher Montgomery
 
index 4dc683d..22b2c25 100644 (file)
@@ -406,15 +406,61 @@ add_to_queue_list(signal_user_data_t *ud, GValue *settings, GtkTreeIter *piter)
                }
                track = ghb_settings_get_string(asettings, "AudioTrackDescription");
                mix = ghb_settings_combo_option(asettings, "AudioMixdown");
+               if (count == 1)
+                       g_string_append_printf(str, "<b>Audio:</b>");
+               else if (ii == 0)
+                       g_string_append_printf(str, "<b>Audio:</b>\n");
+               if (count != 1)
+                       g_string_append_printf(str, "\t");
+
                g_string_append_printf(str,
-                       "<b>Audio:</b><small> %s, Encoder: %s, Mixdown: %s, SampleRate: %s, Bitrate: %s</small>",
+                       "<small> %s, Encoder: %s, Mixdown: %s, SampleRate: %s, Bitrate: %s</small>\n",
                         track, acodec, mix, samplerate, bitrate);
-               if (ii < count-1)
-                       g_string_append_printf(str, "\n");
                g_free(track);
                g_free(bitrate);
                g_free(samplerate);
        }
+
+       // Add the audios
+       const GValue *sub_list;
+
+       sub_list = ghb_settings_get_value(settings, "subtitle_list");
+       count = ghb_array_len(sub_list);
+       for (ii = 0; ii < count; ii++)
+       {
+               GValue *settings;
+               gchar *track;
+               gboolean force, burn, def;
+               gint source;
+
+               settings = ghb_array_get_nth(sub_list, ii);
+               track = ghb_settings_get_string(settings, "SubtitleTrackDescription");
+               source = ghb_settings_get_int(settings, "SubtitleSource");
+               force = ghb_settings_get_boolean(settings, "SubtitleForced");
+               burn = ghb_settings_get_boolean(settings, "SubtitleBurned");
+               def = ghb_settings_get_boolean(settings, "SubtitleDefaultTrack");
+               if (count == 1)
+                       g_string_append_printf(str, "<b>Subtitle:</b>");
+               else if (ii == 0)
+                       g_string_append_printf(str, "<b>Subtitles:</b>\n");
+               if (count != 1)
+                       g_string_append_printf(str, "\t");
+
+               if (source != SRTSUB)
+               {
+                       g_string_append_printf(str,
+                               "<small> %s%s%s%s</small>",
+                               track, 
+                               force ? " (Force)":"",
+                               burn  ? " (Burn)":"",
+                               def   ? " (Default)":""
+                       );
+               }
+               if (ii < count-1)
+                       g_string_append_printf(str, "\n");
+               g_free(track);
+       }
+
        info = g_string_free(str, FALSE);
        gtk_tree_store_append(store, &citer, &iter);
        gtk_tree_store_set(store, &citer, 1, info, -1);
index fd7c52c..31fa406 100644 (file)
@@ -129,10 +129,20 @@ ghb_add_subtitle(signal_user_data_t *ud, GValue *settings)
        GValue *subtitle_list;
        gint count;
        gboolean burned;
+       const gchar *track;
+       gint tt, source;
        
        g_debug("ghb_add_subtitle ()");
 
-       // Only allow up to 8 subtitle entries
+       // Add the long track description so the queue can access it
+       // when a different title is selected.
+       track = ghb_settings_combo_option(settings, "SubtitleTrack");
+       ghb_settings_set_string(settings, "SubtitleTrackDescription", track);
+
+       tt = ghb_settings_get_int(settings, "SubtitleTrack");
+       source = ghb_subtitle_track_source(ud, tt);
+       ghb_settings_set_int(settings, "SubtitleSource", source);
+
        subtitle_list = ghb_settings_get_value(ud->settings, "subtitle_list");
        if (subtitle_list == NULL)
        {
@@ -140,12 +150,27 @@ ghb_add_subtitle(signal_user_data_t *ud, GValue *settings)
                ghb_settings_set_value(ud->settings, "subtitle_list", subtitle_list);
        }
        count = ghb_array_len(subtitle_list);
+
+       // Don't allow more than 99
+       // This is a had limit imposed by libhb/sync.c:GetFifoForId()
+       if (count >= 99)
+       {
+               ghb_value_free(settings);
+               return;
+       }
+
        ghb_array_append(subtitle_list, settings);
        add_to_subtitle_list(ud, settings);
 
        burned = ghb_settings_get_boolean(settings, "SubtitleBurned");
        if (burned)
                ghb_subtitle_exclusive_burn(ud, count);
+       if (count == 98)
+       {
+               GtkWidget *widget;
+               widget = GHB_WIDGET (ud->builder, "subtitle_add");
+               gtk_widget_set_sensitive(widget, FALSE);
+       }
 }
 
 static void
@@ -584,8 +609,16 @@ subtitle_track_changed_cb(GtkWidget *widget, signal_user_data_t *ud)
        settings = ghb_selected_subtitle_settings(ud);
        if (settings != NULL)
        {
+               const gchar *track;
+               gint tt, source;
+
                ghb_widget_to_setting(settings, widget);
                subtitle_list_refresh_selected(ud);
+               track = ghb_settings_combo_option(settings, "SubtitleTrack");
+               ghb_settings_set_string(settings, "SubtitleTrackDescription", track);
+               tt = ghb_settings_get_int(settings, "SubtitleTrack");
+               source = ghb_subtitle_track_source(ud, tt);
+               ghb_settings_set_int(settings, "SubtitleSource", source);
        }
        ghb_live_reset(ud);
 }
@@ -679,26 +712,12 @@ subtitle_add_clicked_cb(GtkWidget *xwidget, signal_user_data_t *ud)
 {
        // Add the current subtitle settings to the list.
        GValue *settings;
-       gint count;
-       GValue *subtitle_list;
        gboolean burned = FALSE;
        gint track;
        
        g_debug("subtitle_add_clicked_cb ()");
-       subtitle_list = ghb_settings_get_value(ud->settings, "subtitle_list");
-       if (subtitle_list == NULL)
-       {
-               subtitle_list = ghb_array_value_new(8);
-               ghb_settings_set_value(ud->settings, "subtitle_list", subtitle_list);
-       }
-       count = ghb_array_len(subtitle_list);
-       // Don't allow more than 99
-       // This is a had limit imposed by libhb/sync.c:GetFifoForId()
-       if (count >= 99)
-               return;
 
        track = ghb_settings_get_int(ud->settings, "SubtitleTrack");
-
        if (mustBurn(ud, track))
        {
                burned = TRUE;
@@ -712,16 +731,7 @@ subtitle_add_clicked_cb(GtkWidget *xwidget, signal_user_data_t *ud)
        ghb_settings_take_value(settings, "SubtitleDefaultTrack", 
                                                        ghb_boolean_value_new(FALSE));
 
-       ghb_array_append(subtitle_list, settings);
-       add_to_subtitle_list(ud, settings);
-       if (burned)
-               ghb_subtitle_exclusive_burn(ud, count);
-       if (count == 98)
-       {
-               GtkWidget *widget;
-               widget = GHB_WIDGET (ud->builder, "subtitle_add");
-               gtk_widget_set_sensitive(widget, FALSE);
-       }
+       ghb_add_subtitle(ud, settings);
 }
 
 G_MODULE_EXPORT void