}
GValue*
-ghb_settings_get_value(GValue *settings, const gchar *key)
+ghb_settings_get_value(const GValue *settings, const gchar *key)
{
GValue *value;
value = ghb_dict_lookup(settings, key);
}
gboolean
-ghb_settings_get_boolean(GValue *settings, const gchar *key)
+ghb_settings_get_boolean(const GValue *settings, const gchar *key)
{
const GValue* value;
value = ghb_settings_get_value(settings, key);
}
gint64
-ghb_settings_get_int64(GValue *settings, const gchar *key)
+ghb_settings_get_int64(const GValue *settings, const gchar *key)
{
const GValue* value;
value = ghb_settings_get_value(settings, key);
}
gint
-ghb_settings_get_int(GValue *settings, const gchar *key)
+ghb_settings_get_int(const GValue *settings, const gchar *key)
{
const GValue* value;
value = ghb_settings_get_value(settings, key);
}
gdouble
-ghb_settings_get_double(GValue *settings, const gchar *key)
+ghb_settings_get_double(const GValue *settings, const gchar *key)
{
const GValue* value;
value = ghb_settings_get_value(settings, key);
}
gchar*
-ghb_settings_get_string(GValue *settings, const gchar *key)
+ghb_settings_get_string(const GValue *settings, const gchar *key)
{
const GValue* value;
value = ghb_settings_get_value(settings, key);
}
gint
-ghb_settings_combo_int(GValue *settings, const gchar *key)
+ghb_settings_combo_int(const GValue *settings, const gchar *key)
{
return ghb_lookup_combo_int(key, ghb_settings_get_value(settings, key));
}
+gdouble
+ghb_settings_combo_double(const GValue *settings, const gchar *key)
+{
+ return ghb_lookup_combo_double(key, ghb_settings_get_value(settings, key));
+}
+
const gchar*
-ghb_settings_combo_option(GValue *settings, const gchar *key)
+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>
-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)
{
}
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)
{
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");
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;
}
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
{
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)
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");
GtkTreeModel *store;
GtkTreeIter iter;
gchar *shortOpt;
- gint ivalue;
+ gdouble ivalue;
gboolean foundit = FALSE;
g_debug("combo (%s)", str);
do
{
gtk_tree_model_get(store, &iter, 3, &ivalue, -1);
- if (ivalue == ival)
+ if ((gint)ivalue == ival || ivalue == dval)
{
gtk_combo_box_set_active_iter (
GTK_COMBO_BOX(widget), &iter);
GtkTreeModel *store;
GtkTreeIter iter;
gchar *shortOpt;
- gint ivalue;
+ gdouble ivalue;
gboolean foundit = FALSE;
g_debug("GTK_COMBO_BOX_ENTRY");
do
{
gtk_tree_model_get(store, &iter, 3, &ivalue, -1);
- if (ivalue == ival)
+ if ((gint)ivalue == ival || ivalue == dval)
{
gtk_combo_box_set_active_iter (
GTK_COMBO_BOX(widget), &iter);
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);
}
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
{