[Xfce4-commits] <xfce4-panel:master> Migrate: Some improvements for distros (bug #8060).

Nick Schermer noreply at xfce.org
Thu Oct 27 20:02:02 CEST 2011


Updating branch refs/heads/master
         to ac15660af4dde93111f961af0c1669c1e64c0a28 (commit)
       from de2c764f848e8ab950485321da686bc65ee64607 (commit)

commit ac15660af4dde93111f961af0c1669c1e64c0a28
Author: Nick Schermer <nick at xfce.org>
Date:   Thu Oct 27 19:59:38 2011 +0200

    Migrate: Some improvements for distros (bug #8060).

 migrate/Makefile.am |    2 +-
 migrate/main.c      |   86 ++++++++++++++++++++++++++++++++-------------------
 2 files changed, 55 insertions(+), 33 deletions(-)

diff --git a/migrate/Makefile.am b/migrate/Makefile.am
index acaaa80..d0e695b 100644
--- a/migrate/Makefile.am
+++ b/migrate/Makefile.am
@@ -3,7 +3,7 @@ INCLUDES = \
 	-I$(top_srcdir) \
 	-DG_LOG_DOMAIN=\"xfce4-panel-migrate\" \
 	-DPACKAGE_LOCALE_DIR=\"$(localedir)\" \
-	-DDEFAULT_CONFIG=\"$(sysconfdir)/xdg/xfce4/panel/default.xml\" \
+	-DXDGCONFIGDIR=\"$(sysconfdir)/xdg\" \
 	$(PLATFORM_CPPFLAGS)
 
 confdir = $(sysconfdir)/xdg/xfce4/panel
diff --git a/migrate/main.c b/migrate/main.c
index 3adf36e..d4fc312 100644
--- a/migrate/main.c
+++ b/migrate/main.c
@@ -42,19 +42,24 @@
 
 
 
+#define DEFAULT_CONFIG_FILENAME "xfce4" G_DIR_SEPARATOR_S "panel" G_DIR_SEPARATOR_S "default.xml"
+#define DEFAULT_CONFIG_PATH     XDGCONFIGDIR G_DIR_SEPARATOR_S DEFAULT_CONFIG_FILENAME
+
+
 gint
 main (gint argc, gchar **argv)
 {
-  gchar         *file;
   GError        *error = NULL;
   GtkWidget     *dialog;
   GtkWidget     *button;
   gint           result;
   gint           retval = EXIT_SUCCESS;
-  gboolean       default_config_exists;
   gint           default_response = GTK_RESPONSE_CANCEL;
   XfconfChannel *channel;
   gint           configver;
+  gchar         *filename_46;
+  gchar         *filename_default;
+  gboolean       migrate_vendor_default;
 
   /* set translation domain */
   xfce_textdomain (GETTEXT_PACKAGE, PACKAGE_LOCALE_DIR, "UTF-8");
@@ -76,21 +81,31 @@ main (gint argc, gchar **argv)
   channel = xfconf_channel_get (XFCE_PANEL_CHANNEL_NAME);
   if (!xfconf_channel_has_property (channel, "/panels"))
     {
-      /* lookup the possible configuration files */
-      file = xfce_resource_lookup (XFCE_RESOURCE_CONFIG, XFCE_46_CONFIG);
-      default_config_exists = g_file_test (DEFAULT_CONFIG, G_FILE_TEST_IS_REGULAR);
-      if (file == NULL && !default_config_exists)
+      /* lookup the old 4.6 config file */
+      filename_46 = xfce_resource_lookup (XFCE_RESOURCE_CONFIG, XFCE_46_CONFIG);
+
+      /* lookup the default configuration */
+      xfce_resource_push_path (XFCE_RESOURCE_CONFIG, XDGCONFIGDIR);
+      filename_default = xfce_resource_lookup (XFCE_RESOURCE_CONFIG, DEFAULT_CONFIG_FILENAME);
+      xfce_resource_pop_path (XFCE_RESOURCE_CONFIG);
+
+      if (filename_46 == NULL && filename_default == NULL)
         {
           g_warning ("No default or old configuration found");
           return EXIT_FAILURE;
         }
 
+      /* if the default configuration does not match with the file found
+       * by the resource lookup, migrate it without asking */
+      migrate_vendor_default = (g_strcmp0 (DEFAULT_CONFIG_PATH, filename_default) != 0);
+
       /* check if we auto-migrate the default configuration */
-      if (g_getenv ("XFCE_PANEL_MIGRATE_DEFAULT") != NULL)
+      if (g_getenv ("XFCE_PANEL_MIGRATE_DEFAULT") != NULL
+          || migrate_vendor_default)
         {
-          if (file != NULL)
+          if (filename_46 != NULL)
             g_message ("Tried to auto-migrate, but old configuration found");
-          else if (!!default_config_exists)
+          else if (filename_default == NULL)
             g_message ("Tried to auto-migrate, but no default configuration found");
           else
             goto migrate_default;
@@ -99,54 +114,60 @@ main (gint argc, gchar **argv)
       /* create question dialog */
       dialog = gtk_message_dialog_new (NULL, 0, GTK_MESSAGE_QUESTION, GTK_BUTTONS_NONE,
                                        _("Welcome to the first start of the panel"));
-      gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (dialog), "%s%s%s",
-          file != NULL ? _("Because the panel moved to a new system for storing the "
-                           "settings, it has to load a fresh initial configuration.") : "",
-          file != NULL ? " " : "",
-                         _("Choose below which setup you want for the first startup."));
       gtk_window_set_title (GTK_WINDOW (dialog), _("Panel"));
       gtk_window_set_icon_name (GTK_WINDOW (dialog), GTK_STOCK_PREFERENCES);
       gtk_window_stick (GTK_WINDOW (dialog));
       gtk_window_set_keep_above (GTK_WINDOW (dialog), TRUE);
 
-      button = gtk_dialog_add_button (GTK_DIALOG (dialog), _("Migrate old config"), GTK_RESPONSE_OK);
-      gtk_widget_set_tooltip_text (button, _("Migrate the old 4.6 configuration to Xfconf"));
-      gtk_widget_set_sensitive (button, file != NULL);
-      if (file != NULL)
-        default_response = GTK_RESPONSE_OK;
+      if (filename_46 != NULL)
+        {
+          gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (dialog), "%s\n%s",
+              _("Because the panel moved to a new system for storing the "
+                "settings, it has to load a fresh initial configuration."),
+              _("Choose below which setup you want for the first startup."));
+
+          button = gtk_dialog_add_button (GTK_DIALOG (dialog), _("Migrate old config"), GTK_RESPONSE_OK);
+          gtk_widget_set_tooltip_text (button, _("Migrate the old 4.6 configuration to Xfconf"));
+          default_response = GTK_RESPONSE_OK;
+        }
+      else
+        {
+          gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (dialog),
+              _("Choose below which setup you want for the first startup."));
+        }
+
+      if (filename_default != NULL)
+        {
+          button = gtk_dialog_add_button (GTK_DIALOG (dialog), _("Use default config"), GTK_RESPONSE_YES);
+          gtk_widget_set_tooltip_text (button, _("Load the default configuration"));
 
-      button = gtk_dialog_add_button (GTK_DIALOG (dialog), _("Use default config"), GTK_RESPONSE_YES);
-      gtk_widget_set_tooltip_text (button, _("Load the default configuration"));
-      gtk_widget_set_sensitive (button, default_config_exists);
-      if (default_config_exists && file == NULL)
-        default_response = GTK_RESPONSE_YES;
+          if (default_response == GTK_RESPONSE_CANCEL)
+            default_response = GTK_RESPONSE_YES;
+        }
 
       button = gtk_dialog_add_button (GTK_DIALOG (dialog), _("One empty panel"), GTK_RESPONSE_CANCEL);
       gtk_widget_set_tooltip_text (button, _("Start with one empty panel"));
 
       gtk_dialog_set_default_response (GTK_DIALOG (dialog), default_response);
-
       result = gtk_dialog_run (GTK_DIALOG (dialog));
       gtk_widget_destroy (dialog);
 
-      if (result == GTK_RESPONSE_OK
-          && file != NULL)
+      if (result == GTK_RESPONSE_OK && filename_46 != NULL)
         {
           /* restore 4.6 config */
-          if (!migrate_46 (file, channel, &error))
+          if (!migrate_46 (filename_46, channel, &error))
             {
               xfce_dialog_show_error (NULL, error, _("Failed to migrate the old panel configuration"));
               g_error_free (error);
               retval = EXIT_FAILURE;
             }
         }
-      else if (result == GTK_RESPONSE_YES
-               && default_config_exists)
+      else if (result == GTK_RESPONSE_YES && filename_default != NULL)
         {
           migrate_default:
 
           /* apply default config */
-          if (!migrate_default (DEFAULT_CONFIG, &error))
+          if (!migrate_default (filename_default, &error))
             {
               xfce_dialog_show_error (NULL, error, _("Failed to load the default configuration"));
               g_error_free (error);
@@ -154,7 +175,8 @@ main (gint argc, gchar **argv)
             }
         }
 
-      g_free (file);
+      g_free (filename_46);
+      g_free (filename_default);
     }
 
   configver = xfconf_channel_get_int (channel, "/configver", -1);


More information about the Xfce4-commits mailing list