diff options
author | oabad <oabad@f5534014-38df-0310-8fa8-9805f1628bb7> | 2002-11-03 17:38:45 +0000 |
---|---|---|
committer | oabad <oabad@f5534014-38df-0310-8fa8-9805f1628bb7> | 2002-11-03 17:38:45 +0000 |
commit | e7e9fc4599a73a917abf4d00595371811f4e1c0e (patch) | |
tree | e205dc0b1cb685304fd20edb3ebd398884c30ba3 /gtk/proto_hier_stats_dlg.c | |
parent | e736c33a5c88c48f156b66539aa1c9677d282952 (diff) |
Merge gtk and gtk2 directories.
git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@6552 f5534014-38df-0310-8fa8-9805f1628bb7
Diffstat (limited to 'gtk/proto_hier_stats_dlg.c')
-rw-r--r-- | gtk/proto_hier_stats_dlg.c | 317 |
1 files changed, 216 insertions, 101 deletions
diff --git a/gtk/proto_hier_stats_dlg.c b/gtk/proto_hier_stats_dlg.c index 4f058c38ba..199b98ba8e 100644 --- a/gtk/proto_hier_stats_dlg.c +++ b/gtk/proto_hier_stats_dlg.c @@ -1,6 +1,6 @@ /* proto_hier_stats_dlg.c * - * $Id: proto_hier_stats_dlg.c,v 1.10 2002/08/28 21:03:49 jmayer Exp $ + * $Id: proto_hier_stats_dlg.c,v 1.11 2002/11/03 17:38:34 oabad Exp $ * * Ethereal - Network traffic analyzer * By Gerald Combs <gerald@ethereal.com> @@ -33,83 +33,125 @@ #include "ui_util.h" #include "main.h" +#if GTK_MAJOR_VERSION < 2 #define NUM_STAT_COLUMNS 6 +#else +enum { + PROTOCOL_COLUMN, + PRCT_PKTS_COLUMN, + PKTS_COLUMN, + BYTES_COLUMN, + END_PKTS_COLUMN, + END_BYTES_COLUMN, + NUM_STAT_COLUMNS /* must be the last */ +}; +#endif typedef struct { - - GtkCTree *tree; - GtkCTreeNode *parent; - ph_stats_t *ps; - +#if GTK_MAJOR_VERSION < 2 + GtkCTree *tree; + GtkCTreeNode *parent; +#else + GtkTreeView *tree_view; + GtkTreeIter *iter; +#endif + ph_stats_t *ps; } draw_info_t; #define PCT(x,y) (100.0 * (float)(x) / (float)(y)) static void -fill_in_ctree_node(GNode *node, gpointer data) +fill_in_tree_node(GNode *node, gpointer data) { - ph_stats_node_t *stats = node->data; - draw_info_t *di = data; - - GtkCTree *tree = di->tree; - GtkCTreeNode *parent = di->parent; - ph_stats_t *ps = di->ps; - - gchar *text[NUM_STAT_COLUMNS]; - gboolean is_leaf; - GtkCTreeNode *new_node; - - draw_info_t child_di; - - if (g_node_n_children(node) > 0) { - is_leaf = FALSE; - } - else { - is_leaf = TRUE; - } - - text[0] = stats->hfinfo->name; - text[1] = g_strdup_printf("%6.2f%%", - PCT(stats->num_pkts_total, ps->tot_packets)); - text[2] = g_strdup_printf("%u", stats->num_pkts_total); - text[3] = g_strdup_printf("%u", stats->num_bytes_total); - text[4] = g_strdup_printf("%u", stats->num_pkts_last); - text[5] = g_strdup_printf("%u", stats->num_bytes_last); - - new_node = gtk_ctree_insert_node(tree, parent, NULL, text, - 5, NULL, NULL, NULL, NULL, - is_leaf, TRUE); - - - g_free(text[1]); - g_free(text[2]); - g_free(text[3]); - g_free(text[4]); - g_free(text[5]); - - child_di.tree = tree; - child_di.parent = new_node; - child_di.ps = ps; + ph_stats_node_t *stats = node->data; + draw_info_t *di = data; + +#if GTK_MAJOR_VERSION < 2 + GtkCTree *tree = di->tree; + GtkCTreeNode *parent = di->parent; + gchar *text[NUM_STAT_COLUMNS]; + GtkCTreeNode *new_node; +#else + GtkTreeView *tree_view = di->tree_view; + GtkTreeIter *iter = di->iter; + GtkTreeStore *store; + gchar *text[2]; + GtkTreeIter new_iter; +#endif + ph_stats_t *ps = di->ps; + + gboolean is_leaf; + + draw_info_t child_di; + + if (g_node_n_children(node) > 0) { + is_leaf = FALSE; + } + else { + is_leaf = TRUE; + } + + text[0] = stats->hfinfo->name; + text[1] = g_strdup_printf("%6.2f%%", + PCT(stats->num_pkts_total, ps->tot_packets)); +#if GTK_MAJOR_VERSION < 2 + text[2] = g_strdup_printf("%u", stats->num_pkts_total); + text[3] = g_strdup_printf("%u", stats->num_bytes_total); + text[4] = g_strdup_printf("%u", stats->num_pkts_last); + text[5] = g_strdup_printf("%u", stats->num_bytes_last); + + new_node = gtk_ctree_insert_node(tree, parent, NULL, text, + 5, NULL, NULL, NULL, NULL, + is_leaf, TRUE); +#else + store = GTK_TREE_STORE(gtk_tree_view_get_model(tree_view)); + gtk_tree_store_append(store, &new_iter, iter); + gtk_tree_store_set(store, &new_iter, + PROTOCOL_COLUMN, text[0], + PRCT_PKTS_COLUMN, text[1], + PKTS_COLUMN, stats->num_pkts_total, + BYTES_COLUMN, stats->num_bytes_total, + END_PKTS_COLUMN, stats->num_pkts_last, + END_BYTES_COLUMN, stats->num_bytes_last, + -1); +#endif - g_node_children_foreach(node, G_TRAVERSE_ALL, - fill_in_ctree_node, &child_di); + g_free(text[1]); +#if GTK_MAJOR_VERSION < 2 + g_free(text[2]); + g_free(text[3]); + g_free(text[4]); + g_free(text[5]); + + child_di.tree = tree; + child_di.parent = new_node; +#else + child_di.tree_view = tree_view; + child_di.iter = &new_iter; +#endif + child_di.ps = ps; + g_node_children_foreach(node, G_TRAVERSE_ALL, + fill_in_tree_node, &child_di); } - - static void -fill_in_ctree(GtkWidget *tree, ph_stats_t *ps) +fill_in_tree(GtkWidget *tree, ph_stats_t *ps) { draw_info_t di; +#if GTK_MAJOR_VERSION < 2 di.tree = GTK_CTREE(tree); di.parent = NULL; +#else + di.tree_view = GTK_TREE_VIEW(tree); + di.iter = NULL; +#endif di.ps = ps; g_node_children_foreach(ps->stats_tree, G_TRAVERSE_ALL, - fill_in_ctree_node, &di); + fill_in_tree_node, &di); } #define MAX_DLG_HEIGHT 450 @@ -117,53 +159,114 @@ fill_in_ctree(GtkWidget *tree, ph_stats_t *ps) static void create_tree(GtkWidget *container, ph_stats_t *ps) { - GtkWidget *sw, *tree; - int i, height; - gchar *column_titles[NUM_STAT_COLUMNS] = { - "Protocol", - "% Packets", - "Packets", - "Bytes", - "End Packets", - "End Bytes", - }; - - /* Scrolled Window */ - sw = gtk_scrolled_window_new(NULL, NULL); - gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), - GTK_POLICY_AUTOMATIC, - GTK_POLICY_AUTOMATIC); - gtk_container_add(GTK_CONTAINER(container), sw); - - tree = ctree_new_with_titles(NUM_STAT_COLUMNS, 0, column_titles); - - /* XXX - get 'pos' to set vertical scroll-bar placement. */ - - /* The title bars do nothing. */ - gtk_clist_column_titles_passive(GTK_CLIST(tree)); - - /* Auto Resize all columns */ - for (i = 0; i < NUM_STAT_COLUMNS; i++) { - gtk_clist_set_column_auto_resize(GTK_CLIST(tree), i, TRUE); - } - - - /* Right justify numeric columns */ - for (i = 1; i <= 5; i++) { - gtk_clist_set_column_justification(GTK_CLIST(tree), i, - GTK_JUSTIFY_RIGHT); - } + GtkWidget *sw, *tree; +#if GTK_MAJOR_VERSION < 2 + int i, height; + gchar *column_titles[NUM_STAT_COLUMNS] = { + "Protocol", + "% Packets", + "Packets", + "Bytes", + "End Packets", + "End Bytes", + }; +#else + GtkTreeView *tree_view; + GtkTreeStore *store; + GtkCellRenderer *renderer; + GtkTreeViewColumn *column; +#endif - /* Fill in the data. */ - fill_in_ctree(tree, ps); + /* Scrolled Window */ + sw = gtk_scrolled_window_new(NULL, NULL); + gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), + GTK_POLICY_AUTOMATIC, + GTK_POLICY_AUTOMATIC); + gtk_container_add(GTK_CONTAINER(container), sw); + +#if GTK_MAJOR_VERSION < 2 + tree = ctree_new_with_titles(NUM_STAT_COLUMNS, 0, column_titles); + + /* XXX - get 'pos' to set vertical scroll-bar placement. */ + + /* The title bars do nothing. */ + gtk_clist_column_titles_passive(GTK_CLIST(tree)); + + /* Auto Resize all columns */ + for (i = 0; i < NUM_STAT_COLUMNS; i++) { + gtk_clist_set_column_auto_resize(GTK_CLIST(tree), i, TRUE); + } + + + /* Right justify numeric columns */ + for (i = 1; i <= 5; i++) { + gtk_clist_set_column_justification(GTK_CLIST(tree), i, + GTK_JUSTIFY_RIGHT); + } +#else + store = gtk_tree_store_new(NUM_STAT_COLUMNS, G_TYPE_STRING, + G_TYPE_STRING, G_TYPE_UINT, G_TYPE_UINT, + G_TYPE_UINT, G_TYPE_UINT); + tree = tree_view_new(GTK_TREE_MODEL(store)); + tree_view = GTK_TREE_VIEW(tree); + gtk_tree_view_set_headers_visible(tree_view, TRUE); + gtk_tree_view_set_headers_clickable(tree_view, FALSE); + renderer = gtk_cell_renderer_text_new(); + column = gtk_tree_view_column_new_with_attributes("Protocol", renderer, + "text", PROTOCOL_COLUMN, + NULL); + gtk_tree_view_column_set_sizing(column, GTK_TREE_VIEW_COLUMN_AUTOSIZE); + gtk_tree_view_append_column(tree_view, column); + renderer = gtk_cell_renderer_text_new(); + column = gtk_tree_view_column_new_with_attributes("% Packets", renderer, + "text", PRCT_PKTS_COLUMN, + NULL); + g_object_set(G_OBJECT(renderer), "xalign", 1.0, NULL); + gtk_tree_view_column_set_sizing(column, GTK_TREE_VIEW_COLUMN_AUTOSIZE); + gtk_tree_view_append_column(tree_view, column); + renderer = gtk_cell_renderer_text_new(); + column = gtk_tree_view_column_new_with_attributes("Packets", renderer, + "text", PKTS_COLUMN, + NULL); + g_object_set(G_OBJECT(renderer), "xalign", 1.0, NULL); + gtk_tree_view_column_set_sizing(column, GTK_TREE_VIEW_COLUMN_AUTOSIZE); + gtk_tree_view_append_column(tree_view, column); + renderer = gtk_cell_renderer_text_new(); + column = gtk_tree_view_column_new_with_attributes("Bytes", renderer, + "text", BYTES_COLUMN, + NULL); + g_object_set(G_OBJECT(renderer), "xalign", 1.0, NULL); + gtk_tree_view_column_set_sizing(column, GTK_TREE_VIEW_COLUMN_AUTOSIZE); + gtk_tree_view_append_column(tree_view, column); + renderer = gtk_cell_renderer_text_new(); + column = gtk_tree_view_column_new_with_attributes("End Packets", + renderer, "text", + END_PKTS_COLUMN, NULL); + g_object_set(G_OBJECT(renderer), "xalign", 1.0, NULL); + gtk_tree_view_column_set_sizing(column, GTK_TREE_VIEW_COLUMN_AUTOSIZE); + gtk_tree_view_append_column(tree_view, column); + renderer = gtk_cell_renderer_text_new(); + column = gtk_tree_view_column_new_with_attributes("End Bytes", renderer, + "text", END_BYTES_COLUMN, + NULL); + g_object_set(G_OBJECT(renderer), "xalign", 1.0, NULL); + gtk_tree_view_column_set_sizing(column, GTK_TREE_VIEW_COLUMN_AUTOSIZE); + gtk_tree_view_append_column(tree_view, column); +#endif - height = GTK_CLIST(tree)->rows * (GTK_CLIST(tree)->row_height + 5); - height = MIN(height, MAX_DLG_HEIGHT); - gtk_widget_set_usize(tree, DEF_DLG_WIDTH, height); + /* Fill in the data. */ + fill_in_tree(tree, ps); +#if GTK_MAJOR_VERSION < 2 + height = GTK_CLIST(tree)->rows * (GTK_CLIST(tree)->row_height + 5); + height = MIN(height, MAX_DLG_HEIGHT); + gtk_widget_set_usize(tree, DEF_DLG_WIDTH, height); +#else + gtk_widget_set_size_request(tree, DEF_DLG_WIDTH, MAX_DLG_HEIGHT); +#endif - gtk_container_add(GTK_CONTAINER(sw), tree); - ph_stats_free(ps); + gtk_container_add(GTK_CONTAINER(sw), tree); + ph_stats_free(ps); } #define WNAME "Protocol Hierarchy Statistics" @@ -184,8 +287,13 @@ proto_hier_stats_cb(GtkWidget *w _U_, gpointer d _U_) dlg = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_window_set_title(GTK_WINDOW(dlg), "Ethereal: " WNAME); +#if GTK_MAJOR_VERSION < 2 gtk_signal_connect (GTK_OBJECT (dlg), "realize", - GTK_SIGNAL_FUNC (window_icon_realize_cb), NULL); + GTK_SIGNAL_FUNC (window_icon_realize_cb), NULL); +#else + g_signal_connect(G_OBJECT(dlg), "realize", + G_CALLBACK(window_icon_realize_cb), NULL); +#endif vbox = gtk_vbox_new(FALSE, 5); gtk_container_border_width(GTK_CONTAINER(vbox), 5); @@ -207,10 +315,17 @@ proto_hier_stats_cb(GtkWidget *w _U_, gpointer d _U_) gtk_box_pack_start(GTK_BOX(vbox), bbox, FALSE, FALSE, 0); /* Close button */ +#if GTK_MAJOR_VERSION < 2 bt = gtk_button_new_with_label("Close"); gtk_signal_connect_object(GTK_OBJECT(bt), "clicked", - GTK_SIGNAL_FUNC(gtk_widget_destroy), - GTK_OBJECT(dlg)); + GTK_SIGNAL_FUNC(gtk_widget_destroy), + GTK_OBJECT(dlg)); +#else + bt = gtk_button_new_from_stock(GTK_STOCK_CLOSE); + g_signal_connect_swapped(G_OBJECT(bt), "clicked", + G_CALLBACK(gtk_widget_destroy), + G_OBJECT(dlg)); +#endif gtk_container_add(GTK_CONTAINER(bbox), bt); GTK_WIDGET_SET_FLAGS(bt, GTK_CAN_DEFAULT); gtk_widget_grab_default(bt); |