summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJiri Moskovcak <jmoskovc@redhat.com>2011-02-17 18:42:25 +0100
committerJiri Moskovcak <jmoskovc@redhat.com>2011-02-17 18:42:25 +0100
commit72ab1b0caf1504a8a53f09243092b1f383d84df1 (patch)
tree62989e9b3c48b9dc40cad958b7d558476e1776fa
parentf4cb4ccf25a88f9201df6d76d00e9bdec2b45df4 (diff)
downloadabrt-72ab1b0caf1504a8a53f09243092b1f383d84df1.tar.gz
abrt-72ab1b0caf1504a8a53f09243092b1f383d84df1.tar.xz
abrt-72ab1b0caf1504a8a53f09243092b1f383d84df1.zip
fill the details treeview
-rw-r--r--src/gui-wizard-gtk/main.c6
-rw-r--r--src/gui-wizard-gtk/wizard.c82
-rw-r--r--src/gui-wizard-gtk/wizard.glade2
-rw-r--r--src/gui-wizard-gtk/wizard.h2
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;