diff options
author | Jakub Zawadzki <darkjames-ws@darkjames.pl> | 2017-09-16 16:52:23 +0200 |
---|---|---|
committer | Michael Mann <mmann78@netscape.net> | 2017-09-18 21:24:16 +0000 |
commit | c41bab1f667cfe51b09b80869497a2db68abecce (patch) | |
tree | f61fbf402e9cfe58b9a694eabf4dd389bed94796 /ui/gtk/flow_graph.c | |
parent | a593fce94cb7fd0fa3f5eef7fae9c0128cb6f7e3 (diff) |
Move most of sequence analysis code from ui/ to epan/
Create registration system to allow creation of analysis items
to be localized to the dissector. For now only frame (all) and
TCP are supported.
VOIP functionality will be covered in a separate patch.
Change-Id: I5b05ef6d5afff8d0b162b03a0f451ab810602e81
Reviewed-on: https://code.wireshark.org/review/23571
Reviewed-by: Michael Mann <mmann78@netscape.net>
Diffstat (limited to 'ui/gtk/flow_graph.c')
-rw-r--r-- | ui/gtk/flow_graph.c | 88 |
1 files changed, 43 insertions, 45 deletions
diff --git a/ui/gtk/flow_graph.c b/ui/gtk/flow_graph.c index 75680c0009..5475be457b 100644 --- a/ui/gtk/flow_graph.c +++ b/ui/gtk/flow_graph.c @@ -47,17 +47,16 @@ static GtkWidget *flow_graph_dlg = NULL; static GtkWidget *select_all_rb; static GtkWidget *select_displayed_rb; -static GtkWidget *select_general_rb; -static GtkWidget *select_tcp_rb; static GtkWidget *src_dst_rb; static GtkWidget *net_src_dst_rb; +static GtkWidget *select_analysis_combo; /****************************************************************************/ static void flow_graph_data_init(void) { graph_analysis = sequence_analysis_info_new(); - graph_analysis->type = SEQ_ANALYSIS_ANY; + graph_analysis->name = "any"; graph_analysis->all_packets = TRUE; } @@ -82,44 +81,47 @@ flow_graph_on_destroy(GObject *object _U_, gpointer user_data _U_) flow_graph_dlg = NULL; } - -/****************************************************************************/ -static void -toggle_select_all(GtkWidget *widget _U_, gpointer user_data _U_) +static gboolean +find_seq_name(const void *key, void *value, void *userdata) { - /* is the button now active? */ - if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(select_all_rb))) { - graph_analysis->all_packets = TRUE; + const char* name = (const char*)key; + register_analysis_t* analysis = (register_analysis_t*)value; + const char* ui_name = (const char*)userdata; + + if (strcmp(ui_name, sequence_analysis_get_ui_name(analysis)) == 0) + { + graph_analysis->name = name; + return TRUE; } + + return FALSE; } -/****************************************************************************/ static void -toggle_select_displayed(GtkWidget *widget _U_, gpointer user_data _U_) +sequence_combo_box_changed_cb(GtkComboBox *combo_box, gpointer user_data _U_) { - /* is the button now active? */ - if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(select_displayed_rb))) { - graph_analysis->all_packets = FALSE; - } + gchar* ui_name = gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(combo_box)); + + sequence_analysis_table_iterate_tables(find_seq_name, ui_name); } /****************************************************************************/ static void -toggle_select_general(GtkWidget *widget _U_, gpointer user_data _U_) +toggle_select_all(GtkWidget *widget _U_, gpointer user_data _U_) { /* is the button now active? */ - if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(select_general_rb))) { - graph_analysis->type = SEQ_ANALYSIS_ANY; + if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(select_all_rb))) { + graph_analysis->all_packets = TRUE; } } /****************************************************************************/ static void -toggle_select_tcp(GtkWidget *widget _U_, gpointer user_data _U_) +toggle_select_displayed(GtkWidget *widget _U_, gpointer user_data _U_) { /* is the button now active? */ - if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(select_tcp_rb))) { - graph_analysis->type = SEQ_ANALYSIS_TCP; + if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(select_displayed_rb))) { + graph_analysis->all_packets = FALSE; } } @@ -184,6 +186,16 @@ flow_graph_on_delete(GtkButton *button _U_, /****************************************************************************/ /* INTERFACE */ /****************************************************************************/ +static gboolean +add_flow_sequence_item(const void *key _U_, void *value, void *userdata) +{ + register_analysis_t* analysis = (register_analysis_t*)value; + GtkWidget* combo_box = (GtkWidget*)userdata; + + gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (combo_box), sequence_analysis_get_ui_name(analysis)); + return FALSE; +} + static void flow_graph_dlg_create(void) @@ -230,7 +242,7 @@ flow_graph_dlg_create(void) if (graph_analysis->all_packets) { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(select_all_rb),TRUE); } - gtk_widget_show(select_all_rb); + gtk_widget_show(select_all_rb); /* Process displayed packets */ select_displayed_rb = gtk_radio_button_new_with_mnemonic_from_widget(GTK_RADIO_BUTTON(select_all_rb), @@ -255,28 +267,14 @@ flow_graph_dlg_create(void) gtk_container_set_border_width(GTK_CONTAINER(flow_type_grid), 5); gtk_container_add(GTK_CONTAINER(flow_type_fr), flow_type_grid); - /* General information */ - select_general_rb = gtk_radio_button_new_with_mnemonic_from_widget(NULL, "_General flow"); - gtk_widget_set_tooltip_text (select_general_rb, ("Show all packets, with general information")); - g_signal_connect(select_general_rb, "toggled", G_CALLBACK(toggle_select_general), NULL); - ws_gtk_grid_attach_extended(GTK_GRID(flow_type_grid), select_general_rb, 0, 0, 1, 1, - (GtkAttachOptions)(GTK_FILL), (GtkAttachOptions)(0), 0, 0); - if (graph_analysis->type == SEQ_ANALYSIS_ANY) { - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(select_general_rb),TRUE); - } - gtk_widget_show(select_general_rb); - - /* TCP specific information */ - select_tcp_rb = gtk_radio_button_new_with_mnemonic_from_widget(GTK_RADIO_BUTTON(select_general_rb), - "_TCP flow"); - gtk_widget_set_tooltip_text (select_tcp_rb, ("Show only TCP packets, with TCP specific information")); - g_signal_connect(select_tcp_rb, "toggled", G_CALLBACK(toggle_select_tcp), NULL); - ws_gtk_grid_attach_extended(GTK_GRID(flow_type_grid), select_tcp_rb, 0, 1, 1, 1, - (GtkAttachOptions)(GTK_FILL), (GtkAttachOptions)(0), 0, 0); - if (graph_analysis->type == SEQ_ANALYSIS_TCP) { - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(select_tcp_rb),TRUE); - } - gtk_widget_show(select_tcp_rb); + select_analysis_combo = gtk_combo_box_text_new(); + g_signal_connect(select_analysis_combo, "changed", G_CALLBACK(sequence_combo_box_changed_cb), NULL); + sequence_analysis_table_iterate_tables(add_flow_sequence_item, select_analysis_combo); + gtk_combo_box_set_active(GTK_COMBO_BOX(select_analysis_combo), 0); + + ws_gtk_grid_attach_extended(GTK_GRID(flow_type_grid), select_analysis_combo, 0, 0, 1, 1, + (GtkAttachOptions)(GTK_FILL), (GtkAttachOptions)(0), 0, 0); + gtk_widget_show(select_analysis_combo); gtk_widget_show(flow_type_grid); gtk_widget_show(flow_type_fr); |