Signed-off-by: Nikola Pajkovsky npajkovs@redhat.com --- src/gui-wizard-gtk/wizard.c | 34 ++++++++++++++++++++++++++++++++++ src/include/report/crash_data.h | 4 ++++ src/lib/crash_data.c | 13 ++++++++++++- 3 files changed, 50 insertions(+), 1 deletions(-)
diff --git a/src/gui-wizard-gtk/wizard.c b/src/gui-wizard-gtk/wizard.c index c768353..30e60a1 100644 --- a/src/gui-wizard-gtk/wizard.c +++ b/src/gui-wizard-gtk/wizard.c @@ -326,6 +326,39 @@ struct cd_stats { unsigned filecount; };
+static void tv_details_edit_cb(GtkTreeView *tree_view, + GtkTreePath *path, + GtkTreeViewColumn *column, + gpointer user_data) +{ + GtkTreeModel *model; + GtkTreeIter iter; + GtkTreeSelection* selection = gtk_tree_view_get_selection(tree_view); + if (!gtk_tree_selection_get_selected(selection, &model, &iter)) + return; + + gchar *column_name; + gtk_tree_model_get(model, &iter, DETAIL_COLUMN_NAME, &column_name, -1); + struct crash_item *item = get_crash_data_item_or_NULL(g_cd, column_name); + if (!item || !IS_TXT(item->flags)) + return; + + if (item && IS_ONELINE(item->flags)) + return; + + gchar *arg[3]; + arg[0] = "xdg-open"; + arg[1] = concat_path_file(g_dump_dir_name, column_name); + arg[2] = NULL; + g_free(column_name); + + g_spawn_sync(NULL, arg, NULL, + G_SPAWN_SEARCH_PATH | G_SPAWN_STDOUT_TO_DEV_NULL, + NULL, NULL, NULL, NULL, NULL, NULL); + + free(arg[1]); +} + static void append_item_to_ls_details(gpointer name, gpointer value, gpointer data) { crash_item *item = (crash_item*)value; @@ -1068,6 +1101,7 @@ void create_assistant()
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(g_tv_details, "row-activated", G_CALLBACK(tv_details_edit_cb), NULL);
/* init searching */ GtkTextBuffer *backtrace_buf = gtk_text_view_get_buffer(g_tv_backtrace); diff --git a/src/include/report/crash_data.h b/src/include/report/crash_data.h index 3854118..2dfdb24 100644 --- a/src/include/report/crash_data.h +++ b/src/include/report/crash_data.h @@ -32,8 +32,12 @@ enum { CD_FLAG_TXT = (1 << 1), CD_FLAG_ISEDITABLE = (1 << 2), CD_FLAG_ISNOTEDITABLE = (1 << 3), + CD_FLAG_ONELINE = (1 << 4), };
+#define IS_TXT(flag) ((flag) & CD_FLAG_TXT) +#define IS_ONELINE(flag) ((flag) & CD_FLAG_ONELINE) + struct crash_item { char *content; unsigned flags; diff --git a/src/lib/crash_data.c b/src/lib/crash_data.c index 63b0a7a..7f23c52 100644 --- a/src/lib/crash_data.c +++ b/src/lib/crash_data.c @@ -233,10 +233,21 @@ void load_crash_data_from_dump_dir(crash_data_t *crash_data, struct dump_dir *dd content = dd_load_text(dd, short_name); }
+ int flags = 0; + + if (editable) + flags |= CD_FLAG_TXT | CD_FLAG_ISEDITABLE; + else + flags |= CD_FLAG_TXT | CD_FLAG_ISNOTEDITABLE; + + int oneline = strchr(content, '\n') == NULL; + if (oneline) + flags |= CD_FLAG_ONELINE; + add_to_crash_data_ext(crash_data, short_name, content, - (editable ? CD_FLAG_TXT + CD_FLAG_ISEDITABLE : CD_FLAG_TXT + CD_FLAG_ISNOTEDITABLE) + flags ); free(short_name); free(full_name);
On Wed, 2011-03-09 at 12:32 +0100, Nikola Pajkovsky wrote:
Signed-off-by: Nikola Pajkovsky npajkovs@redhat.com
src/gui-wizard-gtk/wizard.c | 34 ++++++++++++++++++++++++++++++++++ src/include/report/crash_data.h | 4 ++++ src/lib/crash_data.c | 13 ++++++++++++- 3 files changed, 50 insertions(+), 1 deletions(-)
Looks good to me, please commit.
On Wed, 09 Mar 2011 13:03:50 +0100 Denys Vlasenko dvlasenk@redhat.com wrote:
On Wed, 2011-03-09 at 12:32 +0100, Nikola Pajkovsky wrote:
Signed-off-by: Nikola Pajkovsky npajkovs@redhat.com
src/gui-wizard-gtk/wizard.c | 34 ++++++++++++++++++++++++++++++++++ src/include/report/crash_data.h | 4 ++++ src/lib/crash_data.c | 13 ++++++++++++- 3 files changed, 50 insertions(+), 1 deletions(-)
Looks good to me, please commit.
Nice, thanks
crash-catcher@lists.fedorahosted.org