diff options
author | Emmanuele Bassi <ebassi@linux.intel.com> | 2008-09-18 15:29:33 +0000 |
---|---|---|
committer | Emmanuele Bassi <ebassi@src.gnome.org> | 2008-09-18 15:29:33 +0000 |
commit | 555ef89dc3c00a000a9a5822e0eb4679c83ca21d (patch) | |
tree | d5e21327e85c5b83bb5e2a7de2ff03a8e796cf77 /gtk/gtkfilechoosersettings.c | |
parent | 8bfc826f27d18ba7f1ca08895bab526f5b238b3a (diff) | |
download | gtk+-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.c | 53 |
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); |