X-Git-Url: http://git.osdn.jp/view?a=blobdiff_plain;f=gtk%2Fsrc%2Fqueuehandler.c;h=d47a2aa66b64240d656ed50d234a01d8847eb4de;hb=722be02e829ad969250d1604e57ec8b9846dc060;hp=f01f543b6660e7400493e8cb8d63923bb99e97c7;hpb=2327fee8183124631ba4b43e0b35f984e1b85a3a;p=handbrake-jp%2Fhandbrake-jp-git.git diff --git a/gtk/src/queuehandler.c b/gtk/src/queuehandler.c index f01f543b..d47a2aa6 100644 --- a/gtk/src/queuehandler.c +++ b/gtk/src/queuehandler.c @@ -23,7 +23,7 @@ #include "presets.h" #include "ghb-dvd.h" -void +G_MODULE_EXPORT void queue_list_selection_changed_cb(GtkTreeSelection *selection, signal_user_data_t *ud) { GtkTreeModel *store; @@ -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, "Audio:"); + else if (ii == 0) + g_string_append_printf(str, "Audio:\n"); + if (count != 1) + g_string_append_printf(str, "\t"); + g_string_append_printf(str, - "Audio: %s, Encoder: %s, Mixdown: %s, SampleRate: %s, Bitrate: %s", + " %s, Encoder: %s, Mixdown: %s, SampleRate: %s, Bitrate: %s\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, "Subtitle:"); + else if (ii == 0) + g_string_append_printf(str, "Subtitles:\n"); + if (count != 1) + g_string_append_printf(str, "\t"); + + if (source != SRTSUB) + { + g_string_append_printf(str, + " %s%s%s%s", + 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); @@ -465,7 +511,7 @@ audio_list_refresh(signal_user_data_t *ud) s_sr = ghb_settings_get_string(asettings, "AudioSamplerate"); s_mix = ghb_settings_get_string(asettings, "AudioMixdown"); s_drc = ghb_settings_get_double(asettings, "AudioTrackDRCSlider"); - if (s_drc < 0.1) + if (s_drc < 1.0) drc = g_strdup("Off"); else drc = g_strdup_printf("%.1f", s_drc); @@ -550,6 +596,8 @@ validate_settings(signal_user_data_t *ud) g_free(destdir); return FALSE; } +#if !defined(_WIN32) + // This doesn't work properly on windows if (g_access(destdir, R_OK|W_OK) != 0) { message = g_strdup_printf( @@ -562,6 +610,7 @@ validate_settings(signal_user_data_t *ud) g_free(destdir); return FALSE; } +#endif GFile *gfile; GFileInfo *info; guint64 size; @@ -625,6 +674,11 @@ validate_settings(signal_user_data_t *ud) { return FALSE; } + // Validate audio settings + if (!ghb_validate_subtitles(ud)) + { + return FALSE; + } // Validate video settings if (!ghb_validate_video(ud)) { @@ -653,11 +707,6 @@ queue_add(signal_user_data_t *ud) return FALSE; } - GtkStatusIcon *si; - - si = GTK_STATUS_ICON(GHB_OBJECT(ud->builder, "hb_status")); - gtk_status_icon_set_from_icon_name(si, "hb-status"); - if (ud->queue == NULL) ud->queue = ghb_array_value_new(32); // Make a copy of current settings to be used for the new job @@ -674,14 +723,14 @@ queue_add(signal_user_data_t *ud) return TRUE; } -void +G_MODULE_EXPORT void queue_add_clicked_cb(GtkWidget *widget, signal_user_data_t *ud) { g_debug("queue_add_clicked_cb ()"); queue_add(ud); } -void +G_MODULE_EXPORT void queue_remove_clicked_cb(GtkWidget *widget, gchar *path, signal_user_data_t *ud) { GtkTreeView *treeview; @@ -761,7 +810,7 @@ find_last_finished(GValue *queue) // handler from expanding rows if you hover over them while // dragging. // Also controls where valid drop locations are -gboolean +G_MODULE_EXPORT gboolean queue_drag_motion_cb( GtkTreeView *tv, GdkDragContext *ctx, @@ -778,6 +827,11 @@ queue_drag_motion_cb( GtkTreeView *srctv; GtkTreeModel *model; GtkTreeSelection *select; + GtkWidget *widget; + + widget = gtk_drag_get_source_widget(ctx); + if (widget == NULL || widget != GTK_WIDGET(tv)) + return TRUE; // This bit checks to see if the source is allowed to be // moved. Only pending and canceled items may be moved. @@ -839,7 +893,7 @@ queue_drag_motion_cb( return TRUE; } -void +G_MODULE_EXPORT void queue_drag_cb( GtkTreeView *dstwidget, GdkDragContext *dc, @@ -973,7 +1027,7 @@ ghb_queue_buttons_grey(signal_user_data_t *ud, gboolean working) gtk_action_set_sensitive (action, working); } -void +G_MODULE_EXPORT void queue_list_size_allocate_cb(GtkWidget *widget, GtkAllocation *allocation, GtkCellRenderer *cell) { GtkTreeViewColumn *column; @@ -988,7 +1042,7 @@ queue_list_size_allocate_cb(GtkWidget *widget, GtkAllocation *allocation, GtkCel g_object_set(cell, "wrap-width", width-70, NULL); } -void +G_MODULE_EXPORT void queue_start_clicked_cb(GtkWidget *xwidget, signal_user_data_t *ud) { GValue *js; @@ -1024,14 +1078,14 @@ queue_start_clicked_cb(GtkWidget *xwidget, signal_user_data_t *ud) } } -void +G_MODULE_EXPORT void queue_stop_clicked_cb(GtkWidget *xwidget, signal_user_data_t *ud) { ud->cancel_encode = TRUE; ghb_cancel_encode(NULL); } -void +G_MODULE_EXPORT void queue_pause_clicked_cb(GtkWidget *xwidget, signal_user_data_t *ud) { ghb_pause_queue(); @@ -1107,7 +1161,7 @@ ghb_reload_queue(signal_user_data_t *ud) return FALSE; } -gboolean +G_MODULE_EXPORT gboolean queue_key_press_cb( GtkWidget *widget, GdkEventKey *event, @@ -1170,7 +1224,7 @@ queue_key_press_cb( GValue *ghb_queue_edit_settings = NULL; -void +G_MODULE_EXPORT void queue_edit_clicked_cb(GtkWidget *xwidget, signal_user_data_t *ud) { GtkTreeView *treeview;