From 0241785ad49a3da1eedc3e7976d7be1eadc7c506 Mon Sep 17 00:00:00 2001
From: winckel <winckel@eurecom.fr>
Date: Mon, 13 Jan 2014 23:20:06 +0000
Subject: [PATCH] Moved operation running test to cover also reload operations.

git-svn-id: http://svn.eurecom.fr/openair4G/trunk@4863 818b1a75-f10b-46b9-bf7c-635c3b92a50f
---
 .../utils/itti_analyzer/libui/ui_callbacks.c  |  57 ++--
 .../itti_analyzer/libui/ui_notifications.c    | 257 ++++++++----------
 2 files changed, 155 insertions(+), 159 deletions(-)

diff --git a/common/utils/itti_analyzer/libui/ui_callbacks.c b/common/utils/itti_analyzer/libui/ui_callbacks.c
index 2a8b0703c..4c92ce46c 100644
--- a/common/utils/itti_analyzer/libui/ui_callbacks.c
+++ b/common/utils/itti_analyzer/libui/ui_callbacks.c
@@ -29,8 +29,9 @@
 #include "locate_root.h"
 #include "xml_parse.h"
 
-static gboolean refresh_message_list = TRUE;
-static gboolean filters_changed = FALSE;
+static gboolean refresh_message_list =  TRUE;
+static gboolean filters_changed =       FALSE;
+static gboolean operation_running =     FALSE;
 
 gboolean ui_callback_on_open_messages(GtkWidget *widget, gpointer data)
 {
@@ -38,13 +39,18 @@ gboolean ui_callback_on_open_messages(GtkWidget *widget, gpointer data)
 
     g_message("Open messages event occurred %d", refresh);
 
-    if (refresh && (ui_main_data.messages_file_name != NULL))
+    if (operation_running == FALSE)
     {
-        CHECK_FCT(ui_messages_read (ui_main_data.messages_file_name));
-    }
-    else
-    {
-        CHECK_FCT(ui_messages_open_file_chooser());
+        operation_running = TRUE;
+        if (refresh && (ui_main_data.messages_file_name != NULL))
+        {
+            CHECK_FCT(ui_messages_read (ui_main_data.messages_file_name));
+        }
+        else
+        {
+            CHECK_FCT(ui_messages_open_file_chooser());
+        }
+        operation_running = FALSE;
     }
 
     return TRUE;
@@ -54,7 +60,12 @@ gboolean ui_callback_on_save_messages(GtkWidget *widget, gpointer data)
 {
     g_message("Save messages event occurred");
 
-    CHECK_FCT(ui_messages_save_file_chooser());
+    if (operation_running == FALSE)
+    {
+        operation_running = TRUE;
+        CHECK_FCT(ui_messages_save_file_chooser());
+        operation_running = FALSE;
+    }
 
     return TRUE;
 }
@@ -93,13 +104,19 @@ gboolean ui_callback_on_open_filters(GtkWidget *widget, gpointer data)
 
     g_message("Open filters event occurred");
 
-    if (refresh && (ui_main_data.filters_file_name != NULL))
-    {
-        CHECK_FCT(ui_filters_read (ui_main_data.filters_file_name));
-    }
-    else
+    if (operation_running == FALSE)
     {
-        CHECK_FCT(ui_filters_open_file_chooser());
+        operation_running = TRUE;
+        if (refresh && (ui_main_data.filters_file_name != NULL))
+        {
+
+                CHECK_FCT(ui_filters_read (ui_main_data.filters_file_name));
+        }
+        else
+        {
+            CHECK_FCT(ui_filters_open_file_chooser());
+        }
+        operation_running = FALSE;
     }
 
     return TRUE;
@@ -107,8 +124,14 @@ gboolean ui_callback_on_open_filters(GtkWidget *widget, gpointer data)
 
 gboolean ui_callback_on_save_filters(GtkWidget *widget, gpointer data)
 {
-    g_message("Save filters event occurred");
-    CHECK_FCT(ui_filters_save_file_chooser());
+    if (operation_running == FALSE)
+    {
+        operation_running = TRUE;
+        g_message("Save filters event occurred");
+        CHECK_FCT(ui_filters_save_file_chooser());
+        operation_running = FALSE;
+    }
+
     return TRUE;
 }
 
diff --git a/common/utils/itti_analyzer/libui/ui_notifications.c b/common/utils/itti_analyzer/libui/ui_notifications.c
index 2ae239c42..dae665407 100644
--- a/common/utils/itti_analyzer/libui/ui_notifications.c
+++ b/common/utils/itti_analyzer/libui/ui_notifications.c
@@ -28,7 +28,6 @@
 static const itti_message_types_t itti_dump_xml_definition_end =  ITTI_DUMP_XML_DEFINITION_END;
 static const itti_message_types_t itti_dump_message_type_end =    ITTI_DUMP_MESSAGE_TYPE_END;
 
-static gboolean chooser_running;
 static FILE *messages_file;
 static uint32_t message_number;
 static gboolean ui_abort;
@@ -357,45 +356,40 @@ int ui_messages_open_file_chooser(void)
 {
     int result = RC_OK;
 
-    if (chooser_running == FALSE)
-    {
-        GtkWidget *filechooser;
-        gboolean accept;
-        char *filename;
+    GtkWidget *filechooser;
+    gboolean accept;
+    char *filename;
 
-        chooser_running = TRUE;
-        filechooser = gtk_file_chooser_dialog_new ("Select file", GTK_WINDOW (ui_main_data.window),
-                                                   GTK_FILE_CHOOSER_ACTION_OPEN, GTK_STOCK_CANCEL, GTK_RESPONSE_REJECT,
-                                                   GTK_STOCK_OK, GTK_RESPONSE_ACCEPT, NULL);
-        gtk_filter_add (filechooser, "Log files", "*.log");
-        gtk_filter_add (filechooser, "All files", "*");
+    filechooser = gtk_file_chooser_dialog_new ("Select file", GTK_WINDOW (ui_main_data.window),
+                                               GTK_FILE_CHOOSER_ACTION_OPEN, GTK_STOCK_CANCEL, GTK_RESPONSE_REJECT,
+                                               GTK_STOCK_OK, GTK_RESPONSE_ACCEPT, NULL);
+    gtk_filter_add (filechooser, "Log files", "*.log");
+    gtk_filter_add (filechooser, "All files", "*");
 
-        /* Process the response */
-        accept = gtk_dialog_run (GTK_DIALOG (filechooser)) == GTK_RESPONSE_ACCEPT;
+    /* Process the response */
+    accept = gtk_dialog_run (GTK_DIALOG (filechooser)) == GTK_RESPONSE_ACCEPT;
 
-        if (accept)
-        {
-            filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (filechooser));
-        }
-        gtk_widget_destroy (filechooser);
-        if (accept)
+    if (accept)
+    {
+        filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (filechooser));
+    }
+    gtk_widget_destroy (filechooser);
+    if (accept)
+    {
+        result = ui_messages_read (filename);
+        if (result == RC_OK)
         {
-            result = ui_messages_read (filename);
-            if (result == RC_OK)
-            {
-                /* Update messages file name for future use */
-                if (ui_main_data.messages_file_name != NULL)
-                {
-                    g_free (ui_main_data.messages_file_name);
-                }
-                ui_main_data.messages_file_name = filename;
-            }
-            else
+            /* Update messages file name for future use */
+            if (ui_main_data.messages_file_name != NULL)
             {
-                g_free (filename);
+                g_free (ui_main_data.messages_file_name);
             }
+            ui_main_data.messages_file_name = filename;
+        }
+        else
+        {
+            g_free (filename);
         }
-        chooser_running = FALSE;
     }
     return result;
 }
@@ -403,57 +397,50 @@ int ui_messages_open_file_chooser(void)
 int ui_messages_save_file_chooser(void)
 {
     int result = RC_OK;
+    GtkWidget *filechooser;
 
-    if (chooser_running == FALSE)
+    /* Check if there is something to save */
+    if (xml_raw_data_size > 0)
     {
-        GtkWidget *filechooser;
+        filechooser = gtk_file_chooser_dialog_new ("Save file", GTK_WINDOW (ui_main_data.window),
+                                                   GTK_FILE_CHOOSER_ACTION_SAVE, GTK_STOCK_CANCEL,
+                                                   GTK_RESPONSE_CANCEL, GTK_STOCK_OK, GTK_RESPONSE_ACCEPT, NULL);
+        gtk_filter_add (filechooser, "Log files", "*.log");
+        gtk_filter_add (filechooser, "All files", "*");
 
-        chooser_running = TRUE;
+        gtk_file_chooser_set_do_overwrite_confirmation (GTK_FILE_CHOOSER (filechooser), TRUE);
 
-        /* Check if there is something to save */
-        if (xml_raw_data_size > 0)
+        if (ui_main_data.messages_file_name != NULL)
+        {
+            gtk_file_chooser_set_filename (GTK_FILE_CHOOSER (filechooser), ui_main_data.messages_file_name);
+        }
+        else
         {
-            filechooser = gtk_file_chooser_dialog_new ("Save file", GTK_WINDOW (ui_main_data.window),
-                                                       GTK_FILE_CHOOSER_ACTION_SAVE, GTK_STOCK_CANCEL,
-                                                       GTK_RESPONSE_CANCEL, GTK_STOCK_OK, GTK_RESPONSE_ACCEPT, NULL);
-            gtk_filter_add (filechooser, "Log files", "*.log");
-            gtk_filter_add (filechooser, "All files", "*");
+            gtk_file_chooser_set_current_name (GTK_FILE_CHOOSER (filechooser), "messages.log");
+        }
 
-            gtk_file_chooser_set_do_overwrite_confirmation (GTK_FILE_CHOOSER (filechooser), TRUE);
+        /* Process the response */
+        if (gtk_dialog_run (GTK_DIALOG (filechooser)) == GTK_RESPONSE_ACCEPT)
+        {
+            char *filename;
 
-            if (ui_main_data.messages_file_name != NULL)
+            filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (filechooser));
+            result = ui_messages_file_write (filename);
+            if (result == RC_OK)
             {
-                gtk_file_chooser_set_filename (GTK_FILE_CHOOSER (filechooser), ui_main_data.messages_file_name);
+                /* Update filters file name for future use */
+                if (ui_main_data.messages_file_name != NULL)
+                {
+                    g_free (ui_main_data.messages_file_name);
+                }
+                ui_main_data.messages_file_name = filename;
             }
             else
             {
-                gtk_file_chooser_set_current_name (GTK_FILE_CHOOSER (filechooser), "messages.log");
-            }
-
-            /* Process the response */
-            if (gtk_dialog_run (GTK_DIALOG (filechooser)) == GTK_RESPONSE_ACCEPT)
-            {
-                char *filename;
-
-                filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (filechooser));
-                result = ui_messages_file_write (filename);
-                if (result == RC_OK)
-                {
-                    /* Update filters file name for future use */
-                    if (ui_main_data.messages_file_name != NULL)
-                    {
-                        g_free (ui_main_data.messages_file_name);
-                    }
-                    ui_main_data.messages_file_name = filename;
-                }
-                else
-                {
-                    g_free (filename);
-                }
+                g_free (filename);
             }
-            gtk_widget_destroy (filechooser);
         }
-        chooser_running = FALSE;
+        gtk_widget_destroy (filechooser);
     }
 
     return result;
@@ -462,47 +449,40 @@ int ui_messages_save_file_chooser(void)
 int ui_filters_open_file_chooser(void)
 {
     int result = RC_OK;
+    GtkWidget *filechooser;
+    gboolean accept;
+    char *filename;
 
-    if (chooser_running == FALSE)
-    {
-        GtkWidget *filechooser;
-        gboolean accept;
-        char *filename;
-
-        chooser_running = TRUE;
+    filechooser = gtk_file_chooser_dialog_new ("Select file", GTK_WINDOW (ui_main_data.window),
+                                               GTK_FILE_CHOOSER_ACTION_OPEN, GTK_STOCK_CANCEL, GTK_RESPONSE_REJECT,
+                                               GTK_STOCK_OK, GTK_RESPONSE_ACCEPT, NULL);
+    gtk_filter_add (filechooser, "Filters files", "*.xml");
+    gtk_filter_add (filechooser, "All files", "*");
 
-        filechooser = gtk_file_chooser_dialog_new ("Select file", GTK_WINDOW (ui_main_data.window),
-                                                   GTK_FILE_CHOOSER_ACTION_OPEN, GTK_STOCK_CANCEL, GTK_RESPONSE_REJECT,
-                                                   GTK_STOCK_OK, GTK_RESPONSE_ACCEPT, NULL);
-        gtk_filter_add (filechooser, "Filters files", "*.xml");
-        gtk_filter_add (filechooser, "All files", "*");
-
-        /* Process the response */
-        accept = gtk_dialog_run (GTK_DIALOG (filechooser)) == GTK_RESPONSE_ACCEPT;
+    /* Process the response */
+    accept = gtk_dialog_run (GTK_DIALOG (filechooser)) == GTK_RESPONSE_ACCEPT;
 
-        if (accept)
-        {
-            filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (filechooser));
-        }
-        gtk_widget_destroy (filechooser);
-        if (accept)
+    if (accept)
+    {
+        filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (filechooser));
+    }
+    gtk_widget_destroy (filechooser);
+    if (accept)
+    {
+        result = ui_filters_read (filename);
+        if (result == RC_OK)
         {
-            result = ui_filters_read (filename);
-            if (result == RC_OK)
+            /* Update filters file name for future use */
+            if (ui_main_data.filters_file_name != NULL)
             {
-                /* Update filters file name for future use */
-                if (ui_main_data.filters_file_name != NULL)
-                {
-                    g_free (ui_main_data.filters_file_name);
-                }
-                ui_main_data.filters_file_name = filename;
-            }
-            else
-            {
-                g_free (filename);
+                g_free (ui_main_data.filters_file_name);
             }
+            ui_main_data.filters_file_name = filename;
+        }
+        else
+        {
+            g_free (filename);
         }
-        chooser_running = FALSE;
     }
 
     return result;
@@ -511,54 +491,47 @@ int ui_filters_open_file_chooser(void)
 int ui_filters_save_file_chooser(void)
 {
     int result = RC_OK;
+    GtkWidget *filechooser;
 
-    if (chooser_running == FALSE)
-    {
-        GtkWidget *filechooser;
+    filechooser = gtk_file_chooser_dialog_new ("Save file", GTK_WINDOW (ui_main_data.window),
+                                               GTK_FILE_CHOOSER_ACTION_SAVE, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
+                                               GTK_STOCK_OK, GTK_RESPONSE_ACCEPT, NULL);
+    gtk_filter_add (filechooser, "Filters files", "*.xml");
+    gtk_filter_add (filechooser, "All files", "*");
 
-        chooser_running = TRUE;
+    gtk_file_chooser_set_do_overwrite_confirmation (GTK_FILE_CHOOSER (filechooser), TRUE);
 
-        filechooser = gtk_file_chooser_dialog_new ("Save file", GTK_WINDOW (ui_main_data.window),
-                                                   GTK_FILE_CHOOSER_ACTION_SAVE, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
-                                                   GTK_STOCK_OK, GTK_RESPONSE_ACCEPT, NULL);
-        gtk_filter_add (filechooser, "Filters files", "*.xml");
-        gtk_filter_add (filechooser, "All files", "*");
+    if (ui_main_data.filters_file_name != NULL)
+    {
+        gtk_file_chooser_set_filename (GTK_FILE_CHOOSER (filechooser), ui_main_data.filters_file_name);
+    }
+    else
+    {
+        gtk_file_chooser_set_current_name (GTK_FILE_CHOOSER (filechooser), "filters.xml");
+    }
 
-        gtk_file_chooser_set_do_overwrite_confirmation (GTK_FILE_CHOOSER (filechooser), TRUE);
+    /* Process the response */
+    if (gtk_dialog_run (GTK_DIALOG (filechooser)) == GTK_RESPONSE_ACCEPT)
+    {
+        char *filename;
 
-        if (ui_main_data.filters_file_name != NULL)
+        filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (filechooser));
+        result = ui_filters_file_write (filename);
+        if (result == RC_OK)
         {
-            gtk_file_chooser_set_filename (GTK_FILE_CHOOSER (filechooser), ui_main_data.filters_file_name);
+            /* Update filters file name for future use */
+            if (ui_main_data.filters_file_name != NULL)
+            {
+                g_free (ui_main_data.filters_file_name);
+            }
+            ui_main_data.filters_file_name = filename;
         }
         else
         {
-            gtk_file_chooser_set_current_name (GTK_FILE_CHOOSER (filechooser), "filters.xml");
-        }
-
-        /* Process the response */
-        if (gtk_dialog_run (GTK_DIALOG (filechooser)) == GTK_RESPONSE_ACCEPT)
-        {
-            char *filename;
-
-            filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (filechooser));
-            result = ui_filters_file_write (filename);
-            if (result == RC_OK)
-            {
-                /* Update filters file name for future use */
-                if (ui_main_data.filters_file_name != NULL)
-                {
-                    g_free (ui_main_data.filters_file_name);
-                }
-                ui_main_data.filters_file_name = filename;
-            }
-            else
-            {
-                g_free (filename);
-            }
+            g_free (filename);
         }
-        gtk_widget_destroy (filechooser);
-        chooser_running = FALSE;
     }
+    gtk_widget_destroy (filechooser);
 
     return result;
 }
-- 
GitLab