summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog31
-rw-r--r--components/services/install-view/nautilus-service-install-view.c30
-rw-r--r--components/services/install/lib/eazel-softcat.c3
-rw-r--r--components/services/install/nautilus-view/nautilus-service-install-view.c30
-rw-r--r--nautilus-installer/src/callbacks.c108
-rw-r--r--nautilus-installer/src/installer.c38
6 files changed, 145 insertions, 95 deletions
diff --git a/ChangeLog b/ChangeLog
index 8ee8a058b..71d847df0 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,34 @@
+2000-12-06 Robey Pointer <robey@eazel.com>
+
+ * components/services/install/lib/eazel-softcat.c:
+ (gnome_vfs_escape_string):
+
+ Fixed a dumb url-quoting error that resulted in "hilarious"
+ quoting flubs.
+
+ * components/services/install/nautilus-view/nautilus-service-instal
+ l-view.c: (nautilus_service_install_done):
+
+ Never return to the summary-view page after completion now: let
+ the user do their own navigation.
+
+ * nautilus-installer/src/callbacks.c: (log_debug),
+ (reply_callback), (ask_to_delete_rpms), (ask_are_you_sure),
+ (druid_cancel), (begin_install), (druid_finish):
+ * nautilus-installer/src/installer.c: (start_over),
+ (insert_info_page), (get_detailed_errors_foreach),
+ (get_detailed_errors), (install_failed), (uninstall_failed),
+ (download_failed), (eazel_installer_post_install),
+ (draw_splash_text), (eazel_installer_set_default_texts),
+ (eazel_installer_initialize):
+
+ Ask if the user wants to delete the RPMs after a successful
+ install, and ask for verification when they hit the "cancel"
+ button. Eliminate a redundant cancel callback that caused double
+ vision. Restore the error dialog's AWOL title (?). Turn off that
+ damn checkbox for now (can turn it on later if anyone makes an
+ installer PR2.1).
+
John Fleck <jfleck@inkstain.net>
reviewed by: Ali Abdin
diff --git a/components/services/install-view/nautilus-service-install-view.c b/components/services/install-view/nautilus-service-install-view.c
index ff65788bc..e05126d30 100644
--- a/components/services/install-view/nautilus-service-install-view.c
+++ b/components/services/install-view/nautilus-service-install-view.c
@@ -59,8 +59,6 @@
/* number of rows of (label, progressbar) to scroll at the bottom */
#define STATUS_ROWS 4
-#define NEXT_SERVICE_VIEW "eazel:"
-
/* This ensures that if the arch is detected as i[3-9]86, the
requested archtype will be set to i386 */
#define ASSUME_ix86_IS_i386
@@ -813,29 +811,6 @@ nautilus_service_install_installing (EazelInstallCallback *cb, const PackageData
}
}
-#if 0
-static void
-show_dialog_and_run_away (NautilusServiceInstallView *view, const char *message)
-{
- GtkWidget *dialog;
- GtkWidget *toplevel;
-
- toplevel = gtk_widget_get_toplevel (view->details->message_box);
- if (GTK_IS_WINDOW (toplevel)) {
- dialog = gnome_ok_dialog_parented (message, GTK_WINDOW (toplevel));
- } else {
- dialog = gnome_ok_dialog (message);
- }
- gtk_window_set_modal (GTK_WINDOW (dialog), TRUE);
-
- /* just in case we were in "loading" mode */
- nautilus_view_report_load_complete (view->details->nautilus_view);
-
- gnome_dialog_run_and_close (GNOME_DIALOG (dialog));
- nautilus_view_open_location (view->details->nautilus_view, NEXT_SERVICE_VIEW);
-}
-#endif
-
/* Get the toplevel menu name for the desktop file installed */
static char*
nautilus_install_service_locate_menu_entries (NautilusServiceInstallView *view)
@@ -998,7 +973,7 @@ nautilus_service_install_done (EazelInstallCallback *cb, gboolean success, Nauti
CORBA_exception_free (&ev);
}
- if (view->details->core_package && success) {
+ if (success && view->details->core_package) {
message = _("A core package of Nautilus has been\n"
"updated. You should restart Nautilus.\n\n"
"Do you wish to do that now?");
@@ -1016,9 +991,8 @@ nautilus_service_install_done (EazelInstallCallback *cb, gboolean success, Nauti
g_message ("Exec error %s", strerror (errno));
}
}
- } else {
- nautilus_view_open_location (view->details->nautilus_view, NEXT_SERVICE_VIEW);
}
+ /* don't change views anymore, let the user navigate where they want to go. */
}
}
diff --git a/components/services/install/lib/eazel-softcat.c b/components/services/install/lib/eazel-softcat.c
index 8a828caf1..89aa2a5a3 100644
--- a/components/services/install/lib/eazel-softcat.c
+++ b/components/services/install/lib/eazel-softcat.c
@@ -329,7 +329,7 @@ static char _bad[] = {
1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* `abcdefghijklmno */
0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,1 /* pqrstuvwxyz{|}~del */
};
-#define EVILCHAR(c) (((c) < 0x20) || ((c) > 0x7F) || (_bad[c]))
+#define EVILCHAR(c) (((c) < 0x20) || ((c) > 0x7F) || (_bad[c-0x20]))
static char *
gnome_vfs_escape_string (const char *in)
@@ -357,6 +357,7 @@ gnome_vfs_escape_string (const char *in)
*q++ = *p;
}
}
+ *q = '\0';
return quoted;
}
diff --git a/components/services/install/nautilus-view/nautilus-service-install-view.c b/components/services/install/nautilus-view/nautilus-service-install-view.c
index ff65788bc..e05126d30 100644
--- a/components/services/install/nautilus-view/nautilus-service-install-view.c
+++ b/components/services/install/nautilus-view/nautilus-service-install-view.c
@@ -59,8 +59,6 @@
/* number of rows of (label, progressbar) to scroll at the bottom */
#define STATUS_ROWS 4
-#define NEXT_SERVICE_VIEW "eazel:"
-
/* This ensures that if the arch is detected as i[3-9]86, the
requested archtype will be set to i386 */
#define ASSUME_ix86_IS_i386
@@ -813,29 +811,6 @@ nautilus_service_install_installing (EazelInstallCallback *cb, const PackageData
}
}
-#if 0
-static void
-show_dialog_and_run_away (NautilusServiceInstallView *view, const char *message)
-{
- GtkWidget *dialog;
- GtkWidget *toplevel;
-
- toplevel = gtk_widget_get_toplevel (view->details->message_box);
- if (GTK_IS_WINDOW (toplevel)) {
- dialog = gnome_ok_dialog_parented (message, GTK_WINDOW (toplevel));
- } else {
- dialog = gnome_ok_dialog (message);
- }
- gtk_window_set_modal (GTK_WINDOW (dialog), TRUE);
-
- /* just in case we were in "loading" mode */
- nautilus_view_report_load_complete (view->details->nautilus_view);
-
- gnome_dialog_run_and_close (GNOME_DIALOG (dialog));
- nautilus_view_open_location (view->details->nautilus_view, NEXT_SERVICE_VIEW);
-}
-#endif
-
/* Get the toplevel menu name for the desktop file installed */
static char*
nautilus_install_service_locate_menu_entries (NautilusServiceInstallView *view)
@@ -998,7 +973,7 @@ nautilus_service_install_done (EazelInstallCallback *cb, gboolean success, Nauti
CORBA_exception_free (&ev);
}
- if (view->details->core_package && success) {
+ if (success && view->details->core_package) {
message = _("A core package of Nautilus has been\n"
"updated. You should restart Nautilus.\n\n"
"Do you wish to do that now?");
@@ -1016,9 +991,8 @@ nautilus_service_install_done (EazelInstallCallback *cb, gboolean success, Nauti
g_message ("Exec error %s", strerror (errno));
}
}
- } else {
- nautilus_view_open_location (view->details->nautilus_view, NEXT_SERVICE_VIEW);
}
+ /* don't change views anymore, let the user navigate where they want to go. */
}
}
diff --git a/nautilus-installer/src/callbacks.c b/nautilus-installer/src/callbacks.c
index 5a81ade1f..292d8dcdf 100644
--- a/nautilus-installer/src/callbacks.c
+++ b/nautilus-installer/src/callbacks.c
@@ -30,15 +30,89 @@
#include "support.h"
#include "installer.h"
+
+extern int installer_debug;
+
+/* better than a macro, and uses our nice logging system */
+static void
+log_debug (const gchar *format, ...)
+{
+ va_list args;
+
+ if (installer_debug) {
+ va_start (args, format);
+ g_logv (G_LOG_DOMAIN, G_LOG_LEVEL_DEBUG, format, args);
+ va_end (args);
+ }
+}
+
+/* do what gnome ought to do automatically */
+static void
+reply_callback (int reply, gboolean *answer)
+{
+ *answer = (reply == 0);
+}
+
+static void
+ask_to_delete_rpms (EazelInstaller *installer)
+{
+ GtkWidget *toplevel, *dialog;
+ char *message;
+ char *package_list;
+ gboolean answer;
+
+ message = g_strdup_printf (_("Would you like to delete the downloaded package files?\n"
+ "(They are no longer needed by the installer.)\n\n"
+ "The package files are stored in %s"), installer->tmpdir);
+ toplevel = gtk_widget_get_toplevel (GTK_WIDGET (installer->druid));
+ if (GTK_IS_WINDOW (toplevel)) {
+ dialog = gnome_question_dialog_parented (message, (GnomeReplyCallback)reply_callback,
+ &answer, GTK_WINDOW (toplevel));
+ } else {
+ dialog = gnome_question_dialog (message, (GnomeReplyCallback)reply_callback, &answer);
+ }
+ gtk_window_set_modal (GTK_WINDOW (dialog), TRUE);
+ gnome_dialog_run_and_close (GNOME_DIALOG (dialog));
+
+ if (answer) {
+ g_message ("Deleting package files...");
+ package_list = g_strdup_printf ("%s/package-list.xml", installer->tmpdir);
+ unlink (package_list);
+ g_free (package_list);
+ eazel_install_delete_downloads (installer->service);
+ }
+}
+
+static gboolean
+ask_are_you_sure (EazelInstaller *installer)
+{
+ GtkWidget *toplevel, *dialog;
+ char *message;
+ gboolean answer;
+
+ message = _("Cancel the installation:\nAre you sure?");
+ toplevel = gtk_widget_get_toplevel (GTK_WIDGET (installer->druid));
+ if (GTK_IS_WINDOW (toplevel)) {
+ dialog = gnome_question_dialog_parented (message, (GnomeReplyCallback)reply_callback,
+ &answer, GTK_WINDOW (toplevel));
+ } else {
+ dialog = gnome_question_dialog (message, (GnomeReplyCallback)reply_callback, &answer);
+ }
+ gtk_window_set_modal (GTK_WINDOW (dialog), TRUE);
+ gnome_dialog_run_and_close (GNOME_DIALOG (dialog));
+ return answer;
+}
+
void
druid_cancel (GnomeDruid *gnomedruid,
EazelInstaller *installer)
{
g_mem_profile ();
- exit (1);
+ if (ask_are_you_sure (installer)) {
+ exit (1);
+ }
}
-
void
druid_delete (GtkWidget *widget, GdkEvent *event, EazelInstaller *installer)
{
@@ -46,7 +120,6 @@ druid_delete (GtkWidget *widget, GdkEvent *event, EazelInstaller *installer)
exit (1);
}
-
gboolean
begin_install (EazelInstaller *installer)
{
@@ -57,9 +130,7 @@ begin_install (EazelInstaller *installer)
gnome_druid_set_buttons_sensitive(druid, FALSE, FALSE, TRUE);
- g_message ("%s:%d", __FILE__, __LINE__);
-
- g_message ("%s %s %s %s",
+ g_message ("dep-check:%s install-categories:%s problems:%s successful:%s",
installer->got_dep_check ? "TRUE" : "FALSE",
installer->install_categories ? "TRUE" : "FALSE",
installer->problems ? "TRUE" : "FALSE",
@@ -69,7 +140,7 @@ begin_install (EazelInstaller *installer)
if (installer->got_dep_check==FALSE && installer->install_categories == NULL) {
GList *iterator;
GList *install_categories = NULL;
- g_message ("%s:%d", __FILE__, __LINE__);
+ log_debug ("first time through");
for (iterator = installer->categories; iterator; iterator = iterator->next) {
CategoryData *category = (CategoryData*)iterator->data;
GtkWidget *widget = gtk_object_get_data (GTK_OBJECT (window), category->name);
@@ -83,7 +154,7 @@ begin_install (EazelInstaller *installer)
}
if (installer->successful && installer->force_remove_categories) {
- g_message ("%s:%d", __FILE__, __LINE__);
+ log_debug ("-> force remove categories");
eazel_installer_do_install (installer, installer->force_remove_categories, TRUE);
eazel_installer_post_install (installer);
categorydata_list_destroy (installer->force_remove_categories);
@@ -91,7 +162,7 @@ begin_install (EazelInstaller *installer)
}
if (installer->problems) {
- g_message ("%s:%d", __FILE__, __LINE__);
+ log_debug ("-> problem cases");
eazel_install_problem_handle_cases (installer->problem,
installer->service,
&(installer->problems),
@@ -101,21 +172,20 @@ begin_install (EazelInstaller *installer)
eazel_installer_post_install (installer);
return TRUE;
} else {
- g_message ("%s:%d", __FILE__, __LINE__);
+ log_debug ("-> let's go");
if (installer->successful && installer->install_categories) {
- g_message ("%s:%d", __FILE__, __LINE__);
+ log_debug (" ... ready to install");
eazel_installer_do_install (installer, installer->install_categories, FALSE);
eazel_installer_post_install (installer);
if (installer->problems) {
- g_message ("%sn:%d", __FILE__, __LINE__);
+ log_debug (" ... had problems");
return TRUE;
}
}
- gnome_druid_set_buttons_sensitive(druid, FALSE, TRUE, TRUE);
+ gnome_druid_set_buttons_sensitive (druid, FALSE, TRUE, TRUE);
}
- g_message ("%s:%d", __FILE__, __LINE__);
/* FALSE means remove this source */
return FALSE;
}
@@ -126,14 +196,8 @@ druid_finish (GnomeDruidPage *gnomedruidpage,
gpointer arg1,
EazelInstaller *installer)
{
- char *package_list;
-
- /* for now, always delete the rpm files on exit */
- g_message ("Farewell -- deleting RPM files.");
- package_list = g_strdup_printf ("%s/package-list.xml", installer->tmpdir);
- unlink (package_list);
- g_free (package_list);
- eazel_install_delete_downloads (installer->service);
+ g_message ("Farewell!");
+ ask_to_delete_rpms (installer);
g_mem_profile ();
exit (0);
diff --git a/nautilus-installer/src/installer.c b/nautilus-installer/src/installer.c
index 8d6223c2b..246309b6f 100644
--- a/nautilus-installer/src/installer.c
+++ b/nautilus-installer/src/installer.c
@@ -108,7 +108,8 @@ typedef struct {
" http://www.eazel.com/support/\n" \
"Once you have resolved the problem, please restart the installer.")
-#define D_SPLASH_TITLE _("Welcome to the Eazel Installer!")
+#define D_ERROR_TITLE _("An error has occurred")
+#define D_SPLASH_TITLE _("Welcome to the Eazel Installer!")
#define D_FINISHED_TITLE _("Congratulations!")
#define D_INFO_EAZEL_HACKING_TITLE _("Eazel-Hacking")
@@ -135,6 +136,7 @@ typedef struct {
"Linux 7.x systems.")
#define NAUTILUS_INSTALLER_RELEASE
+#undef THAT_DAMN_CHECKBOX
enum {
ERROR_RPM_4_NOT_SUPPORTED,
@@ -195,7 +197,6 @@ log_debug (const gchar *format, ...)
}
}
-
static void
get_pixmap_x_y (char **xpmdata, int *x, int *y)
{
@@ -278,7 +279,7 @@ static void
start_over (EazelInstaller *installer)
{
GtkWidget *install_page;
- g_message ("START OVER");
+ g_message ("--- installation round begins ---");
install_page = gtk_object_get_data (GTK_OBJECT (installer->window), "install_page");
gnome_druid_set_page (installer->druid, GNOME_DRUID_PAGE (install_page));
}
@@ -672,10 +673,6 @@ insert_info_page (EazelInstaller *installer,
gtk_widget_show (hbox);
gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0);
-
- gtk_signal_connect (GTK_OBJECT (info_page), "cancel",
- GTK_SIGNAL_FUNC (druid_cancel),
- installer);
gnome_druid_insert_page (installer->druid,
installer->back_page,
GNOME_DRUID_PAGE (info_page));
@@ -982,9 +979,9 @@ get_detailed_errors_foreach (PackageData *pack, GetErrorsForEachData *data)
cat = (CategoryData *)iter->data;
for (iter2 = cat->packages; iter2 ; iter2 = g_list_next (iter2)) {
pack_in = (PackageData *)iter2->data;
- g_message ("pack->name = %s, pack_in->name = %s", pack->name, pack_in->name);
+ trilobite_debug ("pack->name = %s, pack_in->name = %s", pack->name, pack_in->name);
if (strcmp (pack->name, pack_in->name) == 0) {
- g_message ("yes");
+ g_message ("bad mojo: cannot open package %s", pack->name);
distro = trilobite_get_distribution_name (trilobite_get_distribution (),
TRUE, FALSE);
message = g_strdup_printf (_("Initial package download failed: Possibly your "
@@ -1036,11 +1033,11 @@ get_detailed_errors (const PackageData *pack, EazelInstaller *installer)
data.installer = installer;
data.path = NULL;
- g_message ("copying package");
+ log_debug ("copying package");
non_const_pack = packagedata_copy (pack, TRUE);
- g_message ("getting detailed errors");
+ log_debug ("getting detailed errors");
get_detailed_errors_foreach (non_const_pack, &data);
- g_message ("destroying copy");
+ log_debug ("destroying copy");
packagedata_destroy (non_const_pack, TRUE);
}
@@ -1078,7 +1075,7 @@ install_failed (EazelInstall *service,
const PackageData *pd,
EazelInstaller *installer)
{
- log_debug ("INSTALL FAILED.");
+ g_message ("INSTALL FAILED.");
get_detailed_errors (pd, installer);
collect_failure_info (service, pd, installer, FALSE);
@@ -1089,7 +1086,7 @@ uninstall_failed (EazelInstall *service,
const PackageData *pd,
EazelInstaller *installer)
{
- log_debug ("UNINSTALL FAILED.");
+ g_message ("UNINSTALL FAILED.");
collect_failure_info (service, pd, installer, TRUE);
}
@@ -1104,7 +1101,7 @@ download_failed (EazelInstall *service,
temp = g_strdup_printf (_("Download of %s failed"), name);
installer->failure_info = g_list_append (installer->failure_info, temp);
}
- log_debug ("Download FAILED for %s", name);
+ g_message ("Download FAILED for %s", name);
}
static gboolean
@@ -1657,7 +1654,7 @@ eazel_installer_post_install (EazelInstaller *installer)
} else if (installer->uninstalling==TRUE && installer->install_categories) {
/* begin_install (installer); */
}
- g_message ("out of post_install");
+ log_debug ("out of post_install");
}
/* fill in the splash text to look nice */
@@ -1702,6 +1699,7 @@ draw_splash_text (EazelInstaller *installer, const char *splash_text)
gtk_widget_show (vbox);
button = gtk_check_button_new_with_label ("I am now ready to install Nautilus.");
+#ifdef THAT_DAMN_CHECKBOX
gtk_widget_show (button);
gtk_object_ref (GTK_OBJECT (button));
gtk_object_set_data_full (GTK_OBJECT (installer->window), "kohberg", button,
@@ -1710,6 +1708,11 @@ draw_splash_text (EazelInstaller *installer, const char *splash_text)
gtk_box_pack_start (GTK_BOX (vbox), button, 0, 0, 0);
gtk_signal_connect (GTK_OBJECT (button), "toggled", GTK_SIGNAL_FUNC (go_live),
installer);
+#else
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button), TRUE);
+ go_live (GTK_TOGGLE_BUTTON (button), installer);
+ gnome_druid_set_buttons_sensitive (installer->druid, FALSE, TRUE, TRUE);
+#endif
nautilus_druid_page_eazel_put_widget (NAUTILUS_DRUID_PAGE_EAZEL (start_page), vbox);
}
@@ -1778,6 +1781,7 @@ eazel_installer_set_default_texts (EazelInstaller *installer)
text_labels [ERROR_LABEL] = g_strdup (D_ERROR_LABEL);
text_labels [ERROR_LABEL_2] = g_strdup (D_ERROR_LABEL_2);
text_labels [SPLASH_TITLE] = g_strdup (D_SPLASH_TITLE);
+ text_labels [ERROR_TITLE] = g_strdup (D_ERROR_TITLE);
text_labels [FINISHED_TITLE] = g_strdup (D_FINISHED_TITLE);
text_labels [WHAT_TO_INSTALL_LABEL] = g_strdup (D_WHAT_TO_INSTALL_LABEL);
text_labels [WHAT_TO_INSTALL_LABEL_SINGLE] = g_strdup (D_WHAT_TO_INSTALL_LABEL_SINGLE);
@@ -2208,7 +2212,9 @@ eazel_installer_initialize (EazelInstaller *object)
GTK_SIGNAL_FUNC (druid_finish),
installer);
+#ifdef THAT_DAMN_CHECKBOX
gnome_druid_set_buttons_sensitive (installer->druid, FALSE, FALSE, TRUE);
+#endif
while (gtk_events_pending ()) {
gtk_main_iteration ();