X-Git-Url: http://git.osdn.jp/view?a=blobdiff_plain;f=gtk%2Fsrc%2Fsettings.c;h=cc9ae4bc8830184335a24f00bff5dbb94cdcad03;hb=0884cb45aeeb60a46effe1d1056a61fe68300ea7;hp=5912fba5298c9cc8e1e478404e53a09724f3afee;hpb=13bd7f552ba09e6e9d8bf0ccccb8a60a08d9d8da;p=handbrake-jp%2Fhandbrake-jp-git.git diff --git a/gtk/src/settings.c b/gtk/src/settings.c index 5912fba5..cc9ae4bc 100644 --- a/gtk/src/settings.c +++ b/gtk/src/settings.c @@ -170,20 +170,23 @@ 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_ -static const gchar* -get_setting_key(GtkWidget *widget) +const gchar* +ghb_get_setting_key(GtkWidget *widget) { const gchar *name; g_debug("get_setting_key ()\n"); if (widget == NULL) return NULL; - if (GTK_IS_ACTION(widget)) - name = gtk_action_get_name(GTK_ACTION(widget)); - else - name = gtk_widget_get_name(widget); + name = gtk_buildable_get_name(GTK_BUILDABLE(widget)); if (name == NULL) { @@ -208,10 +211,7 @@ ghb_widget_value(GtkWidget *widget) } type = GTK_WIDGET_TYPE(widget); - if (GTK_IS_ACTION(widget)) - name = gtk_action_get_name(GTK_ACTION(widget)); - else - name = gtk_widget_get_name(widget); + name = ghb_get_setting_key(widget); g_debug("ghb_widget_value widget (%s)\n", name); if (type == GTK_TYPE_ENTRY) { @@ -232,6 +232,20 @@ 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_TOOL_BUTTON) + { + g_debug("\ttoggle_tool_button"); + gboolean bval; + bval = gtk_toggle_tool_button_get_active(GTK_TOGGLE_TOOL_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 +323,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 +350,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 { @@ -411,7 +436,7 @@ ghb_widget_to_setting(GValue *settings, GtkWidget *widget) if (widget == NULL) return; g_debug("ghb_widget_to_setting"); // Find corresponding setting - key = get_setting_key(widget); + key = ghb_get_setting_key(widget); if (key == NULL) return; value = ghb_widget_value(widget); if (value != NULL) @@ -456,6 +481,16 @@ 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_TOOL_BUTTON) + { + g_debug("toggle button"); + gtk_toggle_tool_button_set_active(GTK_TOGGLE_TOOL_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 +605,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); @@ -579,21 +619,47 @@ update_widget(GtkWidget *widget, const GValue *value) } else if (type == GTK_TYPE_LABEL) { - gtk_label_set_text (GTK_LABEL(widget), str); + gtk_label_set_markup (GTK_LABEL(widget), str); } else if (type == GTK_TYPE_FILE_CHOOSER_BUTTON) { GtkFileChooserAction act; act = gtk_file_chooser_get_action(GTK_FILE_CHOOSER(widget)); - if (act == GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER || + if (str[0] == 0) + { + // Do nothing + ; + } + else if (act == GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER || act == GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER) { 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)) + { + gtk_file_chooser_set_current_folder( + GTK_FILE_CHOOSER(widget), str); + } + else if (g_file_test(str, G_FILE_TEST_EXISTS)) + { + gtk_file_chooser_set_filename (GTK_FILE_CHOOSER(widget), str); + } + else + { + gchar *dirname; + + dirname = g_path_get_dirname(str); + gtk_file_chooser_set_current_folder( + GTK_FILE_CHOOSER(widget), dirname); + g_free(dirname); + } + } } else {