summaryrefslogtreecommitdiffstats
path: root/src/gui-wizard-gtk/wizard.c
diff options
context:
space:
mode:
authorDenys Vlasenko <dvlasenk@redhat.com>2011-02-25 18:25:40 +0100
committerDenys Vlasenko <dvlasenk@redhat.com>2011-02-25 18:25:40 +0100
commit1bbf4c784aa9fda4d137013ea584874d56d45a33 (patch)
tree237caf179b6984a688187982e25897c1759b15ce /src/gui-wizard-gtk/wizard.c
parentc00b15ff52f89ada9770453580e5828fd466e9c5 (diff)
downloadabrt-1bbf4c784aa9fda4d137013ea584874d56d45a33.tar.gz
abrt-1bbf4c784aa9fda4d137013ea584874d56d45a33.tar.xz
abrt-1bbf4c784aa9fda4d137013ea584874d56d45a33.zip
gui-wizard-gtk: show error messages as msg boxes
Signed-off-by: Denys Vlasenko <dvlasenk@redhat.com>
Diffstat (limited to 'src/gui-wizard-gtk/wizard.c')
-rw-r--r--src/gui-wizard-gtk/wizard.c33
1 files changed, 27 insertions, 6 deletions
diff --git a/src/gui-wizard-gtk/wizard.c b/src/gui-wizard-gtk/wizard.c
index 747bca43..f0e83817 100644
--- a/src/gui-wizard-gtk/wizard.c
+++ b/src/gui-wizard-gtk/wizard.c
@@ -122,9 +122,8 @@ static void save_dialog_response(GtkDialog *dialog, gint response_id, gpointer u
struct dump_dir *steal_if_needed(struct dump_dir *dd)
{
-//FIXME: show error dialog?
if (!dd)
- xfunc_die();
+ xfunc_die(); /* error msg was already logged */
if (dd->locked)
return dd;
@@ -155,17 +154,39 @@ struct dump_dir *steal_if_needed(struct dump_dir *dd)
dd = steal_directory(HOME, g_dump_dir_name);
if (!dd)
-//FIXME: show error dialog?
- return NULL;
-
- delete_dump_dir_possibly_using_abrtd(g_dump_dir_name);
+ return NULL; /* Stealing failed. Error msg was already logged */
+ /* Delete old dir and switch to new one.
+ * Don't want to keep new dd open across deletion,
+ * therefore it's a bit more complicated.
+ */
+ char *old_name = g_dump_dir_name;
g_dump_dir_name = xstrdup(dd->dd_dir);
+ dd_close(dd);
+
gtk_window_set_title(GTK_WINDOW(g_assistant), g_dump_dir_name);
+ delete_dump_dir_possibly_using_abrtd(old_name); //TODO: if (deletion_failed) error_msg("BAD")?
+ free(old_name);
+
+ dd = dd_opendir(g_dump_dir_name, 0);
+ if (!dd)
+ xfunc_die(); /* error msg was already logged */
return dd;
}
+void show_error_as_msgbox(const char *msg)
+{
+ GtkWidget *dialog = gtk_message_dialog_new(GTK_WINDOW(g_assistant),
+ GTK_DIALOG_DESTROY_WITH_PARENT,
+ GTK_MESSAGE_WARNING,
+ GTK_BUTTONS_CLOSE,
+ "%s", msg
+ );
+ gtk_dialog_run(GTK_DIALOG(dialog));
+ gtk_widget_destroy(dialog);
+}
+
static void load_text_to_text_view(GtkTextView *tv, const char *name)
{
const char *str = g_cd ? get_crash_item_content_or_NULL(g_cd, name) : NULL;