summaryrefslogtreecommitdiff
path: root/gtk/gtkfilechoosersettings.c
diff options
context:
space:
mode:
authorEmmanuele Bassi <ebassi@linux.intel.com>2008-09-18 15:29:33 +0000
committerEmmanuele Bassi <ebassi@src.gnome.org>2008-09-18 15:29:33 +0000
commit555ef89dc3c00a000a9a5822e0eb4679c83ca21d (patch)
treed5e21327e85c5b83bb5e2a7de2ff03a8e796cf77 /gtk/gtkfilechoosersettings.c
parent8bfc826f27d18ba7f1ca08895bab526f5b238b3a (diff)
downloadgtk+-555ef89dc3c00a000a9a5822e0eb4679c83ca21d.tar.gz
Bug 325095 – show a 'size' column
2008-09-18 Emmanuele Bassi <ebassi@linux.intel.com> Bug 325095 – show a 'size' column * gtk/gtkfilechooserdefault.c: * gtk/gtkfilechooserprivate.h: Add a context menu item controlling the visibility of the file size column. This works only for the browse mode, and the column is not visible by default. * gtk/gtkfilechoosersettings.[ch]: Add a ShowSizeColumn key to the settings file. svn path=/trunk/; revision=21431
Diffstat (limited to 'gtk/gtkfilechoosersettings.c')
-rw-r--r--gtk/gtkfilechoosersettings.c53
1 files changed, 43 insertions, 10 deletions
diff --git a/gtk/gtkfilechoosersettings.c b/gtk/gtkfilechoosersettings.c
index b80d362ed9..4c4e6e7d0c 100644
--- a/gtk/gtkfilechoosersettings.c
+++ b/gtk/gtkfilechoosersettings.c
@@ -41,6 +41,7 @@
#define LOCATION_MODE_KEY "LocationMode"
#define SHOW_HIDDEN_KEY "ShowHidden"
#define EXPAND_FOLDERS_KEY "ExpandFolders"
+#define SHOW_SIZE_COLUMN_KEY "ShowSizeColumn"
#define MODE_PATH_BAR "path-bar"
#define MODE_FILENAME_ENTRY "filename-entry"
@@ -60,6 +61,22 @@ get_config_filename (void)
}
static void
+warn_if_invalid_key_and_clear_error (const gchar *key,
+ GError **error)
+{
+ if (error && *error)
+ {
+ if ((*error)->domain == G_KEY_FILE_ERROR &&
+ (*error)->code != G_KEY_FILE_ERROR_KEY_NOT_FOUND)
+ g_warning ("Failed to read '%s' setting in filechooser settings: %s",
+ key,
+ (*error)->message);
+
+ g_clear_error (error);
+ }
+}
+
+static void
ensure_settings_read (GtkFileChooserSettings *settings)
{
GError *error;
@@ -108,25 +125,24 @@ ensure_settings_read (GtkFileChooserSettings *settings)
value = g_key_file_get_boolean (key_file, SETTINGS_GROUP,
SHOW_HIDDEN_KEY, &error);
if (error)
- {
- g_warning ("Failed to read show-hidden setting in filechooser settings: %s",
- error->message);
- g_clear_error (&error);
- }
+ warn_if_invalid_key_and_clear_error (SHOW_HIDDEN_KEY, &error);
else
settings->show_hidden = value != FALSE;
value = g_key_file_get_boolean (key_file, SETTINGS_GROUP,
EXPAND_FOLDERS_KEY, &error);
if (error)
- {
- g_warning ("Failed to read expand-folders setting in filechooser settings: %s",
- error->message);
- g_clear_error (&error);
- }
+ warn_if_invalid_key_and_clear_error (EXPAND_FOLDERS_KEY, &error);
else
settings->expand_folders = value != FALSE;
+ value = g_key_file_get_boolean (key_file, SETTINGS_GROUP,
+ SHOW_SIZE_COLUMN_KEY, &error);
+ if (error)
+ warn_if_invalid_key_and_clear_error (SHOW_SIZE_COLUMN_KEY, &error);
+ else
+ settings->show_size_column = value != FALSE;
+
out:
g_key_file_free (key_file);
@@ -148,6 +164,7 @@ _gtk_file_chooser_settings_init (GtkFileChooserSettings *settings)
settings->location_mode = LOCATION_MODE_PATH_BAR;
settings->show_hidden = FALSE;
settings->expand_folders = FALSE;
+ settings->show_size_column = FALSE;
}
GtkFileChooserSettings *
@@ -192,6 +209,20 @@ _gtk_file_chooser_settings_get_expand_folders (GtkFileChooserSettings *settings)
}
void
+_gtk_file_chooser_settings_set_show_size_column (GtkFileChooserSettings *settings,
+ gboolean show_column)
+{
+ settings->show_size_column = show_column != FALSE;
+}
+
+gboolean
+_gtk_file_chooser_settings_get_show_size_column (GtkFileChooserSettings *settings)
+{
+ ensure_settings_read (settings);
+ return settings->show_size_column;
+}
+
+void
_gtk_file_chooser_settings_set_expand_folders (GtkFileChooserSettings *settings,
gboolean expand_folders)
{
@@ -238,6 +269,8 @@ _gtk_file_chooser_settings_save (GtkFileChooserSettings *settings,
SHOW_HIDDEN_KEY, settings->show_hidden);
g_key_file_set_boolean (key_file, SETTINGS_GROUP,
EXPAND_FOLDERS_KEY, settings->expand_folders);
+ g_key_file_set_boolean (key_file, SETTINGS_GROUP,
+ SHOW_SIZE_COLUMN_KEY, settings->show_size_column);
contents = g_key_file_to_data (key_file, &len, error);
g_key_file_free (key_file);