diff options
-rw-r--r-- | gtk/main_packet_list.c | 74 | ||||
-rw-r--r-- | gtk/main_packet_list.h | 4 | ||||
-rw-r--r-- | gtk/menus.c | 7 |
3 files changed, 65 insertions, 20 deletions
diff --git a/gtk/main_packet_list.c b/gtk/main_packet_list.c index 0403ff8a60..14fca43311 100644 --- a/gtk/main_packet_list.c +++ b/gtk/main_packet_list.c @@ -177,6 +177,41 @@ packet_list_compare(GtkCList *clist, gconstpointer ptr1, gconstpointer ptr2) } } +static gboolean +right_justify_column (gint col) +{ + header_field_info *hfi; + gboolean right_justify = FALSE; + + switch (cfile.cinfo.col_fmt[col]) { + + case COL_NUMBER: + case COL_PACKET_LENGTH: + case COL_CUMULATIVE_BYTES: + case COL_DCE_CALL: + right_justify = TRUE; + break; + + case COL_CUSTOM: + hfi = proto_registrar_get_byname(cfile.cinfo.col_custom_field[col]); + /* Check if this is a valid field and we have no strings lookup table */ + if ((hfi != NULL) && (hfi->strings == NULL)) { + /* Check for bool, framenum and decimal/octal integer types */ + if ((hfi->type == FT_BOOLEAN) || (hfi->type == FT_FRAMENUM) || + (((hfi->display == BASE_DEC) || (hfi->display == BASE_OCT)) && + (IS_FT_INT(hfi->type) || IS_FT_UINT(hfi->type)))) { + right_justify = TRUE; + } + } + break; + + default: + break; + } + + return right_justify; +} + static void col_title_change_ok (GtkWidget *w, gpointer parent_w) { @@ -257,7 +292,6 @@ packet_list_resize_column (gint col_id) gtk_clist_set_column_resizeable(GTK_CLIST(packet_list), col_id, TRUE); } - static void packet_list_remove_column (gint col_id) { @@ -313,6 +347,21 @@ packet_list_column_menu_cb (GtkWidget *w _U_, gpointer user_data _U_, COLUMN_SEL case COLUMN_SELECTED_SORT_DESCENDING: packet_list_sort_column (col_id, data, GTK_SORT_DESCENDING); break; + case COLUMN_SELECTED_SORT_NONE: + packet_list_sort_column (0, data, GTK_SORT_ASCENDING); + break; + case COLUMN_SELECTED_ALIGN_LEFT: + gtk_clist_set_column_justification(GTK_CLIST(packet_list), col_id, + GTK_JUSTIFY_LEFT); + break; + case COLUMN_SELECTED_ALIGN_CENTER: + gtk_clist_set_column_justification(GTK_CLIST(packet_list), col_id, + GTK_JUSTIFY_CENTER); + break; + case COLUMN_SELECTED_ALIGN_RIGHT: + gtk_clist_set_column_justification(GTK_CLIST(packet_list), col_id, + GTK_JUSTIFY_RIGHT); + break; case COLUMN_SELECTED_RESIZE: packet_list_resize_column (col_id); break; @@ -332,6 +381,9 @@ static void packet_list_click_column_cb (GtkCList *clist, gint column, gpointer data) { GtkWidget *menu; + gboolean right_justify = right_justify_column (column); + + menus_set_column_align_default (right_justify); menu = g_object_get_data (G_OBJECT(popup_menu_object), PM_PACKET_LIST_COL_KEY); g_object_set_data(G_OBJECT(clist), E_MPACKET_LIST_COL_KEY, GINT_TO_POINTER(column)); @@ -571,8 +623,6 @@ GtkWidget * packet_list_new(e_prefs *prefs) { GtkWidget *pkt_scrollw; - header_field_info *hfi; - gboolean custom_right_justify; int i; /* Packet list */ @@ -605,24 +655,8 @@ packet_list_new(e_prefs *prefs) gtk_clist_set_column_auto_resize(GTK_CLIST(packet_list), i, FALSE); gtk_clist_set_column_resizeable(GTK_CLIST(packet_list), i, TRUE); - custom_right_justify = FALSE; - if (cfile.cinfo.col_fmt[i] == COL_CUSTOM) { - hfi = proto_registrar_get_byname(cfile.cinfo.col_custom_field[i]); - if ((hfi != NULL) && (hfi->strings == NULL) && - ((hfi->type == FT_BOOLEAN) || (hfi->type == FT_FRAMENUM) || - (((hfi->display == BASE_DEC) || (hfi->display == BASE_OCT)) && - (IS_FT_INT(hfi->type) || IS_FT_UINT(hfi->type) || - (hfi->type == FT_INT64) || (hfi->type == FT_UINT64))))) { - custom_right_justify = TRUE; - } - } - /* Right-justify some special columns. */ - if (cfile.cinfo.col_fmt[i] == COL_NUMBER || - cfile.cinfo.col_fmt[i] == COL_PACKET_LENGTH || - cfile.cinfo.col_fmt[i] == COL_CUMULATIVE_BYTES || - cfile.cinfo.col_fmt[i] == COL_DCE_CALL || - custom_right_justify) + if (right_justify_column(i)) gtk_clist_set_column_justification(GTK_CLIST(packet_list), i, GTK_JUSTIFY_RIGHT); } diff --git a/gtk/main_packet_list.h b/gtk/main_packet_list.h index aa48ef8784..0758eca40d 100644 --- a/gtk/main_packet_list.h +++ b/gtk/main_packet_list.h @@ -37,6 +37,10 @@ typedef enum { COLUMN_SELECTED_SORT_ASCENDING, COLUMN_SELECTED_SORT_DESCENDING, + COLUMN_SELECTED_SORT_NONE, + COLUMN_SELECTED_ALIGN_LEFT, + COLUMN_SELECTED_ALIGN_CENTER, + COLUMN_SELECTED_ALIGN_RIGHT, COLUMN_SELECTED_RESIZE, COLUMN_SELECTED_RENAME, COLUMN_SELECTED_REMOVE diff --git a/gtk/menus.c b/gtk/menus.c index bc45ec2860..c22e271e56 100644 --- a/gtk/menus.c +++ b/gtk/menus.c @@ -786,6 +786,13 @@ static GtkItemFactoryEntry packet_list_heading_items[] = #else {"/Sort Ascending", NULL, GTK_MENU_FUNC(packet_list_column_menu_cb), COLUMN_SELECTED_SORT_ASCENDING, "<StockItem>", GTK_STOCK_SORT_ASCENDING,}, {"/Sort Descending", NULL, GTK_MENU_FUNC(packet_list_column_menu_cb), COLUMN_SELECTED_SORT_DESCENDING, "<StockItem>", GTK_STOCK_SORT_DESCENDING,}, + {"/No Sorting", NULL, GTK_MENU_FUNC(packet_list_column_menu_cb), COLUMN_SELECTED_SORT_NONE, NULL, NULL,}, + + {"/<separator>", NULL, NULL, 0, "<Separator>", NULL,}, + + {"/Align Left", NULL, GTK_MENU_FUNC(packet_list_column_menu_cb), COLUMN_SELECTED_ALIGN_LEFT, "<StockItem>", GTK_STOCK_JUSTIFY_LEFT,}, + {"/Align Center", NULL, GTK_MENU_FUNC(packet_list_column_menu_cb), COLUMN_SELECTED_ALIGN_CENTER, "<StockItem>", GTK_STOCK_JUSTIFY_CENTER,}, + {"/Align Right", NULL, GTK_MENU_FUNC(packet_list_column_menu_cb), COLUMN_SELECTED_ALIGN_RIGHT, "<StockItem>", GTK_STOCK_JUSTIFY_RIGHT,}, {"/<separator>", NULL, NULL, 0, "<Separator>", NULL,}, |