OSDN Git Service

LinGui: When translating legacy presets, vquality 0 means RF 0, not 0%
[handbrake-jp/handbrake-jp-git.git] / gtk / src / preview.c
index 9fd92bf..3cbc9ee 100644 (file)
@@ -142,6 +142,8 @@ ghb_par_scale(signal_user_data_t *ud, gint *width, gint *height, gint par_n, gin
 void
 ghb_preview_init(signal_user_data_t *ud)
 {
+       GtkWidget *widget;
+
        ud->preview = g_malloc0(sizeof(preview_t));
        ud->preview->view = GHB_WIDGET(ud->builder, "preview_image");
        gtk_widget_realize(ud->preview->view);
@@ -151,12 +153,18 @@ ghb_preview_init(signal_user_data_t *ud)
        ud->preview->pause = TRUE;
        ud->preview->encode_frame = -1;
        ud->preview->live_id = -1;
-
+       widget = GHB_WIDGET (ud->builder, "preview_button_image");
+       gtk_widget_get_size_request(widget, &ud->preview->button_width, &ud->preview->button_height);
+       
 #if defined(_ENABLE_GST)
        GstBus *bus;
        GstElement *xover;
 
+#if !defined(_WIN32)
        ud->preview->xid = GDK_DRAWABLE_XID(ud->preview->view->window);
+#else
+       ud->preview->xid = GDK_WINDOW_HWND(ud->preview->view->window);
+#endif
        ud->preview->play = gst_element_factory_make("playbin", "play");
        //xover = gst_element_factory_make("xvimagesink", "xover");
        //xover = gst_element_factory_make("ximagesink", "xover");
@@ -180,7 +188,7 @@ ghb_preview_init(signal_user_data_t *ud)
        gst_bus_set_sync_handler(bus, create_window, ud->preview);
        gst_object_unref(bus);
 #else
-       GtkWidget *widget = GHB_WIDGET(ud->builder, "live_preview_box");
+       widget = GHB_WIDGET(ud->builder, "live_preview_box");
        gtk_widget_hide (widget);
        widget = GHB_WIDGET(ud->builder, "live_preview_duration_box");
        gtk_widget_hide (widget);
@@ -209,8 +217,13 @@ create_window(GstBus *bus, GstMessage *msg, gpointer data)
        {
                if (!gst_structure_has_name(msg->structure, "prepare-xwindow-id"))
                        return GST_BUS_PASS;
+#if !defined(_WIN32)
                gst_x_overlay_set_xwindow_id(
                        GST_X_OVERLAY(GST_MESSAGE_SRC(msg)), preview->xid);
+#else
+               gst_directdraw_sink_set_window_id(
+                       GST_X_OVERLAY(GST_MESSAGE_SRC(msg)), preview->xid);
+#endif
                gst_message_unref(msg);
                return GST_BUS_DROP;
        } break;
@@ -831,25 +844,38 @@ set_visible(GtkWidget *widget, gboolean visible)
        }
 }
 
-G_MODULE_EXPORT void
-preview_button_clicked_cb(GtkWidget *xwidget, signal_user_data_t *ud)
+void
+ghb_preview_set_visible(signal_user_data_t *ud)
 {
        gint titleindex;
+       GtkWidget *widget;
+       gboolean settings_active;
 
-       g_debug("preview_button_clicked_cb()");
+       settings_active = ghb_settings_get_boolean(ud->settings, "show_picture");
+       widget = GHB_WIDGET (ud->builder, "preview_window");
        titleindex = ghb_settings_combo_int(ud->settings, "title");
-       if (titleindex >= 0)
+       if (settings_active && titleindex >= 0)
        {
                gint x, y;
-               GtkWidget *widget = GHB_WIDGET (ud->builder, "preview_window");
                x = ghb_settings_get_int(ud->settings, "preview_x");
                y = ghb_settings_get_int(ud->settings, "preview_y");
                if (x >= 0 && y >= 0)
                        gtk_window_move(GTK_WINDOW(widget), x, y);
-               set_visible(widget, gtk_toggle_button_get_active(
-                                                       GTK_TOGGLE_BUTTON(xwidget)));
+               set_visible(widget, 
+                                       ghb_settings_get_boolean(ud->settings, "show_preview"));
+       }
+       else
+       {
+               set_visible(widget, FALSE);
        }
+}
+
+G_MODULE_EXPORT void
+preview_button_clicked_cb(GtkWidget *xwidget, signal_user_data_t *ud)
+{
+       g_debug("preview_button_clicked_cb()");
        ghb_widget_to_setting (ud->settings, xwidget);
+       ghb_preview_set_visible(ud);
        ghb_check_dependency(ud, xwidget, NULL);
        const gchar *name = gtk_widget_get_name(xwidget);
        ghb_pref_save(ud->settings, name);
@@ -858,33 +884,23 @@ preview_button_clicked_cb(GtkWidget *xwidget, signal_user_data_t *ud)
 G_MODULE_EXPORT void
 picture_settings_clicked_cb(GtkWidget *xwidget, signal_user_data_t *ud)
 {
-       GtkWidget *widget, *toggle;
+       GtkWidget *widget;
        gboolean active, hide_settings;
        gint x, y;
 
        g_debug("picture_settings_clicked_cb()");
-       toggle = GHB_WIDGET (ud->builder, "hide_settings");
-       hide_settings = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(toggle));
+       ghb_widget_to_setting (ud->settings, xwidget);
+
+       hide_settings = ghb_settings_get_boolean(ud->settings, "hide_settings");
 
+       active = ghb_settings_get_boolean(ud->settings, "show_picture");
        widget = GHB_WIDGET (ud->builder, "settings_window");
-       active = gtk_toggle_tool_button_get_active(GTK_TOGGLE_TOOL_BUTTON(xwidget));
        x = ghb_settings_get_int(ud->settings, "settings_x");
        y = ghb_settings_get_int(ud->settings, "settings_y");
        if (x >= 0 && y >= 0)
                gtk_window_move(GTK_WINDOW(widget), x, y);
        set_visible(widget, active && !hide_settings);
-       if (ghb_settings_get_boolean(ud->settings, "show_preview"))
-       {
-               widget = GHB_WIDGET (ud->builder, "preview_window");
-               x = ghb_settings_get_int(ud->settings, "preview_x");
-               y = ghb_settings_get_int(ud->settings, "preview_y");
-               if (x >= 0 && y >= 0)
-                       gtk_window_move(GTK_WINDOW(widget), x, y);
-               set_visible(widget, active);
-               // The window may be hidden behind the main window, raise it
-               if (active)
-                       gtk_window_present(GTK_WINDOW(widget));
-       }
+       ghb_preview_set_visible(ud);
 }
 
 G_MODULE_EXPORT void
@@ -949,8 +965,10 @@ picture_settings_alt2_clicked_cb(GtkWidget *xwidget, signal_user_data_t *ud)
        GtkWidget *window;
 
        g_debug("picture_settings_alt2_clicked_cb()");
+       ghb_widget_to_setting (ud->settings, xwidget);
+       active = ghb_settings_get_boolean(ud->settings, "hide_settings");
+
        toggle = GHB_WIDGET (ud->builder, "hide_settings");
-       active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(toggle));
        window = GHB_WIDGET(ud->builder, "settings_window");
        if (!active)
        {