diff options
Diffstat (limited to 'src/gui-wizard-gtk/main.c')
-rw-r--r-- | src/gui-wizard-gtk/main.c | 47 |
1 files changed, 36 insertions, 11 deletions
diff --git a/src/gui-wizard-gtk/main.c b/src/gui-wizard-gtk/main.c index 4f54ff2b..2ddff27d 100644 --- a/src/gui-wizard-gtk/main.c +++ b/src/gui-wizard-gtk/main.c @@ -7,8 +7,22 @@ char *g_glade_file = NULL; +char *g_dump_dir_name = NULL; + +char *g_analyze_label_selected = NULL; + static crash_data_t *cd; +static void analyze_rb_was_toggled(GtkToggleButton *button, gpointer user_data) +{ + const char *label = gtk_button_get_label(GTK_BUTTON(button)); + if (label) + { + free(g_analyze_label_selected); + g_analyze_label_selected = xstrdup(label); + } +} + int main(int argc, char **argv) { gtk_init(&argc, &argv); @@ -35,11 +49,13 @@ int main(int argc, char **argv) if (!argv[0] || argv[1]) /* zero or >1 arguments */ show_usage_and_die(program_usage_string, program_options); - struct dump_dir *dd = dd_opendir(argv[0], 0); + g_dump_dir_name = argv[0]; + + struct dump_dir *dd = dd_opendir(g_dump_dir_name, 0); if (!dd) return 1; cd = create_crash_data_from_dump_dir(dd); - char *analyze_events = list_possible_events(dd, /*dump_dir_name*/ NULL, "analyze"); + char *analyze_events = list_possible_events(dd, g_dump_dir_name, "analyze"); dd_close(dd); GtkWidget *assistant = create_assistant(); @@ -52,15 +68,24 @@ int main(int argc, char **argv) if (analyze_events[0]) { char *event_name = analyze_events; - char *event_name_end = strchr(event_name, '\n'); - *event_name_end = '\0'; - GtkWidget *rb = gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(first_rb), event_name); - *event_name_end = '\n'; - event_name = event_name_end + 1; - - if (!first_rb) - first_rb = rb; - gtk_box_pack_start(GTK_BOX(g_vb_analyzers), rb, /*expand*/ false, /*fill*/ false, /*padding*/ 0); + while (event_name[0]) + { + char *event_name_end = strchr(event_name, '\n'); + *event_name_end = '\0'; + GtkWidget *rb = gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(first_rb), event_name); + if (!first_rb) + { + first_rb = rb; + free(g_analyze_label_selected); + g_analyze_label_selected = xstrdup(event_name); + } + *event_name_end = '\n'; + event_name = event_name_end + 1; + + gtk_box_pack_start(GTK_BOX(g_vb_analyzers), rb, /*expand*/ false, /*fill*/ false, /*padding*/ 0); + + g_signal_connect(G_OBJECT(rb), "toggled", G_CALLBACK(analyze_rb_was_toggled), NULL); + } } else { /*???*/ } |