Added foreground messages color selector.
git-svn-id: http://svn.eurecom.fr/openair4G/trunk@4494 818b1a75-f10b-46b9-bf7c-635c3b92a50f
This commit is contained in:
@@ -707,7 +707,7 @@ static int update_filters() {
|
|||||||
{
|
{
|
||||||
if (strcmp (types->name, "MESSAGES_ID_MAX") != 0)
|
if (strcmp (types->name, "MESSAGES_ID_MAX") != 0)
|
||||||
{
|
{
|
||||||
ui_filters_add (FILTER_MESSAGES, types->init_value, types->name, ENTRY_ENABLED_UNDEFINED, NULL);
|
ui_filters_add (FILTER_MESSAGES, types->init_value, types->name, ENTRY_ENABLED_UNDEFINED, NULL, NULL);
|
||||||
}
|
}
|
||||||
types = types->next;
|
types = types->next;
|
||||||
}
|
}
|
||||||
@@ -721,7 +721,7 @@ static int update_filters() {
|
|||||||
while (types != NULL) {
|
while (types != NULL) {
|
||||||
if ((strcmp (types->name, "TASK_FIRST") != 0) && (strcmp (types->name, "TASK_MAX") != 0))
|
if ((strcmp (types->name, "TASK_FIRST") != 0) && (strcmp (types->name, "TASK_MAX") != 0))
|
||||||
{
|
{
|
||||||
ui_filters_add(FILTER_ORIGIN_TASKS, types->init_value, types->name, ENTRY_ENABLED_UNDEFINED, NULL);
|
ui_filters_add(FILTER_ORIGIN_TASKS, types->init_value, types->name, ENTRY_ENABLED_UNDEFINED, NULL, NULL);
|
||||||
}
|
}
|
||||||
types = types->next;
|
types = types->next;
|
||||||
}
|
}
|
||||||
@@ -735,7 +735,7 @@ static int update_filters() {
|
|||||||
while (types != NULL) {
|
while (types != NULL) {
|
||||||
if ((strcmp (types->name, "TASK_FIRST") != 0) && (strcmp (types->name, "TASK_MAX") != 0))
|
if ((strcmp (types->name, "TASK_FIRST") != 0) && (strcmp (types->name, "TASK_MAX") != 0))
|
||||||
{
|
{
|
||||||
ui_filters_add(FILTER_DESTINATION_TASKS, types->init_value, types->name, ENTRY_ENABLED_UNDEFINED, NULL);
|
ui_filters_add(FILTER_DESTINATION_TASKS, types->init_value, types->name, ENTRY_ENABLED_UNDEFINED, NULL, NULL);
|
||||||
}
|
}
|
||||||
types = types->next;
|
types = types->next;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -86,7 +86,8 @@ gboolean ui_callback_on_filters_enabled (GtkToolButton *button, gpointer data)
|
|||||||
if (path_row != NULL)
|
if (path_row != NULL)
|
||||||
{
|
{
|
||||||
/* Center the message in the middle of the list if possible */
|
/* Center the message in the middle of the list if possible */
|
||||||
gtk_tree_view_scroll_to_cell(GTK_TREE_VIEW(ui_main_data.messages_list), path_row, NULL, TRUE, 0.5, 0.0);
|
gtk_tree_view_scroll_to_cell (GTK_TREE_VIEW(ui_main_data.messages_list), path_row, NULL, TRUE, 0.5,
|
||||||
|
0.0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -147,8 +148,7 @@ gboolean ui_callback_on_select_signal (GtkTreeSelection *selection, GtkTreeModel
|
|||||||
ui_text_view_t *text_view;
|
ui_text_view_t *text_view;
|
||||||
GtkTreeIter iter;
|
GtkTreeIter iter;
|
||||||
|
|
||||||
g_debug("Message selected %d %p %p %s", path_currently_selected, buffer_current, path,
|
g_debug("Message selected %d %p %p %s", path_currently_selected, buffer_current, path, gtk_tree_path_to_string(path));
|
||||||
gtk_tree_path_to_string(path));
|
|
||||||
|
|
||||||
if (!path_currently_selected)
|
if (!path_currently_selected)
|
||||||
{
|
{
|
||||||
@@ -173,8 +173,7 @@ gboolean ui_callback_on_select_signal (GtkTreeSelection *selection, GtkTreeModel
|
|||||||
|
|
||||||
if (ui_tree_view_last_event)
|
if (ui_tree_view_last_event)
|
||||||
{
|
{
|
||||||
g_debug("last_event %p %d %d", ui_tree_view_last_event, ui_tree_view_last_event->type,
|
g_debug("last_event %p %d %d", ui_tree_view_last_event, ui_tree_view_last_event->type, ui_tree_view_last_event->button);
|
||||||
ui_tree_view_last_event->button);
|
|
||||||
|
|
||||||
if (ui_tree_view_last_event->type == GDK_BUTTON_PRESS)
|
if (ui_tree_view_last_event->type == GDK_BUTTON_PRESS)
|
||||||
{
|
{
|
||||||
@@ -194,8 +193,7 @@ gboolean ui_callback_on_select_signal (GtkTreeSelection *selection, GtkTreeModel
|
|||||||
ui_create_filter_menus ();
|
ui_create_filter_menus ();
|
||||||
}
|
}
|
||||||
|
|
||||||
g_debug("Message selected right click %d %d %d %d", message_id, origin_task_id,
|
g_debug("Message selected right click %d %d %d %d", message_id, origin_task_id, destination_task_id, instance);
|
||||||
destination_task_id, instance);
|
|
||||||
|
|
||||||
/* Message Id menu */
|
/* Message Id menu */
|
||||||
{
|
{
|
||||||
@@ -225,8 +223,8 @@ gboolean ui_callback_on_select_signal (GtkTreeSelection *selection, GtkTreeModel
|
|||||||
ui_filters.origin_tasks.items[item].enabled);
|
ui_filters.origin_tasks.items[item].enabled);
|
||||||
/* Set menu item label */
|
/* Set menu item label */
|
||||||
sprintf (label, "From: %s", task_id_to_string (origin_task_id, origin_task_id_type));
|
sprintf (label, "From: %s", task_id_to_string (origin_task_id, origin_task_id_type));
|
||||||
gtk_menu_item_set_label(GTK_MENU_ITEM(ui_tree_view_menu_enable[MENU_FROM_TASK].menu_enable),
|
gtk_menu_item_set_label (
|
||||||
label);
|
GTK_MENU_ITEM(ui_tree_view_menu_enable[MENU_FROM_TASK].menu_enable), label);
|
||||||
/* Save menu item associated to this row */
|
/* Save menu item associated to this row */
|
||||||
ui_tree_view_menu_enable[MENU_FROM_TASK].filter_item = &ui_filters.origin_tasks.items[item];
|
ui_tree_view_menu_enable[MENU_FROM_TASK].filter_item = &ui_filters.origin_tasks.items[item];
|
||||||
}
|
}
|
||||||
@@ -241,7 +239,8 @@ gboolean ui_callback_on_select_signal (GtkTreeSelection *selection, GtkTreeModel
|
|||||||
GTK_CHECK_MENU_ITEM(ui_tree_view_menu_enable[MENU_TO_TASK].menu_enable),
|
GTK_CHECK_MENU_ITEM(ui_tree_view_menu_enable[MENU_TO_TASK].menu_enable),
|
||||||
ui_filters.destination_tasks.items[item].enabled);
|
ui_filters.destination_tasks.items[item].enabled);
|
||||||
/* Set menu item label */
|
/* Set menu item label */
|
||||||
sprintf(label, "To: %s", task_id_to_string(destination_task_id, destination_task_id_type));
|
sprintf (label, "To: %s",
|
||||||
|
task_id_to_string (destination_task_id, destination_task_id_type));
|
||||||
gtk_menu_item_set_label (GTK_MENU_ITEM(ui_tree_view_menu_enable[MENU_TO_TASK].menu_enable),
|
gtk_menu_item_set_label (GTK_MENU_ITEM(ui_tree_view_menu_enable[MENU_TO_TASK].menu_enable),
|
||||||
label);
|
label);
|
||||||
/* Save menu item associated to this row */
|
/* Save menu item associated to this row */
|
||||||
@@ -307,8 +306,7 @@ gboolean ui_callback_on_select_signal (GtkTreeSelection *selection, GtkTreeModel
|
|||||||
data = (gchar *) buffer_at_offset ((buffer_t*) buffer, message_header_type_size);
|
data = (gchar *) buffer_at_offset ((buffer_t*) buffer, message_header_type_size);
|
||||||
data_size = get_message_size ((buffer_t*) buffer);
|
data_size = get_message_size ((buffer_t*) buffer);
|
||||||
|
|
||||||
g_debug(" message header type size: %u, data size: %u %p %d", message_header_type_size,
|
g_debug(" message header type size: %u, data size: %u %p %d", message_header_type_size, data_size, buffer, ui_main_data.follow_last);
|
||||||
data_size, buffer, ui_main_data.follow_last);
|
|
||||||
|
|
||||||
ui_signal_set_text (text_view, data, data_size);
|
ui_signal_set_text (text_view, data, data_size);
|
||||||
}
|
}
|
||||||
@@ -341,7 +339,7 @@ gboolean ui_callback_on_menu_enable (GtkWidget *widget, gpointer data)
|
|||||||
|
|
||||||
gboolean ui_callback_on_menu_color(GtkWidget *widget, gpointer data)
|
gboolean ui_callback_on_menu_color(GtkWidget *widget, gpointer data)
|
||||||
{
|
{
|
||||||
ui_tree_view_menu_enable_t *menu_enable = data;
|
ui_tree_view_menu_color_t *menu_color = data;
|
||||||
|
|
||||||
GdkRGBA color;
|
GdkRGBA color;
|
||||||
GtkWidget *color_chooser;
|
GtkWidget *color_chooser;
|
||||||
@@ -354,17 +352,24 @@ gboolean ui_callback_on_menu_color (GtkWidget *widget, gpointer data)
|
|||||||
if (response == GTK_RESPONSE_OK)
|
if (response == GTK_RESPONSE_OK)
|
||||||
{
|
{
|
||||||
int red, green, blue;
|
int red, green, blue;
|
||||||
|
char *color_string;
|
||||||
|
|
||||||
|
color_string =
|
||||||
|
menu_color->foreground ?
|
||||||
|
menu_color->menu_enable->filter_item->foreground :
|
||||||
|
menu_color->menu_enable->filter_item->background;
|
||||||
|
|
||||||
gtk_color_chooser_get_rgba (GTK_COLOR_CHOOSER(color_chooser), &color);
|
gtk_color_chooser_get_rgba (GTK_COLOR_CHOOSER(color_chooser), &color);
|
||||||
|
|
||||||
red = (int) (color.red * 255);
|
red = (int) (color.red * 255);
|
||||||
green = (int) (color.green * 255);
|
green = (int) (color.green * 255);
|
||||||
blue = (int) (color.blue * 255);
|
blue = (int) (color.blue * 255);
|
||||||
g_debug("Selected color for %s %f->%02x %f->%02x %f->%02x", menu_enable->filter_item->name, color.red, red,
|
|
||||||
color.green, green, color.blue, blue);
|
|
||||||
|
|
||||||
snprintf(menu_enable->filter_item->background, BACKGROUND_SIZE, "#%02x%02x%02x", red, green, blue);
|
snprintf (color_string, COLOR_SIZE, "#%02x%02x%02x", red, green, blue);
|
||||||
ui_tree_view_refilter ();
|
ui_tree_view_refilter ();
|
||||||
|
|
||||||
|
g_message("Selected color for %s %f->%02x %f->%02x %f->%02x %s",
|
||||||
|
menu_color->menu_enable->filter_item->name, color.red, red, color.green, green, color.blue, blue, color_string);
|
||||||
}
|
}
|
||||||
gtk_widget_destroy (color_chooser);
|
gtk_widget_destroy (color_chooser);
|
||||||
|
|
||||||
@@ -442,7 +447,8 @@ static gboolean ui_handle_socket_connection_failed (gint fd)
|
|||||||
GtkWidget *dialogbox;
|
GtkWidget *dialogbox;
|
||||||
|
|
||||||
dialogbox = gtk_message_dialog_new (GTK_WINDOW(ui_main_data.window), GTK_DIALOG_DESTROY_WITH_PARENT,
|
dialogbox = gtk_message_dialog_new (GTK_WINDOW(ui_main_data.window), GTK_DIALOG_DESTROY_WITH_PARENT,
|
||||||
GTK_MESSAGE_ERROR, GTK_BUTTONS_CLOSE, "Failed to connect to provided host/ip address");
|
GTK_MESSAGE_ERROR, GTK_BUTTONS_CLOSE,
|
||||||
|
"Failed to connect to provided host/ip address");
|
||||||
|
|
||||||
gtk_dialog_run (GTK_DIALOG(dialogbox));
|
gtk_dialog_run (GTK_DIALOG(dialogbox));
|
||||||
gtk_widget_destroy (dialogbox);
|
gtk_widget_destroy (dialogbox);
|
||||||
@@ -457,7 +463,8 @@ static gboolean ui_handle_socket_connection_lost (gint fd)
|
|||||||
GtkWidget *dialogbox;
|
GtkWidget *dialogbox;
|
||||||
|
|
||||||
dialogbox = gtk_message_dialog_new (GTK_WINDOW(ui_main_data.window), GTK_DIALOG_DESTROY_WITH_PARENT,
|
dialogbox = gtk_message_dialog_new (GTK_WINDOW(ui_main_data.window), GTK_DIALOG_DESTROY_WITH_PARENT,
|
||||||
GTK_MESSAGE_ERROR, GTK_BUTTONS_CLOSE, "Connection with remote host has been lost");
|
GTK_MESSAGE_ERROR, GTK_BUTTONS_CLOSE,
|
||||||
|
"Connection with remote host has been lost");
|
||||||
|
|
||||||
gtk_dialog_run (GTK_DIALOG(dialogbox));
|
gtk_dialog_run (GTK_DIALOG(dialogbox));
|
||||||
gtk_widget_destroy (dialogbox);
|
gtk_widget_destroy (dialogbox);
|
||||||
@@ -707,8 +714,7 @@ gboolean ui_callback_on_menu_item_selected (GtkWidget *widget, gpointer data)
|
|||||||
filters_changed = TRUE;
|
filters_changed = TRUE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
g_debug("ui_callback_on_menu_item_selected occurred %p %p %s %d (%d messages to display)", widget, data,
|
g_debug("ui_callback_on_menu_item_selected occurred %p %p %s %d (%d messages to display)", widget, data, filter_entry->name, enabled, ui_tree_view_get_filtered_number());
|
||||||
filter_entry->name, enabled, ui_tree_view_get_filtered_number());
|
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -14,7 +14,13 @@
|
|||||||
|
|
||||||
const uint32_t FILTER_ALLOC_NUMBER = 100;
|
const uint32_t FILTER_ALLOC_NUMBER = 100;
|
||||||
const uint32_t FILTER_ID_UNDEFINED = ~0;
|
const uint32_t FILTER_ID_UNDEFINED = ~0;
|
||||||
|
|
||||||
const char * const COLOR_WHITE = "#ffffff";
|
const char * const COLOR_WHITE = "#ffffff";
|
||||||
|
const char * const COLOR_DARK_GREY = "#585858";
|
||||||
|
|
||||||
|
#define ENABLED_NAME "enabled"
|
||||||
|
#define FOREGROUND_NAME "foreground_color"
|
||||||
|
#define BACKGROUND_NAME "background_color"
|
||||||
|
|
||||||
ui_filters_t ui_filters;
|
ui_filters_t ui_filters;
|
||||||
|
|
||||||
@@ -127,7 +133,7 @@ static void ui_filter_set_enabled(uint8_t *enabled, ui_entry_enabled_e entry_ena
|
|||||||
}
|
}
|
||||||
|
|
||||||
static int ui_filter_add(ui_filter_t *filter, uint32_t value, const char *name, ui_entry_enabled_e entry_enabled,
|
static int ui_filter_add(ui_filter_t *filter, uint32_t value, const char *name, ui_entry_enabled_e entry_enabled,
|
||||||
const char *background)
|
const char *foreground, const char *background)
|
||||||
{
|
{
|
||||||
int item = ui_filters_search_name (filter, name);
|
int item = ui_filters_search_name (filter, name);
|
||||||
|
|
||||||
@@ -147,16 +153,21 @@ static int ui_filter_add(ui_filter_t *filter, uint32_t value, const char *name,
|
|||||||
/* New entry */
|
/* New entry */
|
||||||
strncpy (filter->items[item].name, name, SIGNAL_NAME_LENGTH);
|
strncpy (filter->items[item].name, name, SIGNAL_NAME_LENGTH);
|
||||||
ui_filter_set_enabled (&filter->items[item].enabled, entry_enabled, TRUE);
|
ui_filter_set_enabled (&filter->items[item].enabled, entry_enabled, TRUE);
|
||||||
strncpy (filter->items[item].background, background != NULL ? background : COLOR_WHITE, BACKGROUND_SIZE);
|
strncpy (filter->items[item].foreground, foreground != NULL ? foreground : COLOR_DARK_GREY, COLOR_SIZE);
|
||||||
|
strncpy (filter->items[item].background, background != NULL ? background : COLOR_WHITE, COLOR_SIZE);
|
||||||
|
|
||||||
filter->used++;
|
filter->used++;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
ui_filter_set_enabled (&filter->items[item].enabled, entry_enabled, FALSE);
|
ui_filter_set_enabled (&filter->items[item].enabled, entry_enabled, FALSE);
|
||||||
|
if (foreground != NULL)
|
||||||
|
{
|
||||||
|
strncpy (filter->items[item].foreground, foreground, COLOR_SIZE);
|
||||||
|
}
|
||||||
if (background != NULL)
|
if (background != NULL)
|
||||||
{
|
{
|
||||||
strncpy (filter->items[item].background, background, BACKGROUND_SIZE);
|
strncpy (filter->items[item].background, background, COLOR_SIZE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -166,24 +177,24 @@ static int ui_filter_add(ui_filter_t *filter, uint32_t value, const char *name,
|
|||||||
}
|
}
|
||||||
|
|
||||||
void ui_filters_add(ui_filter_e filter, uint32_t value, const char *name, ui_entry_enabled_e entry_enabled,
|
void ui_filters_add(ui_filter_e filter, uint32_t value, const char *name, ui_entry_enabled_e entry_enabled,
|
||||||
const char *background)
|
const char *foreground, const char *background)
|
||||||
{
|
{
|
||||||
switch (filter)
|
switch (filter)
|
||||||
{
|
{
|
||||||
case FILTER_MESSAGES:
|
case FILTER_MESSAGES:
|
||||||
ui_filter_add (&ui_filters.messages, value, name, entry_enabled, background);
|
ui_filter_add (&ui_filters.messages, value, name, entry_enabled, foreground, background);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case FILTER_ORIGIN_TASKS:
|
case FILTER_ORIGIN_TASKS:
|
||||||
ui_filter_add (&ui_filters.origin_tasks, value, name, entry_enabled, background);
|
ui_filter_add (&ui_filters.origin_tasks, value, name, entry_enabled, foreground, background);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case FILTER_DESTINATION_TASKS:
|
case FILTER_DESTINATION_TASKS:
|
||||||
ui_filter_add (&ui_filters.destination_tasks, value, name, entry_enabled, background);
|
ui_filter_add (&ui_filters.destination_tasks, value, name, entry_enabled, foreground, background);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case FILTER_INSTANCES:
|
case FILTER_INSTANCES:
|
||||||
ui_filter_add (&ui_filters.instances, value, name, entry_enabled, background);
|
ui_filter_add (&ui_filters.instances, value, name, entry_enabled, foreground, background);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
@@ -291,21 +302,32 @@ static int xml_parse_filters(xmlDocPtr doc)
|
|||||||
|
|
||||||
if (cur_node != NULL)
|
if (cur_node != NULL)
|
||||||
{
|
{
|
||||||
|
xmlAttr *prop_node;
|
||||||
|
ui_entry_enabled_e enabled = ENTRY_ENABLED_UNDEFINED;
|
||||||
|
char *foreground = NULL;
|
||||||
char *background = NULL;
|
char *background = NULL;
|
||||||
|
|
||||||
if (cur_node->properties->next != NULL)
|
for (prop_node = cur_node->properties; prop_node != NULL; prop_node = prop_node->next)
|
||||||
{
|
{
|
||||||
background = (char *) cur_node->properties->next->children->content;
|
if (strcmp ((char *) prop_node->name, ENABLED_NAME) == 0)
|
||||||
|
{
|
||||||
|
enabled =
|
||||||
|
prop_node->children->content[0] == '0' ?
|
||||||
|
ENTRY_ENABLED_FALSE : ENTRY_ENABLED_TRUE;
|
||||||
|
}
|
||||||
|
if (strcmp ((char *) prop_node->name, FOREGROUND_NAME) == 0)
|
||||||
|
{
|
||||||
|
foreground = (char *) prop_node->children->content;
|
||||||
|
}
|
||||||
|
if (strcmp ((char *) prop_node->name, BACKGROUND_NAME) == 0)
|
||||||
|
{
|
||||||
|
background = (char *) prop_node->children->content;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
g_debug(" Found entry %s %s", cur_node->name, cur_node->properties->children->content);
|
g_debug(" Found entry %s %s", cur_node->name, cur_node->properties->children->content);
|
||||||
ui_filters_add (
|
ui_filters_add (filter, FILTER_ID_UNDEFINED, (const char*) cur_node->name, enabled,
|
||||||
filter,
|
foreground, background);
|
||||||
FILTER_ID_UNDEFINED,
|
|
||||||
(const char*) cur_node->name,
|
|
||||||
cur_node->properties->children->content[0] == '0' ?
|
|
||||||
ENTRY_ENABLED_FALSE : ENTRY_ENABLED_TRUE,
|
|
||||||
background);
|
|
||||||
|
|
||||||
filters_entries++;
|
filters_entries++;
|
||||||
cur_node = cur_node->next;
|
cur_node = cur_node->next;
|
||||||
@@ -367,15 +389,25 @@ int ui_filters_read(const char *file_name)
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void write_filter(FILE *filter_file, ui_filter_t *filter)
|
static void write_filter(FILE *filter_file, ui_filter_t *filter, gboolean save_colors)
|
||||||
{
|
{
|
||||||
int item;
|
int item;
|
||||||
|
|
||||||
fprintf (filter_file, " <%s>\n", filter->name);
|
fprintf (filter_file, " <%s>\n", filter->name);
|
||||||
for (item = 0; item < filter->used; item++)
|
for (item = 0; item < filter->used; item++)
|
||||||
{
|
{
|
||||||
fprintf (filter_file, " <%s enabled=\"%d\" background_color=\"%s\"/>\n", filter->items[item].name,
|
if (save_colors)
|
||||||
filter->items[item].enabled ? 1 : 0, filter->items[item].background);
|
{
|
||||||
|
fprintf (filter_file,
|
||||||
|
" <%s " ENABLED_NAME "=\"%d\" " FOREGROUND_NAME "=\"%s\" " BACKGROUND_NAME "=\"%s\"/>\n",
|
||||||
|
filter->items[item].name, filter->items[item].enabled ? 1 : 0, filter->items[item].foreground,
|
||||||
|
filter->items[item].background);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
fprintf (filter_file, " <%s " ENABLED_NAME "=\"%d\"/>\n", filter->items[item].name,
|
||||||
|
filter->items[item].enabled ? 1 : 0);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
fprintf (filter_file, " </%s>\n", filter->name);
|
fprintf (filter_file, " </%s>\n", filter->name);
|
||||||
}
|
}
|
||||||
@@ -400,9 +432,9 @@ int ui_filters_file_write(const char *file_name)
|
|||||||
fprintf (filter_file, "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
|
fprintf (filter_file, "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
|
||||||
"<filters>\n");
|
"<filters>\n");
|
||||||
|
|
||||||
write_filter (filter_file, &ui_filters.messages);
|
write_filter (filter_file, &ui_filters.messages, TRUE);
|
||||||
write_filter (filter_file, &ui_filters.origin_tasks);
|
write_filter (filter_file, &ui_filters.origin_tasks, FALSE);
|
||||||
write_filter (filter_file, &ui_filters.destination_tasks);
|
write_filter (filter_file, &ui_filters.destination_tasks, FALSE);
|
||||||
|
|
||||||
fprintf (filter_file, "</filters>\n");
|
fprintf (filter_file, "</filters>\n");
|
||||||
|
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
|
|
||||||
#include "itti_types.h"
|
#include "itti_types.h"
|
||||||
|
|
||||||
#define BACKGROUND_SIZE 10
|
#define COLOR_SIZE 10
|
||||||
|
|
||||||
typedef enum
|
typedef enum
|
||||||
{
|
{
|
||||||
@@ -22,7 +22,8 @@ typedef struct
|
|||||||
uint32_t id;
|
uint32_t id;
|
||||||
char name[SIGNAL_NAME_LENGTH];
|
char name[SIGNAL_NAME_LENGTH];
|
||||||
uint8_t enabled;
|
uint8_t enabled;
|
||||||
char background[BACKGROUND_SIZE];
|
char foreground[COLOR_SIZE];
|
||||||
|
char background[COLOR_SIZE];
|
||||||
GtkWidget *menu_item;
|
GtkWidget *menu_item;
|
||||||
} ui_filter_item_t;
|
} ui_filter_item_t;
|
||||||
|
|
||||||
@@ -52,7 +53,7 @@ gboolean ui_filters_enable(gboolean enabled);
|
|||||||
int ui_filters_search_id(ui_filter_t *filter, uint32_t value);
|
int ui_filters_search_id(ui_filter_t *filter, uint32_t value);
|
||||||
|
|
||||||
void ui_filters_add(ui_filter_e filter, uint32_t value, const char *name, ui_entry_enabled_e entry_enabled,
|
void ui_filters_add(ui_filter_e filter, uint32_t value, const char *name, ui_entry_enabled_e entry_enabled,
|
||||||
const char *background);
|
const char *foreground, const char *background);
|
||||||
|
|
||||||
gboolean ui_filters_message_enabled(const uint32_t message, const uint32_t origin_task, const uint32_t destination_task,
|
gboolean ui_filters_message_enabled(const uint32_t message, const uint32_t origin_task, const uint32_t destination_task,
|
||||||
const uint32_t instance);
|
const uint32_t instance);
|
||||||
|
|||||||
@@ -25,9 +25,6 @@ typedef struct
|
|||||||
|
|
||||||
static ui_store_t ui_store;
|
static ui_store_t ui_store;
|
||||||
|
|
||||||
static GValue colors[] =
|
|
||||||
{G_VALUE_INIT, G_VALUE_INIT};
|
|
||||||
|
|
||||||
GtkWidget *ui_tree_view_menu;
|
GtkWidget *ui_tree_view_menu;
|
||||||
ui_tree_view_menu_enable_t ui_tree_view_menu_enable[NUM_MENU_TYPE];
|
ui_tree_view_menu_enable_t ui_tree_view_menu_enable[NUM_MENU_TYPE];
|
||||||
|
|
||||||
@@ -106,7 +103,8 @@ static void ui_tree_view_init_list(GtkWidget *list)
|
|||||||
gtk_tree_view_append_column (GTK_TREE_VIEW(list), column);
|
gtk_tree_view_append_column (GTK_TREE_VIEW(list), column);
|
||||||
|
|
||||||
column = gtk_tree_view_column_new_with_attributes ("Message", renderer_left, "text", COL_MESSAGE, "foreground",
|
column = gtk_tree_view_column_new_with_attributes ("Message", renderer_left, "text", COL_MESSAGE, "foreground",
|
||||||
COL_FOREGROUND, "background", COL_BACKGROUND, NULL);
|
COL_FOREGROUND, "background", COL_BACKGROUND, "strikethrough",
|
||||||
|
COL_STRIKETHROUGH, NULL);
|
||||||
gtk_tree_view_column_set_resizable (column, TRUE);
|
gtk_tree_view_column_set_resizable (column, TRUE);
|
||||||
gtk_tree_view_column_set_alignment (column, 0.5);
|
gtk_tree_view_column_set_alignment (column, 0.5);
|
||||||
gtk_tree_view_append_column (GTK_TREE_VIEW(list), column);
|
gtk_tree_view_append_column (GTK_TREE_VIEW(list), column);
|
||||||
@@ -148,6 +146,7 @@ static void ui_tree_view_init_list(GtkWidget *list)
|
|||||||
G_TYPE_UINT, // COL_TO_TASK_ID
|
G_TYPE_UINT, // COL_TO_TASK_ID
|
||||||
G_TYPE_STRING, // COL_FOREGROUND
|
G_TYPE_STRING, // COL_FOREGROUND
|
||||||
G_TYPE_STRING, // COL_BACKGROUND
|
G_TYPE_STRING, // COL_BACKGROUND
|
||||||
|
G_TYPE_BOOLEAN, // COL_STRIKETHROUGH
|
||||||
// Reference to the buffer here to avoid maintaining multiple lists.
|
// Reference to the buffer here to avoid maintaining multiple lists.
|
||||||
G_TYPE_POINTER);
|
G_TYPE_POINTER);
|
||||||
|
|
||||||
@@ -174,6 +173,7 @@ static void ui_tree_view_add_to_list(GtkWidget *list, const gchar *lte_time, con
|
|||||||
gboolean enabled;
|
gboolean enabled;
|
||||||
|
|
||||||
enabled = ui_filters_message_enabled (message_id, origin_task_id, destination_task_id, instance);
|
enabled = ui_filters_message_enabled (message_id, origin_task_id, destination_task_id, instance);
|
||||||
|
int message_index = ui_filters_search_id (&ui_filters.messages, message_id);
|
||||||
|
|
||||||
gtk_list_store_append (ui_store.store, &iter);
|
gtk_list_store_append (ui_store.store, &iter);
|
||||||
gtk_list_store_set (ui_store.store, &iter,
|
gtk_list_store_set (ui_store.store, &iter,
|
||||||
@@ -182,11 +182,10 @@ static void ui_tree_view_add_to_list(GtkWidget *list, const gchar *lte_time, con
|
|||||||
message_number, COL_LTE_TIME, lte_time, COL_MESSAGE, signal_name, COL_FROM_TASK, origin_task,
|
message_number, COL_LTE_TIME, lte_time, COL_MESSAGE, signal_name, COL_FROM_TASK, origin_task,
|
||||||
COL_TO_TASK, destination_task, COL_INSTANCE, instance, COL_MESSAGE_ID, message_id,
|
COL_TO_TASK, destination_task, COL_INSTANCE, instance, COL_MESSAGE_ID, message_id,
|
||||||
COL_FROM_TASK_ID, origin_task_id, COL_TO_TASK_ID, destination_task_id, COL_BUFFER, buffer,
|
COL_FROM_TASK_ID, origin_task_id, COL_TO_TASK_ID, destination_task_id, COL_BUFFER, buffer,
|
||||||
COL_BACKGROUND,
|
COL_FOREGROUND, ui_filters.messages.items[message_index].foreground, COL_BACKGROUND,
|
||||||
ui_filters.messages.items[ui_filters_search_id (&ui_filters.messages, message_id)].background,
|
ui_filters.messages.items[message_index].background, COL_STRIKETHROUGH, !enabled,
|
||||||
/* End of columns */
|
/* End of columns */
|
||||||
-1);
|
-1);
|
||||||
gtk_list_store_set_value (ui_store.store, &iter, COL_FOREGROUND, &colors[enabled ? 1 : 0]);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void ui_tree_view_destroy_list(GtkWidget *list)
|
void ui_tree_view_destroy_list(GtkWidget *list)
|
||||||
@@ -307,15 +306,35 @@ static void ui_tree_view_create_menu(GtkWidget **menu)
|
|||||||
gtk_widget_show (menu_items);
|
gtk_widget_show (menu_items);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Create the "Color" menu-item */
|
/* Create the "Foreground color" menu-item */
|
||||||
{
|
{
|
||||||
|
static ui_tree_view_menu_color_t menu_color_foreground =
|
||||||
|
{TRUE, &ui_tree_view_menu_enable[MENU_MESSAGE]};
|
||||||
|
|
||||||
|
/* Create a new menu-item with a name */
|
||||||
|
menu_items = gtk_menu_item_new_with_label ("Select message foreground color");
|
||||||
|
|
||||||
|
/* Add it to the menu. */
|
||||||
|
gtk_menu_shell_append (GTK_MENU_SHELL(*menu), menu_items);
|
||||||
|
g_signal_connect(G_OBJECT(menu_items), "activate", G_CALLBACK(ui_callback_on_menu_color),
|
||||||
|
&menu_color_foreground);
|
||||||
|
|
||||||
|
/* Show the widget */
|
||||||
|
gtk_widget_show (menu_items);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Create the "Background color" menu-item */
|
||||||
|
{
|
||||||
|
static ui_tree_view_menu_color_t menu_color_background =
|
||||||
|
{FALSE, &ui_tree_view_menu_enable[MENU_MESSAGE]};
|
||||||
|
|
||||||
/* Create a new menu-item with a name */
|
/* Create a new menu-item with a name */
|
||||||
menu_items = gtk_menu_item_new_with_label ("Select message background color");
|
menu_items = gtk_menu_item_new_with_label ("Select message background color");
|
||||||
|
|
||||||
/* Add it to the menu. */
|
/* Add it to the menu. */
|
||||||
gtk_menu_shell_append (GTK_MENU_SHELL(*menu), menu_items);
|
gtk_menu_shell_append (GTK_MENU_SHELL(*menu), menu_items);
|
||||||
g_signal_connect(G_OBJECT(menu_items), "activate", G_CALLBACK(ui_callback_on_menu_color),
|
g_signal_connect(G_OBJECT(menu_items), "activate", G_CALLBACK(ui_callback_on_menu_color),
|
||||||
&ui_tree_view_menu_enable[MENU_MESSAGE]);
|
&menu_color_background);
|
||||||
|
|
||||||
/* Show the widget */
|
/* Show the widget */
|
||||||
gtk_widget_show (menu_items);
|
gtk_widget_show (menu_items);
|
||||||
@@ -328,11 +347,6 @@ int ui_tree_view_create(GtkWidget *window, GtkWidget *vbox)
|
|||||||
GtkTreeSelection *selection;
|
GtkTreeSelection *selection;
|
||||||
GtkWidget *scrolled_window;
|
GtkWidget *scrolled_window;
|
||||||
|
|
||||||
g_value_init (&colors[0], G_TYPE_STRING);
|
|
||||||
g_value_init (&colors[1], G_TYPE_STRING);
|
|
||||||
g_value_set_string (&colors[0], "Grey");
|
|
||||||
g_value_set_string (&colors[1], "#585858");
|
|
||||||
|
|
||||||
scrolled_window = gtk_scrolled_window_new (NULL, NULL);
|
scrolled_window = gtk_scrolled_window_new (NULL, NULL);
|
||||||
|
|
||||||
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW(scrolled_window), GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS);
|
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW(scrolled_window), GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS);
|
||||||
@@ -390,7 +404,7 @@ int ui_tree_view_new_signal_ind(const uint32_t message_number, const gchar *lte_
|
|||||||
for (i = ui_store.instance_number; i <= instance; i++)
|
for (i = ui_store.instance_number; i <= instance; i++)
|
||||||
{
|
{
|
||||||
sprintf (name, "%d", i);
|
sprintf (name, "%d", i);
|
||||||
ui_filters_add (FILTER_INSTANCES, i, name, ENTRY_ENABLED_TRUE, NULL);
|
ui_filters_add (FILTER_INSTANCES, i, name, ENTRY_ENABLED_TRUE, NULL, NULL);
|
||||||
}
|
}
|
||||||
ui_store.instance_number = (instance + 1);
|
ui_store.instance_number = (instance + 1);
|
||||||
ui_destroy_filter_menu (FILTER_INSTANCES);
|
ui_destroy_filter_menu (FILTER_INSTANCES);
|
||||||
@@ -431,15 +445,16 @@ static gboolean updateColors(GtkTreeModel *model, GtkTreePath *path, GtkTreeIter
|
|||||||
uint32_t instance;
|
uint32_t instance;
|
||||||
|
|
||||||
gboolean enabled = FALSE;
|
gboolean enabled = FALSE;
|
||||||
|
int message_index;
|
||||||
|
|
||||||
gtk_tree_model_get (model, iter, COL_MESSAGE_ID, &message_id, COL_FROM_TASK_ID, &origin_task_id, COL_TO_TASK_ID,
|
gtk_tree_model_get (model, iter, COL_MESSAGE_ID, &message_id, COL_FROM_TASK_ID, &origin_task_id, COL_TO_TASK_ID,
|
||||||
&destination_task_id, COL_INSTANCE, &instance, -1);
|
&destination_task_id, COL_INSTANCE, &instance, -1);
|
||||||
enabled = ui_filters_message_enabled (message_id, origin_task_id, destination_task_id, instance);
|
enabled = ui_filters_message_enabled (message_id, origin_task_id, destination_task_id, instance);
|
||||||
|
message_index = ui_filters_search_id (&ui_filters.messages, message_id);
|
||||||
|
|
||||||
gtk_list_store_set (GTK_LIST_STORE(model), iter, COL_FOREGROUND, g_value_get_string (&colors[enabled ? 1 : 0]),
|
gtk_list_store_set (GTK_LIST_STORE(model), iter, COL_FOREGROUND,
|
||||||
COL_BACKGROUND,
|
ui_filters.messages.items[message_index].foreground, COL_BACKGROUND,
|
||||||
ui_filters.messages.items[ui_filters_search_id (&ui_filters.messages, message_id)].background,
|
ui_filters.messages.items[message_index].background, COL_STRIKETHROUGH, !enabled, -1);
|
||||||
-1);
|
|
||||||
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ typedef enum col_type_e
|
|||||||
COL_TO_TASK_ID,
|
COL_TO_TASK_ID,
|
||||||
COL_FOREGROUND,
|
COL_FOREGROUND,
|
||||||
COL_BACKGROUND,
|
COL_BACKGROUND,
|
||||||
|
COL_STRIKETHROUGH,
|
||||||
|
|
||||||
COL_BUFFER,
|
COL_BUFFER,
|
||||||
NUM_COLS
|
NUM_COLS
|
||||||
@@ -37,6 +38,12 @@ typedef struct ui_tree_view_menu_enable_s
|
|||||||
ui_filter_item_t *filter_item;
|
ui_filter_item_t *filter_item;
|
||||||
} ui_tree_view_menu_enable_t;
|
} ui_tree_view_menu_enable_t;
|
||||||
|
|
||||||
|
typedef struct ui_tree_view_menu_color_s
|
||||||
|
{
|
||||||
|
gboolean foreground;
|
||||||
|
ui_tree_view_menu_enable_t *menu_enable;
|
||||||
|
} ui_tree_view_menu_color_t;
|
||||||
|
|
||||||
extern GtkWidget *ui_tree_view_menu;
|
extern GtkWidget *ui_tree_view_menu;
|
||||||
extern ui_tree_view_menu_enable_t ui_tree_view_menu_enable[NUM_MENU_TYPE];
|
extern ui_tree_view_menu_enable_t ui_tree_view_menu_enable[NUM_MENU_TYPE];
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user