[gtk+/bgo658280-filechooser-recently-used-2-24: 2/3] New settings key for the startup mode
- From: Federico Mena Quintero <federico src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+/bgo658280-filechooser-recently-used-2-24: 2/3] New settings key for the startup mode
- Date: Tue, 27 Nov 2012 00:45:57 +0000 (UTC)
commit ebb2977a54798d3253556126cf404b9f381bba58
Author: Federico Mena Quintero <federico gnome org>
Date: Mon Nov 26 18:05:18 2012 -0600
New settings key for the startup mode
Signed-off-by: Federico Mena Quintero <federico gnome org>
gtk/gtkfilechooserdefault.c | 4 +++
gtk/gtkfilechooserprivate.h | 7 +++++
gtk/gtkfilechoosersettings.c | 55 ++++++++++++++++++++++++++++++++++++++++++
gtk/gtkfilechoosersettings.h | 5 ++++
4 files changed, 71 insertions(+), 0 deletions(-)
---
diff --git a/gtk/gtkfilechooserdefault.c b/gtk/gtkfilechooserdefault.c
index a2dfc1e..417f4e2 100644
--- a/gtk/gtkfilechooserdefault.c
+++ b/gtk/gtkfilechooserdefault.c
@@ -3410,6 +3410,10 @@ shortcuts_build_popup_menu (GtkFileChooserDefault *impl)
G_CALLBACK (rename_shortcut_cb), impl);
gtk_widget_show (item);
gtk_menu_shell_append (GTK_MENU_SHELL (impl->browse_shortcuts_popup_menu), item);
+
+ item = gtk_separator_menu_item_new ();
+ gtk_widget_show (item);
+ gtk_menu_shell_append (GTK_MENU_SHELL (impl->browse_shortcuts_popup_menu), item);
}
static void
diff --git a/gtk/gtkfilechooserprivate.h b/gtk/gtkfilechooserprivate.h
index eb97427..6eb03b9 100644
--- a/gtk/gtkfilechooserprivate.h
+++ b/gtk/gtkfilechooserprivate.h
@@ -152,6 +152,11 @@ typedef enum {
OPERATION_MODE_RECENT
} OperationMode;
+typedef enum {
+ STARTUP_MODE_RECENT,
+ STARTUP_MODE_CWD
+} StartupMode;
+
struct _GtkFileChooserDefault
{
GtkVBox parent_instance;
@@ -195,6 +200,8 @@ struct _GtkFileChooserDefault
GtkFileSystemModel *browse_files_model;
char *browse_files_last_selected_name;
+ StartupMode startup_mode;
+
/* OPERATION_MODE_SEARCH */
GtkWidget *search_hbox;
GtkWidget *search_entry;
diff --git a/gtk/gtkfilechoosersettings.c b/gtk/gtkfilechoosersettings.c
index 8d5e473..ac5e462 100644
--- a/gtk/gtkfilechoosersettings.c
+++ b/gtk/gtkfilechoosersettings.c
@@ -48,6 +48,7 @@
#define GEOMETRY_HEIGHT_KEY "GeometryHeight"
#define SORT_COLUMN_KEY "SortColumn"
#define SORT_ORDER_KEY "SortOrder"
+#define STARTUP_MODE_KEY "StartupMode"
#define COLUMN_NAME_STRING "name"
#define COLUMN_MTIME_STRING "modified"
@@ -55,6 +56,9 @@
#define SORT_ASCENDING_STRING "ascending"
#define SORT_DESCENDING_STRING "descending"
+#define STARTUP_MODE_RECENT_STRING "recent"
+#define STARTUP_MODE_CWD_STRING "cwd"
+
#define MODE_PATH_BAR "path-bar"
#define MODE_FILENAME_ENTRY "filename-entry"
@@ -113,6 +117,7 @@ ensure_settings_read (GtkFileChooserSettings *settings)
GKeyFile *key_file;
gchar *location_mode_str, *filename;
gchar *sort_column, *sort_order;
+ gchar *startup_mode;
gboolean value;
if (settings->settings_read)
@@ -220,6 +225,23 @@ ensure_settings_read (GtkFileChooserSettings *settings)
g_free (sort_order);
}
+ /* Startup mode */
+
+ startup_mode = g_key_file_get_string (key_file, SETTINGS_GROUP,
+ STARTUP_MODE_KEY, NULL);
+ if (startup_mode)
+ {
+ if (EQ (STARTUP_MODE_RECENT_STRING, startup_mode))
+ settings->startup_mode = STARTUP_MODE_RECENT;
+ else if (EQ (STARTUP_MODE_CWD_STRING, startup_mode))
+ settings->startup_mode = STARTUP_MODE_CWD;
+ else
+ g_warning ("Unknown startup mode '%s' encountered in filechooser settings",
+ startup_mode);
+
+ g_free (startup_mode);
+ }
+
out:
g_key_file_free (key_file);
@@ -248,6 +270,7 @@ _gtk_file_chooser_settings_init (GtkFileChooserSettings *settings)
settings->geometry_y = -1;
settings->geometry_width = -1;
settings->geometry_height = -1;
+ settings->startup_mode = STARTUP_MODE_RECENT;
}
GtkFileChooserSettings *
@@ -367,6 +390,20 @@ _gtk_file_chooser_settings_set_sort_order (GtkFileChooserSettings *settings,
settings->sort_order = sort_order;
}
+void
+_gtk_file_chooser_settings_set_startup_mode (GtkFileChooserSettings *settings,
+ StartupMode startup_mode)
+{
+ settings->startup_mode = startup_mode;
+}
+
+StartupMode
+_gtk_file_chooser_settings_get_startup_mode (GtkFileChooserSettings *settings)
+{
+ ensure_settings_read (settings);
+ return settings->startup_mode;
+}
+
gboolean
_gtk_file_chooser_settings_save (GtkFileChooserSettings *settings,
GError **error)
@@ -377,6 +414,7 @@ _gtk_file_chooser_settings_save (GtkFileChooserSettings *settings,
gchar *contents;
gchar *sort_column;
gchar *sort_order;
+ gchar *startup_mode;
gsize len;
gboolean retval;
GKeyFile *key_file;
@@ -432,6 +470,21 @@ _gtk_file_chooser_settings_save (GtkFileChooserSettings *settings,
sort_order = NULL;
}
+ switch (settings->startup_mode)
+ {
+ case STARTUP_MODE_RECENT:
+ startup_mode = STARTUP_MODE_RECENT_STRING;
+ break;
+
+ case STARTUP_MODE_CWD:
+ startup_mode = STARTUP_MODE_CWD_STRING;
+ break;
+
+ default:
+ g_assert_not_reached ();
+ startup_mode = NULL;
+ }
+
key_file = g_key_file_new ();
/* Initialise with the on-disk keyfile, so we keep unknown options */
@@ -457,6 +510,8 @@ _gtk_file_chooser_settings_save (GtkFileChooserSettings *settings,
SORT_COLUMN_KEY, sort_column);
g_key_file_set_string (key_file, SETTINGS_GROUP,
SORT_ORDER_KEY, sort_order);
+ g_key_file_set_string (key_file, SETTINGS_GROUP,
+ STARTUP_MODE_KEY, startup_mode);
contents = g_key_file_to_data (key_file, &len, error);
g_key_file_free (key_file);
diff --git a/gtk/gtkfilechoosersettings.h b/gtk/gtkfilechoosersettings.h
index b7f6cd3..a846a22 100644
--- a/gtk/gtkfilechoosersettings.h
+++ b/gtk/gtkfilechoosersettings.h
@@ -50,6 +50,7 @@ struct _GtkFileChooserSettings
GtkSortType sort_order;
gint sort_column;
+ StartupMode startup_mode;
int geometry_x;
int geometry_y;
@@ -104,6 +105,10 @@ void _gtk_file_chooser_settings_set_geometry (GtkFileChooserSettings *settings,
int width,
int heigth);
+void _gtk_file_chooser_settings_set_startup_mode (GtkFileChooserSettings *settings,
+ StartupMode startup_mode);
+StartupMode _gtk_file_chooser_settings_get_startup_mode (GtkFileChooserSettings *settings);
+
gboolean _gtk_file_chooser_settings_save (GtkFileChooserSettings *settings,
GError **error);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]