summaryrefslogtreecommitdiff
path: root/src/nautilus-preferences-window.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/nautilus-preferences-window.c')
-rw-r--r--src/nautilus-preferences-window.c95
1 files changed, 34 insertions, 61 deletions
diff --git a/src/nautilus-preferences-window.c b/src/nautilus-preferences-window.c
index 0e4a5a413..9116692cd 100644
--- a/src/nautilus-preferences-window.c
+++ b/src/nautilus-preferences-window.c
@@ -64,7 +64,7 @@
/* int enums */
#define NAUTILUS_PREFERENCES_DIALOG_THUMBNAIL_LIMIT_WIDGET \
- "preview_image_size_combobox"
+ "preview_image_size_spinbutton"
static const char * const speed_tradeoff_values[] =
{
@@ -106,12 +106,6 @@ static const char * const count_components[] =
"count_only_this_computer_radiobutton", "count_all_files_radiobutton", "count_never_radiobutton", NULL
};
-static const guint64 thumbnail_limit_values[] =
-{
- 102400, 512000, 1048576, 3145728, 5242880,
- 10485760, 104857600, 1073741824, 2147483648U, 4294967295U
-};
-
static const char * const icon_captions_components[] =
{
"captions_0_combobox", "captions_1_combobox", "captions_2_combobox", NULL
@@ -360,68 +354,48 @@ nautilus_preferences_window_setup_list_column_page (GtkBuilder *builder)
gtk_box_pack_start (GTK_BOX (box), chooser, TRUE, TRUE, 0);
}
-static void bind_builder_bool(GtkBuilder *builder,
- GSettings *settings,
- const char *widget_name,
- const char *prefs)
+static gboolean format_spin_button(GtkSpinButton *spin_button,
+ gpointer user_data)
{
- g_settings_bind (settings, prefs, gtk_builder_get_object (builder, widget_name),
- "active", G_SETTINGS_BIND_DEFAULT);
+ GtkAdjustment *adjustment;
+ int value;
+ gchar *text;
+
+ adjustment = gtk_spin_button_get_adjustment (spin_button);
+ value = (int)gtk_adjustment_get_value (adjustment);
+ text = g_strdup_printf ("%d MB",value);
+ gtk_entry_set_text (GTK_ENTRY (spin_button), text);
+
+ return TRUE;
}
-typedef struct
+static void nautilus_preferences_window_setup_thumbnail_limit_formatting (GtkBuilder *builder)
{
- const guint64 *values;
- int n_values;
-} UIntEnumBinding;
+ GtkSpinButton *spin;
-static gboolean uint_enum_get_mapping(GValue *value,
- GVariant *variant,
- gpointer user_data)
-{
- UIntEnumBinding *binding = user_data;
- guint64 v;
- int i;
+ spin = GTK_SPIN_BUTTON (gtk_builder_get_object (builder, "preview_image_size_spinbutton"));
- v = g_variant_get_uint64 (variant);
- for (i = 0; i < binding->n_values; i++)
- {
- if (binding->values[i] >= v)
- {
- g_value_set_int (value, i);
- return TRUE;
- }
- }
+ g_signal_connect (spin, "output", G_CALLBACK (format_spin_button),
+ spin);
- return FALSE;
}
-static GVariant *uint_enum_set_mapping(const GValue *value,
- const GVariantType *expected_type,
- gpointer user_data)
+static void bind_builder_bool(GtkBuilder *builder,
+ GSettings *settings,
+ const char *widget_name,
+ const char *prefs)
{
- UIntEnumBinding *binding = user_data;
-
- return g_variant_new_uint64 (binding->values[g_value_get_int (value)]);
+ g_settings_bind (settings, prefs, gtk_builder_get_object (builder, widget_name),
+ "active", G_SETTINGS_BIND_DEFAULT);
}
-static void bind_builder_uint_enum(GtkBuilder *builder,
- GSettings *settings,
- const char *widget_name,
- const char *prefs,
- const guint64 *values,
- int n_values)
-{
- UIntEnumBinding *binding;
-
- binding = g_new (UIntEnumBinding, 1);
- binding->values = values;
- binding->n_values = n_values;
-
- g_settings_bind_with_mapping (
- settings, prefs, gtk_builder_get_object (builder, widget_name), "active",
- G_SETTINGS_BIND_DEFAULT, uint_enum_get_mapping, uint_enum_set_mapping,
- binding, g_free);
+static void bind_builder_uint_spin(GtkBuilder *builder,
+ GSettings *settings,
+ const char *widget_name,
+ const char *prefs)
+{
+ g_settings_bind (settings, prefs, gtk_builder_get_object (builder, widget_name),
+ "value", G_SETTINGS_BIND_DEFAULT);
}
static GVariant *radio_mapping_set(const GValue *gvalue,
@@ -527,12 +501,11 @@ static void nautilus_preferences_window_setup(GtkBuilder *builder,
NAUTILUS_PREFERENCES_SHOW_DIRECTORY_ITEM_COUNTS,
(const char **) speed_tradeoff_values);
- bind_builder_uint_enum (builder, nautilus_preferences,
+ bind_builder_uint_spin (builder, nautilus_preferences,
NAUTILUS_PREFERENCES_DIALOG_THUMBNAIL_LIMIT_WIDGET,
- NAUTILUS_PREFERENCES_FILE_THUMBNAIL_LIMIT,
- thumbnail_limit_values,
- G_N_ELEMENTS (thumbnail_limit_values));
+ NAUTILUS_PREFERENCES_FILE_THUMBNAIL_LIMIT);
+ nautilus_preferences_window_setup_thumbnail_limit_formatting (builder);
nautilus_preferences_window_setup_icon_caption_page (builder);
nautilus_preferences_window_setup_list_column_page (builder);