diff options
Diffstat (limited to 'src/gui-wizard-gtk/wizard.c')
-rw-r--r-- | src/gui-wizard-gtk/wizard.c | 37 |
1 files changed, 34 insertions, 3 deletions
diff --git a/src/gui-wizard-gtk/wizard.c b/src/gui-wizard-gtk/wizard.c index 0ac56ee7..74c24bf5 100644 --- a/src/gui-wizard-gtk/wizard.c +++ b/src/gui-wizard-gtk/wizard.c @@ -25,6 +25,7 @@ GtkLabel *g_lbl_cd_reason; GtkVBox *g_vb_analyzers; +GtkTextView *g_analyze_log; static const gchar *const page_names[] = { @@ -51,7 +52,7 @@ static const gchar *const page_titles[] = static const GtkAssistantPageType page_types[] = { - GTK_ASSISTANT_PAGE_INTRO, + GTK_ASSISTANT_PAGE_CONFIRM, /* need this type to get "apply" signal */ GTK_ASSISTANT_PAGE_PROGRESS, GTK_ASSISTANT_PAGE_CONTENT, GTK_ASSISTANT_PAGE_CONTENT, @@ -101,22 +102,52 @@ static void add_pages() gtk_assistant_set_page_title(GTK_ASSISTANT(assistant), page, page_titles[i]); gtk_assistant_set_page_type(GTK_ASSISTANT(assistant), page, page_types[i]); - g_print("added page: %s\n", page_names[i]); + log("added page: %s", page_names[i]); } /* Set pointer to fields we might need to change */ g_lbl_cd_reason = GTK_LABEL(gtk_builder_get_object(builder, "lbl_cd_reason")); - g_vb_analyzers = GTK_VBOX(gtk_builder_get_object(builder, "vb_analyzers")); + g_analyze_log = GTK_TEXT_VIEW(gtk_builder_get_object(builder, "analyze_log")); +} + +static char *add_log_to_analyze_log(char *log_line, void *param) +{ + GtkTextBuffer *tb = gtk_text_view_get_buffer(g_analyze_log); + + gtk_text_buffer_insert_at_cursor(tb, log_line, -1); + gtk_text_buffer_insert_at_cursor(tb, "\n", 1); + + return log_line; +} + +static void next_page(GtkAssistant *assistant, gpointer user_data) +{ + int page_no = gtk_assistant_get_current_page(assistant); + log("page_no:%d", page_no); + + if (g_analyze_label_selected != NULL) + { + struct run_event_state *run_state = new_run_event_state(); + run_state->logging_callback = add_log_to_analyze_log; +// Need async version of run_event_on_dir_name() here! This one will freeze GUI until completion: + log("running event '%s' on '%s'", g_analyze_label_selected, g_dump_dir_name); + int res = run_event_on_dir_name(run_state, g_dump_dir_name, g_analyze_label_selected); + free_run_event_state(run_state); + log("done running event '%s' on '%s': %d", g_analyze_label_selected, g_dump_dir_name, res); + } } GtkWidget *create_assistant() { assistant = gtk_assistant_new(); gtk_window_set_default_size(GTK_WINDOW(assistant), DEFAULT_WIDTH, DEFAULT_HEIGHT); + gtk_window_set_title(GTK_WINDOW(assistant), g_dump_dir_name); + gtk_window_set_icon_name(GTK_WINDOW(assistant), "abrt"); g_signal_connect(G_OBJECT(assistant), "cancel", G_CALLBACK(gtk_main_quit), NULL); g_signal_connect(G_OBJECT(assistant), "close", G_CALLBACK(gtk_main_quit), NULL); + g_signal_connect(G_OBJECT(assistant), "apply", G_CALLBACK(next_page), NULL); builder = gtk_builder_new(); add_pages(); |