summaryrefslogtreecommitdiffstats
path: root/src/gui-gtk
diff options
context:
space:
mode:
authorJiri Moskovcak <jmoskovc@redhat.com>2011-05-18 16:55:40 +0200
committerJiri Moskovcak <jmoskovc@redhat.com>2011-05-18 16:55:40 +0200
commitbccd10f39589870673ffd09de6bc09d6e00fab72 (patch)
tree43d0f2e39cb62718ff44522ca6ddca389ac84a81 /src/gui-gtk
parent826900355023fcfef39cc91721e681cf558a11f6 (diff)
downloadabrt-bccd10f39589870673ffd09de6bc09d6e00fab72.tar.gz
abrt-bccd10f39589870673ffd09de6bc09d6e00fab72.tar.xz
abrt-bccd10f39589870673ffd09de6bc09d6e00fab72.zip
report C API improvements
Diffstat (limited to 'src/gui-gtk')
-rw-r--r--src/gui-gtk/abrt-gtk.c53
1 files changed, 52 insertions, 1 deletions
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;