X-Git-Url: http://git.osdn.jp/view?a=blobdiff_plain;f=gtk%2Fsrc%2Fqueuehandler.c;h=76107230078341c049f12dcfdf742981704084f4;hb=a3a7afcb7aa68ec73f6552c528d93ea989905cc2;hp=22b2c25e4f6c6a4caa7d8efef6b894bed9bcc402;hpb=023bc0f853674db16682807936aabf77139c1bb7;p=handbrake-jp%2Fhandbrake-jp-git.git diff --git a/gtk/src/queuehandler.c b/gtk/src/queuehandler.c index 22b2c25e..76107230 100644 --- a/gtk/src/queuehandler.c +++ b/gtk/src/queuehandler.c @@ -256,7 +256,7 @@ add_to_queue_list(signal_user_data_t *ud, GValue *settings, GtkTreeIter *piter) vqvalue = ghb_settings_get_double(settings, "VideoQualitySlider"); vq_desc = "Constant Quality:"; vqstr = g_strdup_printf("%d", (gint)vqvalue); - vq_units = "(crf)"; + vq_units = "(RF)"; } fps = ghb_settings_get_string(settings, "VideoFramerate"); if (strcmp("source", fps) == 0) @@ -283,8 +283,10 @@ add_to_queue_list(signal_user_data_t *ud, GValue *settings, GtkTreeIter *piter) source_width, source_height, width, height, aspect_desc); gint decomb, detel; + gboolean decomb_deint; gboolean filters = FALSE; + decomb_deint = ghb_settings_get_boolean(settings, "PictureDecombDeinterlace"); decomb = ghb_settings_combo_int(settings, "PictureDecomb"); g_string_append_printf(str, "Filters:"); detel = ghb_settings_combo_int(settings, "PictureDetelecine"); @@ -300,7 +302,7 @@ add_to_queue_list(signal_user_data_t *ud, GValue *settings, GtkTreeIter *piter) } filters = TRUE; } - if (decomb) + if (decomb_deint && decomb) { g_string_append_printf(str, " - Decomb"); if (decomb == 1) @@ -312,7 +314,7 @@ add_to_queue_list(signal_user_data_t *ud, GValue *settings, GtkTreeIter *piter) } filters = TRUE; } - else + else if (!decomb_deint) { gint deint = ghb_settings_combo_int(settings, "PictureDeinterlace"); if (deint) @@ -456,6 +458,24 @@ add_to_queue_list(signal_user_data_t *ud, GValue *settings, GtkTreeIter *piter) def ? " (Default)":"" ); } + else + { + gint offset; + gchar *filename, *basename, *code; + + offset = ghb_settings_get_int(settings, "SrtOffset"); + filename = ghb_settings_get_string(settings, "SrtFile"); + basename = g_path_get_basename(filename); + code = ghb_settings_get_string(settings, "SrtCodeset"); + g_string_append_printf(str, + " %s (%s), %s, Offset (ms) %d%s", + track, code, basename, offset, + def ? " (Default)":"" + ); + g_free(filename); + g_free(basename); + g_free(code); + } if (ii < count-1) g_string_append_printf(str, "\n"); g_free(track); @@ -491,6 +511,7 @@ audio_list_refresh(signal_user_data_t *ud) { const gchar *track, *codec, *br, *sr, *mix; gchar *drc, *s_track, *s_codec, *s_br, *s_sr, *s_mix; + gint itrack, icodec; gdouble s_drc; GValue *asettings; @@ -500,7 +521,9 @@ audio_list_refresh(signal_user_data_t *ud) asettings = ghb_array_get_nth(audio_list, row); track = ghb_settings_combo_option(asettings, "AudioTrack"); + itrack = ghb_settings_combo_int(asettings, "AudioTrack"); codec = ghb_settings_combo_option(asettings, "AudioEncoder"); + icodec = ghb_settings_combo_int(asettings, "AudioEncoder"); br = ghb_settings_combo_option(asettings, "AudioBitrate"); sr = ghb_settings_combo_option(asettings, "AudioSamplerate"); mix = ghb_settings_combo_option(asettings, "AudioMixdown"); @@ -516,6 +539,9 @@ audio_list_refresh(signal_user_data_t *ud) else drc = g_strdup_printf("%.1f", s_drc); + if (icodec == HB_ACODEC_MASK) + codec = ghb_select_audio_codec_str(ud, itrack); + gtk_list_store_set(GTK_LIST_STORE(store), &iter, // These are displayed in list 0, track, @@ -596,6 +622,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( @@ -608,6 +636,7 @@ validate_settings(signal_user_data_t *ud) g_free(destdir); return FALSE; } +#endif GFile *gfile; GFileInfo *info; guint64 size; @@ -716,6 +745,7 @@ queue_add(signal_user_data_t *ud) ghb_array_append(ud->queue, settings); add_to_queue_list(ud, settings, NULL); ghb_save_queue(ud->queue); + ghb_update_pending(ud); return TRUE; } @@ -761,7 +791,7 @@ queue_remove_clicked_cb(GtkWidget *widget, gchar *path, signal_user_data_t *ud) if (status == GHB_QUEUE_RUNNING) { // Ask if wants to stop encode. - if (!ghb_cancel_encode(NULL)) + if (!ghb_cancel_encode2(ud, NULL)) { return; } @@ -780,6 +810,7 @@ queue_remove_clicked_cb(GtkWidget *widget, gchar *path, signal_user_data_t *ud) { gtk_tree_path_free (treepath); } + ghb_update_pending(ud); } static gint @@ -994,34 +1025,156 @@ queue_drag_cb( } void -ghb_queue_buttons_grey(signal_user_data_t *ud, gboolean working) +ghb_queue_buttons_grey(signal_user_data_t *ud) { GtkWidget *widget; GtkAction *action; gint queue_count; gint titleindex; - gboolean title_ok; + gint queue_state, scan_state; + gboolean show_start, show_stop, paused; queue_count = ghb_array_len(ud->queue); titleindex = ghb_settings_combo_int(ud->settings, "title"); - title_ok = (titleindex >= 0); + + queue_state = ghb_get_queue_state(); + scan_state = ghb_get_scan_state(); + + show_stop = queue_state & + (GHB_STATE_WORKING | GHB_STATE_SCANNING | GHB_STATE_MUXING); + show_start = !(scan_state & GHB_STATE_SCANNING) && + (titleindex >= 0 || queue_count > 0); + + + paused = queue_state & GHB_STATE_PAUSED; widget = GHB_WIDGET (ud->builder, "queue_start1"); - gtk_widget_set_sensitive (widget, !working && (title_ok || queue_count)); + if (show_stop) + { + gtk_widget_set_sensitive (widget, TRUE); + gtk_tool_button_set_icon_name(GTK_TOOL_BUTTON(widget), "hb-stop"); + gtk_tool_button_set_label(GTK_TOOL_BUTTON(widget), "Stop"); + gtk_tool_item_set_tooltip_text(GTK_TOOL_ITEM(widget), "Stop Encoding"); + } + else + { + gtk_widget_set_sensitive (widget, show_start); + gtk_tool_button_set_icon_name(GTK_TOOL_BUTTON(widget), "hb-play"); + gtk_tool_button_set_label(GTK_TOOL_BUTTON(widget), "Start"); + gtk_tool_item_set_tooltip_text(GTK_TOOL_ITEM(widget), "Start Encoding"); + } widget = GHB_WIDGET (ud->builder, "queue_start2"); - gtk_widget_set_sensitive (widget, !working && (title_ok || queue_count)); - action = GHB_ACTION (ud->builder, "queue_start_menu"); - gtk_action_set_sensitive (action, !working && (title_ok || queue_count)); + if (show_stop) + { + gtk_widget_set_sensitive (widget, TRUE); + gtk_tool_button_set_icon_name(GTK_TOOL_BUTTON(widget), "hb-stop"); + gtk_tool_button_set_label(GTK_TOOL_BUTTON(widget), "Stop"); + gtk_tool_item_set_tooltip_text(GTK_TOOL_ITEM(widget), "Stop Encoding"); + } + else + { + gtk_widget_set_sensitive (widget, show_start); + gtk_tool_button_set_icon_name(GTK_TOOL_BUTTON(widget), "hb-play"); + gtk_tool_button_set_label(GTK_TOOL_BUTTON(widget), "Start"); + gtk_tool_item_set_tooltip_text(GTK_TOOL_ITEM(widget), "Start Encoding"); + } widget = GHB_WIDGET (ud->builder, "queue_pause1"); - gtk_widget_set_sensitive (widget, working); + if (paused) + { + gtk_widget_set_sensitive (widget, show_stop); + gtk_tool_button_set_icon_name(GTK_TOOL_BUTTON(widget), "hb-play"); + gtk_tool_button_set_label(GTK_TOOL_BUTTON(widget), "Resume"); + gtk_tool_item_set_tooltip_text(GTK_TOOL_ITEM(widget), "Resume Encoding"); + } + else + { + gtk_widget_set_sensitive (widget, show_stop); + gtk_tool_button_set_icon_name(GTK_TOOL_BUTTON(widget), "hb-pause"); + gtk_tool_button_set_label(GTK_TOOL_BUTTON(widget), "Pause"); + gtk_tool_item_set_tooltip_text(GTK_TOOL_ITEM(widget), "Pause Encoding"); + } widget = GHB_WIDGET (ud->builder, "queue_pause2"); - gtk_widget_set_sensitive (widget, working); + if (paused) + { + gtk_widget_set_sensitive (widget, show_stop); + gtk_tool_button_set_icon_name(GTK_TOOL_BUTTON(widget), "hb-play"); + gtk_tool_button_set_label(GTK_TOOL_BUTTON(widget), "Resume"); + gtk_tool_item_set_tooltip_text(GTK_TOOL_ITEM(widget), "Resume Encoding"); + } + else + { + gtk_widget_set_sensitive (widget, show_stop); + gtk_tool_button_set_icon_name(GTK_TOOL_BUTTON(widget), "hb-pause"); + gtk_tool_button_set_label(GTK_TOOL_BUTTON(widget), "Pause"); + gtk_tool_item_set_tooltip_text(GTK_TOOL_ITEM(widget), "Pause Encoding"); + } + + action = GHB_ACTION (ud->builder, "queue_start_menu"); + if (show_stop) + { + gtk_action_set_sensitive (action, TRUE); +#if GTK_CHECK_VERSION(2, 16, 0) + gtk_action_set_icon_name(action, "hb-stop"); + gtk_action_set_label(action, "S_top Queue"); + gtk_action_set_tooltip(action, "Stop Encoding"); +#else + g_object_set_property(G_OBJECT(action), "icon-name", + ghb_string_value("hb-stop")); + g_object_set_property(G_OBJECT(action), "label", + ghb_string_value("S_top Queue")); + g_object_set_property(G_OBJECT(action), "tooltip", + ghb_string_value("Stop Encoding")); +#endif + } + else + { + gtk_action_set_sensitive (action, show_start); +#if GTK_CHECK_VERSION(2, 16, 0) + gtk_action_set_icon_name(action, "hb-play"); + gtk_action_set_label(action, "_Start Queue"); + gtk_action_set_tooltip(action, "Start Encoding"); +#else + g_object_set_property(G_OBJECT(action), "icon-name", + ghb_string_value("hb-play")); + g_object_set_property(G_OBJECT(action), "label", + ghb_string_value("_Start Queue")); + g_object_set_property(G_OBJECT(action), "tooltip", + ghb_string_value("Start Encoding")); +#endif + } action = GHB_ACTION (ud->builder, "queue_pause_menu"); - gtk_action_set_sensitive (action, working); - widget = GHB_WIDGET (ud->builder, "queue_stop"); - gtk_widget_set_sensitive (widget, working); - action = GHB_ACTION (ud->builder, "queue_stop_menu"); - gtk_action_set_sensitive (action, working); + if (paused) + { + gtk_action_set_sensitive (action, show_start); +#if GTK_CHECK_VERSION(2, 16, 0) + gtk_action_set_icon_name(action, "hb-play"); + gtk_action_set_label(action, "_Resume Queue"); + gtk_action_set_tooltip(action, "Resume Encoding"); +#else + g_object_set_property(G_OBJECT(action), "icon-name", + ghb_string_value("hb-play")); + g_object_set_property(G_OBJECT(action), "label", + ghb_string_value("_Resume Queue")); + g_object_set_property(G_OBJECT(action), "tooltip", + ghb_string_value("Resume Encoding")); +#endif + } + else + { + gtk_action_set_sensitive (action, show_stop); +#if GTK_CHECK_VERSION(2, 16, 0) + gtk_action_set_icon_name(action, "hb-pause"); + gtk_action_set_label(action, "_Pause Queue"); + gtk_action_set_tooltip(action, "Pause Encoding"); +#else + g_object_set_property(G_OBJECT(action), "icon-name", + ghb_string_value("hb-pause")); + g_object_set_property(G_OBJECT(action), "label", + ghb_string_value("_Pause Queue")); + g_object_set_property(G_OBJECT(action), "tooltip", + ghb_string_value("Pause Encoding")); +#endif + } } G_MODULE_EXPORT void @@ -1048,6 +1201,14 @@ queue_start_clicked_cb(GtkWidget *xwidget, signal_user_data_t *ud) gint status; gint state; + state = ghb_get_queue_state(); + if (state & (GHB_STATE_WORKING | GHB_STATE_SCANNING | GHB_STATE_MUXING)) + { + ghb_cancel_encode(ud, "You are currently encoding. " + "What would you like to do?"); + return; + } + count = ghb_array_len(ud->queue); for (ii = 0; ii < count; ii++) { @@ -1067,7 +1228,6 @@ queue_start_clicked_cb(GtkWidget *xwidget, signal_user_data_t *ud) if (!queue_add(ud)) return; } - state = ghb_get_queue_state(); if (state == GHB_STATE_IDLE) { // Add the first pending queue item and start @@ -1076,13 +1236,6 @@ queue_start_clicked_cb(GtkWidget *xwidget, signal_user_data_t *ud) } G_MODULE_EXPORT void -queue_stop_clicked_cb(GtkWidget *xwidget, signal_user_data_t *ud) -{ - ud->cancel_encode = TRUE; - ghb_cancel_encode(NULL); -} - -G_MODULE_EXPORT void queue_pause_clicked_cb(GtkWidget *xwidget, signal_user_data_t *ud) { ghb_pause_queue(); @@ -1124,6 +1277,8 @@ ghb_reload_queue(signal_user_data_t *ud) { GtkWidget *widget = GHB_WIDGET (ud->builder, "queue_window"); gtk_widget_show (widget); + widget = GHB_WIDGET (ud->builder, "show_queue"); + gtk_toggle_tool_button_set_active(GTK_TOGGLE_TOOL_BUTTON(widget), TRUE); ud->queue = queue; // First get rid of any old items we don't want @@ -1146,7 +1301,7 @@ ghb_reload_queue(signal_user_data_t *ud) ghb_settings_set_int(settings, "job_status", GHB_QUEUE_PENDING); add_to_queue_list(ud, settings, NULL); } - ghb_queue_buttons_grey(ud, FALSE); + ghb_queue_buttons_grey(ud); } else { @@ -1200,7 +1355,7 @@ queue_key_press_cb( if (status == GHB_QUEUE_RUNNING) { // Ask if wants to stop encode. - if (!ghb_cancel_encode(NULL)) + if (!ghb_cancel_encode2(ud, NULL)) { return TRUE; } @@ -1260,6 +1415,10 @@ queue_edit_clicked_cb(GtkWidget *xwidget, signal_user_data_t *ud) // Remove the corresponding item from the queue list ghb_array_remove(ud->queue, row); } + else + { + ghb_queue_edit_settings = ghb_value_dup(ghb_queue_edit_settings); + } gchar *source; source = ghb_settings_get_string(ghb_queue_edit_settings, "source"); ghb_do_scan(ud, source, 0, FALSE);