diff options
author | JP Rosevear <jpr@ximian.com> | 2004-04-14 23:46:33 +0800 |
---|---|---|
committer | JP Rosevear <jpr@src.gnome.org> | 2004-04-14 23:46:33 +0800 |
commit | a133c16ccf9334dc665a82d6ddc37a26c2d3a23d (patch) | |
tree | 816fa159f48f54cb16487d3a1a23177c76fd76d3 /shell/e-shell-importer.c | |
parent | f10397cffaa4a7ca1027d5e45954d8b486ad5e2d (diff) | |
download | gsoc2013-evolution-a133c16ccf9334dc665a82d6ddc37a26c2d3a23d.tar.gz gsoc2013-evolution-a133c16ccf9334dc665a82d6ddc37a26c2d3a23d.tar.zst gsoc2013-evolution-a133c16ccf9334dc665a82d6ddc37a26c2d3a23d.zip |
differentiate between user cancellation and no importer (next_file_page):
2004-04-14 JP Rosevear <jpr@ximian.com>
* e-shell-importer.c (get_iid_for_filetype): differentiate between
user cancellation and no importer
(next_file_page): don't throw up a dialog if the user cancelled
the selection process
svn path=/trunk/; revision=25461
Diffstat (limited to 'shell/e-shell-importer.c')
-rw-r--r-- | shell/e-shell-importer.c | 25 |
1 files changed, 15 insertions, 10 deletions
diff --git a/shell/e-shell-importer.c b/shell/e-shell-importer.c index 79c961ef7d..18268cc004 100644 --- a/shell/e-shell-importer.c +++ b/shell/e-shell-importer.c @@ -370,13 +370,12 @@ choose_importer_from_list (GList *importer_list) return g_strdup (iid); } -static char * -get_iid_for_filetype (const char *filename) +static gboolean +get_iid_for_filetype (const char *filename, char **ret_iid) { Bonobo_ServerInfoList *info_list; CORBA_Environment ev; GList *can_handle = NULL; - char *ret_iid; int i, len = 0; CORBA_exception_init (&ev); @@ -420,22 +419,24 @@ get_iid_for_filetype (const char *filename) iid = can_handle->data; - ret_iid = g_strdup (iid->iid); + *ret_iid = g_strdup (iid->iid); free_iid_list (can_handle); g_list_free (can_handle); - return ret_iid; + return TRUE; } else if (len > 1) { /* Display all the IIDs */ - ret_iid = choose_importer_from_list (can_handle); + *ret_iid = choose_importer_from_list (can_handle); free_iid_list (can_handle); g_list_free (can_handle); - return ret_iid; + return *ret_iid ? TRUE : FALSE; } else { - return NULL; + *ret_iid = NULL; + + return TRUE; } } @@ -482,7 +483,7 @@ start_import (gpointer parent, const char *filename, EvolutionImporterClient *cl g_object_unref (icd->client); if (icd->dialog) - gtk_widget_destroy (icd->dialog); + gtk_widget_destroy (GTK_WIDGET (icd->dialog)); g_free (icd); return; } @@ -1029,7 +1030,11 @@ next_file_page (GnomeDruidPage *page, /* Work out the component to use */ if (data->choosen_iid == NULL || strcmp (data->choosen_iid, "Automatic") == 0) { - real_iid = get_iid_for_filetype (data->filename); + if (!get_iid_for_filetype (data->filename, &real_iid)) { + gnome_druid_set_page (druid, GNOME_DRUID_PAGE (data->filedialog)); + + return TRUE; + } } else { real_iid = g_strdup (data->choosen_iid); } |