fixed page logic for migration of user settings. Still missing code to

2004-10-31  Sven Neumann  <sven@gimp.org>

	* app/dialogs/user-install-dialog.c: fixed page logic for migration
	of user settings. Still missing code to actually copy the files.
This commit is contained in:
Sven Neumann
2004-10-31 15:14:59 +00:00
committed by Sven Neumann
parent 06a84e61ab
commit 858e80c682
2 changed files with 145 additions and 74 deletions

View File

@ -78,12 +78,12 @@ enum
};
static void user_install_response (GtkWidget *widget,
gint response_id,
GimpRc *gimprc);
static void user_install_response (GtkWidget *widget,
gint response_id,
GimpRc *gimprc);
static gboolean user_install_run (void);
static void user_install_tuning (GimpRc *gimprc);
static gboolean user_install_run (const gchar *oldgimp);
static void user_install_tuning (GimpRc *gimprc);
/* private stuff */
@ -108,7 +108,7 @@ static GdkColor white_color;
static GdkColor title_color;
static gchar *oldgimp = NULL;
static gboolean migrate = TRUE;
static gboolean migrate = FALSE;
typedef enum
@ -350,16 +350,25 @@ user_install_response (GtkWidget *widget,
{
case GPL_PAGE:
if (oldgimp)
notebook_index += 1;
notebook_index = MIGRATION_PAGE;
else
notebook_index += 2;
notebook_index = TREE_PAGE;
user_install_notebook_set_page (GTK_NOTEBOOK (notebook), notebook_index);
break;
case MIGRATION_PAGE:
user_install_notebook_set_page (GTK_NOTEBOOK (notebook), ++notebook_index);
break;
if (migrate)
{
notebook_index = TREE_PAGE;
/* fallthrough */
}
else
{
user_install_notebook_set_page (GTK_NOTEBOOK (notebook),
++notebook_index);
break;
}
case TREE_PAGE:
user_install_notebook_set_page (GTK_NOTEBOOK (notebook), ++notebook_index);
@ -372,7 +381,7 @@ user_install_response (GtkWidget *widget,
gtk_dialog_set_response_sensitive (GTK_DIALOG (widget),
GTK_RESPONSE_OK, TRUE);
if (user_install_run ())
if (user_install_run (migrate ? oldgimp : NULL))
{
gtk_dialog_set_response_sensitive (GTK_DIALOG (widget),
GTK_RESPONSE_OK, TRUE);
@ -385,6 +394,8 @@ user_install_response (GtkWidget *widget,
gtk_label_set_text (GTK_LABEL (footer_label),
_("Installation failed. "
"Contact system administrator."));
notebook_index = TUNING_PAGE; /* skip to last page */
}
gtk_dialog_set_response_sensitive (GTK_DIALOG (widget),
@ -392,9 +403,14 @@ user_install_response (GtkWidget *widget,
break;
case LOG_PAGE:
user_install_notebook_set_page (GTK_NOTEBOOK (notebook), ++notebook_index);
user_install_tuning (gimprc);
break;
if (! migrate)
{
user_install_notebook_set_page (GTK_NOTEBOOK (notebook),
++notebook_index);
user_install_tuning (gimprc);
break;
}
/* else fallthrough */
case TUNING_PAGE:
gimp_rc_save (gimprc);
@ -568,6 +584,7 @@ user_install_dialog_run (const gchar *alternate_system_gimprc,
GdkPixbuf *wilber;
gchar *filename;
gchar *version;
gchar *title;
gint i;
oldgimp = g_strdup (gimp_directory ());
@ -577,7 +594,9 @@ user_install_dialog_run (const gchar *alternate_system_gimprc,
if (version)
version[2] = '0';
if (! version || ! g_file_test (oldgimp, G_FILE_TEST_IS_DIR))
migrate = (version && g_file_test (oldgimp, G_FILE_TEST_IS_DIR));
if (! migrate)
{
g_free (oldgimp);
oldgimp = NULL;
@ -586,7 +605,7 @@ user_install_dialog_run (const gchar *alternate_system_gimprc,
gimprc = gimp_rc_new (alternate_system_gimprc, alternate_gimprc, verbose);
dialog = user_install_dialog =
gimp_dialog_new (_("GIMP User Installation"), "user_installation",
gimp_dialog_new (_("GIMP User Installation"), "gimp-user-installation",
NULL, 0,
NULL, NULL,
@ -740,13 +759,20 @@ user_install_dialog_run (const gchar *alternate_system_gimprc,
gtk_widget_show (vbox);
/* GPL_PAGE */
/* version number */
title = g_strdup_printf (_("Welcome to\n"
"The GIMP %d.%d User Installation"),
GIMP_MAJOR_VERSION, GIMP_MINOR_VERSION);
page = user_install_notebook_append_page (GTK_NOTEBOOK (notebook),
_("Welcome to\n"
"The GIMP User Installation"),
title,
_("Click \"Continue\" to enter "
"the GIMP user installation."),
12);
/* do not free title yet! */
add_label (GTK_BOX (page),
_("<b>The GIMP - GNU Image Manipulation Program</b>\n"
"Copyright (C) 1995-2004\n"
@ -786,12 +812,15 @@ user_install_dialog_run (const gchar *alternate_system_gimprc,
12);
box = gimp_int_radio_group_new (TRUE,
_("It seems you have a GIMP 2.0 installation."),
_("It seems you have used GIMP 2.0 before."),
G_CALLBACK (gimp_radio_button_update),
&migrate, migrate,
_("_Migrate user settings"), TRUE, NULL,
_("Do a _fresh user installation"), FALSE, NULL,
_("_Migrate GIMP 2.0 user settings"),
TRUE, NULL,
_("Do a _fresh user installation"),
FALSE, NULL,
NULL);
gtk_box_pack_start (GTK_BOX (page), box, FALSE, FALSE, 0);
@ -980,6 +1009,9 @@ user_install_dialog_run (const gchar *alternate_system_gimprc,
gtk_widget_show (dialog);
gtk_main ();
g_free (title);
g_free (oldgimp);
}
@ -1022,59 +1054,14 @@ print_log (GtkWidget *view,
}
static gboolean
user_install_run (void)
user_install_create_files (GtkWidget *log_view,
GtkTextBuffer *log_buffer)
{
GtkWidget *scrolled_window;
GtkTextBuffer *log_buffer;
GtkWidget *log_view;
GError *error = NULL;
gchar dest[1024];
gchar source[1024];
gchar log_line[1024];
gint i;
scrolled_window = gtk_scrolled_window_new (NULL, NULL);
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window),
GTK_POLICY_AUTOMATIC,
GTK_POLICY_AUTOMATIC);
gtk_box_pack_start (GTK_BOX (log_page), scrolled_window, TRUE, TRUE, 0);
gtk_widget_show (scrolled_window);
log_buffer = gtk_text_buffer_new (NULL);
gtk_text_buffer_create_tag (log_buffer, "bold",
"weight", PANGO_WEIGHT_BOLD,
NULL);
log_view = gtk_text_view_new_with_buffer (log_buffer);
g_object_unref (log_buffer);
PAGE_STYLE (log_view);
gtk_text_view_set_editable (GTK_TEXT_VIEW (log_view), FALSE);
gtk_container_add (GTK_CONTAINER (scrolled_window), log_view);
gtk_widget_show (log_view);
g_snprintf (log_line, sizeof (log_line), _("Creating folder '%s'..."),
gimp_filename_to_utf8 (gimp_directory ()));
gtk_text_buffer_insert_at_cursor (log_buffer, log_line, -1);
while (gtk_events_pending ())
gtk_main_iteration ();
if (mkdir (gimp_directory (),
S_IRUSR | S_IWUSR | S_IXUSR |
S_IRGRP | S_IXGRP |
S_IROTH | S_IXOTH) == -1)
{
g_set_error (&error, G_FILE_ERROR, g_file_error_from_errno (errno),
_("Cannot create folder '%s': %s"),
gimp_filename_to_utf8 (gimp_directory ()),
g_strerror (errno));
goto break_out_of_loop;
}
print_log (log_view, log_buffer, NULL);
gchar log_line[1024];
gchar dest[1024];
gchar source[1024];
gint i;
GError *error = NULL;
for (i = 0; i < G_N_ELEMENTS (tree_items); i++)
{
@ -1136,7 +1123,6 @@ user_install_run (void)
}
break_out_of_loop:
if (error)
{
print_log (log_view, log_buffer, error);
@ -1148,6 +1134,85 @@ user_install_run (void)
return TRUE;
}
static gboolean
user_install_migrate_files (const gchar *oldgimp,
GtkWidget *log_view,
GtkTextBuffer *log_buffer)
{
GError *error = NULL;
g_set_error (&error, 0, 0,
"Migration of user settings is not yet "
"implemented.\nYou're on your own now.");
print_log (log_view, log_buffer, error);
g_clear_error (&error);
return FALSE;
}
static gboolean
user_install_run (const gchar *oldgimp)
{
GtkWidget *scrolled_window;
GtkTextBuffer *log_buffer;
GtkWidget *log_view;
gchar log_line[1024];
GError *error = NULL;
scrolled_window = gtk_scrolled_window_new (NULL, NULL);
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window),
GTK_POLICY_AUTOMATIC,
GTK_POLICY_AUTOMATIC);
gtk_box_pack_start (GTK_BOX (log_page), scrolled_window, TRUE, TRUE, 0);
gtk_widget_show (scrolled_window);
log_buffer = gtk_text_buffer_new (NULL);
gtk_text_buffer_create_tag (log_buffer, "bold",
"weight", PANGO_WEIGHT_BOLD,
NULL);
log_view = gtk_text_view_new_with_buffer (log_buffer);
g_object_unref (log_buffer);
PAGE_STYLE (log_view);
gtk_text_view_set_editable (GTK_TEXT_VIEW (log_view), FALSE);
gtk_container_add (GTK_CONTAINER (scrolled_window), log_view);
gtk_widget_show (log_view);
g_snprintf (log_line, sizeof (log_line), _("Creating folder '%s'..."),
gimp_filename_to_utf8 (gimp_directory ()));
gtk_text_buffer_insert_at_cursor (log_buffer, log_line, -1);
while (gtk_events_pending ())
gtk_main_iteration ();
if (mkdir (gimp_directory (),
S_IRUSR | S_IWUSR | S_IXUSR |
S_IRGRP | S_IXGRP |
S_IROTH | S_IXOTH) == -1)
{
g_set_error (&error, G_FILE_ERROR, g_file_error_from_errno (errno),
_("Cannot create folder '%s': %s"),
gimp_filename_to_utf8 (gimp_directory ()),
g_strerror (errno));
print_log (log_view, log_buffer, error);
g_clear_error (&error);
return FALSE;
}
print_log (log_view, log_buffer, NULL);
if (oldgimp)
return user_install_migrate_files (oldgimp, log_view, log_buffer);
else
return user_install_create_files (log_view, log_buffer);
}
static void
user_install_tuning (GimpRc *gimprc)
{