diff options
Diffstat (limited to 'src/gui-wizard-gtk/wizard.c')
-rw-r--r-- | src/gui-wizard-gtk/wizard.c | 41 |
1 files changed, 36 insertions, 5 deletions
diff --git a/src/gui-wizard-gtk/wizard.c b/src/gui-wizard-gtk/wizard.c index 90a9c625..23d9141d 100644 --- a/src/gui-wizard-gtk/wizard.c +++ b/src/gui-wizard-gtk/wizard.c @@ -56,6 +56,7 @@ static GtkContainer *g_container_details2; static GtkLabel *g_lbl_cd_reason; static GtkTextView *g_tv_backtrace; static GtkTextView *g_tv_comment; +static GtkEventBox *g_eb_comment; static GtkTreeView *g_tv_details; static GtkWidget *g_widget_warnings_area; static GtkBox *g_box_warning_labels; @@ -540,7 +541,7 @@ static event_gui_data_t *add_event_buttons(GtkBox *box, event_gui_data_t *event_gui_data = new_event_gui_data_t(); event_gui_data->event_name = xstrdup(event_name); event_gui_data->toggle_button = GTK_TOGGLE_BUTTON(button); - *p_event_list = g_list_append(*p_event_list, event_gui_data); + *p_event_list = g_list_append(*p_event_list, event_gui_data); if (!first_button) first_button = event_gui_data; @@ -1105,6 +1106,20 @@ static void on_bt_approve_toggle(GtkToggleButton *togglebutton, gpointer user_da check_backtrace_and_allow_send(); } +static void on_comment_changed(GtkTextBuffer *buffer, gpointer user_data) +{ + bool good = gtk_text_buffer_get_char_count(buffer) >= 10; + + /* Allow next page only when the comment has at least 10 chars */ + gtk_assistant_set_page_complete(g_assistant, pages[PAGENO_COMMENT].page_widget, good); + + /* And show the eventbox with label */ + if (good) + gtk_widget_hide(GTK_WIDGET(g_eb_comment)); + else + gtk_widget_show(GTK_WIDGET(g_eb_comment)); +} + /* Refresh button handling */ @@ -1204,6 +1219,9 @@ static void on_page_prepare(GtkAssistant *assistant, GtkWidget *page, gpointer u w ); } + + if (pages[PAGENO_COMMENT].page_widget == page) + on_comment_changed(gtk_text_view_get_buffer(g_tv_comment), NULL); } static gint select_next_page_no(gint current_page_no, gpointer data) @@ -1212,6 +1230,8 @@ static gint select_next_page_no(gint current_page_no, gpointer data) if (g_report_only) return current_page_no + 1; + gint prev_page_no = current_page_no; + again: current_page_no++; @@ -1241,16 +1261,20 @@ static gint select_next_page_no(gint current_page_no, gpointer data) case PAGENO_ANALYZE_PROGRESS: VERB2 log("%s: ANALYZE_PROGRESS: g_analyze_event_selected:'%s'", __func__, g_analyze_event_selected); - if (!g_analyze_event_selected || !g_analyze_event_selected[0]) + if (!g_analyze_event_selected || !g_analyze_event_selected[0]) goto again; /* skip this page */ break; case PAGENO_REPORTER_SELECTOR: VERB2 log("%s: REPORTER_SELECTOR: g_black_event_count:%d", __func__, g_black_event_count); - if (g_black_event_count != 0) - { - /* Still have analyzers which didn't run? Go back */ + /* if we _did_ run an event (didn't skip it) + * and still have analyzers which didn't run + */ + if (prev_page_no == PAGENO_ANALYZE_PROGRESS + && g_black_event_count != 0 + ) { + /* Go back to analyzer selectors */ current_page_no = PAGENO_ANALYZE_SELECTOR-1; goto again; } @@ -1405,6 +1429,7 @@ static void add_pages() g_tv_report_log = GTK_TEXT_VIEW( gtk_builder_get_object(builder, "tv_report_log")); g_tv_backtrace = GTK_TEXT_VIEW( gtk_builder_get_object(builder, "tv_backtrace")); g_tv_comment = GTK_TEXT_VIEW( gtk_builder_get_object(builder, "tv_comment")); + g_eb_comment = GTK_EVENT_BOX( gtk_builder_get_object(builder, "eb_comment")); g_tv_details = GTK_TREE_VIEW( gtk_builder_get_object(builder, "tv_details")); g_box_warning_labels = GTK_BOX( gtk_builder_get_object(builder, "box_warning_labels")); g_tb_approve_bt = GTK_TOGGLE_BUTTON(gtk_builder_get_object(builder, "cb_approve_bt")); @@ -1439,6 +1464,11 @@ static void add_pages() config_btn = GTK_WIDGET(gtk_builder_get_object(builder, "button_cfg2")); if (config_btn) g_signal_connect(G_OBJECT(config_btn), "clicked", G_CALLBACK(on_show_event_list_cb), NULL); + + /* Set color of the comment evenbox */ + GdkColor color; + gdk_color_parse("#CC3333", &color); + gtk_widget_modify_bg(GTK_WIDGET(g_eb_comment), GTK_STATE_NORMAL, &color); } void create_assistant(void) @@ -1475,6 +1505,7 @@ void create_assistant(void) g_signal_connect(g_tb_approve_bt, "toggled", G_CALLBACK(on_bt_approve_toggle), NULL); g_signal_connect(g_btn_refresh, "clicked", G_CALLBACK(on_btn_refresh_clicked), NULL); + g_signal_connect(gtk_text_view_get_buffer(g_tv_comment), "changed", G_CALLBACK(on_comment_changed), NULL); g_signal_connect(g_tv_details, "row-activated", G_CALLBACK(tv_details_row_activated), NULL); /* [Enter] on a row: g_signal_connect(g_tv_details, "select-cursor-row", G_CALLBACK(tv_details_select_cursor_row), NULL); */ g_signal_connect(g_tv_details, "cursor-changed", G_CALLBACK(tv_details_cursor_changed), NULL); |