diff options
author | Jiri Moskovcak <jmoskovc@redhat.com> | 2011-02-17 18:42:25 +0100 |
---|---|---|
committer | Jiri Moskovcak <jmoskovc@redhat.com> | 2011-02-17 18:42:25 +0100 |
commit | 72ab1b0caf1504a8a53f09243092b1f383d84df1 (patch) | |
tree | 62989e9b3c48b9dc40cad958b7d558476e1776fa | |
parent | f4cb4ccf25a88f9201df6d76d00e9bdec2b45df4 (diff) | |
download | abrt-72ab1b0caf1504a8a53f09243092b1f383d84df1.tar.gz abrt-72ab1b0caf1504a8a53f09243092b1f383d84df1.tar.xz abrt-72ab1b0caf1504a8a53f09243092b1f383d84df1.zip |
fill the details treeview
-rw-r--r-- | src/gui-wizard-gtk/main.c | 6 | ||||
-rw-r--r-- | src/gui-wizard-gtk/wizard.c | 82 | ||||
-rw-r--r-- | src/gui-wizard-gtk/wizard.glade | 2 | ||||
-rw-r--r-- | src/gui-wizard-gtk/wizard.h | 2 |
4 files changed, 88 insertions, 4 deletions
diff --git a/src/gui-wizard-gtk/main.c b/src/gui-wizard-gtk/main.c index 4f54ff2b..33d1f114 100644 --- a/src/gui-wizard-gtk/main.c +++ b/src/gui-wizard-gtk/main.c @@ -6,8 +6,9 @@ #define PROGNAME "bug-reporting-wizard" char *g_glade_file = NULL; +char *dump_dir_path = NULL; -static crash_data_t *cd; +crash_data_t *cd; int main(int argc, char **argv) { @@ -35,7 +36,8 @@ 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); + dump_dir_path = argv[0]; + struct dump_dir *dd = dd_opendir(dump_dir_path, 0); if (!dd) return 1; cd = create_crash_data_from_dump_dir(dd); diff --git a/src/gui-wizard-gtk/wizard.c b/src/gui-wizard-gtk/wizard.c index 0ac56ee7..46782413 100644 --- a/src/gui-wizard-gtk/wizard.c +++ b/src/gui-wizard-gtk/wizard.c @@ -60,8 +60,17 @@ static const GtkAssistantPageType page_types[] = GTK_ASSISTANT_PAGE_SUMMARY, }; -static GtkBuilder *builder; +enum +{ + COLUMN_NAME, + COLUMN_VALUE, + COLUMN_PATH, + COLUMN_COUNT +}; + static GtkWidget *assistant; +static GtkListStore *details_ls; +static GtkBuilder *builder; void on_b_refresh_clicked(GtkButton *button) { @@ -71,6 +80,75 @@ void on_b_refresh_clicked(GtkButton *button) /* wizard.glade file as a string WIZARD_GLADE_CONTENTS: */ #include "wizard_glade.c" + +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; +} + +void *append_item_to_details_ls(gpointer name, gpointer value, gpointer data) +{ + crash_item *item = (crash_item*)value; + GtkTreeIter iter; + + gtk_list_store_append(details_ls, &iter); + + //FIXME: use the vaule representation here + if(strlen(item->content) < 30) + { + gtk_list_store_set(details_ls, &iter, + COLUMN_NAME, (char *)name, + COLUMN_VALUE, item->content, + COLUMN_PATH, xasprintf("%s%s", dump_dir_path, name), + -1); + } + else + { + gtk_list_store_set(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", dump_dir_path, name), + -1); + } + + return NULL; +} + +void fill_details(GtkTreeView *treeview) +{ + details_ls = gtk_list_store_new(COLUMN_COUNT, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING); + g_hash_table_foreach(cd, (GHFunc)append_item_to_details_ls, NULL); + gtk_tree_view_set_model(GTK_TREE_VIEW(treeview), GTK_TREE_MODEL(details_ls)); +} + static void add_pages() { GError *error = NULL; @@ -120,6 +198,8 @@ GtkWidget *create_assistant() builder = gtk_builder_new(); add_pages(); + GtkTreeView *details_tv = create_details_treeview(); + fill_details(details_tv); gtk_builder_connect_signals(builder, NULL); return assistant; diff --git a/src/gui-wizard-gtk/wizard.glade b/src/gui-wizard-gtk/wizard.glade index 25fb17f7..2b44c05f 100644 --- a/src/gui-wizard-gtk/wizard.glade +++ b/src/gui-wizard-gtk/wizard.glade @@ -764,7 +764,7 @@ Please review the backtrace below and modify it as needed to ensure your bug rep <property name="hscrollbar_policy">automatic</property> <property name="vscrollbar_policy">automatic</property> <child> - <object class="GtkTreeView" id="treeview1"> + <object class="GtkTreeView" id="details_tv"> <property name="visible">True</property> <property name="can_focus">True</property> </object> diff --git a/src/gui-wizard-gtk/wizard.h b/src/gui-wizard-gtk/wizard.h index 2633351a..221bbc25 100644 --- a/src/gui-wizard-gtk/wizard.h +++ b/src/gui-wizard-gtk/wizard.h @@ -4,3 +4,5 @@ extern GtkLabel *g_lbl_cd_reason; extern GtkVBox *g_vb_analyzers; extern char *g_glade_file; +extern crash_data_t *cd; +extern char *dump_dir_path; |