Blob Blame History Raw
From 3767a3665339aaf6da005f4ac8ba7e1091f5fd7f Mon Sep 17 00:00:00 2001
From: Jakub Filak <jfilak@redhat.com>
Date: Tue, 29 Apr 2014 12:43:27 +0200
Subject: [LIBREPORT PATCH 09/10] GUI: remove the intermediate configuration
 dialog

Get rid of the dialog stating that something is not configured properly
and show the configuration dialog instead.

Related to #259

Signed-off-by: Jakub Filak <jfilak@redhat.com>
---
 src/gtk-helpers/event_config_dialog.c    |  7 +++-
 src/gtk-helpers/workflow_config_dialog.c |  7 +++-
 src/gui-wizard-gtk/wizard.c              | 72 +++-----------------------------
 3 files changed, 17 insertions(+), 69 deletions(-)

diff --git a/src/gtk-helpers/event_config_dialog.c b/src/gtk-helpers/event_config_dialog.c
index 655abb6..0c65f80 100644
--- a/src/gtk-helpers/event_config_dialog.c
+++ b/src/gtk-helpers/event_config_dialog.c
@@ -299,8 +299,11 @@ config_dialog_t *create_event_config_dialog(const char *event_name, GtkWindow *p
 
     GtkWindow *parent_window = parent ? parent : g_event_list_window;
 
+    char *window_title = xasprintf("%s - Reporting Configuration",
+            ec_get_screen_name(event) ? ec_get_screen_name(event) : event_name);
+
     GtkWidget *dialog = gtk_dialog_new_with_buttons(
-                        /*title:*/ec_get_screen_name(event) ? ec_get_screen_name(event) : event_name,
+                        window_title,
                         parent_window,
                         GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT,
                         _("_Cancel"),
@@ -309,6 +312,8 @@ config_dialog_t *create_event_config_dialog(const char *event_name, GtkWindow *p
                         GTK_RESPONSE_APPLY,
                         NULL);
 
+    free(window_title);
+
     /* Allow resize?
      * W/o resize, e.g. upload configuration hint looks awfully
      * line wrapped.
diff --git a/src/gtk-helpers/workflow_config_dialog.c b/src/gtk-helpers/workflow_config_dialog.c
index 7c399e4..e6e48c9 100644
--- a/src/gtk-helpers/workflow_config_dialog.c
+++ b/src/gtk-helpers/workflow_config_dialog.c
@@ -71,8 +71,11 @@ config_dialog_t *create_workflow_config_dialog(const char *workflow_name, GtkWin
 
     GtkWindow *parent_window = parent ? parent : g_parent_window;
 
+    char *window_title = xasprintf("%s - Reporting Configuration",
+            wf_get_screen_name(workflow) ? wf_get_screen_name(workflow) : workflow_name);
+
     GtkWidget *dialog = gtk_dialog_new_with_buttons(
-                        /*title:*/ wf_get_screen_name(workflow) ? wf_get_screen_name(workflow) : workflow_name,
+                        window_title,
                         parent_window,
                         GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT,
                         _("_Cancel"),
@@ -81,6 +84,8 @@ config_dialog_t *create_workflow_config_dialog(const char *workflow_name, GtkWin
                         GTK_RESPONSE_APPLY,
                         NULL);
 
+    free(window_title);
+
     gtk_window_set_resizable(GTK_WINDOW(dialog), true);
     gtk_window_set_default_size(GTK_WINDOW(dialog), 450, 450);
 
diff --git a/src/gui-wizard-gtk/wizard.c b/src/gui-wizard-gtk/wizard.c
index e6f6ee7..8895d0e 100644
--- a/src/gui-wizard-gtk/wizard.c
+++ b/src/gui-wizard-gtk/wizard.c
@@ -289,59 +289,6 @@ static void remove_child_widget(GtkWidget *widget, gpointer unused)
     gtk_widget_destroy(widget);
 }
 
-static void on_configure_event_cb(GtkWidget *button, gpointer user_data)
-{
-    char *event_name = (char *)user_data;
-    if (event_name != NULL)
-    {
-        int result = show_event_config_dialog(event_name, GTK_WINDOW(g_top_most_window));
-        if (result == GTK_RESPONSE_APPLY)
-        {
-            GHashTable *errors = validate_event(event_name);
-            if (errors == NULL)
-            {
-                gtk_widget_destroy(g_top_most_window);
-                g_top_most_window = NULL;
-            }
-        }
-    }
-}
-
-static void show_event_opt_error_dialog(const char *event_name)
-{
-    event_config_t *ec = get_event_config(event_name);
-    char *message = xasprintf(_("%s is not properly configured. You can configure it now or provide the required information later.\n\n"
-                              "Read more about the configuration at: https://fedorahosted.org/abrt/wiki/AbrtConfiguration"),
-                               ec_get_screen_name(ec));
-    char *markup_message = xasprintf(_("<b>%s</b> is not properly configured. You can configure it now or provide the required information later.\n\n"
-                              "<a href=\"https://fedorahosted.org/abrt/wiki/AbrtConfiguration\">Read more about the configuration</a>"),
-                               ec_get_screen_name(ec));
-    GtkWidget *wrong_settings = g_top_most_window = gtk_message_dialog_new(GTK_WINDOW(g_wnd_assistant),
-        GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT,
-        GTK_MESSAGE_WARNING,
-        GTK_BUTTONS_CLOSE,
-        message);
-
-    gtk_window_set_transient_for(GTK_WINDOW(wrong_settings), GTK_WINDOW(g_wnd_assistant));
-    gtk_message_dialog_set_markup(GTK_MESSAGE_DIALOG(wrong_settings),
-                                    markup_message);
-    free(message);
-    free(markup_message);
-
-    GtkWidget *act_area = gtk_dialog_get_content_area(GTK_DIALOG(wrong_settings));
-    char * conf_btn_lbl = xasprintf(_("Con_figure %s"), ec_get_screen_name(ec));
-    GtkWidget *configure_event_btn = gtk_button_new_with_mnemonic(conf_btn_lbl);
-    g_signal_connect(configure_event_btn, "clicked", G_CALLBACK(on_configure_event_cb), (gpointer)event_name);
-    free(conf_btn_lbl);
-
-    gtk_box_pack_start(GTK_BOX(act_area), configure_event_btn, false, false, 0);
-    gtk_widget_show(configure_event_btn);
-
-
-    gtk_dialog_run(GTK_DIALOG(wrong_settings));
-    if (g_top_most_window)
-        gtk_widget_destroy(wrong_settings);
-}
 
 static void update_window_title(void)
 {
@@ -906,16 +853,14 @@ static gint find_by_button(gconstpointer a, gconstpointer button)
     return (evdata->toggle_button != button);
 }
 
-static int check_event_config(const char *event_name)
+static void check_event_config(const char *event_name)
 {
     GHashTable *errors = validate_event(event_name);
     if (errors != NULL)
     {
         g_hash_table_unref(errors);
-        show_event_opt_error_dialog(event_name);
-        return 1;
+        show_event_config_dialog(event_name, GTK_WINDOW(g_top_most_window));
     }
-    return 0;
 }
 
 static void event_rb_was_toggled(GtkButton *button, gpointer user_data)
@@ -2850,18 +2795,11 @@ static gint select_next_page_no(gint current_page_no, gpointer data)
                 goto again;
             }
 
-            /* must set g_event_selected otherwise if the event was not
-             * configured the reporting process will be terminated even if a
-             * user configured the event on report-gtk's demand from
-             * check_event_config() function
-             */
             g_event_selected = event;
 
-            if (check_event_config(g_event_selected) != 0)
-            {
-                /* don't know what is the difference between this <<< */
-                goto again;
-            }
+            /* Notify a user that some configuration options miss values, but */
+            /* don't force him to provide them. */
+            check_event_config(g_event_selected);
 
             /* >>> and this but this is clearer
              * because it does exactly the same thing
-- 
1.8.3.1