From bb84c46c4f48c4e464ddd437995c23099e766bf9 Mon Sep 17 00:00:00 2001 From: winckel <winckel@eurecom.fr> Date: Mon, 13 Jan 2014 23:06:34 +0000 Subject: [PATCH] Added handling of message read abort when closing windows. git-svn-id: http://svn.eurecom.fr/openair4G/trunk@4862 818b1a75-f10b-46b9-bf7c-635c3b92a50f --- .../itti_analyzer/libui/ui_main_screen.c | 8 +++- .../itti_analyzer/libui/ui_main_screen.h | 2 + .../utils/itti_analyzer/libui/ui_menu_bar.c | 2 +- .../itti_analyzer/libui/ui_notifications.c | 48 ++++++++++++------- .../itti_analyzer/libui/ui_notifications.h | 2 + 5 files changed, 43 insertions(+), 19 deletions(-) diff --git a/common/utils/itti_analyzer/libui/ui_main_screen.c b/common/utils/itti_analyzer/libui/ui_main_screen.c index 137eb75775..31752157e6 100644 --- a/common/utils/itti_analyzer/libui/ui_main_screen.c +++ b/common/utils/itti_analyzer/libui/ui_main_screen.c @@ -164,6 +164,12 @@ void ui_set_title(const char *fmt, ...) gtk_window_set_title (GTK_WINDOW(ui_main_data.window), title); } +void ui_main_window_destroy (void) +{ + ui_progressbar_window_destroy(); + gtk_main_quit(); +} + int ui_gtk_initialize(int argc, char *argv[]) { GtkWidget *vbox; @@ -190,7 +196,7 @@ int ui_gtk_initialize(int argc, char *argv[]) gtk_container_add (GTK_CONTAINER(ui_main_data.window), vbox); /* Assign the destroy event */ - g_signal_connect(ui_main_data.window, "destroy", G_CALLBACK (gtk_main_quit), NULL); + g_signal_connect(ui_main_data.window, "destroy", ui_main_window_destroy, NULL); /* Show the application window */ gtk_widget_show_all (ui_main_data.window); diff --git a/common/utils/itti_analyzer/libui/ui_main_screen.h b/common/utils/itti_analyzer/libui/ui_main_screen.h index 3e2f9b2874..7419e7100f 100644 --- a/common/utils/itti_analyzer/libui/ui_main_screen.h +++ b/common/utils/itti_analyzer/libui/ui_main_screen.h @@ -63,6 +63,8 @@ void ui_gtk_parse_arg(int argc, char *argv[]); void ui_set_title(const char *fmt, ...); +void ui_main_window_destroy (void); + int ui_gtk_initialize(int argc, char *argv[]); void ui_gtk_flush_events(void); diff --git a/common/utils/itti_analyzer/libui/ui_menu_bar.c b/common/utils/itti_analyzer/libui/ui_menu_bar.c index 32b30e11b3..40d3712cb6 100644 --- a/common/utils/itti_analyzer/libui/ui_menu_bar.c +++ b/common/utils/itti_analyzer/libui/ui_menu_bar.c @@ -99,7 +99,7 @@ int ui_menu_bar_create(GtkWidget *vbox) quit = gtk_menu_item_new_with_mnemonic ("_Quit"); gtk_widget_add_accelerator (quit, "activate", accel_group, GDK_KEY_q, GDK_CONTROL_MASK, GTK_ACCEL_VISIBLE); gtk_menu_shell_append (GTK_MENU_SHELL(filters_menu), quit); - g_signal_connect(G_OBJECT(quit), "activate", G_CALLBACK(gtk_main_quit), NULL); + g_signal_connect(G_OBJECT(quit), "activate", ui_main_window_destroy, NULL); } } diff --git a/common/utils/itti_analyzer/libui/ui_notifications.c b/common/utils/itti_analyzer/libui/ui_notifications.c index 3952e6f881..2ae239c427 100644 --- a/common/utils/itti_analyzer/libui/ui_notifications.c +++ b/common/utils/itti_analyzer/libui/ui_notifications.c @@ -31,6 +31,7 @@ static const itti_message_types_t itti_dump_message_type_end = ITTI_DUMP_MESS static gboolean chooser_running; static FILE *messages_file; static uint32_t message_number; +static gboolean ui_abort; int ui_disable_connect_button(void) { @@ -126,6 +127,7 @@ int ui_messages_read(char *file_name) ui_main_data.follow_last = TRUE; /* Initialize the progress bar */ + ui_abort = FALSE; ui_progress_bar_set_fraction (0); do @@ -261,7 +263,7 @@ int ui_messages_read(char *file_name) break; } } - } while (read_data > 0); + } while ((ui_abort == FALSE) && (read_data > 0)); if (read_messages > 0) { @@ -561,28 +563,41 @@ int ui_filters_save_file_chooser(void) return result; } +void ui_progressbar_window_destroy (void) +{ + ui_abort = TRUE; + ui_progress_bar_terminate(); +} + int ui_progress_bar_set_fraction(double fraction) { - /* If not exist instantiate */ - if (!ui_main_data.progressbar && !ui_main_data.progressbar_window) + if (ui_abort == FALSE) { - ui_main_data.progressbar_window = gtk_window_new (GTK_WINDOW_TOPLEVEL); + /* If not exist instantiate */ + if (!ui_main_data.progressbar && !ui_main_data.progressbar_window) + { + ui_main_data.progressbar_window = gtk_window_new (GTK_WINDOW_TOPLEVEL); - /* Set the window at center of window */ - gtk_window_set_position (GTK_WINDOW(ui_main_data.progressbar_window), GTK_WIN_POS_CENTER); - gtk_window_set_title (GTK_WINDOW(ui_main_data.progressbar_window), "Processing"); + /* Set the window at center of window */ + gtk_window_set_position (GTK_WINDOW(ui_main_data.progressbar_window), GTK_WIN_POS_CENTER); + gtk_window_set_title (GTK_WINDOW(ui_main_data.progressbar_window), "Processing"); - gtk_container_set_border_width (GTK_CONTAINER (ui_main_data.progressbar_window), 10); + gtk_container_set_border_width (GTK_CONTAINER (ui_main_data.progressbar_window), 10); - ui_main_data.progressbar = gtk_progress_bar_new (); + ui_main_data.progressbar = gtk_progress_bar_new (); - gtk_container_add (GTK_CONTAINER (ui_main_data.progressbar_window), ui_main_data.progressbar); - gtk_widget_show_all (ui_main_data.progressbar_window); - } + gtk_container_add (GTK_CONTAINER (ui_main_data.progressbar_window), ui_main_data.progressbar); - gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR(ui_main_data.progressbar), fraction); + /* Assign the destroy event */ + g_signal_connect(ui_main_data.progressbar_window, "destroy", ui_progressbar_window_destroy, NULL); -// ui_gtk_flush_events(); + gtk_widget_show_all (ui_main_data.progressbar_window); + } + + gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR(ui_main_data.progressbar), fraction); + +// ui_gtk_flush_events(); + } return RC_OK; } @@ -592,14 +607,13 @@ int ui_progress_bar_terminate(void) if (ui_main_data.progressbar) { gtk_widget_destroy (ui_main_data.progressbar); + ui_main_data.progressbar = NULL; } if (ui_main_data.progressbar_window) { gtk_widget_destroy (ui_main_data.progressbar_window); + ui_main_data.progressbar_window = NULL; } - ui_main_data.progressbar = NULL; - ui_main_data.progressbar_window = NULL; - return RC_OK; } diff --git a/common/utils/itti_analyzer/libui/ui_notifications.h b/common/utils/itti_analyzer/libui/ui_notifications.h index d8fc807bd1..a56c5a68f6 100644 --- a/common/utils/itti_analyzer/libui/ui_notifications.h +++ b/common/utils/itti_analyzer/libui/ui_notifications.h @@ -17,6 +17,8 @@ int ui_filters_open_file_chooser(void); int ui_filters_save_file_chooser(void); +void ui_progressbar_window_destroy(void); + int ui_progress_bar_set_fraction(double fraction); int ui_progress_bar_terminate(void); -- GitLab