diff --git a/gtk/iax2_analysis.c b/gtk/iax2_analysis.c index 0a613862c1..86b3084d42 100644 --- a/gtk/iax2_analysis.c +++ b/gtk/iax2_analysis.c @@ -132,33 +132,33 @@ typedef struct _dialog_graph_graph_item_t { typedef struct _dialog_graph_graph_t { struct _user_data_t *ud; - dialog_graph_graph_item_t items[NUM_GRAPH_ITEMS]; - int plot_style; - gboolean display; - GtkWidget *display_button; - int hf_index; - GdkColor color; - GdkGC *gc; + dialog_graph_graph_item_t items[NUM_GRAPH_ITEMS]; + int plot_style; + gboolean display; + GtkWidget *display_button; + int hf_index; + GdkColor color; + GdkGC *gc; gchar title[100]; } dialog_graph_graph_t; typedef struct _dialog_graph_t { gboolean needs_redraw; - gint32 interval; /* measurement interval in ms */ - guint32 last_interval; - guint32 max_interval; /* XXX max_interval and num_items are redundant */ - guint32 num_items; + gint32 interval; /* measurement interval in ms */ + guint32 last_interval; + guint32 max_interval; /* XXX max_interval and num_items are redundant */ + guint32 num_items; struct _dialog_graph_graph_t graph[MAX_GRAPHS]; - GtkWidget *window; - GtkWidget *draw_area; - GdkPixmap *pixmap; - GtkAdjustment *scrollbar_adjustment; - GtkWidget *scrollbar; - int pixmap_width; - int pixmap_height; - int pixels_per_tick; - int max_y_units; + GtkWidget *window; + GtkWidget *draw_area; + GdkPixmap *pixmap; + GtkAdjustment *scrollbar_adjustment; + GtkWidget *scrollbar; + int pixmap_width; + int pixmap_height; + int pixels_per_tick; + int max_y_units; double start_time; } dialog_graph_t; @@ -244,7 +244,7 @@ typedef struct _user_data_t { /* Column titles. */ -static const gchar *titles[7] = { +static const gchar *titles[7] = { "Packet", "Delta (ms)", "Jitter (ms)", @@ -270,7 +270,7 @@ static void on_refresh_bt_clicked(GtkWidget *bt _U_, user_data_t *user_data _U_) static void enable_graph(dialog_graph_graph_t *dgg) { - dgg->display=TRUE; + dgg->display=TRUE; } @@ -860,13 +860,13 @@ static void on_graph_bt_clicked(GtkWidget *bt _U_, user_data_t *user_data _U_) user_data->series_rev.color.blue = 0xffff; user_data->series_rev.yvalue = -0.5; - g_snprintf(title1, 80, "Forward: %s:%u to %s:%u", + g_snprintf(title1, sizeof(title1), "Forward: %s:%u to %s:%u", get_addr_name(&(user_data->ip_src_fwd)), user_data->port_src_fwd, get_addr_name(&(user_data->ip_dst_fwd)), user_data->port_dst_fwd); - g_snprintf(title2, 80, "Reverse: %s:%u to %s:%u", + g_snprintf(title2, sizeof(title2), "Reverse: %s:%u to %s:%u", get_addr_name(&(user_data->ip_src_rev)), user_data->port_src_rev, get_addr_name(&(user_data->ip_dst_rev)), @@ -909,13 +909,13 @@ static void dialog_graph_reset(user_data_t* user_data) user_data->dlg.dialog_graph.needs_redraw=TRUE; for(i=0;idlg.dialog_graph.graph[i].items[j]; + for(j=0;jdlg.dialog_graph.graph[i].items[j]; dggi->value=0; dggi->flags=0; - } - } + } + } user_data->dlg.dialog_graph.last_interval=0xffffffff; user_data->dlg.dialog_graph.max_interval=0; user_data->dlg.dialog_graph.num_items=0; @@ -924,20 +924,24 @@ static void dialog_graph_reset(user_data_t* user_data) for(i=0;idlg.dialog_graph.graph[i].title, 100, "%s: %s:%u to %s:%u", + g_snprintf(user_data->dlg.dialog_graph.graph[i].title, + sizeof (user_data->dlg.dialog_graph.graph[0].title), + "%s: %s:%u to %s:%u", graph_descr[i], - get_addr_name(&(user_data->ip_src_fwd)), - user_data->port_src_fwd, - get_addr_name(&(user_data->ip_dst_fwd)), - user_data->port_dst_fwd); + get_addr_name(&(user_data->ip_src_fwd)), + user_data->port_src_fwd, + get_addr_name(&(user_data->ip_dst_fwd)), + user_data->port_dst_fwd); /* it is reverse */ } else { - g_snprintf(user_data->dlg.dialog_graph.graph[i].title, 100, "%s: %s:%u to %s:%u", + g_snprintf(user_data->dlg.dialog_graph.graph[i].title, + sizeof(user_data->dlg.dialog_graph.graph[0].title), + "%s: %s:%u to %s:%u", graph_descr[i], - get_addr_name(&(user_data->ip_src_rev)), - user_data->port_src_rev, - get_addr_name(&(user_data->ip_dst_rev)), - user_data->port_dst_rev); + get_addr_name(&(user_data->ip_src_rev)), + user_data->port_src_rev, + get_addr_name(&(user_data->ip_dst_rev)), + user_data->port_dst_rev); } } @@ -947,9 +951,9 @@ static void dialog_graph_reset(user_data_t* user_data) /****************************************************************************/ static guint32 get_it_value(dialog_graph_graph_t *dgg, int idx) { - dialog_graph_graph_item_t *it; + dialog_graph_graph_item_t *it; - it=&dgg->items[idx]; + it=&dgg->items[idx]; return it->value; } @@ -957,294 +961,295 @@ static guint32 get_it_value(dialog_graph_graph_t *dgg, int idx) /****************************************************************************/ static void print_time_scale_string(char *buf, int buf_len, guint32 t) { - if(t>=10000000){ - g_snprintf(buf, buf_len, "%ds",t/1000000); - } else if(t>=1000000){ - g_snprintf(buf, buf_len, "%d.%03ds",t/1000000,(t%1000000)/1000); - } else if(t>=10000){ - g_snprintf(buf, buf_len, "%dms",t/1000); - } else if(t>=1000){ - g_snprintf(buf, buf_len, "%d.%03dms",t/1000,t%1000); - } else { - g_snprintf(buf, buf_len, "%dus",t); - } + if(t>=10000000){ + g_snprintf(buf, buf_len, "%ds",t/1000000); + } else if(t>=1000000){ + g_snprintf(buf, buf_len, "%d.%03ds",t/1000000,(t%1000000)/1000); + } else if(t>=10000){ + g_snprintf(buf, buf_len, "%dms",t/1000); + } else if(t>=1000){ + g_snprintf(buf, buf_len, "%d.%03dms",t/1000,t%1000); + } else { + g_snprintf(buf, buf_len, "%dus",t); + } } /****************************************************************************/ static void dialog_graph_draw(user_data_t* user_data) { - int i, lwidth; - guint32 last_interval, first_interval, interval_delta, delta_multiplier; - gint32 current_interval; - guint32 left_x_border; - guint32 right_x_border; - guint32 top_y_border; - guint32 bottom_y_border; - PangoLayout *layout; - int label_width, label_height; - guint32 draw_width, draw_height; - char label_string[15]; + int i, lwidth; + guint32 last_interval, first_interval, interval_delta, delta_multiplier; + gint32 current_interval; + guint32 left_x_border; + guint32 right_x_border; + guint32 top_y_border; + guint32 bottom_y_border; + PangoLayout *layout; + int label_width, label_height; + guint32 draw_width, draw_height; + char label_string[15]; - /* new variables */ - guint32 num_time_intervals; - guint32 max_value; /* max value of seen data */ - guint32 max_y; /* max value of the Y scale */ + /* new variables */ + guint32 num_time_intervals; + guint32 max_value; /* max value of seen data */ + guint32 max_y; /* max value of the Y scale */ - if(!user_data->dlg.dialog_graph.needs_redraw){ - return; - } - user_data->dlg.dialog_graph.needs_redraw=FALSE; + if(!user_data->dlg.dialog_graph.needs_redraw){ + return; + } + user_data->dlg.dialog_graph.needs_redraw=FALSE; - /* - * Find the length of the intervals we have data for - * so we know how large arrays we need to malloc() - */ - num_time_intervals=user_data->dlg.dialog_graph.num_items; - /* if there isnt anything to do, just return */ - if(num_time_intervals==0){ - return; - } - num_time_intervals+=1; - /* XXX move this check to _packet() */ - if(num_time_intervals>NUM_GRAPH_ITEMS){ - simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK, "IAX2 Graph error. There are too many entries, bailing out"); - return; - } + /* + * Find the length of the intervals we have data for + * so we know how large arrays we need to malloc() + */ + num_time_intervals=user_data->dlg.dialog_graph.num_items; + /* if there isnt anything to do, just return */ + if(num_time_intervals==0){ + return; + } + num_time_intervals+=1; + /* XXX move this check to _packet() */ + if(num_time_intervals>NUM_GRAPH_ITEMS){ + simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK, "IAX2 Graph error. There are too many entries, bailing out"); + return; + } - /* - * find the max value so we can autoscale the y axis - */ - max_value=0; - for(i=0;idlg.dialog_graph.graph[i].display){ - continue; - } - for(idx=0;(guint32) (idx) < num_time_intervals;idx++){ - guint32 val; + if(!user_data->dlg.dialog_graph.graph[i].display){ + continue; + } + for(idx=0;(guint32) (idx) < num_time_intervals;idx++){ + guint32 val; - val=get_it_value(&user_data->dlg.dialog_graph.graph[i], idx); + val=get_it_value(&user_data->dlg.dialog_graph.graph[i], idx); - /* keep track of the max value we have encountered */ - if(val>max_value){ - max_value=val; - } - } - } + /* keep track of the max value we have encountered */ + if(val>max_value){ + max_value=val; + } + } + } - /* - * Clear out old plot - */ - gdk_draw_rectangle(user_data->dlg.dialog_graph.pixmap, - user_data->dlg.dialog_graph.draw_area->style->white_gc, - TRUE, - 0, 0, - user_data->dlg.dialog_graph.draw_area->allocation.width, - user_data->dlg.dialog_graph.draw_area->allocation.height); + /* + * Clear out old plot + */ + gdk_draw_rectangle(user_data->dlg.dialog_graph.pixmap, + user_data->dlg.dialog_graph.draw_area->style->white_gc, + TRUE, + 0, 0, + user_data->dlg.dialog_graph.draw_area->allocation.width, + user_data->dlg.dialog_graph.draw_area->allocation.height); - /* - * Calculate the y scale we should use - */ - if(user_data->dlg.dialog_graph.max_y_units==AUTO_MAX_YSCALE){ - max_y=yscale_max[MAX_YSCALE-1]; - for(i=MAX_YSCALE-1;i>0;i--){ - if(max_valuedlg.dialog_graph.max_y_units; - } + /* + * Calculate the y scale we should use + */ + if(user_data->dlg.dialog_graph.max_y_units==AUTO_MAX_YSCALE){ + max_y=yscale_max[MAX_YSCALE-1]; + for(i=MAX_YSCALE-1;i>0;i--){ + if(max_valuedlg.dialog_graph.max_y_units; + } - /* - * Calculate size of borders surrounding the plot - * The border on the right side needs to be adjusted depending - * on the width of the text labels. For simplicity we assume that the - * top y scale label will be the widest one - */ - print_time_scale_string(label_string, 15, max_y); - layout = gtk_widget_create_pango_layout(user_data->dlg.dialog_graph.draw_area, label_string); - pango_layout_get_pixel_size(layout, &label_width, &label_height); - left_x_border=10; - right_x_border=label_width+20; - top_y_border=10; - bottom_y_border=label_height+20; + /* + * Calculate size of borders surrounding the plot + * The border on the right side needs to be adjusted depending + * on the width of the text labels. For simplicity we assume that the + * top y scale label will be the widest one + */ + print_time_scale_string(label_string, sizeof(label_string), max_y); + layout = gtk_widget_create_pango_layout(user_data->dlg.dialog_graph.draw_area, label_string); + pango_layout_get_pixel_size(layout, &label_width, &label_height); + left_x_border=10; + right_x_border=label_width+20; + top_y_border=10; + bottom_y_border=label_height+20; - /* - * Calculate the size of the drawing area for the actual plot - */ - draw_width=user_data->dlg.dialog_graph.pixmap_width-right_x_border-left_x_border; - draw_height=user_data->dlg.dialog_graph.pixmap_height-top_y_border-bottom_y_border; + /* + * Calculate the size of the drawing area for the actual plot + */ + draw_width=user_data->dlg.dialog_graph.pixmap_width-right_x_border-left_x_border; + draw_height=user_data->dlg.dialog_graph.pixmap_height-top_y_border-bottom_y_border; - /* - * Draw the y axis and labels - * (we always draw the y scale with 11 ticks along the axis) - */ - gdk_draw_line(user_data->dlg.dialog_graph.pixmap, user_data->dlg.dialog_graph.draw_area->style->black_gc, - user_data->dlg.dialog_graph.pixmap_width-right_x_border+1, - top_y_border, - user_data->dlg.dialog_graph.pixmap_width-right_x_border+1, - user_data->dlg.dialog_graph.pixmap_height-bottom_y_border); - for(i=0;i<=10;i++){ - int xwidth, lwidth; + /* + * Draw the y axis and labels + * (we always draw the y scale with 11 ticks along the axis) + */ + gdk_draw_line(user_data->dlg.dialog_graph.pixmap, user_data->dlg.dialog_graph.draw_area->style->black_gc, + user_data->dlg.dialog_graph.pixmap_width-right_x_border+1, + top_y_border, + user_data->dlg.dialog_graph.pixmap_width-right_x_border+1, + user_data->dlg.dialog_graph.pixmap_height-bottom_y_border); + for(i=0;i<=10;i++){ + int xwidth, lwidth; - xwidth=5; - if(!(i%5)){ - /* first, middle and last tick are slightly longer */ - xwidth=10; - } - /* draw the tick */ - gdk_draw_line(user_data->dlg.dialog_graph.pixmap, user_data->dlg.dialog_graph.draw_area->style->black_gc, - user_data->dlg.dialog_graph.pixmap_width-right_x_border+1, - user_data->dlg.dialog_graph.pixmap_height-bottom_y_border-draw_height*i/10, - user_data->dlg.dialog_graph.pixmap_width-right_x_border+1+xwidth, - user_data->dlg.dialog_graph.pixmap_height-bottom_y_border-draw_height*i/10); - /* draw the labels */ - if(i==0){ - print_time_scale_string(label_string, 15, (max_y*i/10)); - pango_layout_set_text(layout, label_string, -1); - pango_layout_get_pixel_size(layout, &lwidth, NULL); - gdk_draw_layout(user_data->dlg.dialog_graph.pixmap, - user_data->dlg.dialog_graph.draw_area->style->black_gc, - user_data->dlg.dialog_graph.pixmap_width-right_x_border+15+label_width-lwidth, - user_data->dlg.dialog_graph.pixmap_height-bottom_y_border-draw_height*i/10-label_height/2, - layout); - } - if(i==5){ - print_time_scale_string(label_string, 15, (max_y*i/10)); - pango_layout_set_text(layout, label_string, -1); - pango_layout_get_pixel_size(layout, &lwidth, NULL); - gdk_draw_layout(user_data->dlg.dialog_graph.pixmap, - user_data->dlg.dialog_graph.draw_area->style->black_gc, - user_data->dlg.dialog_graph.pixmap_width-right_x_border+15+label_width-lwidth, - user_data->dlg.dialog_graph.pixmap_height-bottom_y_border-draw_height*i/10-label_height/2, - layout); - } - if(i==10){ - print_time_scale_string(label_string, 15, (max_y*i/10)); - pango_layout_set_text(layout, label_string, -1); - pango_layout_get_pixel_size(layout, &lwidth, NULL); - gdk_draw_layout(user_data->dlg.dialog_graph.pixmap, - user_data->dlg.dialog_graph.draw_area->style->black_gc, - user_data->dlg.dialog_graph.pixmap_width-right_x_border+15+label_width-lwidth, - user_data->dlg.dialog_graph.pixmap_height-bottom_y_border-draw_height*i/10-label_height/2, - layout); - } - } + xwidth=5; + if(!(i%5)){ + /* first, middle and last tick are slightly longer */ + xwidth=10; + } + /* draw the tick */ + gdk_draw_line(user_data->dlg.dialog_graph.pixmap, user_data->dlg.dialog_graph.draw_area->style->black_gc, + user_data->dlg.dialog_graph.pixmap_width-right_x_border+1, + user_data->dlg.dialog_graph.pixmap_height-bottom_y_border-draw_height*i/10, + user_data->dlg.dialog_graph.pixmap_width-right_x_border+1+xwidth, + user_data->dlg.dialog_graph.pixmap_height-bottom_y_border-draw_height*i/10); + /* draw the labels */ + if(i==0){ + print_time_scale_string(label_string, sizeof(label_string), (max_y*i/10)); + pango_layout_set_text(layout, label_string, -1); + pango_layout_get_pixel_size(layout, &lwidth, NULL); + gdk_draw_layout(user_data->dlg.dialog_graph.pixmap, + user_data->dlg.dialog_graph.draw_area->style->black_gc, + user_data->dlg.dialog_graph.pixmap_width-right_x_border+15+label_width-lwidth, + user_data->dlg.dialog_graph.pixmap_height-bottom_y_border-draw_height*i/10-label_height/2, + layout); + } + if(i==5){ + print_time_scale_string(label_string, sizeof(label_string), (max_y*i/10)); + pango_layout_set_text(layout, label_string, -1); + pango_layout_get_pixel_size(layout, &lwidth, NULL); + gdk_draw_layout(user_data->dlg.dialog_graph.pixmap, + user_data->dlg.dialog_graph.draw_area->style->black_gc, + user_data->dlg.dialog_graph.pixmap_width-right_x_border+15+label_width-lwidth, + user_data->dlg.dialog_graph.pixmap_height-bottom_y_border-draw_height*i/10-label_height/2, + layout); + } + if(i==10){ + print_time_scale_string(label_string, sizeof(label_string), (max_y*i/10)); + pango_layout_set_text(layout, label_string, -1); + pango_layout_get_pixel_size(layout, &lwidth, NULL); + gdk_draw_layout(user_data->dlg.dialog_graph.pixmap, + user_data->dlg.dialog_graph.draw_area->style->black_gc, + user_data->dlg.dialog_graph.pixmap_width-right_x_border+15+label_width-lwidth, + user_data->dlg.dialog_graph.pixmap_height-bottom_y_border-draw_height*i/10-label_height/2, + layout); + } + } - /* - * if we have not specified the last_interval via the gui, - * then just pick the current end of the capture so that is scrolls - * nicely when doing live captures - */ - if(user_data->dlg.dialog_graph.last_interval==0xffffffff){ - last_interval=user_data->dlg.dialog_graph.max_interval; - } else { - last_interval=user_data->dlg.dialog_graph.last_interval; - } + /* + * if we have not specified the last_interval via the gui, + * then just pick the current end of the capture so that is scrolls + * nicely when doing live captures + */ + if(user_data->dlg.dialog_graph.last_interval==0xffffffff){ + last_interval=user_data->dlg.dialog_graph.max_interval; + } else { + last_interval=user_data->dlg.dialog_graph.last_interval; + } /*XXX*/ - /* plot the x-scale */ - gdk_draw_line(user_data->dlg.dialog_graph.pixmap, user_data->dlg.dialog_graph.draw_area->style->black_gc, left_x_border, user_data->dlg.dialog_graph.pixmap_height-bottom_y_border+1, user_data->dlg.dialog_graph.pixmap_width-right_x_border+1, user_data->dlg.dialog_graph.pixmap_height-bottom_y_border+1); + /* plot the x-scale */ + gdk_draw_line(user_data->dlg.dialog_graph.pixmap, user_data->dlg.dialog_graph.draw_area->style->black_gc, left_x_border, user_data->dlg.dialog_graph.pixmap_height-bottom_y_border+1, user_data->dlg.dialog_graph.pixmap_width-right_x_border+1, user_data->dlg.dialog_graph.pixmap_height-bottom_y_border+1); - if((last_interval/user_data->dlg.dialog_graph.interval)>draw_width/user_data->dlg.dialog_graph.pixels_per_tick+1){ - first_interval=(last_interval/user_data->dlg.dialog_graph.interval)-draw_width/user_data->dlg.dialog_graph.pixels_per_tick+1; - first_interval*=user_data->dlg.dialog_graph.interval; - } else { - first_interval=0; - } + if((last_interval/user_data->dlg.dialog_graph.interval)>draw_width/user_data->dlg.dialog_graph.pixels_per_tick+1){ + first_interval=(last_interval/user_data->dlg.dialog_graph.interval)-draw_width/user_data->dlg.dialog_graph.pixels_per_tick+1; + first_interval*=user_data->dlg.dialog_graph.interval; + } else { + first_interval=0; + } - interval_delta=1; - delta_multiplier=5; - while(interval_delta<((last_interval-first_interval)/10)){ - interval_delta*=delta_multiplier; - if(delta_multiplier==5){ - delta_multiplier=2; - } else { - delta_multiplier=5; - } - } + interval_delta=1; + delta_multiplier=5; + while(interval_delta<((last_interval-first_interval)/10)){ + interval_delta*=delta_multiplier; + if(delta_multiplier==5){ + delta_multiplier=2; + } else { + delta_multiplier=5; + } + } - for(current_interval=last_interval;current_interval>(gint32)first_interval;current_interval=current_interval-user_data->dlg.dialog_graph.interval){ - int x, xlen; + for(current_interval=last_interval;current_interval>(gint32)first_interval;current_interval=current_interval-user_data->dlg.dialog_graph.interval){ + int x, xlen; - /* if pixels_per_tick is <5, only draw every 10 ticks */ - if((user_data->dlg.dialog_graph.pixels_per_tick<10) && (current_interval%(10*user_data->dlg.dialog_graph.interval))){ - continue; - } + /* if pixels_per_tick is <5, only draw every 10 ticks */ + if((user_data->dlg.dialog_graph.pixels_per_tick<10) && (current_interval%(10*user_data->dlg.dialog_graph.interval))){ + continue; + } - if(current_interval%interval_delta){ - xlen=5; - } else { - xlen=17; - } + if(current_interval%interval_delta){ + xlen=5; + } else { + xlen=17; + } - x=draw_width+left_x_border-((last_interval-current_interval)/user_data->dlg.dialog_graph.interval)*user_data->dlg.dialog_graph.pixels_per_tick; - gdk_draw_line(user_data->dlg.dialog_graph.pixmap, user_data->dlg.dialog_graph.draw_area->style->black_gc, - x-1-user_data->dlg.dialog_graph.pixels_per_tick/2, - user_data->dlg.dialog_graph.pixmap_height-bottom_y_border+1, - x-1-user_data->dlg.dialog_graph.pixels_per_tick/2, - user_data->dlg.dialog_graph.pixmap_height-bottom_y_border+xlen+1); + x=draw_width+left_x_border-((last_interval-current_interval)/user_data->dlg.dialog_graph.interval)*user_data->dlg.dialog_graph.pixels_per_tick; + gdk_draw_line(user_data->dlg.dialog_graph.pixmap, user_data->dlg.dialog_graph.draw_area->style->black_gc, + x-1-user_data->dlg.dialog_graph.pixels_per_tick/2, + user_data->dlg.dialog_graph.pixmap_height-bottom_y_border+1, + x-1-user_data->dlg.dialog_graph.pixels_per_tick/2, + user_data->dlg.dialog_graph.pixmap_height-bottom_y_border+xlen+1); - if(xlen==17){ - int lwidth; - if(user_data->dlg.dialog_graph.interval>=1000){ - g_snprintf(label_string, 15, "%ds", current_interval/1000); - } else if(user_data->dlg.dialog_graph.interval>=100){ - g_snprintf(label_string, 15, "%d.%1ds", current_interval/1000,(current_interval/100)%10) -; - } else if(user_data->dlg.dialog_graph.interval>=10){ - g_snprintf(label_string, 15, "%d.%2ds", current_interval/1000,(current_interval/10)%100) -; - } else { - g_snprintf(label_string, 15, "%d.%3ds", current_interval/1000,current_interval%1000); - } - pango_layout_set_text(layout, label_string, -1); - pango_layout_get_pixel_size(layout, &lwidth, NULL); - gdk_draw_layout(user_data->dlg.dialog_graph.pixmap, - user_data->dlg.dialog_graph.draw_area->style->black_gc, - x-1-user_data->dlg.dialog_graph.pixels_per_tick/2-lwidth/2, - user_data->dlg.dialog_graph.pixmap_height-bottom_y_border+20, - layout); - } + if(xlen==17){ + int lwidth; + if(user_data->dlg.dialog_graph.interval>=1000){ + g_snprintf(label_string, sizeof(label_string), "%ds", current_interval/1000); + } else if(user_data->dlg.dialog_graph.interval>=100){ + g_snprintf(label_string, sizeof(label_string), + "%d.%1ds", current_interval/1000,(current_interval/100)%10); + } else if(user_data->dlg.dialog_graph.interval>=10){ + g_snprintf(label_string, sizeof(label_string), + "%d.%2ds", current_interval/1000,(current_interval/10)%100); + } else { + g_snprintf(label_string, sizeof(label_string), + "%d.%3ds", current_interval/1000,current_interval%1000); + } + pango_layout_set_text(layout, label_string, -1); + pango_layout_get_pixel_size(layout, &lwidth, NULL); + gdk_draw_layout(user_data->dlg.dialog_graph.pixmap, + user_data->dlg.dialog_graph.draw_area->style->black_gc, + x-1-user_data->dlg.dialog_graph.pixels_per_tick/2-lwidth/2, + user_data->dlg.dialog_graph.pixmap_height-bottom_y_border+20, + layout); + } - } + } - /* - * Draw "x" for Sequence Errors and "m" for Marks - */ + /* + * Draw "x" for Sequence Errors and "m" for Marks + */ /* Draw the labels Fwd and Rev */ - g_strlcpy(label_string,"<-Fwd",15); + g_strlcpy(label_string, "<-Fwd", sizeof(label_string)); pango_layout_set_text(layout, label_string, -1); pango_layout_get_pixel_size(layout, &lwidth, NULL); gdk_draw_layout(user_data->dlg.dialog_graph.pixmap, - user_data->dlg.dialog_graph.draw_area->style->black_gc, - user_data->dlg.dialog_graph.pixmap_width-right_x_border+33-lwidth, - user_data->dlg.dialog_graph.pixmap_height-bottom_y_border+3, + user_data->dlg.dialog_graph.draw_area->style->black_gc, + user_data->dlg.dialog_graph.pixmap_width-right_x_border+33-lwidth, + user_data->dlg.dialog_graph.pixmap_height-bottom_y_border+3, layout); - g_strlcpy(label_string,"<-Rev",15); - pango_layout_set_text(layout, label_string, -1); - pango_layout_get_pixel_size(layout, &lwidth, NULL); - gdk_draw_layout(user_data->dlg.dialog_graph.pixmap, - user_data->dlg.dialog_graph.draw_area->style->black_gc, - user_data->dlg.dialog_graph.pixmap_width-right_x_border+33-lwidth, - user_data->dlg.dialog_graph.pixmap_height-bottom_y_border+3+9, - layout); + g_strlcpy(label_string, "<-Rev", sizeof(label_string)); + pango_layout_set_text(layout, label_string, -1); + pango_layout_get_pixel_size(layout, &lwidth, NULL); + gdk_draw_layout(user_data->dlg.dialog_graph.pixmap, + user_data->dlg.dialog_graph.draw_area->style->black_gc, + user_data->dlg.dialog_graph.pixmap_width-right_x_border+33-lwidth, + user_data->dlg.dialog_graph.pixmap_height-bottom_y_border+3+9, + layout); /* Draw the marks */ for(i=MAX_GRAPHS-1;i>=0;i--){ @@ -1264,35 +1269,35 @@ static void dialog_graph_draw(user_data_t* user_data) if(user_data->dlg.dialog_graph.graph[i].items[interval/user_data->dlg.dialog_graph.interval].flags & (STAT_FLAG_WRONG_SEQ|STAT_FLAG_MARKER)){ int lwidth; if (user_data->dlg.dialog_graph.graph[i].items[interval/user_data->dlg.dialog_graph.interval].flags & STAT_FLAG_WRONG_SEQ){ - g_strlcpy(label_string,"x",15); + g_strlcpy(label_string, "x", sizeof(label_string)); } else { - g_strlcpy(label_string,"m",15); + g_strlcpy(label_string, "m", sizeof(label_string)); } - pango_layout_set_text(layout, label_string, -1); - pango_layout_get_pixel_size(layout, &lwidth, NULL); - gdk_draw_layout(user_data->dlg.dialog_graph.pixmap, - user_data->dlg.dialog_graph.draw_area->style->black_gc, - x_pos-1-lwidth/2, - user_data->dlg.dialog_graph.pixmap_height-bottom_y_border+3+7*(i/2), - layout); - } + pango_layout_set_text(layout, label_string, -1); + pango_layout_get_pixel_size(layout, &lwidth, NULL); + gdk_draw_layout(user_data->dlg.dialog_graph.pixmap, + user_data->dlg.dialog_graph.draw_area->style->black_gc, + x_pos-1-lwidth/2, + user_data->dlg.dialog_graph.pixmap_height-bottom_y_border+3+7*(i/2), + layout); + } - prev_x_pos=x_pos; - } - } + prev_x_pos=x_pos; + } + } - g_object_unref(G_OBJECT(layout)); + g_object_unref(G_OBJECT(layout)); - /* - * Loop over all graphs and draw them - */ + /* + * Loop over all graphs and draw them + */ for(i=MAX_GRAPHS-1;i>=0;i--){ guint32 interval; guint32 x_pos, y_pos, prev_x_pos, prev_y_pos; - if (!user_data->dlg.dialog_graph.graph[i].display){ - continue; - } + if (!user_data->dlg.dialog_graph.graph[i].display){ + continue; + } /* initialize prev x/y to the low left corner of the graph */ prev_x_pos=draw_width-1-user_data->dlg.dialog_graph.pixels_per_tick*((last_interval-first_interval)/user_data->dlg.dialog_graph.interval+1)+left_x_border; prev_y_pos=draw_height-1+top_y_border; @@ -1302,71 +1307,71 @@ static void dialog_graph_draw(user_data_t* user_data) x_pos=draw_width-1-user_data->dlg.dialog_graph.pixels_per_tick*((last_interval-interval)/user_data->dlg.dialog_graph.interval+1)+left_x_border; val=get_it_value(&user_data->dlg.dialog_graph.graph[i], interval/user_data->dlg.dialog_graph.interval); if(val>max_y){ - y_pos=0; - } else { - y_pos=draw_height-1-(val*draw_height)/max_y+top_y_border; - } + y_pos=0; + } else { + y_pos=draw_height-1-(val*draw_height)/max_y+top_y_border; + } - /* dont need to draw anything if the segment - * is entirely above the top of the graph - */ - if( (prev_y_pos==0) && (y_pos==0) ){ - prev_y_pos=y_pos; - prev_x_pos=x_pos; - continue; - } + /* dont need to draw anything if the segment + * is entirely above the top of the graph + */ + if( (prev_y_pos==0) && (y_pos==0) ){ + prev_y_pos=y_pos; + prev_x_pos=x_pos; + continue; + } - if(val){ - gdk_draw_line(user_data->dlg.dialog_graph.pixmap, user_data->dlg.dialog_graph.graph[i].gc, - x_pos, draw_height-1+top_y_border, - x_pos, y_pos); - } + if(val){ + gdk_draw_line(user_data->dlg.dialog_graph.pixmap, user_data->dlg.dialog_graph.graph[i].gc, + x_pos, draw_height-1+top_y_border, + x_pos, y_pos); + } - prev_y_pos=y_pos; - prev_x_pos=x_pos; - } - } + prev_y_pos=y_pos; + prev_x_pos=x_pos; + } + } - gdk_draw_pixmap(user_data->dlg.dialog_graph.draw_area->window, - user_data->dlg.dialog_graph.draw_area->style->fg_gc[GTK_WIDGET_STATE(user_data->dlg.dialog_graph.draw_area)], - user_data->dlg.dialog_graph.pixmap, - 0, 0, - 0, 0, - user_data->dlg.dialog_graph.pixmap_width, user_data->dlg.dialog_graph.pixmap_height); + gdk_draw_pixmap(user_data->dlg.dialog_graph.draw_area->window, + user_data->dlg.dialog_graph.draw_area->style->fg_gc[GTK_WIDGET_STATE(user_data->dlg.dialog_graph.draw_area)], + user_data->dlg.dialog_graph.pixmap, + 0, 0, + 0, 0, + user_data->dlg.dialog_graph.pixmap_width, user_data->dlg.dialog_graph.pixmap_height); - /* update the scrollbar */ - user_data->dlg.dialog_graph.scrollbar_adjustment->upper=(gfloat) user_data->dlg.dialog_graph.max_interval; - user_data->dlg.dialog_graph.scrollbar_adjustment->step_increment=(gfloat) ((last_interval-first_interval)/10); - user_data->dlg.dialog_graph.scrollbar_adjustment->page_increment=(gfloat) (last_interval-first_interval); - if((last_interval-first_interval)*100 < user_data->dlg.dialog_graph.max_interval){ - user_data->dlg.dialog_graph.scrollbar_adjustment->page_size=(gfloat) (user_data->dlg.dialog_graph.max_interval/100); - } else { - user_data->dlg.dialog_graph.scrollbar_adjustment->page_size=(gfloat) (last_interval-first_interval); - } - user_data->dlg.dialog_graph.scrollbar_adjustment->value=last_interval-user_data->dlg.dialog_graph.scrollbar_adjustment->page_size; - gtk_adjustment_changed(user_data->dlg.dialog_graph.scrollbar_adjustment); - gtk_adjustment_value_changed(user_data->dlg.dialog_graph.scrollbar_adjustment); + /* update the scrollbar */ + user_data->dlg.dialog_graph.scrollbar_adjustment->upper=(gfloat) user_data->dlg.dialog_graph.max_interval; + user_data->dlg.dialog_graph.scrollbar_adjustment->step_increment=(gfloat) ((last_interval-first_interval)/10); + user_data->dlg.dialog_graph.scrollbar_adjustment->page_increment=(gfloat) (last_interval-first_interval); + if((last_interval-first_interval)*100 < user_data->dlg.dialog_graph.max_interval){ + user_data->dlg.dialog_graph.scrollbar_adjustment->page_size=(gfloat) (user_data->dlg.dialog_graph.max_interval/100); + } else { + user_data->dlg.dialog_graph.scrollbar_adjustment->page_size=(gfloat) (last_interval-first_interval); + } + user_data->dlg.dialog_graph.scrollbar_adjustment->value=last_interval-user_data->dlg.dialog_graph.scrollbar_adjustment->page_size; + gtk_adjustment_changed(user_data->dlg.dialog_graph.scrollbar_adjustment); + gtk_adjustment_value_changed(user_data->dlg.dialog_graph.scrollbar_adjustment); } /****************************************************************************/ static void dialog_graph_redraw(user_data_t* user_data) { - user_data->dlg.dialog_graph.needs_redraw=TRUE; - dialog_graph_draw(user_data); + user_data->dlg.dialog_graph.needs_redraw=TRUE; + dialog_graph_draw(user_data); } /****************************************************************************/ static gint quit(GtkWidget *widget, GdkEventExpose *event _U_) { - user_data_t *user_data; + user_data_t *user_data; - user_data=(user_data_t *)g_object_get_data(G_OBJECT(widget), "user_data_t"); + user_data=(user_data_t *)g_object_get_data(G_OBJECT(widget), "user_data_t"); user_data->dlg.dialog_graph.window = NULL; - return TRUE; + return TRUE; } /****************************************************************************/ @@ -1375,60 +1380,60 @@ static gint expose_event(GtkWidget *widget, GdkEventExpose *event) user_data_t *user_data; user_data=(user_data_t *)g_object_get_data(G_OBJECT(widget), "user_data_t"); - if(!user_data){ - exit(10); - } + if(!user_data){ + exit(10); + } - gdk_draw_pixmap(widget->window, - widget->style->fg_gc[GTK_WIDGET_STATE(widget)], - user_data->dlg.dialog_graph.pixmap, - event->area.x, event->area.y, - event->area.x, event->area.y, - event->area.width, event->area.height); + gdk_draw_pixmap(widget->window, + widget->style->fg_gc[GTK_WIDGET_STATE(widget)], + user_data->dlg.dialog_graph.pixmap, + event->area.x, event->area.y, + event->area.x, event->area.y, + event->area.width, event->area.height); - return FALSE; + return FALSE; } /****************************************************************************/ static gint configure_event(GtkWidget *widget, GdkEventConfigure *event _U_) { - user_data_t *user_data; + user_data_t *user_data; int i; - user_data=(user_data_t *)g_object_get_data(G_OBJECT(widget), "user_data_t"); + user_data=(user_data_t *)g_object_get_data(G_OBJECT(widget), "user_data_t"); - if(!user_data){ - exit(10); - } + if(!user_data){ + exit(10); + } - if(user_data->dlg.dialog_graph.pixmap){ - gdk_pixmap_unref(user_data->dlg.dialog_graph.pixmap); - user_data->dlg.dialog_graph.pixmap=NULL; - } + if(user_data->dlg.dialog_graph.pixmap){ + gdk_pixmap_unref(user_data->dlg.dialog_graph.pixmap); + user_data->dlg.dialog_graph.pixmap=NULL; + } - user_data->dlg.dialog_graph.pixmap=gdk_pixmap_new(widget->window, - widget->allocation.width, - widget->allocation.height, - -1); - user_data->dlg.dialog_graph.pixmap_width=widget->allocation.width; - user_data->dlg.dialog_graph.pixmap_height=widget->allocation.height; + user_data->dlg.dialog_graph.pixmap=gdk_pixmap_new(widget->window, + widget->allocation.width, + widget->allocation.height, + -1); + user_data->dlg.dialog_graph.pixmap_width=widget->allocation.width; + user_data->dlg.dialog_graph.pixmap_height=widget->allocation.height; - gdk_draw_rectangle(user_data->dlg.dialog_graph.pixmap, - widget->style->white_gc, - TRUE, - 0, 0, - widget->allocation.width, - widget->allocation.height); + gdk_draw_rectangle(user_data->dlg.dialog_graph.pixmap, + widget->style->white_gc, + TRUE, + 0, 0, + widget->allocation.width, + widget->allocation.height); - /* set up the colors and the GC structs for this pixmap */ + /* set up the colors and the GC structs for this pixmap */ for(i=0;idlg.dialog_graph.graph[i].gc=gdk_gc_new(user_data->dlg.dialog_graph.pixmap); - gdk_gc_set_rgb_fg_color(user_data->dlg.dialog_graph.graph[i].gc, &user_data->dlg.dialog_graph.graph[i].color); + gdk_gc_set_rgb_fg_color(user_data->dlg.dialog_graph.graph[i].gc, &user_data->dlg.dialog_graph.graph[i].color); } dialog_graph_redraw(user_data); - return TRUE; + return TRUE; } /****************************************************************************/ @@ -1455,321 +1460,321 @@ static gint scrollbar_changed(GtkWidget *widget _U_, gpointer data) /****************************************************************************/ static void create_draw_area(user_data_t* user_data, GtkWidget *box) { - user_data->dlg.dialog_graph.draw_area=gtk_drawing_area_new(); - g_signal_connect(user_data->dlg.dialog_graph.draw_area, "destroy", G_CALLBACK(quit), user_data); - g_object_set_data(G_OBJECT(user_data->dlg.dialog_graph.draw_area), "user_data_t", user_data); + user_data->dlg.dialog_graph.draw_area=gtk_drawing_area_new(); + g_signal_connect(user_data->dlg.dialog_graph.draw_area, "destroy", G_CALLBACK(quit), user_data); + g_object_set_data(G_OBJECT(user_data->dlg.dialog_graph.draw_area), "user_data_t", user_data); - gtk_widget_set_size_request(user_data->dlg.dialog_graph.draw_area, user_data->dlg.dialog_graph.pixmap_width, user_data->dlg.dialog_graph.pixmap_height); + gtk_widget_set_size_request(user_data->dlg.dialog_graph.draw_area, user_data->dlg.dialog_graph.pixmap_width, user_data->dlg.dialog_graph.pixmap_height); - /* signals needed to handle backing pixmap */ - g_signal_connect(user_data->dlg.dialog_graph.draw_area, "expose_event", G_CALLBACK(expose_event), NULL); - g_signal_connect(user_data->dlg.dialog_graph.draw_area, "configure_event", G_CALLBACK(configure_event), user_data); + /* signals needed to handle backing pixmap */ + g_signal_connect(user_data->dlg.dialog_graph.draw_area, "expose_event", G_CALLBACK(expose_event), NULL); + g_signal_connect(user_data->dlg.dialog_graph.draw_area, "configure_event", G_CALLBACK(configure_event), user_data); - gtk_widget_show(user_data->dlg.dialog_graph.draw_area); - gtk_box_pack_start(GTK_BOX(box), user_data->dlg.dialog_graph.draw_area, TRUE, TRUE, 0); + gtk_widget_show(user_data->dlg.dialog_graph.draw_area); + gtk_box_pack_start(GTK_BOX(box), user_data->dlg.dialog_graph.draw_area, TRUE, TRUE, 0); - /* create the associated scrollbar */ - user_data->dlg.dialog_graph.scrollbar_adjustment=(GtkAdjustment *)gtk_adjustment_new(0,0,0,0,0,0); - user_data->dlg.dialog_graph.scrollbar=gtk_hscrollbar_new(user_data->dlg.dialog_graph.scrollbar_adjustment); - gtk_widget_show(user_data->dlg.dialog_graph.scrollbar); - gtk_box_pack_start(GTK_BOX(box), user_data->dlg.dialog_graph.scrollbar, FALSE, FALSE, 0); - g_signal_connect(user_data->dlg.dialog_graph.scrollbar_adjustment, "value_changed", G_CALLBACK(scrollbar_changed), user_data); + /* create the associated scrollbar */ + user_data->dlg.dialog_graph.scrollbar_adjustment=(GtkAdjustment *)gtk_adjustment_new(0,0,0,0,0,0); + user_data->dlg.dialog_graph.scrollbar=gtk_hscrollbar_new(user_data->dlg.dialog_graph.scrollbar_adjustment); + gtk_widget_show(user_data->dlg.dialog_graph.scrollbar); + gtk_box_pack_start(GTK_BOX(box), user_data->dlg.dialog_graph.scrollbar, FALSE, FALSE, 0); + g_signal_connect(user_data->dlg.dialog_graph.scrollbar_adjustment, "value_changed", G_CALLBACK(scrollbar_changed), user_data); } /****************************************************************************/ static void disable_graph(dialog_graph_graph_t *dgg) { - if (dgg->display) { - dgg->display=FALSE; - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(dgg->display_button), - FALSE); - } + if (dgg->display) { + dgg->display=FALSE; + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(dgg->display_button), + FALSE); + } } /****************************************************************************/ static gint filter_callback(GtkWidget *widget _U_, dialog_graph_graph_t *dgg) { - /* this graph is not active, just update display and redraw */ - if(!gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(dgg->display_button))){ - disable_graph(dgg); - dialog_graph_redraw(dgg->ud); + /* this graph is not active, just update display and redraw */ + if(!gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(dgg->display_button))){ + disable_graph(dgg); + dialog_graph_redraw(dgg->ud); return 0; - } + } enable_graph(dgg); - cf_retap_packets(&cfile, FALSE); - dialog_graph_redraw(dgg->ud); + cf_retap_packets(&cfile, FALSE); + dialog_graph_redraw(dgg->ud); - return 0; + return 0; } /****************************************************************************/ static void create_filter_box(dialog_graph_graph_t *dgg, GtkWidget *box, int num) { - GtkWidget *hbox; - GtkWidget *label; - char str[256]; + GtkWidget *hbox; + GtkWidget *label; + char str[256]; - hbox=gtk_hbox_new(FALSE, 3); - gtk_container_add(GTK_CONTAINER(box), hbox); - gtk_box_set_child_packing(GTK_BOX(box), hbox, FALSE, FALSE, 0, GTK_PACK_START); - gtk_widget_show(hbox); + hbox=gtk_hbox_new(FALSE, 3); + gtk_container_add(GTK_CONTAINER(box), hbox); + gtk_box_set_child_packing(GTK_BOX(box), hbox, FALSE, FALSE, 0, GTK_PACK_START); + gtk_widget_show(hbox); - g_snprintf(str, 256, "Graph %d", num); + g_snprintf(str, sizeof(str), "Graph %d", num); dgg->display_button=gtk_toggle_button_new_with_label(str); - gtk_box_pack_start(GTK_BOX(hbox), dgg->display_button, FALSE, FALSE, 0); - gtk_widget_show(dgg->display_button); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(dgg->display_button), dgg->display); - g_signal_connect(dgg->display_button, "toggled", G_CALLBACK(filter_callback), dgg); + gtk_box_pack_start(GTK_BOX(hbox), dgg->display_button, FALSE, FALSE, 0); + gtk_widget_show(dgg->display_button); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(dgg->display_button), dgg->display); + g_signal_connect(dgg->display_button, "toggled", G_CALLBACK(filter_callback), dgg); label=gtk_label_new(dgg->title); - gtk_widget_show(label); - gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); + gtk_widget_show(label); + gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); - gtk_widget_modify_fg(label, GTK_STATE_NORMAL, &dgg->color); - gtk_widget_modify_fg(label, GTK_STATE_ACTIVE, &dgg->color); - gtk_widget_modify_fg(label, GTK_STATE_PRELIGHT, &dgg->color); - gtk_widget_modify_fg(label, GTK_STATE_SELECTED, &dgg->color); - gtk_widget_modify_fg(label, GTK_STATE_INSENSITIVE, &dgg->color); + gtk_widget_modify_fg(label, GTK_STATE_NORMAL, &dgg->color); + gtk_widget_modify_fg(label, GTK_STATE_ACTIVE, &dgg->color); + gtk_widget_modify_fg(label, GTK_STATE_PRELIGHT, &dgg->color); + gtk_widget_modify_fg(label, GTK_STATE_SELECTED, &dgg->color); + gtk_widget_modify_fg(label, GTK_STATE_INSENSITIVE, &dgg->color); - return; + return; } /****************************************************************************/ static void create_filter_area(user_data_t* user_data, GtkWidget *box) { - GtkWidget *frame; - GtkWidget *vbox; + GtkWidget *frame; + GtkWidget *vbox; int i; GtkWidget *label; - frame=gtk_frame_new("Graphs"); - gtk_container_add(GTK_CONTAINER(box), frame); - gtk_widget_show(frame); + frame=gtk_frame_new("Graphs"); + gtk_container_add(GTK_CONTAINER(box), frame); + gtk_widget_show(frame); - vbox=gtk_vbox_new(FALSE, 1); - gtk_container_add(GTK_CONTAINER(frame), vbox); - gtk_container_set_border_width(GTK_CONTAINER(vbox), 3); - gtk_box_set_child_packing(GTK_BOX(box), vbox, FALSE, FALSE, 0, GTK_PACK_START); - gtk_widget_show(vbox); + vbox=gtk_vbox_new(FALSE, 1); + gtk_container_add(GTK_CONTAINER(frame), vbox); + gtk_container_set_border_width(GTK_CONTAINER(vbox), 3); + gtk_box_set_child_packing(GTK_BOX(box), vbox, FALSE, FALSE, 0, GTK_PACK_START); + gtk_widget_show(vbox); for(i=0;idlg.dialog_graph.graph[i], vbox, i+1); } - label=gtk_label_new("Label: x = Wrong Seq. number m = Mark set"); + label=gtk_label_new("Label: x = Wrong Seq. number m = Mark set"); gtk_widget_show(label); gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0); - return; + return; } /****************************************************************************/ static void yscale_select(GtkWidget *item, gpointer key) { - int val; + int val; user_data_t *user_data; - user_data=(user_data_t *)key; - val=(long)g_object_get_data(G_OBJECT(item), "yscale_max"); + user_data=(user_data_t *)key; + val=(long)g_object_get_data(G_OBJECT(item), "yscale_max"); - user_data->dlg.dialog_graph.max_y_units=val; - dialog_graph_redraw(user_data); + user_data->dlg.dialog_graph.max_y_units=val; + dialog_graph_redraw(user_data); } /****************************************************************************/ static void pixels_per_tick_select(GtkWidget *item, gpointer key) { - int val; - user_data_t *user_data; + int val; + user_data_t *user_data; - user_data=(user_data_t *)key; - val=(long)g_object_get_data(G_OBJECT(item), "pixels_per_tick"); - user_data->dlg.dialog_graph.pixels_per_tick=val; - dialog_graph_redraw(user_data); + user_data=(user_data_t *)key; + val=(long)g_object_get_data(G_OBJECT(item), "pixels_per_tick"); + user_data->dlg.dialog_graph.pixels_per_tick=val; + dialog_graph_redraw(user_data); } /****************************************************************************/ static void tick_interval_select(GtkWidget *item, gpointer key) { - int val; - user_data_t *user_data; + int val; + user_data_t *user_data; - user_data=(user_data_t *)key; - val=(long)g_object_get_data(G_OBJECT(item), "tick_interval"); + user_data=(user_data_t *)key; + val=(long)g_object_get_data(G_OBJECT(item), "tick_interval"); - user_data->dlg.dialog_graph.interval=val; - cf_retap_packets(&cfile, FALSE); - dialog_graph_redraw(user_data); + user_data->dlg.dialog_graph.interval=val; + cf_retap_packets(&cfile, FALSE); + dialog_graph_redraw(user_data); } /****************************************************************************/ static void create_yscale_max_menu_items(user_data_t* user_data, GtkWidget *menu) { - char str[15]; - GtkWidget *menu_item; - int i; + char str[15]; + GtkWidget *menu_item; + int i; - for(i=0;i=1000){ - g_snprintf(str, 15, "%u sec", tick_interval_values[i]/1000); - } else if(tick_interval_values[i]>=100){ - g_snprintf(str, 15, "0.%1u sec", (tick_interval_values[i]/100)%10); - } else if(tick_interval_values[i]>=10){ - g_snprintf(str, 15, "0.%02u sec", (tick_interval_values[i]/10)%10); - } else { - g_snprintf(str, 15, "0.%03u sec", (tick_interval_values[i])%10); - } + for(i=0;i=1000){ + g_snprintf(str, sizeof(str), "%u sec", tick_interval_values[i]/1000); + } else if(tick_interval_values[i]>=100){ + g_snprintf(str, sizeof(str), "0.%1u sec", (tick_interval_values[i]/100)%10); + } else if(tick_interval_values[i]>=10){ + g_snprintf(str, sizeof(str), "0.%02u sec", (tick_interval_values[i]/10)%10); + } else { + g_snprintf(str, sizeof(str), "0.%03u sec", (tick_interval_values[i])%10); + } - menu_item=gtk_menu_item_new_with_label(str); - g_object_set_data(G_OBJECT(menu_item), "tick_interval", - GUINT_TO_POINTER(tick_interval_values[i])); - g_signal_connect(menu_item, "activate", G_CALLBACK(tick_interval_select), (gpointer)user_data); - gtk_widget_show(menu_item); - gtk_menu_shell_append(GTK_MENU_SHELL(menu), menu_item); - } - gtk_menu_set_active(GTK_MENU(menu), DEFAULT_TICK_VALUE); - return; + menu_item=gtk_menu_item_new_with_label(str); + g_object_set_data(G_OBJECT(menu_item), "tick_interval", + GUINT_TO_POINTER(tick_interval_values[i])); + g_signal_connect(menu_item, "activate", G_CALLBACK(tick_interval_select), (gpointer)user_data); + gtk_widget_show(menu_item); + gtk_menu_shell_append(GTK_MENU_SHELL(menu), menu_item); + } + gtk_menu_set_active(GTK_MENU(menu), DEFAULT_TICK_VALUE); + return; } /****************************************************************************/ static void create_ctrl_menu(user_data_t* user_data, GtkWidget *box, const char *name, void (*func)(user_data_t* user_data, GtkWidget *menu)) { - GtkWidget *hbox; - GtkWidget *label; - GtkWidget *option_menu; - GtkWidget *menu; + GtkWidget *hbox; + GtkWidget *label; + GtkWidget *option_menu; + GtkWidget *menu; - hbox=gtk_hbox_new(FALSE, 0); - gtk_container_add(GTK_CONTAINER(box), hbox); - gtk_box_set_child_packing(GTK_BOX(box), hbox, FALSE, FALSE, 0, GTK_PACK_START); - gtk_widget_show(hbox); + hbox=gtk_hbox_new(FALSE, 0); + gtk_container_add(GTK_CONTAINER(box), hbox); + gtk_box_set_child_packing(GTK_BOX(box), hbox, FALSE, FALSE, 0, GTK_PACK_START); + gtk_widget_show(hbox); - label=gtk_label_new(name); - gtk_widget_show(label); - gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); + label=gtk_label_new(name); + gtk_widget_show(label); + gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); - option_menu=gtk_option_menu_new(); - menu=gtk_menu_new(); - (*func)(user_data, menu); - gtk_option_menu_set_menu(GTK_OPTION_MENU(option_menu), menu); - gtk_box_pack_end(GTK_BOX(hbox), option_menu, FALSE, FALSE, 0); - gtk_widget_show(option_menu); + option_menu=gtk_option_menu_new(); + menu=gtk_menu_new(); + (*func)(user_data, menu); + gtk_option_menu_set_menu(GTK_OPTION_MENU(option_menu), menu); + gtk_box_pack_end(GTK_BOX(hbox), option_menu, FALSE, FALSE, 0); + gtk_widget_show(option_menu); } /****************************************************************************/ static void create_ctrl_area(user_data_t* user_data, GtkWidget *box) { GtkWidget *frame_vbox; - GtkWidget *frame; - GtkWidget *vbox; + GtkWidget *frame; + GtkWidget *vbox; - frame_vbox=gtk_vbox_new(FALSE, 0); - gtk_container_add(GTK_CONTAINER(box), frame_vbox); - gtk_widget_show(frame_vbox); + frame_vbox=gtk_vbox_new(FALSE, 0); + gtk_container_add(GTK_CONTAINER(box), frame_vbox); + gtk_widget_show(frame_vbox); frame = gtk_frame_new("X Axis"); - gtk_container_add(GTK_CONTAINER(frame_vbox), frame); - gtk_widget_show(frame); + gtk_container_add(GTK_CONTAINER(frame_vbox), frame); + gtk_widget_show(frame); - vbox=gtk_vbox_new(FALSE, 0); - gtk_container_add(GTK_CONTAINER(frame), vbox); + vbox=gtk_vbox_new(FALSE, 0); + gtk_container_add(GTK_CONTAINER(frame), vbox); gtk_container_set_border_width(GTK_CONTAINER(vbox), 3); - gtk_box_set_child_packing(GTK_BOX(box), vbox, FALSE, FALSE, 0, GTK_PACK_END); - gtk_widget_show(vbox); + gtk_box_set_child_packing(GTK_BOX(box), vbox, FALSE, FALSE, 0, GTK_PACK_END); + gtk_widget_show(vbox); - create_ctrl_menu(user_data, vbox, "Tick interval:", create_tick_interval_menu_items); - create_ctrl_menu(user_data, vbox, "Pixels per tick:", create_pixels_per_tick_menu_items); + create_ctrl_menu(user_data, vbox, "Tick interval:", create_tick_interval_menu_items); + create_ctrl_menu(user_data, vbox, "Pixels per tick:", create_pixels_per_tick_menu_items); - frame = gtk_frame_new("Y Axis"); - gtk_container_add(GTK_CONTAINER(frame_vbox), frame); - gtk_widget_show(frame); + frame = gtk_frame_new("Y Axis"); + gtk_container_add(GTK_CONTAINER(frame_vbox), frame); + gtk_widget_show(frame); - vbox=gtk_vbox_new(FALSE, 0); - gtk_container_add(GTK_CONTAINER(frame), vbox); - gtk_container_set_border_width(GTK_CONTAINER(vbox), 3); - gtk_box_set_child_packing(GTK_BOX(box), vbox, FALSE, FALSE, 0, GTK_PACK_END); - gtk_widget_show(vbox); + vbox=gtk_vbox_new(FALSE, 0); + gtk_container_add(GTK_CONTAINER(frame), vbox); + gtk_container_set_border_width(GTK_CONTAINER(vbox), 3); + gtk_box_set_child_packing(GTK_BOX(box), vbox, FALSE, FALSE, 0, GTK_PACK_END); + gtk_widget_show(vbox); - create_ctrl_menu(user_data, vbox, "Scale:", create_yscale_max_menu_items); + create_ctrl_menu(user_data, vbox, "Scale:", create_yscale_max_menu_items); - return; + return; } /****************************************************************************/ static void dialog_graph_init_window(user_data_t* user_data) { - GtkWidget *vbox; - GtkWidget *hbox; - GtkWidget *bt_close; + GtkWidget *vbox; + GtkWidget *hbox; + GtkWidget *bt_close; - /* create the main window */ - user_data->dlg.dialog_graph.window=window_new(GTK_WINDOW_TOPLEVEL, "I/O Graphs"); + /* create the main window */ + user_data->dlg.dialog_graph.window=window_new(GTK_WINDOW_TOPLEVEL, "I/O Graphs"); - vbox=gtk_vbox_new(FALSE, 0); - gtk_container_add(GTK_CONTAINER(user_data->dlg.dialog_graph.window), vbox); - gtk_widget_show(vbox); + vbox=gtk_vbox_new(FALSE, 0); + gtk_container_add(GTK_CONTAINER(user_data->dlg.dialog_graph.window), vbox); + gtk_widget_show(vbox); - create_draw_area(user_data, vbox); + create_draw_area(user_data, vbox); - hbox=gtk_hbox_new(FALSE, 3); - gtk_box_pack_end(GTK_BOX(vbox), hbox, FALSE, FALSE, 5); - gtk_container_set_border_width(GTK_CONTAINER(hbox), 3); - gtk_box_set_child_packing(GTK_BOX(vbox), hbox, FALSE, FALSE, 0, GTK_PACK_START); - gtk_widget_show(hbox); + hbox=gtk_hbox_new(FALSE, 3); + gtk_box_pack_end(GTK_BOX(vbox), hbox, FALSE, FALSE, 5); + gtk_container_set_border_width(GTK_CONTAINER(hbox), 3); + gtk_box_set_child_packing(GTK_BOX(vbox), hbox, FALSE, FALSE, 0, GTK_PACK_START); + gtk_widget_show(hbox); - create_filter_area(user_data, hbox); - create_ctrl_area(user_data, hbox); + create_filter_area(user_data, hbox); + create_ctrl_area(user_data, hbox); - dialog_graph_set_title(user_data); + dialog_graph_set_title(user_data); hbox = dlg_button_row_new(GTK_STOCK_CLOSE, NULL); - gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); + gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); gtk_widget_show(hbox); bt_close = g_object_get_data(G_OBJECT(hbox), GTK_STOCK_CLOSE); @@ -1786,11 +1791,11 @@ static void dialog_graph_init_window(user_data_t* user_data) /****************************************************************************/ static void on_graph_bt_clicked(GtkWidget *bt _U_, user_data_t *user_data _U_) { - if (user_data->dlg.dialog_graph.window != NULL) { - /* There's already a graph window; reactivate it. */ - reactivate_window(user_data->dlg.dialog_graph.window); - return; - } + if (user_data->dlg.dialog_graph.window != NULL) { + /* There's already a graph window; reactivate it. */ + reactivate_window(user_data->dlg.dialog_graph.window); + return; + } dialog_graph_init_window(user_data); @@ -2124,7 +2129,7 @@ static void save_csv_as_cb(GtkWidget *bt _U_, user_data_t *user_data _U_) (GtkAttachOptions) (0), 0, 0); gtk_misc_set_alignment (GTK_MISC (channels_label), 0, 0.5); - forward_rb = gtk_radio_button_new_with_label (channels_group, "forward "); + forward_rb = gtk_radio_button_new_with_label (channels_group, "forward "); channels_group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (forward_rb)); gtk_widget_show (forward_rb); gtk_table_attach (GTK_TABLE (table1), forward_rb, 1, 2, 1, 2, @@ -2656,14 +2661,14 @@ static void on_save_bt_clicked(GtkWidget *bt _U_, user_data_t *user_data _U_) return; } - /* XXX - use file_selection from dlg_utils instead! */ + /* XXX - use file_selection from dlg_utils instead! */ user_data->dlg.save_voice_as_w = gtk_file_selection_new("Wireshark: Save Payload As ..."); /* Container for each row of widgets */ vertb = gtk_vbox_new(FALSE, 0); gtk_container_set_border_width(GTK_CONTAINER(vertb), 5); gtk_box_pack_start(GTK_BOX(GTK_FILE_SELECTION(user_data->dlg.save_voice_as_w)->action_area), - vertb, FALSE, FALSE, 0); + vertb, FALSE, FALSE, 0); gtk_widget_show (vertb); table1 = gtk_table_new (2, 4, FALSE); @@ -2672,17 +2677,18 @@ static void on_save_bt_clicked(GtkWidget *bt _U_, user_data_t *user_data _U_) gtk_container_set_border_width (GTK_CONTAINER (table1), 10); gtk_table_set_row_spacings (GTK_TABLE (table1), 20); - /*label_format = gtk_label_new ("Format: .au (ulaw, 8 bit, 8000 Hz, mono) "); +#if 0 + label_format = gtk_label_new ("Format: .au (ulaw, 8 bit, 8000 Hz, mono) "); gtk_widget_show (label_format); gtk_table_attach (GTK_TABLE (table1), label_format, 0, 3, 0, 1, - (GtkAttachOptions) (GTK_FILL), - (GtkAttachOptions) (0), 0, 0);*/ - + (GtkAttachOptions) (GTK_FILL), + (GtkAttachOptions) (0), 0, 0); +#endif label_format = gtk_label_new ("Format: "); gtk_widget_show (label_format); gtk_table_attach (GTK_TABLE (table1), label_format, 0, 3, 0, 1, - (GtkAttachOptions) (GTK_FILL), - (GtkAttachOptions) (0), 0, 0); + (GtkAttachOptions) (GTK_FILL), + (GtkAttachOptions) (0), 0, 0); gtk_misc_set_alignment (GTK_MISC (label_format), 0, 0.5); @@ -2690,84 +2696,86 @@ static void on_save_bt_clicked(GtkWidget *bt _U_, user_data_t *user_data _U_) format_group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (raw_rb)); gtk_widget_show (raw_rb); gtk_table_attach (GTK_TABLE (table1), raw_rb, 1, 2, 0, 1, - (GtkAttachOptions) (GTK_FILL), - (GtkAttachOptions) (0), 0, 0); + (GtkAttachOptions) (GTK_FILL), + (GtkAttachOptions) (0), 0, 0); au_rb = gtk_radio_button_new_with_label (format_group, ".au"); format_group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (au_rb)); gtk_widget_show (au_rb); gtk_table_attach (GTK_TABLE (table1), au_rb, 3, 4, 0, 1, - (GtkAttachOptions) (GTK_FILL), - (GtkAttachOptions) (0), 0, 0); + (GtkAttachOptions) (GTK_FILL), + (GtkAttachOptions) (0), 0, 0); /* we support .au - ulaw*/ - /* wav_rb = gtk_radio_button_new_with_label (format_group, ".wav"); +#if 0 + wav_rb = gtk_radio_button_new_with_label (format_group, ".wav"); format_group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (wav_rb)); gtk_widget_show (wav_rb); gtk_table_attach (GTK_TABLE (table1), wav_rb, 1, 2, 0, 1, - (GtkAttachOptions) (GTK_FILL), - (GtkAttachOptions) (0), 0, 0); + (GtkAttachOptions) (GTK_FILL), + (GtkAttachOptions) (0), 0, 0); - sw_rb = gtk_radio_button_new_with_label (format_group, "8 kHz, 16 bit "); - format_group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (sw_rb)); - gtk_widget_show (sw_rb); - gtk_table_attach (GTK_TABLE (table1), sw_rb, 2, 3, 0, 1, - (GtkAttachOptions) (GTK_FILL), - (GtkAttachOptions) (0), 0, 0); - au_rb = gtk_radio_button_new_with_label (format_group, ".au"); - format_group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (au_rb)); - gtk_widget_show (au_rb); - gtk_table_attach (GTK_TABLE (table1), au_rb, 3, 4, 0, 1, - (GtkAttachOptions) (GTK_FILL), - (GtkAttachOptions) (0), 0, 0); - */ + sw_rb = gtk_radio_button_new_with_label (format_group, "8 kHz, 16 bit "); + format_group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (sw_rb)); + gtk_widget_show (sw_rb); + gtk_table_attach (GTK_TABLE (table1), sw_rb, 2, 3, 0, 1, + (GtkAttachOptions) (GTK_FILL), + (GtkAttachOptions) (0), 0, 0); + au_rb = gtk_radio_button_new_with_label (format_group, ".au"); + format_group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (au_rb)); + gtk_widget_show (au_rb); + gtk_table_attach (GTK_TABLE (table1), au_rb, 3, 4, 0, 1, + (GtkAttachOptions) (GTK_FILL), + (GtkAttachOptions) (0), 0, 0); +#endif channels_label = gtk_label_new ("Channels:"); gtk_widget_show (channels_label); gtk_table_attach (GTK_TABLE (table1), channels_label, 0, 1, 1, 2, - (GtkAttachOptions) (GTK_FILL), - (GtkAttachOptions) (0), 0, 0); + (GtkAttachOptions) (GTK_FILL), + (GtkAttachOptions) (0), 0, 0); gtk_misc_set_alignment (GTK_MISC (channels_label), 0, 0.5); - forward_rb = gtk_radio_button_new_with_label (channels_group, "forward "); + forward_rb = gtk_radio_button_new_with_label (channels_group, "forward "); channels_group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (forward_rb)); gtk_widget_show (forward_rb); gtk_table_attach (GTK_TABLE (table1), forward_rb, 1, 2, 1, 2, - (GtkAttachOptions) (GTK_FILL), - (GtkAttachOptions) (0), 0, 0); + (GtkAttachOptions) (GTK_FILL), + (GtkAttachOptions) (0), 0, 0); reversed_rb = gtk_radio_button_new_with_label (channels_group, "reversed"); channels_group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (reversed_rb)); gtk_widget_show (reversed_rb); gtk_table_attach (GTK_TABLE (table1), reversed_rb, 2, 3, 1, 2, - (GtkAttachOptions) (GTK_FILL), - (GtkAttachOptions) (0), 0, 0); + (GtkAttachOptions) (GTK_FILL), + (GtkAttachOptions) (0), 0, 0); both_rb = gtk_radio_button_new_with_label (channels_group, "both"); channels_group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (both_rb)); gtk_widget_show (both_rb); gtk_table_attach (GTK_TABLE (table1), both_rb, 3, 4, 1, 2, - (GtkAttachOptions) (GTK_FILL), - (GtkAttachOptions) (0), 0, 0); + (GtkAttachOptions) (GTK_FILL), + (GtkAttachOptions) (0), 0, 0); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(both_rb), TRUE); +#if 0 /* if one direction is nok we don't allow saving XXX this is not ok since the user can click the refresh button and cause changes but we can not update this window. So we move all the decision on the time the ok - button is clicked + button is clicked */ if (user_data->forward.saved == FALSE) { - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(reversed_rb), TRUE); - gtk_widget_set_sensitive(forward_rb, FALSE); - gtk_widget_set_sensitive(both_rb, FALSE); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(reversed_rb), TRUE); + gtk_widget_set_sensitive(forward_rb, FALSE); + gtk_widget_set_sensitive(both_rb, FALSE); } else if (user_data->reversed.saved == FALSE) { - gtk_widget_set_sensitive(reversed_rb, FALSE); - gtk_widget_set_sensitive(both_rb, FALSE); + gtk_widget_set_sensitive(reversed_rb, FALSE); + gtk_widget_set_sensitive(both_rb, FALSE); } - */ +#endif ok_bt = GTK_FILE_SELECTION(user_data->dlg.save_voice_as_w)->ok_button; /*g_object_set_data(G_OBJECT(ok_bt), "wav_rb", wav_rb);*/ @@ -2779,18 +2787,18 @@ static void on_save_bt_clicked(GtkWidget *bt _U_, user_data_t *user_data _U_) g_object_set_data(G_OBJECT(ok_bt), "both_rb", both_rb); g_object_set_data(G_OBJECT(ok_bt), "user_data", user_data); g_signal_connect(ok_bt, "clicked", G_CALLBACK(save_voice_as_ok_cb), - user_data->dlg.save_voice_as_w); + user_data->dlg.save_voice_as_w); - window_set_cancel_button(user_data->dlg.save_voice_as_w, - GTK_FILE_SELECTION(user_data->dlg.save_voice_as_w)->cancel_button, window_cancel_button_cb); + window_set_cancel_button(user_data->dlg.save_voice_as_w, + GTK_FILE_SELECTION(user_data->dlg.save_voice_as_w)->cancel_button, window_cancel_button_cb); - g_signal_connect(user_data->dlg.save_voice_as_w, "delete_event", - G_CALLBACK(window_delete_event_cb), NULL); + g_signal_connect(user_data->dlg.save_voice_as_w, "delete_event", + G_CALLBACK(window_delete_event_cb), NULL); g_signal_connect(user_data->dlg.save_voice_as_w, "destroy", - G_CALLBACK(save_voice_as_destroy_cb), user_data); + G_CALLBACK(save_voice_as_destroy_cb), user_data); gtk_widget_show(user_data->dlg.save_voice_as_w); - window_present(user_data->dlg.save_voice_as_w); + window_present(user_data->dlg.save_voice_as_w); } @@ -2800,13 +2808,13 @@ static void draw_stat(user_data_t *user_data) { gchar label_max[200]; - g_snprintf(label_max, 199, "Total IAX2 packets = %u Max delta = %f sec at packet no. %u", + g_snprintf(label_max, sizeof(label_max), "Total IAX2 packets = %u Max delta = %f sec at packet no. %u", user_data->forward.statinfo.total_nr, user_data->forward.statinfo.max_delta, user_data->forward.statinfo.max_nr); gtk_label_set_text(GTK_LABEL(user_data->dlg.label_stats_fwd), label_max); - g_snprintf(label_max, 199, "Total IAX2 packets = %u Max delta = %f sec at packet no. %u", + g_snprintf(label_max, sizeof(label_max), "Total IAX2 packets = %u Max delta = %f sec at packet no. %u", user_data->reversed.statinfo.total_nr, user_data->reversed.statinfo.max_delta, user_data->reversed.statinfo.max_nr); @@ -2820,16 +2828,16 @@ static void draw_stat(user_data_t *user_data) /****************************************************************************/ /* append a line to list */ static void add_to_list(GtkWidget *list, user_data_t * user_data, guint32 number, - double delta, double jitter, double bandwidth, gchar *status, - gchar *timeStr, guint32 pkt_len, gchar *color_str, guint32 flags) + double delta, double jitter, double bandwidth, gchar *status, + gchar *timeStr, guint32 pkt_len, gchar *color_str, guint32 flags) { - GtkListStore *list_store; + GtkListStore *list_store; if (strcmp(status, OK_TEXT) != 0) { user_data->dlg.number_of_nok++; } - list_store = GTK_LIST_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW (list))); /* Get store */ + list_store = GTK_LIST_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW (list))); /* Get store */ /* Creates a new row at position. iter will be changed to point to this new row. * If position is larger than the number of rows on the list, then the new row will be appended to the list. @@ -2839,21 +2847,31 @@ static void add_to_list(GtkWidget *list, user_data_t * user_data, guint32 number */ #if GTK_CHECK_VERSION(2,6,0) gtk_list_store_insert_with_values( list_store , &user_data->dlg.iter, G_MAXINT, + PACKET_COLUMN, number, + DELTA_COLUMN, delta, + JITTER_COLUMN, jitter, + IPBW_COLUMN, bandwidth, + STATUS_COLUMN, (char *)status, + DATE_COLUMN, (char *)timeStr, + LENGTH_COLUMN, pkt_len, + FOREGROUND_COLOR_COL, NULL, + BACKGROUND_COLOR_COL, (char *)color_str, + -1); + #else gtk_list_store_append (list_store, &user_data->dlg.iter); gtk_list_store_set (list_store, &user_data->dlg.iter, + PACKET_COLUMN, number, + DELTA_COLUMN, delta, + JITTER_COLUMN, jitter, + IPBW_COLUMN, bandwidth, + STATUS_COLUMN, (char *)status, + DATE_COLUMN, (char *)timeStr, + LENGTH_COLUMN, pkt_len, + FOREGROUND_COLOR_COL, NULL, + BACKGROUND_COLOR_COL, (char *)color_str, + -1); #endif - PACKET_COLUMN, number, - DELTA_COLUMN, delta, - JITTER_COLUMN, jitter, - IPBW_COLUMN, bandwidth, - STATUS_COLUMN, (char *)status, - DATE_COLUMN, (char *)timeStr, - LENGTH_COLUMN, pkt_len, - FOREGROUND_COLOR_COL, NULL, - BACKGROUND_COLOR_COL, (char *)color_str, - -1); - if(flags & STAT_FLAG_FIRST){ /* Set first row as active */ gtk_tree_selection_select_iter(gtk_tree_view_get_selection(GTK_TREE_VIEW(list)), &user_data->dlg.iter); @@ -2861,39 +2879,39 @@ static void add_to_list(GtkWidget *list, user_data_t * user_data, guint32 number } /**************************************************************************** -* Functions needed to present values from the list -*/ + * Functions needed to present values from the list + */ /* Present floats with two decimals */ void iax2_float_data_func (GtkTreeViewColumn *column _U_, - GtkCellRenderer *renderer, - GtkTreeModel *model, - GtkTreeIter *iter, - gpointer user_data) - { - gfloat float_val; - gchar buf[20]; - char *savelocale; + GtkCellRenderer *renderer, + GtkTreeModel *model, + GtkTreeIter *iter, + gpointer user_data) +{ + gfloat float_val; + gchar buf[20]; + char *savelocale; - /* the col to get data from is in userdata */ - gint float_col = GPOINTER_TO_INT(user_data); + /* the col to get data from is in userdata */ + gint float_col = GPOINTER_TO_INT(user_data); - gtk_tree_model_get(model, iter, float_col, &float_val, -1); + gtk_tree_model_get(model, iter, float_col, &float_val, -1); - /* save the current locale */ - savelocale = setlocale(LC_NUMERIC, NULL); - /* switch to "C" locale to avoid problems with localized decimal separators - * in g_snprintf("%f") functions - */ - setlocale(LC_NUMERIC, "C"); + /* save the current locale */ + savelocale = setlocale(LC_NUMERIC, NULL); + /* switch to "C" locale to avoid problems with localized decimal separators + * in g_snprintf("%f") functions + */ + setlocale(LC_NUMERIC, "C"); - g_snprintf(buf, sizeof(buf), "%.2f", float_val); - /* restore previous locale setting */ - setlocale(LC_NUMERIC, savelocale); + g_snprintf(buf, sizeof(buf), "%.2f", float_val); + /* restore previous locale setting */ + setlocale(LC_NUMERIC, savelocale); - g_object_set(renderer, "text", buf, NULL); - } + g_object_set(renderer, "text", buf, NULL); +} /* Create list */ @@ -2901,28 +2919,28 @@ static GtkWidget* create_list(user_data_t* user_data) { - GtkListStore *list_store; - GtkWidget *list; - GtkTreeViewColumn *column; - GtkCellRenderer *renderer; - GtkTreeSortable *sortable; + GtkListStore *list_store; + GtkWidget *list; + GtkTreeViewColumn *column; + GtkCellRenderer *renderer; + GtkTreeSortable *sortable; GtkTreeView *list_view; GtkTreeSelection *selection; /* Create the store */ - list_store = gtk_list_store_new(N_COLUMN, /* Total number of columns XXX*/ - G_TYPE_UINT, /* Packet */ - G_TYPE_FLOAT, /* Delta(ms) */ - G_TYPE_FLOAT, /* Jitter(ms) */ - G_TYPE_FLOAT, /* IP BW(kbps) */ - G_TYPE_STRING, /* Status */ - G_TYPE_STRING, /* Date */ - G_TYPE_UINT, /* Length */ - G_TYPE_STRING, /* Foreground color */ - G_TYPE_STRING); /* Background color */ + list_store = gtk_list_store_new(N_COLUMN, /* Total number of columns XXX*/ + G_TYPE_UINT, /* Packet */ + G_TYPE_FLOAT, /* Delta(ms) */ + G_TYPE_FLOAT, /* Jitter(ms) */ + G_TYPE_FLOAT, /* IP BW(kbps) */ + G_TYPE_STRING, /* Status */ + G_TYPE_STRING, /* Date */ + G_TYPE_UINT, /* Length */ + G_TYPE_STRING, /* Foreground color */ + G_TYPE_STRING); /* Background color */ - /* Create a view */ - list = gtk_tree_view_new_with_model (GTK_TREE_MODEL (list_store)); + /* Create a view */ + list = gtk_tree_view_new_with_model (GTK_TREE_MODEL (list_store)); list_view = GTK_TREE_VIEW(list); sortable = GTK_TREE_SORTABLE(list_store); @@ -2932,121 +2950,121 @@ GtkWidget* create_list(user_data_t* user_data) gtk_tree_view_set_fixed_height_mode(list_view, TRUE); #endif - /* Setup the sortable columns */ - gtk_tree_sortable_set_sort_column_id(sortable, PACKET_COLUMN, GTK_SORT_ASCENDING); - gtk_tree_view_set_headers_clickable(list_view, FALSE); + /* Setup the sortable columns */ + gtk_tree_sortable_set_sort_column_id(sortable, PACKET_COLUMN, GTK_SORT_ASCENDING); + gtk_tree_view_set_headers_clickable(list_view, FALSE); - /* The view now holds a reference. We can get rid of our own reference */ - g_object_unref (G_OBJECT (list_store)); + /* The view now holds a reference. We can get rid of our own reference */ + g_object_unref (G_OBJECT (list_store)); - /* + /* * Create the first column packet, associating the "text" attribute of the - * cell_renderer to the first column of the model + * cell_renderer to the first column of the model */ - renderer = gtk_cell_renderer_text_new (); - column = gtk_tree_view_column_new_with_attributes ("Packet", renderer, - "text", PACKET_COLUMN, - "foreground", FOREGROUND_COLOR_COL, - "background", BACKGROUND_COLOR_COL, - NULL); - gtk_tree_view_column_set_sort_column_id(column, PACKET_COLUMN); - gtk_tree_view_column_set_resizable(column, TRUE); - gtk_tree_view_column_set_sizing(column, GTK_TREE_VIEW_COLUMN_FIXED); - gtk_tree_view_column_set_min_width(column, 100); + renderer = gtk_cell_renderer_text_new (); + column = gtk_tree_view_column_new_with_attributes ("Packet", renderer, + "text", PACKET_COLUMN, + "foreground", FOREGROUND_COLOR_COL, + "background", BACKGROUND_COLOR_COL, + NULL); + gtk_tree_view_column_set_sort_column_id(column, PACKET_COLUMN); + gtk_tree_view_column_set_resizable(column, TRUE); + gtk_tree_view_column_set_sizing(column, GTK_TREE_VIEW_COLUMN_FIXED); + gtk_tree_view_column_set_min_width(column, 100); /* Add the column to the view. */ - gtk_tree_view_append_column (list_view, column); + gtk_tree_view_append_column (list_view, column); - /* Second column.. Delta(ms). */ - renderer = gtk_cell_renderer_text_new (); + /* Second column.. Delta(ms). */ + renderer = gtk_cell_renderer_text_new (); column = gtk_tree_view_column_new_with_attributes ("Delta(ms)", renderer, - "text", DELTA_COLUMN, - "foreground", FOREGROUND_COLOR_COL, - "background", BACKGROUND_COLOR_COL, - NULL); + "text", DELTA_COLUMN, + "foreground", FOREGROUND_COLOR_COL, + "background", BACKGROUND_COLOR_COL, + NULL); gtk_tree_view_column_set_cell_data_func(column, renderer, iax2_float_data_func, - GINT_TO_POINTER(DELTA_COLUMN), NULL); + GINT_TO_POINTER(DELTA_COLUMN), NULL); - gtk_tree_view_column_set_sort_column_id(column, DELTA_COLUMN); - gtk_tree_view_column_set_resizable(column, TRUE); - gtk_tree_view_column_set_sizing(column, GTK_TREE_VIEW_COLUMN_FIXED); - gtk_tree_view_column_set_min_width(column, 100); - gtk_tree_view_append_column (list_view, column); + gtk_tree_view_column_set_sort_column_id(column, DELTA_COLUMN); + gtk_tree_view_column_set_resizable(column, TRUE); + gtk_tree_view_column_set_sizing(column, GTK_TREE_VIEW_COLUMN_FIXED); + gtk_tree_view_column_set_min_width(column, 100); + gtk_tree_view_append_column (list_view, column); - /* Third column.. Jitter(ms). */ - renderer = gtk_cell_renderer_text_new (); - column = gtk_tree_view_column_new_with_attributes ("Jitter(ms)", renderer, - "text", JITTER_COLUMN, - "foreground", FOREGROUND_COLOR_COL, - "background", BACKGROUND_COLOR_COL, - NULL); + /* Third column.. Jitter(ms). */ + renderer = gtk_cell_renderer_text_new (); + column = gtk_tree_view_column_new_with_attributes ("Jitter(ms)", renderer, + "text", JITTER_COLUMN, + "foreground", FOREGROUND_COLOR_COL, + "background", BACKGROUND_COLOR_COL, + NULL); gtk_tree_view_column_set_cell_data_func(column, renderer, iax2_float_data_func, - GINT_TO_POINTER(JITTER_COLUMN), NULL); + GINT_TO_POINTER(JITTER_COLUMN), NULL); - gtk_tree_view_column_set_sort_column_id(column, JITTER_COLUMN); - gtk_tree_view_column_set_resizable(column, TRUE); - gtk_tree_view_column_set_sizing(column, GTK_TREE_VIEW_COLUMN_FIXED); - gtk_tree_view_column_set_min_width(column, 100); - gtk_tree_view_append_column (list_view, column); + gtk_tree_view_column_set_sort_column_id(column, JITTER_COLUMN); + gtk_tree_view_column_set_resizable(column, TRUE); + gtk_tree_view_column_set_sizing(column, GTK_TREE_VIEW_COLUMN_FIXED); + gtk_tree_view_column_set_min_width(column, 100); + gtk_tree_view_append_column (list_view, column); - /* Fourth column.. IP BW(kbps). */ - renderer = gtk_cell_renderer_text_new (); - column = gtk_tree_view_column_new_with_attributes ("IP BW(kbps)", renderer, - "text", IPBW_COLUMN, - "foreground", FOREGROUND_COLOR_COL, - "background", BACKGROUND_COLOR_COL, - NULL); + /* Fourth column.. IP BW(kbps). */ + renderer = gtk_cell_renderer_text_new (); + column = gtk_tree_view_column_new_with_attributes ("IP BW(kbps)", renderer, + "text", IPBW_COLUMN, + "foreground", FOREGROUND_COLOR_COL, + "background", BACKGROUND_COLOR_COL, + NULL); gtk_tree_view_column_set_cell_data_func(column, renderer, iax2_float_data_func, - GINT_TO_POINTER(IPBW_COLUMN), NULL); + GINT_TO_POINTER(IPBW_COLUMN), NULL); - gtk_tree_view_column_set_sort_column_id(column, IPBW_COLUMN); - gtk_tree_view_column_set_resizable(column, TRUE); - gtk_tree_view_column_set_sizing(column, GTK_TREE_VIEW_COLUMN_FIXED); - gtk_tree_view_column_set_min_width(column, 100); - gtk_tree_view_append_column (list_view, column); + gtk_tree_view_column_set_sort_column_id(column, IPBW_COLUMN); + gtk_tree_view_column_set_resizable(column, TRUE); + gtk_tree_view_column_set_sizing(column, GTK_TREE_VIEW_COLUMN_FIXED); + gtk_tree_view_column_set_min_width(column, 100); + gtk_tree_view_append_column (list_view, column); - /* Fifth column.. Status. */ - renderer = gtk_cell_renderer_text_new (); - column = gtk_tree_view_column_new_with_attributes ( "Status", renderer, - "text", STATUS_COLUMN, - "foreground", FOREGROUND_COLOR_COL, - "background", BACKGROUND_COLOR_COL, - NULL); - gtk_tree_view_column_set_sort_column_id(column, STATUS_COLUMN); - gtk_tree_view_column_set_resizable(column, TRUE); - gtk_tree_view_column_set_sizing(column, GTK_TREE_VIEW_COLUMN_FIXED); - gtk_tree_view_column_set_min_width(column, 100); - gtk_tree_view_append_column (list_view, column); + /* Fifth column.. Status. */ + renderer = gtk_cell_renderer_text_new (); + column = gtk_tree_view_column_new_with_attributes ( "Status", renderer, + "text", STATUS_COLUMN, + "foreground", FOREGROUND_COLOR_COL, + "background", BACKGROUND_COLOR_COL, + NULL); + gtk_tree_view_column_set_sort_column_id(column, STATUS_COLUMN); + gtk_tree_view_column_set_resizable(column, TRUE); + gtk_tree_view_column_set_sizing(column, GTK_TREE_VIEW_COLUMN_FIXED); + gtk_tree_view_column_set_min_width(column, 100); + gtk_tree_view_append_column (list_view, column); - /* Sixth column.. Length. */ - renderer = gtk_cell_renderer_text_new (); - column = gtk_tree_view_column_new_with_attributes ("Length", renderer, - "text", LENGTH_COLUMN, - "foreground", FOREGROUND_COLOR_COL, - "background", BACKGROUND_COLOR_COL, - NULL); + /* Sixth column.. Length. */ + renderer = gtk_cell_renderer_text_new (); + column = gtk_tree_view_column_new_with_attributes ("Length", renderer, + "text", LENGTH_COLUMN, + "foreground", FOREGROUND_COLOR_COL, + "background", BACKGROUND_COLOR_COL, + NULL); - gtk_tree_view_column_set_sort_column_id(column, LENGTH_COLUMN); - gtk_tree_view_column_set_resizable(column, TRUE); - gtk_tree_view_column_set_sizing(column, GTK_TREE_VIEW_COLUMN_FIXED); - gtk_tree_view_column_set_min_width(column, 100); - gtk_tree_view_append_column (list_view, column); + gtk_tree_view_column_set_sort_column_id(column, LENGTH_COLUMN); + gtk_tree_view_column_set_resizable(column, TRUE); + gtk_tree_view_column_set_sizing(column, GTK_TREE_VIEW_COLUMN_FIXED); + gtk_tree_view_column_set_min_width(column, 100); + gtk_tree_view_append_column (list_view, column); - /* Now enable the sorting of each column */ - gtk_tree_view_set_rules_hint(GTK_TREE_VIEW(list_view), TRUE); - gtk_tree_view_set_headers_clickable(GTK_TREE_VIEW(list_view), TRUE); + /* Now enable the sorting of each column */ + gtk_tree_view_set_rules_hint(GTK_TREE_VIEW(list_view), TRUE); + gtk_tree_view_set_headers_clickable(GTK_TREE_VIEW(list_view), TRUE); /* Setup the selection handler */ selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(list)); gtk_tree_selection_set_mode(selection, GTK_SELECTION_SINGLE); g_signal_connect (G_OBJECT (selection), "changed", /* select_row */ - G_CALLBACK (on_list_select_row), - user_data); + G_CALLBACK (on_list_select_row), + user_data); return list; } @@ -3090,7 +3108,7 @@ static void create_iax2_dialog(user_data_t* user_data) g_strlcpy(str_ip_src, get_addr_name(&(user_data->ip_src_fwd)), 16); g_strlcpy(str_ip_dst, get_addr_name(&(user_data->ip_dst_fwd)), 16); - g_snprintf(label_forward, 149, + g_snprintf(label_forward, sizeof(label_forward), "Analysing stream from %s port %u to %s port %u ", str_ip_src, user_data->port_src_fwd, str_ip_dst, user_data->port_dst_fwd); @@ -3098,7 +3116,7 @@ static void create_iax2_dialog(user_data_t* user_data) g_strlcpy(str_ip_src, get_addr_name(&(user_data->ip_src_rev)), 16); g_strlcpy(str_ip_dst, get_addr_name(&(user_data->ip_dst_rev)), 16); - g_snprintf(label_reverse, 149, + g_snprintf(label_reverse, sizeof(label_reverse), "Analysing stream from %s port %u to %s port %u ", str_ip_src, user_data->port_src_rev, str_ip_dst, user_data->port_dst_rev); @@ -3219,15 +3237,15 @@ static void create_iax2_dialog(user_data_t* user_data) close_bt = gtk_button_new_from_stock(GTK_STOCK_CLOSE); gtk_container_add(GTK_CONTAINER(box4), close_bt); - GTK_WIDGET_SET_FLAGS(close_bt, GTK_CAN_DEFAULT); + GTK_WIDGET_SET_FLAGS(close_bt, GTK_CAN_DEFAULT); gtk_widget_show(close_bt); - window_set_cancel_button(window, close_bt, window_cancel_button_cb); + window_set_cancel_button(window, close_bt, window_cancel_button_cb); - g_signal_connect(window, "delete_event", G_CALLBACK(window_delete_event_cb), NULL); + g_signal_connect(window, "delete_event", G_CALLBACK(window_delete_event_cb), NULL); g_signal_connect(window, "destroy", G_CALLBACK(on_destroy), user_data); - gtk_widget_show(window); - window_present(window); + gtk_widget_show(window); + window_present(window); /* some widget references need to be saved for outside use */ user_data->dlg.window = window; @@ -3372,31 +3390,31 @@ void iax2_analysis( user_data->series_rev.value_pairs = NULL; #endif - /* init dialog_graph */ - user_data->dlg.dialog_graph.needs_redraw=TRUE; - user_data->dlg.dialog_graph.interval=tick_interval_values[DEFAULT_TICK_VALUE]; - user_data->dlg.dialog_graph.draw_area=NULL; - user_data->dlg.dialog_graph.pixmap=NULL; - user_data->dlg.dialog_graph.scrollbar=NULL; - user_data->dlg.dialog_graph.scrollbar_adjustment=NULL; - user_data->dlg.dialog_graph.pixmap_width=500; - user_data->dlg.dialog_graph.pixmap_height=200; - user_data->dlg.dialog_graph.pixels_per_tick=pixels_per_tick[DEFAULT_PIXELS_PER_TICK]; - user_data->dlg.dialog_graph.max_y_units=AUTO_MAX_YSCALE; - user_data->dlg.dialog_graph.last_interval=0xffffffff; - user_data->dlg.dialog_graph.max_interval=0; - user_data->dlg.dialog_graph.num_items=0; + /* init dialog_graph */ + user_data->dlg.dialog_graph.needs_redraw=TRUE; + user_data->dlg.dialog_graph.interval=tick_interval_values[DEFAULT_TICK_VALUE]; + user_data->dlg.dialog_graph.draw_area=NULL; + user_data->dlg.dialog_graph.pixmap=NULL; + user_data->dlg.dialog_graph.scrollbar=NULL; + user_data->dlg.dialog_graph.scrollbar_adjustment=NULL; + user_data->dlg.dialog_graph.pixmap_width=500; + user_data->dlg.dialog_graph.pixmap_height=200; + user_data->dlg.dialog_graph.pixels_per_tick=pixels_per_tick[DEFAULT_PIXELS_PER_TICK]; + user_data->dlg.dialog_graph.max_y_units=AUTO_MAX_YSCALE; + user_data->dlg.dialog_graph.last_interval=0xffffffff; + user_data->dlg.dialog_graph.max_interval=0; + user_data->dlg.dialog_graph.num_items=0; user_data->dlg.dialog_graph.start_time = -1; for(i=0;idlg.dialog_graph.graph[i].gc=NULL; - user_data->dlg.dialog_graph.graph[i].color.pixel=0; - user_data->dlg.dialog_graph.graph[i].color.red=col[i].red; - user_data->dlg.dialog_graph.graph[i].color.green=col[i].green; - user_data->dlg.dialog_graph.graph[i].color.blue=col[i].blue; - user_data->dlg.dialog_graph.graph[i].display=TRUE; - user_data->dlg.dialog_graph.graph[i].display_button=NULL; - user_data->dlg.dialog_graph.graph[i].ud=user_data; + user_data->dlg.dialog_graph.graph[i].gc=NULL; + user_data->dlg.dialog_graph.graph[i].color.pixel=0; + user_data->dlg.dialog_graph.graph[i].color.red=col[i].red; + user_data->dlg.dialog_graph.graph[i].color.green=col[i].green; + user_data->dlg.dialog_graph.graph[i].color.blue=col[i].blue; + user_data->dlg.dialog_graph.graph[i].display=TRUE; + user_data->dlg.dialog_graph.graph[i].display_button=NULL; + user_data->dlg.dialog_graph.graph[i].ud=user_data; } /* create the dialog box */ @@ -3467,19 +3485,19 @@ static void iax2_analysis_cb(GtkWidget *w _U_, gpointer data _U_) "You didn't choose a IAX2 packet!"); return; } - /* check if it is Voice or MiniPacket - if (!get_int_value_from_proto_tree(edt->tree, "iax2", "iax2.call", &ptype)) { - simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK, - "Please select a Voice packet!"); - return; - } */ - + /* check if it is Voice or MiniPacket + if (!get_int_value_from_proto_tree(edt->tree, "iax2", "iax2.call", &ptype)) { + simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK, + "Please select a Voice packet!"); + return; + } */ + /* check if it is part of a Call */ - if (edt->pi.circuit_id == 0) { - simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK, - "Please select a Call packet!"); - return; - } + if (edt->pi.circuit_id == 0) { + simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK, + "Please select a Call packet!"); + return; + } /* ok, it is a IAX2 frame, so let's get the ip and port values */ COPY_ADDRESS(&(ip_src_fwd), &(edt->pi.src)) @@ -3556,3 +3574,17 @@ register_tap_listener_iax2_analysis(void) register_stat_menu_item("IAX2/Stream Analysis...", REGISTER_STAT_GROUP_TELEPHONY, iax2_analysis_cb, NULL, NULL, NULL); } + + +/* + * Editor modelines + * + * Local Variables: + * c-basic-offset: 8 + * tab-width: 8 + * indent-tabs-mode: t + * End: + * + * ex: set shiftwidth=8 tabstop=8 noexpandtab + * :indentSize=8:tabSize=8:noTabs=false: + */