diff options
Diffstat (limited to 'embed/ephy-embed-shell.c')
-rw-r--r-- | embed/ephy-embed-shell.c | 76 |
1 files changed, 59 insertions, 17 deletions
diff --git a/embed/ephy-embed-shell.c b/embed/ephy-embed-shell.c index 163cad18f..65d2fe243 100644 --- a/embed/ephy-embed-shell.c +++ b/embed/ephy-embed-shell.c @@ -18,30 +18,38 @@ * $Id$ */ -#include "config.h" +#include <config.h> +#include <glib.h> +#include <glib/gstdio.h> + +#include <glib/gi18n.h> +#include <gtk/gtkmessagedialog.h> + +#include "downloader-view.h" +#include "ephy-adblock-manager.h" +#include "ephy-debug.h" +#include "ephy-embed-factory.h" #include "ephy-embed-shell.h" #include "ephy-embed-single.h" -#include "ephy-embed-factory.h" -#include "ephy-marshal.h" +#include "ephy-encodings.h" +#include "ephy-favicon-cache.h" #include "ephy-file-helpers.h" #include "ephy-history.h" -#include "ephy-favicon-cache.h" +#include "ephy-marshal.h" #include "mozilla-embed-single.h" -#include "downloader-view.h" -#include "ephy-encodings.h" -#include "ephy-debug.h" -#include "ephy-adblock-manager.h" -#include "ephy-print-utils.h" -#include <glib/gi18n.h> -#include <gtk/gtkmessagedialog.h> +#include "ephy-print-utils.h" -#define PAGE_SETUP_FILENAME "page-setup.ini" +#define PAGE_SETUP_FILENAME "page-setup-gtk.ini" #define PRINT_SETTINGS_FILENAME "print-settings.ini" +#define LEGACY_PAGE_SETUP_FILENAME "page-setup.ini" + #define EPHY_EMBED_SHELL_GET_PRIVATE(object)(G_TYPE_INSTANCE_GET_PRIVATE ((object), EPHY_TYPE_EMBED_SHELL, EphyEmbedShellPrivate)) +#define ENABLE_MIGRATION + struct _EphyEmbedShellPrivate { EphyHistory *global_history; @@ -391,16 +399,20 @@ ephy_embed_shell_set_page_setup (EphyEmbedShell *shell, { g_object_ref (page_setup); } + else + { + page_setup = gtk_page_setup_new (); + } if (priv->page_setup != NULL) { g_object_unref (priv->page_setup); } - priv->page_setup = page_setup ? page_setup : gtk_page_setup_new (); + priv->page_setup = page_setup; path = g_build_filename (ephy_dot_dir (), PAGE_SETUP_FILENAME, NULL); - ephy_print_utils_page_setup_to_file (page_setup, path, NULL); + gtk_page_setup_to_file (page_setup, path, NULL); g_free (path); } @@ -414,12 +426,37 @@ ephy_embed_shell_get_page_setup (EphyEmbedShell *shell) if (priv->page_setup == NULL) { + GError *error = NULL; char *path; path = g_build_filename (ephy_dot_dir (), PAGE_SETUP_FILENAME, NULL); - priv->page_setup = ephy_print_utils_page_setup_new_from_file (path, NULL); + priv->page_setup = gtk_page_setup_new_from_file (path, &error); g_free (path); +#ifdef ENABLE_MIGRATION + /* If the file doesn't exist, try to fall back to the old format */ + if (error != NULL && + error->domain == G_FILE_ERROR && + error->code == G_FILE_ERROR_NOENT) + { + path = g_build_filename (ephy_dot_dir (), LEGACY_PAGE_SETUP_FILENAME, NULL); + priv->page_setup = ephy_print_utils_page_setup_new_from_file (path, NULL); + if (priv->page_setup != NULL) + { + /* Delete the old file, so we don't migrate again */ + g_unlink (path); + } + g_free (path); + } else if (error != NULL) + g_warning ("error: %s\n", error->message); +#endif /* ENABLE_MIGRATION */ + + if (error) + { + g_error_free (error); + } + + /* If that still didn't work, create a new, empty one */ if (priv->page_setup == NULL) { priv->page_setup = gtk_page_setup_new (); @@ -452,7 +489,7 @@ ephy_embed_shell_set_print_settings (EphyEmbedShell *shell, priv->print_settings = settings ? settings : gtk_print_settings_new (); path = g_build_filename (ephy_dot_dir (), PRINT_SETTINGS_FILENAME, NULL); - ephy_print_utils_settings_to_file (settings, path, NULL); + gtk_print_settings_to_file (settings, path, NULL); g_free (path); } @@ -466,12 +503,17 @@ ephy_embed_shell_get_print_settings (EphyEmbedShell *shell) if (priv->print_settings == NULL) { + GError *error = NULL; char *path; path = g_build_filename (ephy_dot_dir (), PRINT_SETTINGS_FILENAME, NULL); - priv->print_settings = ephy_print_utils_settings_new_from_file (path, NULL); + priv->print_settings = gtk_print_settings_new_from_file (path, &error); g_free (path); + /* Note: the gtk print settings file format is the same as our legacy one, + * so no need to migrate here. + */ + if (priv->print_settings == NULL) { priv->print_settings = gtk_print_settings_new (); |