OSDN Git Service

LinGui: don't disable subme 10 when psy-rd is 0
[handbrake-jp/handbrake-jp-git.git] / gtk / src / settings.c
index 5912fba..f95b6a6 100644 (file)
@@ -170,6 +170,12 @@ ghb_settings_combo_option(const GValue *settings, const gchar *key)
        return ghb_lookup_combo_option(key, ghb_settings_get_value(settings, key));
 }
 
+const gchar*
+ghb_settings_combo_string(const GValue *settings, const gchar *key)
+{
+       return ghb_lookup_combo_string(key, ghb_settings_get_value(settings, key));
+}
+
 // Map widget names to setting keys
 // Widgets that map to settings have names
 // of this format: s_<setting key>
@@ -232,6 +238,13 @@ ghb_widget_value(GtkWidget *widget)
                bval = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
                value = ghb_boolean_value_new(bval);
        }
+       else if (type == GTK_TYPE_TOGGLE_BUTTON)
+       {
+               g_debug("\ttoggle_button");
+               gboolean bval;
+               bval = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
+               value = ghb_boolean_value_new(bval);
+       }
        else if (type == GTK_TYPE_TOGGLE_ACTION)
        {
                g_debug("\ttoggle action");
@@ -309,6 +322,13 @@ ghb_widget_value(GtkWidget *widget)
                        value = ghb_int_value_new(dval);
                }
        }
+       else if (type == GTK_TYPE_SCALE_BUTTON)
+       {
+               gdouble dval;
+
+               dval = gtk_scale_button_get_value(GTK_SCALE_BUTTON(widget));
+               value = ghb_double_value_new(dval);
+       }
        else if (type == GTK_TYPE_TEXT_VIEW)
        {
                GtkTextBuffer *buffer;
@@ -329,9 +349,13 @@ ghb_widget_value(GtkWidget *widget)
        }
        else if (type == GTK_TYPE_FILE_CHOOSER_BUTTON)
        {
-               const gchar *str;
+               gchar *str;
                str = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER(widget));
+               if (str == NULL)
+                       str = gtk_file_chooser_get_current_folder(GTK_FILE_CHOOSER(widget));
                value = ghb_string_value_new(str);
+               if (str != NULL)
+                       g_free(str);
        }
        else
        {
@@ -456,6 +480,11 @@ update_widget(GtkWidget *widget, const GValue *value)
                g_debug("check button");
                gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), ival);
        }
+       else if (type == GTK_TYPE_TOGGLE_BUTTON)
+       {
+               g_debug("toggle button");
+               gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), ival);
+       }
        else if (type == GTK_TYPE_TOGGLE_ACTION)
        {
                g_debug("toggle action");
@@ -570,6 +599,11 @@ update_widget(GtkWidget *widget, const GValue *value)
                g_debug("hscale");
                gtk_range_set_value(GTK_RANGE(widget), dval);
        }
+       else if (type == GTK_TYPE_SCALE_BUTTON)
+       {
+               g_debug("scale_button");
+               gtk_scale_button_set_value(GTK_SCALE_BUTTON(widget), dval);
+       }
        else if (type == GTK_TYPE_TEXT_VIEW)
        {
                g_debug("textview (%s)", str);
@@ -590,10 +624,27 @@ update_widget(GtkWidget *widget, const GValue *value)
                {
                        gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(widget), str);
                }
-               else
+               else if (act == GTK_FILE_CHOOSER_ACTION_SAVE)
                {
                        gtk_file_chooser_set_filename (GTK_FILE_CHOOSER(widget), str);
                }
+               else
+               {
+                       if (!g_file_test(str, G_FILE_TEST_IS_DIR))
+                       {
+                               gchar *dirname;
+
+                               dirname = g_path_get_dirname(str);
+                               gtk_file_chooser_set_current_folder(
+                                       GTK_FILE_CHOOSER(widget), dirname);
+                               g_free(dirname);
+                       }
+                       else
+                       {
+                               gtk_file_chooser_set_current_folder(
+                                       GTK_FILE_CHOOSER(widget), str);
+                       }
+               }
        }
        else
        {