From 24d52b7cc22ae2aea7c90b9e6fe76e794806ed57 Mon Sep 17 00:00:00 2001 From: Denys Vlasenko Date: Tue, 22 Feb 2011 15:16:48 +0100 Subject: gui-wizard-gtk: cleanups without substantial code changes Signed-off-by: Denys Vlasenko --- src/gui-gtk/abrt-gtk.c | 2 +- src/gui-wizard-gtk/main.c | 49 ++++++------ src/gui-wizard-gtk/wizard.c | 188 ++++++++++++++++++++++---------------------- src/gui-wizard-gtk/wizard.h | 8 +- 4 files changed, 123 insertions(+), 124 deletions(-) (limited to 'src') diff --git a/src/gui-gtk/abrt-gtk.c b/src/gui-gtk/abrt-gtk.c index 4b4db4c3..e3886fbd 100644 --- a/src/gui-gtk/abrt-gtk.c +++ b/src/gui-gtk/abrt-gtk.c @@ -55,7 +55,7 @@ void add_directory_to_dirlist(const char *dirname) free(executable); dd_close(dd); - VERB1 log("added: %s\n", dirname); + VERB1 log("added: %s", dirname); } diff --git a/src/gui-wizard-gtk/main.c b/src/gui-wizard-gtk/main.c index 0b936a98..983695db 100644 --- a/src/gui-wizard-gtk/main.c +++ b/src/gui-wizard-gtk/main.c @@ -63,23 +63,23 @@ static void append_item_to_details_ls(gpointer name, gpointer value, gpointer da gtk_list_store_append(g_details_ls, &iter); //FIXME: use the value representation here - /* If text and not multiline... */ + /* If text and not multiline... */ if ((item->flags & CD_FLAG_TXT) && !strchr(item->content, '\n')) { gtk_list_store_set(g_details_ls, &iter, - COLUMN_NAME, (char *)name, - COLUMN_VALUE, item->content, - COLUMN_PATH, xasprintf("%s%s", g_dump_dir_name, name), + DETAIL_COLUMN_NAME, (char *)name, + DETAIL_COLUMN_VALUE, item->content, + //DETAIL_COLUMN_PATH, xasprintf("%s%s", g_dump_dir_name, name), -1); } else { gtk_list_store_set(g_details_ls, &iter, - COLUMN_NAME, (char *)name, - COLUMN_VALUE, _("Content is too long, please use the \"View\" button to display it."), - COLUMN_PATH, xasprintf("%s%s", g_dump_dir_name, name), + DETAIL_COLUMN_NAME, (char *)name, + DETAIL_COLUMN_VALUE, _("Content is too long, please use the \"View\" button to display it."), + //DETAIL_COLUMN_PATH, xasprintf("%s%s", g_dump_dir_name, name), -1); -//FIXME: we leak xasprintf results above? + //WARNING: will leak xasprintf results above if uncommented } } @@ -107,30 +107,25 @@ void reload_dump_dir(void) const char *bt = g_cd ? get_crash_item_content_or_NULL(g_cd, FILENAME_BACKTRACE) : NULL; gtk_text_buffer_set_text(backtrace_buf, bt ? bt : "", -1); - if (g_analyze_events[0]) - { - GtkWidget *first_rb = add_event_buttons(g_box_analyzers, g_analyze_events, G_CALLBACK(analyze_rb_was_toggled), /*radio:*/ true); - if (first_rb) - { - const char *label = gtk_button_get_label(GTK_BUTTON(first_rb)); - if (label) - { - free(g_analyze_label_selected); - g_analyze_label_selected = xstrdup(label); - } - } - } - else - { - /* No available analyze events, go to reporter selector page */ //Doesn't work: shows empty page +// if (!g_analyze_events[0]) +// { +// /* No available analyze events, go to reporter selector page */ // gtk_assistant_set_current_page(GTK_ASSISTANT(assistant), PAGENO_REPORTER_SELECTOR); - } +// } - if (g_report_events[0]) + GtkWidget *first_rb = add_event_buttons(g_box_analyzers, g_analyze_events, G_CALLBACK(analyze_rb_was_toggled), /*radio:*/ true); + if (first_rb) { - add_event_buttons(g_box_reporters, g_report_events, /*callback:*/NULL, /*radio:*/ false); + const char *label = gtk_button_get_label(GTK_BUTTON(first_rb)); + if (label) + { + free(g_analyze_label_selected); + g_analyze_label_selected = xstrdup(label); + } } + + add_event_buttons(g_box_reporters, g_report_events, /*callback:*/ NULL, /*radio:*/ false); } int main(int argc, char **argv) diff --git a/src/gui-wizard-gtk/wizard.c b/src/gui-wizard-gtk/wizard.c index 05e4001c..74d606fb 100644 --- a/src/gui-wizard-gtk/wizard.c +++ b/src/gui-wizard-gtk/wizard.c @@ -72,97 +72,12 @@ static page_obj_t pages[8] = {NULL} }; + void on_b_refresh_clicked(GtkButton *button) { g_print("Refresh clicked!\n"); } -static GtkTreeView *create_details_treeview() -{ - GtkTreeView *details_tv = GTK_TREE_VIEW(gtk_builder_get_object(builder, "details_tv")); - GtkCellRenderer *renderer; - GtkTreeViewColumn *column; - - renderer = gtk_cell_renderer_text_new(); - column = gtk_tree_view_column_new_with_attributes(_("Name"), - renderer, - "text", - COLUMN_NAME, - NULL); - gtk_tree_view_column_set_sort_column_id(column, COLUMN_NAME); - gtk_tree_view_append_column(details_tv, column); - - renderer = gtk_cell_renderer_text_new(); - column = gtk_tree_view_column_new_with_attributes(_("Value"), - renderer, - "text", - COLUMN_VALUE, - NULL); - gtk_tree_view_append_column(details_tv, column); - - /* - renderer = gtk_cell_renderer_text_new(); - column = gtk_tree_view_column_new_with_attributes(_("Path"), - renderer, - "text", - COLUMN_PATH, - NULL); - gtk_tree_view_append_column(details_tv, column); - */ - return details_tv; -} - -/* wizard.glade file as a string WIZARD_GLADE_CONTENTS: */ -#include "wizard_glade.c" - -static void add_pages() -{ - GError *error = NULL; - if (!g_glade_file) - { - /* Load UI from internal string */ - gtk_builder_add_objects_from_string(builder, - WIZARD_GLADE_CONTENTS, sizeof(WIZARD_GLADE_CONTENTS) - 1, - (gchar**)page_names, - &error); - if (error != NULL) - error_msg_and_die("Error loading glade data: %s", error->message); - } - else - { - /* -g FILE: load IU from it */ - gtk_builder_add_objects_from_file(builder, g_glade_file, (gchar**)page_names, &error); - if (error != NULL) - error_msg_and_die("Can't load %s: %s", g_glade_file, error->message); - } - - for (int i = 0; page_names[i] != NULL; i++) - { - GtkWidget *page = GTK_WIDGET(gtk_builder_get_object(builder, page_names[i])); - if (page == NULL) - continue; - - pages[i].page_widget = page; - - gtk_assistant_append_page(GTK_ASSISTANT(assistant), page); - //FIXME: shouldn't be complete until something is selected! - gtk_assistant_set_page_complete(GTK_ASSISTANT(assistant), page, true); - - gtk_assistant_set_page_title(GTK_ASSISTANT(assistant), page, pages[i].title); - gtk_assistant_set_page_type(GTK_ASSISTANT(assistant), page, pages[i].type); - - 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_lbl_analyze_log = GTK_LABEL(gtk_builder_get_object(builder, "lbl_analyze_log")); - g_box_analyzers = GTK_BOX(gtk_builder_get_object(builder, "vb_analyzers")); - g_box_reporters = GTK_BOX(gtk_builder_get_object(builder, "vb_reporters")); - g_analyze_log = GTK_TEXT_VIEW(gtk_builder_get_object(builder, "analyze_log")); - g_backtrace_tv = GTK_TEXT_VIEW(gtk_builder_get_object(builder, "bactrace_tev")); -} - /* "Next page" button handler. So far it only starts analyze event run */ @@ -212,7 +127,7 @@ static gboolean consume_cmd_output(GIOChannel *source, GIOCondition condition, g if (retval != 0 || spawn_next_command(evd->run_state, g_dump_dir_name, /*event:*/ g_analyze_label_selected) < 0 ) { - log("done running event '%s' on '%s': %d", g_analyze_label_selected, g_dump_dir_name, retval); + VERB1 log("done running event '%s' on '%s': %d", g_analyze_label_selected, g_dump_dir_name, retval); /*g_source_remove(evd->event_source_id);*/ close(evd->fd); free_run_event_state(evd->run_state); @@ -244,7 +159,7 @@ static void next_page(GtkAssistant *assistant, gpointer user_data) * function is called before assistant goes to the next_page */ int page_no = gtk_assistant_get_current_page(assistant); - log("page_no:%d", page_no); + VERB2 log("page_no:%d", page_no); if (page_no == PAGENO_ANALYZE_ACTION_SELECTOR && g_analyze_label_selected != NULL) @@ -265,7 +180,7 @@ static void next_page(GtkAssistant *assistant, gpointer user_data) /* At least one command is needed, and we started first one. * Hook its output fd up to the main loop. */ - log("running event '%s' on '%s'", g_analyze_label_selected, g_dump_dir_name); + VERB1 log("running event '%s' on '%s'", g_analyze_label_selected, g_dump_dir_name); struct analyze_event_data *evd = xzalloc(sizeof(*evd)); evd->run_state = state; @@ -279,11 +194,100 @@ static void next_page(GtkAssistant *assistant, gpointer user_data) ); gtk_label_set_text(g_lbl_analyze_log, _("Analyzing...")); /* Freeze assistant so it can't move away from the page until analyzing is done */ -//doesn't seem to have effect - gtk_assistant_set_page_complete(GTK_ASSISTANT(assistant), pages[PAGENO_ANALYZE_PROGRESS].page_widget, false); + gtk_assistant_set_page_complete(GTK_ASSISTANT(assistant), + pages[PAGENO_ANALYZE_PROGRESS].page_widget, false); } } + +/* Initialization */ + +static GtkTreeView *create_details_treeview() +{ + GtkTreeView *details_tv = GTK_TREE_VIEW(gtk_builder_get_object(builder, "details_tv")); + GtkCellRenderer *renderer; + GtkTreeViewColumn *column; + + renderer = gtk_cell_renderer_text_new(); + column = gtk_tree_view_column_new_with_attributes(_("Name"), + renderer, + "text", + DETAIL_COLUMN_NAME, + NULL); + gtk_tree_view_column_set_sort_column_id(column, DETAIL_COLUMN_NAME); + gtk_tree_view_append_column(details_tv, column); + + renderer = gtk_cell_renderer_text_new(); + column = gtk_tree_view_column_new_with_attributes(_("Value"), + renderer, + "text", + DETAIL_COLUMN_VALUE, + NULL); + gtk_tree_view_append_column(details_tv, column); + + /* + renderer = gtk_cell_renderer_text_new(); + column = gtk_tree_view_column_new_with_attributes(_("Path"), + renderer, + "text", + DETAIL_COLUMN_PATH, + NULL); + gtk_tree_view_append_column(details_tv, column); + */ + return details_tv; +} + +/* wizard.glade file as a string WIZARD_GLADE_CONTENTS: */ +#include "wizard_glade.c" + +static void add_pages() +{ + GError *error = NULL; + if (!g_glade_file) + { + /* Load UI from internal string */ + gtk_builder_add_objects_from_string(builder, + WIZARD_GLADE_CONTENTS, sizeof(WIZARD_GLADE_CONTENTS) - 1, + (gchar**)page_names, + &error); + if (error != NULL) + error_msg_and_die("Error loading glade data: %s", error->message); + } + else + { + /* -g FILE: load IU from it */ + gtk_builder_add_objects_from_file(builder, g_glade_file, (gchar**)page_names, &error); + if (error != NULL) + error_msg_and_die("Can't load %s: %s", g_glade_file, error->message); + } + + for (int i = 0; page_names[i] != NULL; i++) + { + GtkWidget *page = GTK_WIDGET(gtk_builder_get_object(builder, page_names[i])); + if (page == NULL) + continue; + + pages[i].page_widget = page; + + gtk_assistant_append_page(GTK_ASSISTANT(assistant), page); + //FIXME: shouldn't be complete until something is selected! + gtk_assistant_set_page_complete(GTK_ASSISTANT(assistant), page, true); + + gtk_assistant_set_page_title(GTK_ASSISTANT(assistant), page, pages[i].title); + gtk_assistant_set_page_type(GTK_ASSISTANT(assistant), page, pages[i].type); + + VERB1 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_lbl_analyze_log = GTK_LABEL(gtk_builder_get_object(builder, "lbl_analyze_log")); + g_box_analyzers = GTK_BOX(gtk_builder_get_object(builder, "vb_analyzers")); + g_box_reporters = GTK_BOX(gtk_builder_get_object(builder, "vb_reporters")); + g_analyze_log = GTK_TEXT_VIEW(gtk_builder_get_object(builder, "analyze_log")); + g_backtrace_tv = GTK_TEXT_VIEW(gtk_builder_get_object(builder, "bactrace_tev")); +} + GtkWidget *create_assistant() { assistant = gtk_assistant_new(); @@ -298,7 +302,7 @@ GtkWidget *create_assistant() builder = gtk_builder_new(); add_pages(); g_details_tv = create_details_treeview(); - g_details_ls = gtk_list_store_new(COLUMN_COUNT, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING); + g_details_ls = gtk_list_store_new(DETAIL_NUM_COLUMNS, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING); gtk_tree_view_set_model(g_details_tv, GTK_TREE_MODEL(g_details_ls)); gtk_builder_connect_signals(builder, NULL); diff --git a/src/gui-wizard-gtk/wizard.h b/src/gui-wizard-gtk/wizard.h index 3e42d22a..1e263cde 100644 --- a/src/gui-wizard-gtk/wizard.h +++ b/src/gui-wizard-gtk/wizard.h @@ -14,10 +14,10 @@ extern GtkBox *g_box_reporters; extern GtkTextView *g_backtrace_tv; enum { - COLUMN_NAME, - COLUMN_VALUE, - COLUMN_PATH, - COLUMN_COUNT, + DETAIL_COLUMN_NAME, + DETAIL_COLUMN_VALUE, + //COLUMN_PATH, + DETAIL_NUM_COLUMNS, }; extern GtkTreeView *g_details_tv; extern GtkListStore *g_details_ls; -- cgit