aboutsummaryrefslogtreecommitdiffstats
path: root/gtk/dissector_tables_dlg.c
diff options
context:
space:
mode:
authorBill Meier <wmeier@newsguy.com>2010-07-28 22:47:48 +0000
committerBill Meier <wmeier@newsguy.com>2010-07-28 22:47:48 +0000
commit41c3ed255a9a6faae43ee320e0b83a3860ac45ac (patch)
tree811e7619b838abfc7c6d78040aed32517d2e62b9 /gtk/dissector_tables_dlg.c
parent02738f27b6b23926e70cba36faea107b4d39ce87 (diff)
Minor changes:
Use gtk_tree_store_insert_with_values if GTK >= 2.10; Change numeric formatting slightly in integer tables so values will sort numerically; Misc whitespace changes. svn path=/trunk/; revision=33657
Diffstat (limited to 'gtk/dissector_tables_dlg.c')
-rw-r--r--gtk/dissector_tables_dlg.c292
1 files changed, 153 insertions, 139 deletions
diff --git a/gtk/dissector_tables_dlg.c b/gtk/dissector_tables_dlg.c
index 7a081a071d..da61e60693 100644
--- a/gtk/dissector_tables_dlg.c
+++ b/gtk/dissector_tables_dlg.c
@@ -45,9 +45,9 @@ static GtkWidget *dissector_tables_dlg_w = NULL;
/* The columns */
enum
{
- TABLE_UI_NAME_COL,
- TABLE_SHORT_NAME_COL,
- N_COLUMNS
+ TABLE_UI_NAME_COL,
+ TABLE_SHORT_NAME_COL,
+ N_COLUMNS
};
static void
@@ -69,9 +69,9 @@ win_destroy_cb(GtkWindow *win _U_, gpointer data _U_)
*/
struct dissector_tables_tree_info {
- GtkWidget *tree;
- GtkTreeIter iter;
- GtkTreeIter new_iter;
+ GtkWidget *tree;
+ GtkTreeIter iter;
+ GtkTreeIter new_iter;
};
typedef struct dissector_tables_tree_info dissector_tables_tree_info_t;
@@ -81,59 +81,94 @@ typedef struct dissector_tables_tree_info dissector_tables_tree_info_t;
* for dissector tables.
*/
struct dissector_tables_trees {
- GtkWidget *str_tree_wgt;
- GtkWidget *uint_tree_wgt;
+ GtkWidget *str_tree_wgt;
+ GtkWidget *uint_tree_wgt;
};
typedef struct dissector_tables_trees dissector_tables_trees_t;
+static void
+proto_add_to_list(dissector_tables_tree_info_t *tree_info, GtkTreeStore *store,
+ gchar *str, const gchar *proto_name)
+{
+#if GTK_CHECK_VERSION(2,10,0)
+ gtk_tree_store_insert_with_values(store, &tree_info->new_iter, &tree_info->iter, G_MAXINT,
+ TABLE_UI_NAME_COL, str,
+ TABLE_SHORT_NAME_COL, proto_name,
+ -1);
+#else
+ gtk_tree_store_append(store, &tree_info->new_iter, &tree_info->iter);
+ gtk_tree_store_set (store, &tree_info->new_iter,
+ TABLE_UI_NAME_COL, str,
+ TABLE_SHORT_NAME_COL, proto_name,
+ -1);
+#endif
+
+}
+
static void
decode_proto_add_to_list (const gchar *table_name _U_, ftenum_t selector_type _U_, gpointer key, gpointer value _U_, gpointer user_data)
{
- GtkTreeStore *store;
- const gchar *proto_name;
- dtbl_entry_t *dtbl_entry;
- dissector_handle_t handle;
- guint32 port;
- gchar* str;
- dissector_tables_tree_info_t *tree_info;
-
- tree_info = user_data;
- dtbl_entry = value;
- handle = dtbl_entry_get_handle(dtbl_entry);
- proto_name = dissector_handle_get_short_name(handle);
-
- store = GTK_TREE_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(tree_info->tree)));
-
- gtk_tree_store_append(store, &tree_info->new_iter, &tree_info->iter);
-
- switch (selector_type) {
-
- case FT_UINT8:
- case FT_UINT16:
- case FT_UINT24:
- case FT_UINT32:
- port = GPOINTER_TO_UINT(key);
- str = g_strdup_printf ("%d", port);
- gtk_tree_store_set(store, &tree_info->new_iter,
- TABLE_UI_NAME_COL, str,
- TABLE_SHORT_NAME_COL, proto_name,
- -1);
- g_free (str);
- break;
-
- case FT_STRING:
- case FT_STRINGZ:
- str = (gchar*) key;
- gtk_tree_store_set(store, &tree_info->new_iter,
- TABLE_UI_NAME_COL, str,
- TABLE_SHORT_NAME_COL, proto_name,
- -1);
- break;
-
- default:
- g_assert_not_reached();
- }
+ GtkTreeStore *store;
+ const gchar *proto_name;
+ dtbl_entry_t *dtbl_entry;
+ dissector_handle_t handle;
+ guint32 port;
+ gchar *str;
+ dissector_tables_tree_info_t *tree_info;
+
+ tree_info = user_data;
+ dtbl_entry = value;
+ handle = dtbl_entry_get_handle(dtbl_entry);
+ proto_name = dissector_handle_get_short_name(handle);
+
+ store = GTK_TREE_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(tree_info->tree)));
+
+ switch (selector_type) {
+
+ case FT_UINT8:
+ case FT_UINT16:
+ case FT_UINT24:
+ case FT_UINT32:
+ port = GPOINTER_TO_UINT(key);
+ str = g_strdup_printf ("%10d", port); /* Hack: Use fixed width string so sort is numeric */
+ proto_add_to_list(tree_info, store, str, proto_name);
+ g_free (str);
+ break;
+
+ case FT_STRING:
+ case FT_STRINGZ:
+ str = (gchar*) key;
+ proto_add_to_list(tree_info, store, str, proto_name);
+ break;
+
+ default:
+ g_assert_not_reached();
+ }
+
+}
+
+static void
+table_name_add_to_list(dissector_tables_tree_info_t *tree_info, GtkWidget *tree_view,
+ const char *table_name, const char *ui_name)
+{
+ GtkTreeStore *store;
+
+ tree_info->tree = tree_view;
+ store = GTK_TREE_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(tree_view))); /* Get store */
+
+#if GTK_CHECK_VERSION(2,10,0)
+ gtk_tree_store_insert_with_values(store, &tree_info->iter, NULL, G_MAXINT,
+ TABLE_UI_NAME_COL, ui_name,
+ TABLE_SHORT_NAME_COL, table_name,
+ -1);
+#else
+ gtk_tree_store_append (store, &tree_info->iter, NULL); /* Acquire an iterator */
+ gtk_tree_store_set (store, &tree_info->iter,
+ TABLE_UI_NAME_COL, ui_name,
+ TABLE_SHORT_NAME_COL, table_name,
+ -1);
+#endif
}
@@ -141,64 +176,45 @@ static void
display_dissector_table_names(const char *table_name, const char *ui_name,
gpointer w)
{
- GtkTreeStore *store;
- GtkTreeView *tree_view;
- dissector_tables_trees_t *dis_tbl_trees;
- dissector_tables_tree_info_t *tree_info;
- ftenum_t selector_type = get_dissector_table_selector_type(table_name);
-
- tree_info = g_new(dissector_tables_tree_info_t,1);
- dis_tbl_trees = w;
-
-
- switch (selector_type) {
- case FT_UINT8:
- case FT_UINT16:
- case FT_UINT24:
- case FT_UINT32:
- tree_info->tree = dis_tbl_trees->uint_tree_wgt;
- tree_view = GTK_TREE_VIEW(tree_info->tree);
- store = GTK_TREE_STORE(gtk_tree_view_get_model(tree_view)); /* Get store */
- gtk_tree_store_append (store, &tree_info->iter, NULL); /* Acquire an iterator */
-
- gtk_tree_store_set (store, &tree_info->iter,
- TABLE_UI_NAME_COL, ui_name,
- TABLE_SHORT_NAME_COL, table_name,
- -1);
- break;
- case FT_STRING:
- case FT_STRINGZ:
- tree_info->tree = dis_tbl_trees->str_tree_wgt;
- tree_view = GTK_TREE_VIEW(tree_info->tree);
- store = GTK_TREE_STORE(gtk_tree_view_get_model(tree_view)); /* Get store */
- gtk_tree_store_append (store, &tree_info->iter, NULL); /* Acquire an iterator */
-
- gtk_tree_store_set (store, &tree_info->iter,
- TABLE_UI_NAME_COL, ui_name,
- TABLE_SHORT_NAME_COL, table_name,
- -1);
- break;
- default:
- break;
- }
-
- dissector_table_foreach(table_name, decode_proto_add_to_list, tree_info);
+ dissector_tables_trees_t *dis_tbl_trees;
+ dissector_tables_tree_info_t *tree_info;
+ ftenum_t selector_type = get_dissector_table_selector_type(table_name);
+
+ tree_info = g_new(dissector_tables_tree_info_t, 1);
+ dis_tbl_trees = w;
+
+ switch (selector_type) {
+ case FT_UINT8:
+ case FT_UINT16:
+ case FT_UINT24:
+ case FT_UINT32:
+ table_name_add_to_list(tree_info, dis_tbl_trees->uint_tree_wgt, table_name, ui_name);
+ break;
+ case FT_STRING:
+ case FT_STRINGZ:
+ table_name_add_to_list(tree_info, dis_tbl_trees->str_tree_wgt, table_name, ui_name);
+ break;
+ default:
+ break;
+ }
+ dissector_table_foreach(table_name, decode_proto_add_to_list, tree_info);
+ g_free(tree_info);
}
static GtkWidget*
init_table(void)
{
- GtkTreeStore *store;
- GtkWidget *tree;
- GtkTreeView *tree_view;
+ GtkTreeStore *store;
+ GtkWidget *tree;
+ GtkTreeView *tree_view;
GtkTreeViewColumn *column;
- GtkCellRenderer *renderer;
- GtkTreeSortable *sortable;
+ GtkCellRenderer *renderer;
+ GtkTreeSortable *sortable;
/* Create the store */
- store = gtk_tree_store_new (N_COLUMNS, /* Total number of columns */
- G_TYPE_STRING, /* Table */
+ store = gtk_tree_store_new (N_COLUMNS, /* Total number of columns */
+ G_TYPE_STRING, /* Table */
G_TYPE_STRING); /* Table */
/* Create a view */
@@ -207,8 +223,8 @@ init_table(void)
sortable = GTK_TREE_SORTABLE(store);
#if GTK_CHECK_VERSION(2,6,0)
- /* Speed up the list display */
- gtk_tree_view_set_fixed_height_mode(tree_view, TRUE);
+ /* Speed up the list display */
+ gtk_tree_view_set_fixed_height_mode(tree_view, TRUE);
#endif
/* Setup the sortable columns */
@@ -217,9 +233,6 @@ init_table(void)
/* The view now holds a reference. We can get rid of our own reference */
g_object_unref (G_OBJECT (store));
- /* Create a cell renderer */
- renderer = gtk_cell_renderer_text_new ();
-
/* Create the first column, associating the "text" attribute of the
* cell_renderer to the first column of the model */
renderer = gtk_cell_renderer_text_new ();
@@ -228,7 +241,7 @@ init_table(void)
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, 80);
- gtk_tree_view_column_set_fixed_width(column, 330);
+ gtk_tree_view_column_set_fixed_width(column, 330);
gtk_tree_view_append_column (GTK_TREE_VIEW (tree_view), column);
renderer = gtk_cell_renderer_text_new ();
@@ -237,28 +250,29 @@ init_table(void)
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, 80);
- gtk_tree_view_column_set_fixed_width(column, 100);
+ gtk_tree_view_column_set_fixed_width(column, 100);
gtk_tree_view_append_column (GTK_TREE_VIEW (tree_view), column);
- return tree;
+ return tree;
}
+
static void
dissector_tables_dlg_init(void)
{
- dissector_tables_trees_t dis_tbl_trees;
+ dissector_tables_trees_t dis_tbl_trees;
GtkWidget *vbox;
- GtkWidget *hbox;
- GtkWidget *main_nb;
- GtkWidget *scrolled_window;
- GtkTreeSortable *sortable;
- GtkWidget *temp_page, *tmp;
-
- dissector_tables_dlg_w = dlg_window_new("Dissector tables"); /* transient_for top_level */
- gtk_window_set_destroy_with_parent (GTK_WINDOW(dissector_tables_dlg_w), TRUE);
+ GtkWidget *hbox;
+ GtkWidget *main_nb;
+ GtkWidget *scrolled_window;
+ GtkTreeSortable *sortable;
+ GtkWidget *temp_page, *tmp;
+
+ dissector_tables_dlg_w = dlg_window_new("Dissector tables"); /* transient_for top_level */
+ gtk_window_set_destroy_with_parent (GTK_WINDOW(dissector_tables_dlg_w), TRUE);
gtk_window_set_default_size(GTK_WINDOW(dissector_tables_dlg_w), 700, 300);
- vbox=gtk_vbox_new(FALSE, 3);
+ vbox=gtk_vbox_new(FALSE, 3);
gtk_container_add(GTK_CONTAINER(dissector_tables_dlg_w), vbox);
gtk_container_set_border_width(GTK_CONTAINER(vbox), 12);
@@ -273,12 +287,12 @@ dissector_tables_dlg_init(void)
gtk_container_add(GTK_CONTAINER(hbox), tmp);
gtk_notebook_append_page(GTK_NOTEBOOK(main_nb), temp_page, hbox);
- scrolled_window = scrolled_window_new(NULL, NULL);
- dis_tbl_trees.str_tree_wgt = init_table();
- gtk_widget_show(dis_tbl_trees.str_tree_wgt);
- gtk_container_add(GTK_CONTAINER(scrolled_window), dis_tbl_trees.str_tree_wgt);
- gtk_box_pack_start(GTK_BOX(temp_page), scrolled_window, TRUE, TRUE, 0);
- gtk_widget_show(scrolled_window);
+ scrolled_window = scrolled_window_new(NULL, NULL);
+ dis_tbl_trees.str_tree_wgt = init_table();
+ gtk_widget_show(dis_tbl_trees.str_tree_wgt);
+ gtk_container_add(GTK_CONTAINER(scrolled_window), dis_tbl_trees.str_tree_wgt);
+ gtk_box_pack_start(GTK_BOX(temp_page), scrolled_window, TRUE, TRUE, 0);
+ gtk_widget_show(scrolled_window);
/* uint tables */
temp_page = gtk_vbox_new(FALSE, 6);
@@ -288,25 +302,25 @@ dissector_tables_dlg_init(void)
gtk_container_add(GTK_CONTAINER(hbox), tmp);
gtk_notebook_append_page(GTK_NOTEBOOK(main_nb), temp_page, hbox);
- scrolled_window = scrolled_window_new(NULL, NULL);
- dis_tbl_trees.uint_tree_wgt = init_table();
- gtk_widget_show(dis_tbl_trees.uint_tree_wgt);
- gtk_container_add(GTK_CONTAINER(scrolled_window), dis_tbl_trees.uint_tree_wgt);
- gtk_box_pack_start(GTK_BOX(temp_page), scrolled_window, TRUE, TRUE, 0);
- gtk_widget_show(scrolled_window);
+ scrolled_window = scrolled_window_new(NULL, NULL);
+ dis_tbl_trees.uint_tree_wgt = init_table();
+ gtk_widget_show(dis_tbl_trees.uint_tree_wgt);
+ gtk_container_add(GTK_CONTAINER(scrolled_window), dis_tbl_trees.uint_tree_wgt);
+ gtk_box_pack_start(GTK_BOX(temp_page), scrolled_window, TRUE, TRUE, 0);
+ gtk_widget_show(scrolled_window);
- /* We must display TOP LEVEL Widget before calling init_table() */
+ /* We must display TOP LEVEL Widget before calling init_table() */
gtk_widget_show_all(dissector_tables_dlg_w);
- g_signal_connect(dissector_tables_dlg_w, "destroy", G_CALLBACK(win_destroy_cb), NULL);
+ g_signal_connect(dissector_tables_dlg_w, "destroy", G_CALLBACK(win_destroy_cb), NULL);
- /* Fill the table with data */
- dissector_all_tables_foreach_table(display_dissector_table_names, (gpointer)&dis_tbl_trees);
+ /* Fill the table with data */
+ dissector_all_tables_foreach_table(display_dissector_table_names, (gpointer)&dis_tbl_trees);
- sortable = GTK_TREE_SORTABLE(gtk_tree_view_get_model(GTK_TREE_VIEW(dis_tbl_trees.str_tree_wgt)));
- gtk_tree_sortable_set_sort_column_id(sortable, TABLE_UI_NAME_COL, GTK_SORT_ASCENDING);
+ sortable = GTK_TREE_SORTABLE(gtk_tree_view_get_model(GTK_TREE_VIEW(dis_tbl_trees.str_tree_wgt)));
+ gtk_tree_sortable_set_sort_column_id(sortable, TABLE_UI_NAME_COL, GTK_SORT_ASCENDING);
- sortable = GTK_TREE_SORTABLE(gtk_tree_view_get_model(GTK_TREE_VIEW(dis_tbl_trees.uint_tree_wgt)));
- gtk_tree_sortable_set_sort_column_id(sortable, TABLE_UI_NAME_COL, GTK_SORT_ASCENDING);
+ sortable = GTK_TREE_SORTABLE(gtk_tree_view_get_model(GTK_TREE_VIEW(dis_tbl_trees.uint_tree_wgt)));
+ gtk_tree_sortable_set_sort_column_id(sortable, TABLE_UI_NAME_COL, GTK_SORT_ASCENDING);
}