OSDN Git Service

LinGui: merge gtk mingw cross compiling support
[handbrake-jp/handbrake-jp-git.git] / gtk / src / queuehandler.c
index adf409e..aed2b07 100644 (file)
@@ -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;
@@ -72,8 +72,10 @@ add_to_queue_list(signal_user_data_t *ud, GValue *settings, GtkTreeIter *piter)
        gchar *fps, *vcodec_abbr;
        gint title, start_chapter, end_chapter, width, height;
        gint source_width, source_height;
-       gboolean pass2, anamorphic, round_dim, keep_aspect, vqtype, turbo;
+       gboolean pass2, keep_aspect, vqtype, turbo;
+       gint pic_par;
        gboolean tweaks;
+       gchar *escape;
        
        g_debug("update_queue_list ()");
        if (settings == NULL) return;
@@ -81,21 +83,24 @@ add_to_queue_list(signal_user_data_t *ud, GValue *settings, GtkTreeIter *piter)
        store = GTK_TREE_STORE(gtk_tree_view_get_model(treeview));
                
        tweaks = ghb_settings_get_boolean(settings, "allow_tweaks");
-       title = ghb_settings_combo_int(settings, "title");
+       title = ghb_settings_get_int(settings, "titlenum");
        start_chapter = ghb_settings_get_int(settings, "start_chapter");
        end_chapter = ghb_settings_get_int(settings, "end_chapter");
        pass2 = ghb_settings_get_boolean(settings, "VideoTwoPass");
        vol_name = ghb_settings_get_string(settings, "volume_label");
        dest = ghb_settings_get_string(settings, "destination");
        basename = g_path_get_basename(dest);
+       escape = g_markup_escape_text(basename, -1);
        info = g_strdup_printf 
        (
                "<big><b>%s</b></big> "
                "<small>(Title %d, Chapters %d through %d, %d Video %s)"
                " --> %s</small>",
-                vol_name, title+1, start_chapter, end_chapter, 
-                pass2 ? 2:1, pass2 ? "Passes":"Pass", basename
+                vol_name, title, start_chapter, end_chapter, 
+                pass2 ? 2:1, pass2 ? "Passes":"Pass", escape
        );
+       g_free(basename);
+       g_free(escape);
 
        if (piter)
                iter = *piter;
@@ -176,28 +181,19 @@ add_to_queue_list(signal_user_data_t *ud, GValue *settings, GtkTreeIter *piter)
                        g_string_append_printf(str, "</small>\n");
                }
        }
+       escape = g_markup_escape_text(dest, -1);
        g_string_append_printf(str, 
-               "<b>Destination:</b> <small>%s</small>\n", dest);
+               "<b>Destination:</b> <small>%s</small>\n", escape);
 
        width = ghb_settings_get_int(settings, "scale_width");
        height = ghb_settings_get_int(settings, "scale_height");
-       anamorphic = ghb_settings_get_boolean(settings, "anamorphic");
-       round_dim = ghb_settings_get_boolean(settings, "ModDimensions");
+       pic_par = ghb_settings_combo_int(settings, "PicturePAR");
        keep_aspect = ghb_settings_get_boolean(settings, "PictureKeepRatio");
 
        gchar *aspect_desc;
-       if (anamorphic)
+       switch (pic_par)
        {
-               if (round_dim)
-               {
-                       aspect_desc = "(Anamorphic)";
-               }
-               else
-               {
-                       aspect_desc = "(Strict Anamorphic)";
-               }
-       }
-       else
+       case 0:
        {
                if (keep_aspect)
                {
@@ -207,6 +203,27 @@ add_to_queue_list(signal_user_data_t *ud, GValue *settings, GtkTreeIter *piter)
                {
                        aspect_desc = "(Aspect Lost)";
                }
+       } break;
+
+       case 1:
+       {
+               aspect_desc = "(Strict Anamorphic)";
+       } break;
+
+       case 2:
+       {
+               aspect_desc = "(Loose Anamorphic)";
+       } break;
+
+       case 3:
+       {
+               aspect_desc = "(Custom Anamorphic)";
+       } break;
+
+       default:
+       {
+               aspect_desc = "(Unknown)";
+       } break;
        }
        vqtype = ghb_settings_get_boolean(settings, "vquality_type_constant");
 
@@ -238,22 +255,14 @@ add_to_queue_list(signal_user_data_t *ud, GValue *settings, GtkTreeIter *piter)
                // Constant quality
                vqvalue = ghb_settings_get_double(settings, "VideoQualitySlider");
                vq_desc = "Constant Quality:";
-               if (ghb_settings_get_boolean(settings, "directqp"))
-               {
-                       vqstr = g_strdup_printf("%d", (gint)vqvalue);
-                       vq_units = "(crf)";
-               }
-               else
-               {
-                       vqstr = g_strdup_printf("%.1f", 100*vqvalue);
-                       vq_units = "%";
-               }
+               vqstr = g_strdup_printf("%d", (gint)vqvalue);
+               vq_units = "(crf)";
        }
        fps = ghb_settings_get_string(settings, "VideoFramerate");
        if (strcmp("source", fps) == 0)
        {
                g_free(fps);
-               if (ghb_settings_get_boolean(settings, "PictureDetelecine"))
+               if (ghb_settings_combo_int(settings, "PictureDetelecine"))
                        fps = g_strdup("Same As Source (vfr detelecine)");
                else
                        fps = g_strdup("Same As Source (variable)");
@@ -273,40 +282,73 @@ add_to_queue_list(signal_user_data_t *ud, GValue *settings, GtkTreeIter *piter)
                "<b>Picture:</b> Source: <small>%d x %d, Output %d x %d %s</small>\n",
                 source_width, source_height, width, height, aspect_desc);
 
-       gboolean decomb;
+       gint decomb, detel;
        gboolean filters = FALSE;
 
-       decomb = ghb_settings_get_boolean(settings, "PictureDecomb");
+       decomb = ghb_settings_combo_int(settings, "PictureDecomb");
        g_string_append_printf(str, "<b>Filters:</b><small>");
-       if (ghb_settings_get_boolean(settings, "PictureDetelecine"))
+       detel = ghb_settings_combo_int(settings, "PictureDetelecine");
+       if (detel)
        {
                g_string_append_printf(str, " - Detelecine");
+               if (detel == 1)
+               {
+                       gchar *cust;
+                       cust = ghb_settings_get_string(settings, "PictureDetelecineCustom");
+                       g_string_append_printf(str, ": %s", cust);
+                       g_free(cust);
+               }
                filters = TRUE;
        }
        if (decomb)
        {
                g_string_append_printf(str, " - Decomb");
+               if (decomb == 1)
+               {
+                       gchar *cust;
+                       cust = ghb_settings_get_string(settings, "PictureDecombCustom");
+                       g_string_append_printf(str, ": %s", cust);
+                       g_free(cust);
+               }
                filters = TRUE;
        }
        else
        {
-               gint deint = ghb_settings_combo_int(settings, 
-                                       tweaks ? "tweak_PictureDeinterlace":"PictureDeinterlace");
+               gint deint = ghb_settings_combo_int(settings, "PictureDeinterlace");
                if (deint)
                {
-                       const gchar *opt = ghb_settings_combo_option(settings,
-                                       tweaks ? "tweak_PictureDeinterlace":"PictureDeinterlace");
-                       g_string_append_printf(str, " - Deinterlace: %s", opt);
+                       if (deint == 1)
+                       {
+                               gchar *cust = ghb_settings_get_string(settings,
+                                                                                               "PictureDeinterlaceCustom");
+                               g_string_append_printf(str, " - Deinterlace: %s", cust);
+                               g_free(cust);
+                       }
+                       else
+                       {
+                               const gchar *opt = ghb_settings_combo_option(settings,
+                                                                                                       "PictureDeinterlace");
+                               g_string_append_printf(str, " - Deinterlace: %s", opt);
+                       }
                        filters = TRUE;
                }
        }
-       gint denoise = ghb_settings_combo_int(settings, 
-                               tweaks ? "tweak_PictureDenoise":"PictureDenoise");
+       gint denoise = ghb_settings_combo_int(settings, "PictureDenoise");
        if (denoise)
        {
-               const gchar *opt = ghb_settings_combo_option(settings,
-                               tweaks ? "tweak_PictureDenoise":"PictureDenoise");
-               g_string_append_printf(str, " - Denoise: %s", opt);
+               if (denoise == 1)
+               {
+                       gchar *cust = ghb_settings_get_string(settings,
+                                                                                                       "PictureDenoiseCustom");
+                       g_string_append_printf(str, " - Denoise: %s", cust);
+                       g_free(cust);
+               }
+               else
+               {
+                       const gchar *opt = ghb_settings_combo_option(settings,
+                                                                                                       "PictureDenoise");
+                       g_string_append_printf(str, " - Denoise: %s", opt);
+               }
                filters = TRUE;
        }
        gint deblock = ghb_settings_get_int(settings, "PictureDeblock");
@@ -416,7 +458,6 @@ audio_list_refresh(signal_user_data_t *ud)
                        br = ghb_settings_combo_option(asettings, "AudioBitrate");
                        sr = ghb_settings_combo_option(asettings, "AudioSamplerate");
                        mix = ghb_settings_combo_option(asettings, "AudioMixdown");
-                       drc = ghb_settings_get_string(asettings, "AudioTrackDRCSlider");
 
                        s_track = ghb_settings_get_string(asettings, "AudioTrack");
                        s_codec = ghb_settings_get_string(asettings, "AudioEncoder");
@@ -424,6 +465,10 @@ 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)
+                               drc = g_strdup("Off");
+                       else
+                               drc = g_strdup_printf("%.1f", s_drc);
 
                        gtk_list_store_set(GTK_LIST_STORE(store), &iter, 
                                // These are displayed in list
@@ -432,8 +477,8 @@ audio_list_refresh(signal_user_data_t *ud)
                                2, br,
                                3, sr,
                                4, mix,
-                               // These are used to set combo values when an item is selected
                                5, drc,
+                               // These are used to set combo values when an item is selected
                                6, s_track,
                                7, s_codec,
                                8, s_br,
@@ -557,7 +602,7 @@ validate_settings(signal_user_data_t *ud)
        {
                message = g_strdup_printf(
                                        "Destination: %s\n\n"
-                                       "File already exhists.\n"
+                                       "File already exists.\n"
                                        "Do you want to overwrite?",
                                        dest);
                if (!ghb_message_dialog(GTK_MESSAGE_QUESTION, message, "Cancel", "Overwrite"))
@@ -607,6 +652,12 @@ 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
@@ -623,14 +674,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;
@@ -710,7 +761,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,
@@ -788,7 +839,7 @@ queue_drag_motion_cb(
        return TRUE;
 }
 
-void 
+G_MODULE_EXPORT void 
 queue_drag_cb(
        GtkTreeView *dstwidget, 
        GdkDragContext *dc, 
@@ -922,7 +973,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;
@@ -937,7 +988,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;
@@ -973,14 +1024,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();
@@ -997,6 +1048,7 @@ ghb_reload_queue(signal_user_data_t *ud)
        gchar *message;
 
        g_debug("ghb_reload_queue");
+
        queue = ghb_load_queue();
        // Look for unfinished entries
        count = ghb_array_len(queue);
@@ -1055,7 +1107,7 @@ ghb_reload_queue(signal_user_data_t *ud)
        return FALSE;
 }
 
-gboolean 
+G_MODULE_EXPORT gboolean 
 queue_key_press_cb(
        GtkWidget *widget, 
        GdkEventKey *event,
@@ -1118,7 +1170,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;
@@ -1159,7 +1211,7 @@ queue_edit_clicked_cb(GtkWidget *xwidget, signal_user_data_t *ud)
                }
                gchar *source;
                source = ghb_settings_get_string(ghb_queue_edit_settings, "source");
-               ghb_do_scan(ud, source, FALSE);
+               ghb_do_scan(ud, source, 0, FALSE);
                g_free(source);
        }
 }