From bccd10f39589870673ffd09de6bc09d6e00fab72 Mon Sep 17 00:00:00 2001 From: Jiri Moskovcak Date: Wed, 18 May 2011 16:55:40 +0200 Subject: report C API improvements --- src/gui-gtk/abrt-gtk.c | 53 +++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 52 insertions(+), 1 deletion(-) (limited to 'src/gui-gtk') diff --git a/src/gui-gtk/abrt-gtk.c b/src/gui-gtk/abrt-gtk.c index df94485e..a44ca685 100644 --- a/src/gui-gtk/abrt-gtk.c +++ b/src/gui-gtk/abrt-gtk.c @@ -29,6 +29,7 @@ static const char help_uri[] = "http://docs.fedoraproject.org/en-US/" static GtkListStore *s_dumps_list_store; static GtkWidget *s_treeview; static GtkWidget *g_main_window; +static GtkWidget *s_report_window; enum { @@ -113,7 +114,7 @@ static void on_row_activated_cb(GtkTreeView *treeview, GtkTreePath *path, GtkTre gtk_tree_model_get_value(store, &iter, COLUMN_DUMP_DIR, &d_dir); const char *dirname= g_value_get_string(&d_dir); - analyze_and_report_dir(dirname); + analyze_and_report_dir(dirname, NOWAIT); } } } @@ -184,6 +185,53 @@ static void on_menu_help_cb(GtkMenuItem *menuitem, gpointer unused) gtk_show_uri(NULL, help_uri, GDK_CURRENT_TIME, NULL); } +static void on_button_send_cb(GtkWidget *button, gpointer data) +{ + GtkTextView *tev = GTK_TEXT_VIEW(data); + GtkTextBuffer *buf = gtk_text_view_get_buffer(tev); + GtkTextIter it_start; + GtkTextIter it_end; + gtk_text_buffer_get_start_iter(buf, &it_start); + gtk_text_buffer_get_end_iter(buf, &it_end); + gchar *text = gtk_text_buffer_get_text(buf, + &it_start, + &it_end, + false); + + problem_data_t *pd = new_problem_data(); + + if (strlen(text) > 0) + { + add_to_problem_data(pd, "description", text); + } + + /* why it doesn't want to hide before report ends? */ + gtk_widget_destroy(s_report_window); + + int status = report(pd); + VERB1 log("Reporting finished with status: %i", status); + free_problem_data(pd); +} + +static void on_menu_report_cb(GtkMenuItem *menuitem, gpointer unused) +{ + + s_report_window = gtk_window_new(GTK_WINDOW_TOPLEVEL); + gtk_window_set_title(GTK_WINDOW(s_report_window), _("Problem description")); + gtk_window_set_default_size(GTK_WINDOW(s_report_window), 400, 400); + GtkWidget *vbox = gtk_vbox_new(false, 0); + GtkWidget *button_send = gtk_button_new_with_label(_("Send")); + GtkWidget *tev = gtk_text_view_new(); + g_signal_connect(button_send, "clicked", G_CALLBACK(on_button_send_cb), tev); + + gtk_box_pack_start(GTK_BOX(vbox), tev, true, true, 0); + gtk_box_pack_start(GTK_BOX(vbox), button_send, false, false, 5); + + gtk_container_add(GTK_CONTAINER(s_report_window), vbox); + + gtk_widget_show_all(s_report_window); +} + static void on_menu_about_cb(GtkMenuItem *menuitem, gpointer unused) { static const char copyright_str[] = "Copyright © 2009, 2010, 2011 Red Hat, Inc"; @@ -330,12 +378,15 @@ GtkWidget *create_menu(void) /* help submenu */ GtkWidget *help_submenu = gtk_menu_new(); GtkWidget *online_help_item = gtk_image_menu_item_new_from_stock(GTK_STOCK_HELP, NULL); + GtkWidget *report_problem_item = gtk_menu_item_new_with_label(_("Report problem with ABRT")); GtkWidget *about_item = gtk_image_menu_item_new_from_stock(GTK_STOCK_ABOUT, NULL); gtk_menu_shell_append(GTK_MENU_SHELL(help_submenu), online_help_item); + gtk_menu_shell_append(GTK_MENU_SHELL(help_submenu), report_problem_item); gtk_menu_shell_append(GTK_MENU_SHELL(help_submenu), about_item); gtk_menu_item_set_submenu(GTK_MENU_ITEM(help_item), help_submenu); g_signal_connect(online_help_item, "activate", G_CALLBACK(on_menu_help_cb), NULL); + g_signal_connect(report_problem_item, "activate", G_CALLBACK(on_menu_report_cb), NULL); g_signal_connect(about_item, "activate", G_CALLBACK(on_menu_about_cb), NULL); return menu; -- cgit