aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--gtk/main_packet_list.c74
-rw-r--r--gtk/main_packet_list.h4
-rw-r--r--gtk/menus.c7
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,},