summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorDenys Vlasenko <dvlasenk@redhat.com>2011-02-09 17:04:28 +0100
committerDenys Vlasenko <dvlasenk@redhat.com>2011-02-09 17:04:28 +0100
commit7a1dd1fc7d0f37a7605f362b2998964aca689411 (patch)
tree4d7ec80567506ed297a3892e760c4a759babb4e4 /src
parentd3a3f8ccf0f226b0aab8b8aebb70ac4856dc6282 (diff)
downloadabrt-7a1dd1fc7d0f37a7605f362b2998964aca689411.tar.gz
abrt-7a1dd1fc7d0f37a7605f362b2998964aca689411.tar.xz
abrt-7a1dd1fc7d0f37a7605f362b2998964aca689411.zip
abrt-gtk: remove (unimplemented) info pane; clean up code a bit
Signed-off-by: Denys Vlasenko <dvlasenk@redhat.com>
Diffstat (limited to 'src')
-rw-r--r--src/gui-gtk/abrt-gtk.c154
1 files changed, 67 insertions, 87 deletions
diff --git a/src/gui-gtk/abrt-gtk.c b/src/gui-gtk/abrt-gtk.c
index 313b6633..7e10e8fe 100644
--- a/src/gui-gtk/abrt-gtk.c
+++ b/src/gui-gtk/abrt-gtk.c
@@ -3,7 +3,6 @@
#include "abrt-gtk.h"
static GtkListStore *dumps_list_store;
-static GtkTreeIter iter___;
enum
{
@@ -16,30 +15,6 @@ enum
NUM_COLUMNS
};
-/*
-void gtk_tree_model_get_value(GtkTreeModel *tree_model,
- GtkTreeIter *iter,
- gint column,
- GValue *value);
-*/
-
-static void on_row_activated_cb(GtkTreeView *tree_view, GtkTreePath *path, GtkTreeViewColumn *column, gpointer user_data)
-{
- GtkTreeSelection *selection = gtk_tree_view_get_selection(tree_view);
- if (selection)
- {
- GtkTreeIter iter;
- GtkTreeModel *dump_list_store = gtk_tree_view_get_model(tree_view);
- gtk_tree_model_get_iter(dump_list_store, &iter, path);
- GValue d_dir = { 0 };
- if (gtk_tree_selection_get_selected(selection, &dump_list_store, &iter) == TRUE)
- {
- gtk_tree_model_get_value(dump_list_store, &iter, COLUMN_DUMP_DIR, &d_dir);
- g_print("CALL: run_event(%s)\n", g_value_get_string(&d_dir));
- }
- }
-}
-
void add_directory_to_dirlist(const char *dirname)
{
struct dump_dir *dd = dd_opendir(dirname, DD_OPEN_READONLY);
@@ -47,25 +22,59 @@ void add_directory_to_dirlist(const char *dirname)
return;
time_t time = atoi(dd_load_text(dd, FILENAME_TIME));
- struct tm * ptm = localtime(&time);
+ struct tm *ptm = localtime(&time);
char time_buf[60];
- size_t time_len = strftime(time_buf, 59, "%c", ptm);
+ size_t time_len = strftime(time_buf, sizeof(time_buf)-1, "%c", ptm);
time_buf[time_len] = '\0';
- gtk_list_store_append(dumps_list_store, &iter___);
- gtk_list_store_set(dumps_list_store, &iter___,
- COLUMN_REPORTED, "??",
- COLUMN_APPLICATION, dd_load_text(dd, FILENAME_EXECUTABLE),
- COLUMN_HOSTNAME, dd_load_text(dd, FILENAME_HOSTNAME),
+ char *msg = dd_load_text_ext(dd, FILENAME_MESSAGE, 0
+ | DD_LOAD_TEXT_RETURN_NULL_ON_FAILURE
+ | DD_FAIL_QUIETLY
+ );
+ const char *reported = (msg ? "Yes" : "No");
+ free(msg);
+ char *executable = dd_load_text(dd, FILENAME_EXECUTABLE);
+ char *hostname = dd_load_text(dd, FILENAME_HOSTNAME);
+
+ GtkTreeIter iter;
+ gtk_list_store_append(dumps_list_store, &iter);
+ gtk_list_store_set(dumps_list_store, &iter,
+ COLUMN_REPORTED, reported,
+ COLUMN_APPLICATION, executable,
+ COLUMN_HOSTNAME, hostname,
//OPTION: time format
COLUMN_LATEST_CRASH_STR, time_buf,
COLUMN_LATEST_CRASH, (int)time,
COLUMN_DUMP_DIR, dirname,
-1);
+
+ free(hostname);
+ free(executable);
+
dd_close(dd);
VERB1 log("added: %s\n", dirname);
}
+
+/* create_main_window and helpers */
+
+static void on_row_activated_cb(GtkTreeView *tree_view, GtkTreePath *path, GtkTreeViewColumn *column, gpointer user_data)
+{
+ GtkTreeSelection *selection = gtk_tree_view_get_selection(tree_view);
+ if (selection)
+ {
+ GtkTreeIter iter;
+ GtkTreeModel *dump_list_store = gtk_tree_view_get_model(tree_view);
+ gtk_tree_model_get_iter(dump_list_store, &iter, path);
+ GValue d_dir = { 0 };
+ if (gtk_tree_selection_get_selected(selection, &dump_list_store, &iter) == TRUE)
+ {
+ gtk_tree_model_get_value(dump_list_store, &iter, COLUMN_DUMP_DIR, &d_dir);
+ g_print("CALL: run_event(%s)\n", g_value_get_string(&d_dir));
+ }
+ }
+}
+
static void add_columns(GtkTreeView *treeview)
{
GtkCellRenderer *renderer;
@@ -111,74 +120,45 @@ static void add_columns(GtkTreeView *treeview)
NULL);
gtk_tree_view_column_set_sort_column_id(column, COLUMN_LATEST_CRASH);
gtk_tree_view_append_column(treeview, column);
-
}
GtkWidget *create_main_window(void)
{
/* main window */
- GtkWidget *window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
- if (!window)
- die_out_of_memory();
-
- gtk_window_set_default_size(GTK_WINDOW(window), 600, 700);
- gtk_window_set_title(GTK_WINDOW(window), _("Automatic Bug Reporting Tool"));
- gtk_window_set_icon_name(GTK_WINDOW(window), "abrt");
- //quit when user closes the main window
- g_signal_connect(window, "destroy", gtk_main_quit, NULL);
-
- /* main pane
- * holds the textview with dump list and a vbox with bug details
- * and bug details (icon, comment, howto, cmdline, etc ...)
- */
- GtkWidget *main_pane = gtk_vpaned_new();
- GtkWidget *dump_list_sw = gtk_scrolled_window_new(NULL, NULL);
- gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW(dump_list_sw),
- GTK_SHADOW_ETCHED_IN);
- gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(dump_list_sw),
+ GtkWidget *main_window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
+ gtk_window_set_default_size(GTK_WINDOW(main_window), 600, 700);
+ gtk_window_set_title(GTK_WINDOW(main_window), _("Automatic Bug Reporting Tool"));
+ gtk_window_set_icon_name(GTK_WINDOW(main_window), "abrt");
+
+ /* scrolled region inside main window */
+ GtkWidget *scroll_win = gtk_scrolled_window_new(NULL, NULL);
+ gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(scroll_win),
+ GTK_SHADOW_ETCHED_IN);
+ gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scroll_win),
GTK_POLICY_AUTOMATIC,
GTK_POLICY_AUTOMATIC);
- GtkWidget *dump_tv = gtk_tree_view_new();
- add_columns(GTK_TREE_VIEW(dump_tv));
+ gtk_container_add(GTK_CONTAINER(main_window), scroll_win);
+
+ /* tree view inside scrolled region */
+ GtkWidget *treeview = gtk_tree_view_new();
+ add_columns(GTK_TREE_VIEW(treeview));
+ gtk_container_add(GTK_CONTAINER(scroll_win), treeview);
+
+ /* Create data store for the list and attach it */
dumps_list_store = gtk_list_store_new(NUM_COLUMNS, G_TYPE_STRING, /* reported */
G_TYPE_STRING, /* executable */
G_TYPE_STRING, /* hostname */
G_TYPE_STRING, /* time */
G_TYPE_INT, /* unix time - used for sort */
G_TYPE_STRING);/* dump dir path */
- //if (dumps_list_store == NULL)
- // return NULL;
- gtk_tree_view_set_model(GTK_TREE_VIEW(dump_tv), GTK_TREE_MODEL(dumps_list_store));
- g_signal_connect(dump_tv, "row-activated", G_CALLBACK(on_row_activated_cb), NULL);
- gtk_container_add(GTK_CONTAINER(dump_list_sw), dump_tv);
-
- /* dump details */
- GtkWidget *dump_details_sw = gtk_scrolled_window_new(NULL, NULL);
- gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(dump_details_sw),
- GTK_POLICY_NEVER,
- GTK_POLICY_AUTOMATIC);
-
- GtkWidget *details_vbox = gtk_vbox_new(false, 0);
- GtkWidget *icon_name_hbox = gtk_hbox_new(false, 0);
- GtkWidget *details_hbox = gtk_hbox_new(true, 0);
- GtkWidget *package_icon = gtk_image_new_from_stock("gtk-missing-image", GTK_ICON_SIZE_DIALOG);
-
-
- gtk_box_pack_start(GTK_BOX(icon_name_hbox), package_icon, FALSE, TRUE, 0);
- gtk_box_pack_start(GTK_BOX(details_vbox), icon_name_hbox, FALSE, TRUE, 0);
- gtk_box_pack_start(GTK_BOX(details_vbox), details_hbox, FALSE, TRUE, 0);
-
- gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(dump_details_sw), details_vbox);
-
- /* add dump list and dump details to pane */
- gtk_paned_pack1(GTK_PANED(main_pane), dump_list_sw, FALSE, FALSE);
- gtk_paned_pack2(GTK_PANED(main_pane), dump_details_sw, FALSE, FALSE);
-
-
+ gtk_tree_view_set_model(GTK_TREE_VIEW(treeview), GTK_TREE_MODEL(dumps_list_store));
+ /* Double click/Enter handler */
+ g_signal_connect(treeview, "row-activated", G_CALLBACK(on_row_activated_cb), NULL);
+ /* Delete handler */
+ //g_signal_connect(treeview, "??????", G_CALLBACK(on_row_deleted_cb), NULL);
+ /* Quit when user closes the main window */
+ g_signal_connect(main_window, "destroy", gtk_main_quit, NULL);
- GtkWidget *main_vbox = gtk_vbox_new(FALSE, 0);
- gtk_box_pack_start(GTK_BOX(main_vbox), main_pane, TRUE, TRUE, 0);
- gtk_container_add(GTK_CONTAINER(window), main_vbox);
- return window;
+ return main_window;
}