aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthew Barnes <mbarnes@redhat.com>2011-09-05 02:30:36 +0800
committerMatthew Barnes <mbarnes@redhat.com>2011-10-06 20:16:21 +0800
commit938505da180727fbc56b68b80851adc3cf676523 (patch)
treead0a04a23ca77922eebea9a644d12c47f922a2aa
parentef05d73b0a06cfc5eaf1a74c7b5c25134d81e328 (diff)
downloadgsoc2013-evolution-938505da180727fbc56b68b80851adc3cf676523.tar.gz
gsoc2013-evolution-938505da180727fbc56b68b80851adc3cf676523.tar.zst
gsoc2013-evolution-938505da180727fbc56b68b80851adc3cf676523.zip
Let GtkFileChooser track its own last-used-folder.
GtkFileChooser in GTK+ 3.2 now keeps track of the last-used-folder itself, even across applications, so get out of its way and let it handle it.
-rw-r--r--addressbook/gui/contact-editor/e-contact-editor.c4
-rw-r--r--composer/e-composer-actions.c3
-rw-r--r--composer/e-composer-private.h2
-rw-r--r--composer/e-msg-composer.c6
-rw-r--r--doc/reference/shell/eshell-sections.txt3
-rw-r--r--doc/reference/shell/tmpl/e-attachment-store.sgml28
-rw-r--r--doc/reference/shell/tmpl/eshell-unused.sgml25
-rw-r--r--mail/evolution-mail.schemas.in14
-rw-r--r--shell/apps_evolution_shell.schemas.in14
-rw-r--r--shell/e-shell-utils.c70
-rw-r--r--shell/e-shell.c4
-rw-r--r--widgets/misc/e-attachment-store.c123
-rw-r--r--widgets/misc/e-attachment-store.h8
13 files changed, 42 insertions, 262 deletions
diff --git a/addressbook/gui/contact-editor/e-contact-editor.c b/addressbook/gui/contact-editor/e-contact-editor.c
index aa0328e9ce..e2dc21c25c 100644
--- a/addressbook/gui/contact-editor/e-contact-editor.c
+++ b/addressbook/gui/contact-editor/e-contact-editor.c
@@ -3418,10 +3418,6 @@ image_clicked (GtkWidget *button,
GTK_DIALOG (editor->file_selector),
GTK_RESPONSE_ACCEPT);
- gtk_file_chooser_set_current_folder (
- GTK_FILE_CHOOSER (editor->file_selector),
- g_get_home_dir ());
-
g_signal_connect (
editor->file_selector, "response",
G_CALLBACK (file_chooser_response), editor);
diff --git a/composer/e-composer-actions.c b/composer/e-composer-actions.c
index 163270f24d..cd50f7a39b 100644
--- a/composer/e-composer-actions.c
+++ b/composer/e-composer-actions.c
@@ -218,8 +218,7 @@ action_save_as_cb (GtkAction *action,
gtk_window_set_icon_name (
GTK_WINDOW (dialog), "mail-message-new");
- response = gtkhtml_editor_file_chooser_dialog_run (
- GTKHTML_EDITOR (composer), dialog);
+ response = gtk_dialog_run (GTK_DIALOG (dialog));
if (response != GTK_RESPONSE_OK)
goto exit;
diff --git a/composer/e-composer-private.h b/composer/e-composer-private.h
index 35eb26696b..69e3169de3 100644
--- a/composer/e-composer-private.h
+++ b/composer/e-composer-private.h
@@ -73,8 +73,6 @@
MAIL_GCONF_PREFIX "/composer"
#define COMPOSER_GCONF_CHARSET_KEY \
COMPOSER_GCONF_PREFIX "/charset"
-#define COMPOSER_GCONF_CURRENT_FOLDER_KEY \
- COMPOSER_GCONF_PREFIX "/current_folder"
#define COMPOSER_GCONF_INLINE_SPELLING_KEY \
COMPOSER_GCONF_PREFIX "/inline_spelling"
#define COMPOSER_GCONF_MAGIC_LINKS_KEY \
diff --git a/composer/e-msg-composer.c b/composer/e-msg-composer.c
index 7790cbb2ea..82541d6aa7 100644
--- a/composer/e-msg-composer.c
+++ b/composer/e-msg-composer.c
@@ -2114,12 +2114,6 @@ msg_composer_constructed (GObject *object)
array = composer->priv->gconf_bridge_binding_ids;
- binding_id = gconf_bridge_bind_property (
- gconf_bridge_get (),
- COMPOSER_GCONF_CURRENT_FOLDER_KEY,
- G_OBJECT (composer), "current-folder");
- g_array_append_val (array, binding_id);
-
binding_id = gconf_bridge_bind_window (
gconf_bridge_get (),
COMPOSER_GCONF_WINDOW_PREFIX,
diff --git a/doc/reference/shell/eshell-sections.txt b/doc/reference/shell/eshell-sections.txt
index 1f0ecdbc0c..765bb28f8a 100644
--- a/doc/reference/shell/eshell-sections.txt
+++ b/doc/reference/shell/eshell-sections.txt
@@ -694,12 +694,9 @@ e_attachment_store_add_attachment
e_attachment_store_remove_attachment
e_attachment_store_add_to_multipart
e_attachment_store_get_attachments
-e_attachment_store_get_current_folder_uri
-e_attachment_store_set_current_folder_uri
e_attachment_store_get_num_attachments
e_attachment_store_get_num_loading
e_attachment_store_get_total_size
-e_attachment_store_run_file_chooser_dialog
e_attachment_store_run_load_dialog
e_attachment_store_run_save_dialog
e_attachment_store_get_uris_async
diff --git a/doc/reference/shell/tmpl/e-attachment-store.sgml b/doc/reference/shell/tmpl/e-attachment-store.sgml
index 34884eacc5..e7d64e85b9 100644
--- a/doc/reference/shell/tmpl/e-attachment-store.sgml
+++ b/doc/reference/shell/tmpl/e-attachment-store.sgml
@@ -75,24 +75,6 @@ e-attachment-store
@Returns:
-<!-- ##### FUNCTION e_attachment_store_get_current_folder_uri ##### -->
-<para>
-
-</para>
-
-@store:
-@Returns:
-
-
-<!-- ##### FUNCTION e_attachment_store_set_current_folder_uri ##### -->
-<para>
-
-</para>
-
-@store:
-@current_folder:
-
-
<!-- ##### FUNCTION e_attachment_store_get_num_attachments ##### -->
<para>
@@ -120,16 +102,6 @@ e-attachment-store
@Returns:
-<!-- ##### FUNCTION e_attachment_store_run_file_chooser_dialog ##### -->
-<para>
-
-</para>
-
-@store:
-@dialog:
-@Returns:
-
-
<!-- ##### FUNCTION e_attachment_store_run_load_dialog ##### -->
<para>
diff --git a/doc/reference/shell/tmpl/eshell-unused.sgml b/doc/reference/shell/tmpl/eshell-unused.sgml
index 5b67b87993..d8f54f7867 100644
--- a/doc/reference/shell/tmpl/eshell-unused.sgml
+++ b/doc/reference/shell/tmpl/eshell-unused.sgml
@@ -515,6 +515,23 @@ e-shell-window.sgml
@store:
@Returns:
+<!-- ##### FUNCTION e_attachment_store_get_current_folder_uri ##### -->
+<para>
+
+</para>
+
+@store:
+@Returns:
+
+<!-- ##### FUNCTION e_attachment_store_run_file_chooser_dialog ##### -->
+<para>
+
+</para>
+
+@store:
+@dialog:
+@Returns:
+
<!-- ##### FUNCTION e_attachment_store_set_current_folder ##### -->
<para>
@@ -523,6 +540,14 @@ e-shell-window.sgml
@store:
@current_folder:
+<!-- ##### FUNCTION e_attachment_store_set_current_folder_uri ##### -->
+<para>
+
+</para>
+
+@store:
+@current_folder:
+
<!-- ##### FUNCTION e_binding_new ##### -->
<para>
diff --git a/mail/evolution-mail.schemas.in b/mail/evolution-mail.schemas.in
index 82be1319c8..c26c0feb96 100644
--- a/mail/evolution-mail.schemas.in
+++ b/mail/evolution-mail.schemas.in
@@ -1588,20 +1588,6 @@
</locale>
</schema>
- <schema>
- <key>/schemas/apps/evolution/mail/composer/current_folder</key>
- <applyto>/apps/evolution/mail/composer/current_folder</applyto>
- <owner>evolution-mail</owner>
- <type>string</type>
- <default></default>
- <locale name="C">
- <short>Composer load/attach directory</short>
- <long>
- Directory for loading/attaching files to composer.
- </long>
- </locale>
- </schema>
-
<!-- Widget States -->
<schema>
diff --git a/shell/apps_evolution_shell.schemas.in b/shell/apps_evolution_shell.schemas.in
index 09c376edda..20e7af463d 100644
--- a/shell/apps_evolution_shell.schemas.in
+++ b/shell/apps_evolution_shell.schemas.in
@@ -58,20 +58,6 @@
</locale>
</schema>
- <!-- Initial GtkFileChooser Folder -->
-
- <schema>
- <key>/schemas/apps/evolution/shell/file_chooser_folder</key>
- <applyto>/apps/evolution/shell/file_chooser_folder</applyto>
- <owner>evolution</owner>
- <type>string</type>
- <default></default>
- <locale name="C">
- <short>Initial file chooser folder</short>
- <long>Initial folder for GtkFileChooser dialogs.</long>
- </locale>
- </schema>
-
<!-- Offline Mode -->
<schema>
diff --git a/shell/e-shell-utils.c b/shell/e-shell-utils.c
index 05722a0319..b5a1f490ae 100644
--- a/shell/e-shell-utils.c
+++ b/shell/e-shell-utils.c
@@ -65,11 +65,10 @@ e_shell_configure_ui_manager (EShell *shell,
* @customize_data: optional data to pass to @customize_func
*
* Runs a #GtkFileChooserDialog in open mode with the given title and
- * returns the selected #GFile. It automatically remembers the selected
- * folder. If @customize_func is provided, the function is called just
- * prior to running the dialog (the file chooser is the first argument,
- * @customize data is the second). If the user cancels the dialog the
- * function will return %NULL.
+ * returns the selected #GFile. If @customize_func is provided, the
+ * function is called just prior to running the dialog (the file chooser
+ * is the first argument, @customize data is the second). If the user
+ * cancels the dialog the function will return %NULL.
*
* Returns: the #GFile to open, or %NULL
**/
@@ -79,19 +78,13 @@ e_shell_run_open_dialog (EShell *shell,
GtkCallback customize_func,
gpointer customize_data)
{
- EShellSettings *shell_settings;
GtkFileChooser *file_chooser;
GFile *chosen_file = NULL;
GtkWidget *dialog;
GtkWindow *parent;
- const gchar *property_name;
- gchar *uri;
g_return_val_if_fail (E_IS_SHELL (shell), NULL);
- property_name = "file-chooser-folder";
- shell_settings = e_shell_get_shell_settings (shell);
-
parent = e_shell_get_active_window (shell);
dialog = gtk_file_chooser_dialog_new (
@@ -107,27 +100,13 @@ e_shell_run_open_dialog (EShell *shell,
gtk_file_chooser_set_local_only (file_chooser, FALSE);
- /* Restore the current folder from the previous file chooser. */
- uri = e_shell_settings_get_string (shell_settings, property_name);
- if (uri != NULL)
- gtk_file_chooser_set_current_folder_uri (file_chooser, uri);
- g_free (uri);
-
/* Allow further customizations before running the dialog. */
if (customize_func != NULL)
customize_func (dialog, customize_data);
- if (gtk_dialog_run (GTK_DIALOG (dialog)) != GTK_RESPONSE_ACCEPT)
- goto exit;
-
- chosen_file = gtk_file_chooser_get_file (file_chooser);
-
- /* Save the current folder for subsequent file choosers. */
- uri = gtk_file_chooser_get_current_folder_uri (file_chooser);
- e_shell_settings_set_string (shell_settings, property_name, uri);
- g_free (uri);
+ if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT)
+ chosen_file = gtk_file_chooser_get_file (file_chooser);
-exit:
gtk_widget_destroy (dialog);
return chosen_file;
@@ -143,16 +122,15 @@ exit:
* @customize_data: optional data to pass to @customize_func
*
* Runs a #GtkFileChooserDialog in save mode with the given title and
- * returns the selected #GFile. It automatically remembers the selected
- * folder. If @customize_func is provided, the function is called just
- * prior to running the dialog (the file chooser is the first argument,
- * @customize_data is the second). If the user cancels the dialog the
- * function will return %NULL.
+ * returns the selected #GFile. If @customize_func is provided, the
+ * function is called just prior to running the dialog (the file chooser
+ * is the first argument, @customize_data is the second). If the user
+ * cancels the dialog the function will return %NULL.
*
* With non-%NULL @filters will be added also file filters to the dialog.
* The string format is "pat1:mt1;pat2:mt2:...", where 'pat' is a pattern
- * and 'mt' is a MIME type for the pattern to be used.
- * There can be more than one MIME type, those are separated by comma.
+ * and 'mt' is a MIME type for the pattern to be used. There can be more
+ * than one MIME type, those are separated by comma.
*
* Returns: the #GFile to save to, or %NULL
**/
@@ -164,19 +142,13 @@ e_shell_run_save_dialog (EShell *shell,
GtkCallback customize_func,
gpointer customize_data)
{
- EShellSettings *shell_settings;
GtkFileChooser *file_chooser;
GFile *chosen_file = NULL;
GtkWidget *dialog;
GtkWindow *parent;
- const gchar *property_name;
- gchar *uri;
g_return_val_if_fail (E_IS_SHELL (shell), NULL);
- property_name = "file-chooser-folder";
- shell_settings = e_shell_get_shell_settings (shell);
-
parent = e_shell_get_active_window (shell);
dialog = gtk_file_chooser_dialog_new (
@@ -193,12 +165,6 @@ e_shell_run_save_dialog (EShell *shell,
gtk_file_chooser_set_local_only (file_chooser, FALSE);
gtk_file_chooser_set_do_overwrite_confirmation (file_chooser, TRUE);
- /* Restore the current folder from the previous file chooser. */
- uri = e_shell_settings_get_string (shell_settings, property_name);
- if (uri != NULL)
- gtk_file_chooser_set_current_folder_uri (file_chooser, uri);
- g_free (uri);
-
if (suggestion != NULL)
gtk_file_chooser_set_current_name (file_chooser, suggestion);
@@ -254,17 +220,9 @@ e_shell_run_save_dialog (EShell *shell,
if (customize_func != NULL)
customize_func (dialog, customize_data);
- if (gtk_dialog_run (GTK_DIALOG (dialog)) != GTK_RESPONSE_ACCEPT)
- goto exit;
-
- chosen_file = gtk_file_chooser_get_file (file_chooser);
-
- /* Save the current folder for subsequent file choosers. */
- uri = gtk_file_chooser_get_current_folder_uri (file_chooser);
- e_shell_settings_set_string (shell_settings, property_name, uri);
- g_free (uri);
+ if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT)
+ chosen_file = gtk_file_chooser_get_file (file_chooser);
-exit:
gtk_widget_destroy (dialog);
return chosen_file;
diff --git a/shell/e-shell.c b/shell/e-shell.c
index 8aaefd302e..a9c2fdc22f 100644
--- a/shell/e-shell.c
+++ b/shell/e-shell.c
@@ -1193,10 +1193,6 @@ e_shell_init (EShell *shell)
* otherwise the GConf bindings will not get set up. */
e_shell_settings_install_property_for_key (
- "file-chooser-folder",
- "/apps/evolution/shell/file_chooser_folder");
-
- e_shell_settings_install_property_for_key (
"start-offline",
"/apps/evolution/shell/start_offline");
diff --git a/widgets/misc/e-attachment-store.c b/widgets/misc/e-attachment-store.c
index 691fd518b8..2670369a51 100644
--- a/widgets/misc/e-attachment-store.c
+++ b/widgets/misc/e-attachment-store.c
@@ -34,14 +34,12 @@
struct _EAttachmentStorePrivate {
GHashTable *attachment_index;
- gchar *current_folder_uri;
guint ignore_row_changed : 1;
};
enum {
PROP_0,
- PROP_CURRENT_FOLDER_URI,
PROP_NUM_ATTACHMENTS,
PROP_NUM_LOADING,
PROP_TOTAL_SIZE
@@ -53,36 +51,12 @@ G_DEFINE_TYPE (
GTK_TYPE_LIST_STORE)
static void
-attachment_store_set_property (GObject *object,
- guint property_id,
- const GValue *value,
- GParamSpec *pspec)
-{
- switch (property_id) {
- case PROP_CURRENT_FOLDER_URI:
- e_attachment_store_set_current_folder_uri (
- E_ATTACHMENT_STORE (object),
- g_value_get_string (value));
- return;
- }
-
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
-}
-
-static void
attachment_store_get_property (GObject *object,
guint property_id,
GValue *value,
GParamSpec *pspec)
{
switch (property_id) {
- case PROP_CURRENT_FOLDER_URI:
- g_value_set_string (
- value,
- e_attachment_store_get_current_folder_uri (
- E_ATTACHMENT_STORE (object)));
- return;
-
case PROP_NUM_ATTACHMENTS:
g_value_set_uint (
value,
@@ -126,28 +100,11 @@ attachment_store_finalize (GObject *object)
g_hash_table_destroy (priv->attachment_index);
- g_free (priv->current_folder_uri);
-
/* Chain up to parent's finalize() method. */
G_OBJECT_CLASS (e_attachment_store_parent_class)->finalize (object);
}
static void
-attachment_store_constructed (GObject *object)
-{
- GConfBridge *bridge;
- const gchar *key;
-
- bridge = gconf_bridge_get ();
-
- key = "/apps/evolution/shell/file_chooser_folder";
- gconf_bridge_bind_property (bridge, key, object, "current-folder-uri");
-
- /* Chain up to parent's constructed() method. */
- G_OBJECT_CLASS (e_attachment_store_parent_class)->constructed (object);
-}
-
-static void
e_attachment_store_class_init (EAttachmentStoreClass *class)
{
GObjectClass *object_class;
@@ -155,22 +112,9 @@ e_attachment_store_class_init (EAttachmentStoreClass *class)
g_type_class_add_private (class, sizeof (EAttachmentStorePrivate));
object_class = G_OBJECT_CLASS (class);
- object_class->set_property = attachment_store_set_property;
object_class->get_property = attachment_store_get_property;
object_class->dispose = attachment_store_dispose;
object_class->finalize = attachment_store_finalize;
- object_class->constructed = attachment_store_constructed;
-
- g_object_class_install_property (
- object_class,
- PROP_CURRENT_FOLDER_URI,
- g_param_spec_string (
- "current-folder-uri",
- "Current Folder URI",
- NULL,
- NULL,
- G_PARAM_READWRITE |
- G_PARAM_CONSTRUCT));
g_object_class_install_property (
object_class,
@@ -409,34 +353,6 @@ e_attachment_store_get_attachments (EAttachmentStore *store)
return g_list_reverse (list);
}
-const gchar *
-e_attachment_store_get_current_folder_uri (EAttachmentStore *store)
-{
- g_return_val_if_fail (E_IS_ATTACHMENT_STORE (store), NULL);
-
- return store->priv->current_folder_uri;
-}
-
-void
-e_attachment_store_set_current_folder_uri (EAttachmentStore *store,
- const gchar *current_folder_uri)
-{
- gchar *allocated;
-
- g_return_if_fail (E_IS_ATTACHMENT_STORE (store));
-
- if (current_folder_uri == NULL) {
- const gchar *home_dir = g_get_home_dir ();
- allocated = g_filename_to_uri (home_dir, NULL, NULL);
- } else
- allocated = g_strdup (current_folder_uri);
-
- g_free (store->priv->current_folder_uri);
- store->priv->current_folder_uri = allocated;
-
- g_object_notify (G_OBJECT (store), "current-folder-uri");
-}
-
guint
e_attachment_store_get_num_attachments (EAttachmentStore *store)
{
@@ -493,41 +409,6 @@ e_attachment_store_get_total_size (EAttachmentStore *store)
return total_size;
}
-gint
-e_attachment_store_run_file_chooser_dialog (EAttachmentStore *store,
- GtkWidget *dialog)
-{
- GtkFileChooser *file_chooser;
- gint response = GTK_RESPONSE_NONE;
- const gchar *current_uri;
- gboolean update_folder;
-
- g_return_val_if_fail (E_IS_ATTACHMENT_STORE (store), response);
- g_return_val_if_fail (GTK_IS_FILE_CHOOSER_DIALOG (dialog), response);
-
- file_chooser = GTK_FILE_CHOOSER (dialog);
- current_uri = e_attachment_store_get_current_folder_uri (store);
- gtk_file_chooser_set_current_folder_uri (file_chooser, current_uri);
-
- response = gtk_dialog_run (GTK_DIALOG (dialog));
-
- update_folder =
- (response == GTK_RESPONSE_ACCEPT) ||
- (response == GTK_RESPONSE_OK) ||
- (response == GTK_RESPONSE_YES) ||
- (response == GTK_RESPONSE_APPLY);
-
- if (update_folder) {
- gchar *uri;
-
- uri = gtk_file_chooser_get_current_folder_uri (file_chooser);
- e_attachment_store_set_current_folder_uri (store, uri);
- g_free (uri);
- }
-
- return response;
-}
-
void
e_attachment_store_run_load_dialog (EAttachmentStore *store,
GtkWindow *parent)
@@ -560,7 +441,7 @@ e_attachment_store_run_load_dialog (EAttachmentStore *store,
gtk_file_chooser_set_extra_widget (file_chooser, option);
gtk_widget_show (option);
- response = e_attachment_store_run_file_chooser_dialog (store, dialog);
+ response = gtk_dialog_run (GTK_DIALOG (dialog));
if (response != GTK_RESPONSE_OK)
goto exit;
@@ -643,7 +524,7 @@ e_attachment_store_run_save_dialog (EAttachmentStore *store,
gtk_file_chooser_set_current_name (file_chooser, name);
}
- response = e_attachment_store_run_file_chooser_dialog (store, dialog);
+ response = gtk_dialog_run (GTK_DIALOG (dialog));
if (response == GTK_RESPONSE_OK)
destination = gtk_file_chooser_get_file (file_chooser);
diff --git a/widgets/misc/e-attachment-store.h b/widgets/misc/e-attachment-store.h
index cdf33f507a..7309dd9415 100644
--- a/widgets/misc/e-attachment-store.h
+++ b/widgets/misc/e-attachment-store.h
@@ -87,20 +87,12 @@ void e_attachment_store_add_to_multipart
const gchar *default_charset);
GList * e_attachment_store_get_attachments
(EAttachmentStore *store);
-const gchar * e_attachment_store_get_current_folder_uri
- (EAttachmentStore *store);
-void e_attachment_store_set_current_folder_uri
- (EAttachmentStore *store,
- const gchar *current_folder);
guint e_attachment_store_get_num_attachments
(EAttachmentStore *store);
guint e_attachment_store_get_num_loading
(EAttachmentStore *store);
goffset e_attachment_store_get_total_size
(EAttachmentStore *store);
-gint e_attachment_store_run_file_chooser_dialog
- (EAttachmentStore *store,
- GtkWidget *dialog);
void e_attachment_store_run_load_dialog
(EAttachmentStore *store,
GtkWindow *parent);