forked from osmocom/wireshark
Indicate default column alignment in the popup menu.
svn path=/trunk/; revision=31150
This commit is contained in:
parent
40b377bd66
commit
942d6e41f8
39
gtk/menus.c
39
gtk/menus.c
|
@ -770,7 +770,6 @@ static GtkItemFactoryEntry packet_list_heading_items[] =
|
|||
|
||||
{"/<separator>", NULL, NULL, 0, "<Separator>", NULL,},
|
||||
|
||||
{"/Default Alignment", NULL, GTK_MENU_FUNC(new_packet_list_column_menu_cb), COLUMN_SELECTED_ALIGN_DEFAULT, NULL, NULL,},
|
||||
{"/Align Left", NULL, GTK_MENU_FUNC(new_packet_list_column_menu_cb), COLUMN_SELECTED_ALIGN_LEFT, "<StockItem>", GTK_STOCK_JUSTIFY_LEFT,},
|
||||
{"/Align Center", NULL, GTK_MENU_FUNC(new_packet_list_column_menu_cb), COLUMN_SELECTED_ALIGN_CENTER, "<StockItem>", GTK_STOCK_JUSTIFY_CENTER,},
|
||||
{"/Align Right", NULL, GTK_MENU_FUNC(new_packet_list_column_menu_cb), COLUMN_SELECTED_ALIGN_RIGHT, "<StockItem>", GTK_STOCK_JUSTIFY_RIGHT,},
|
||||
|
@ -3189,6 +3188,44 @@ rebuild_protocol_prefs_menu (module_t *prefs, gboolean preferences)
|
|||
|
||||
}
|
||||
|
||||
void
|
||||
menus_set_column_align_default (gboolean right_justify)
|
||||
{
|
||||
GtkWidget *submenu, *menu_item_child;
|
||||
GList *child_list, *child_list_item;
|
||||
const gchar *menu_item_name;
|
||||
gint menu_item_len;
|
||||
|
||||
/* get the submenu container item */
|
||||
submenu = packet_list_heading_factory->widget;
|
||||
|
||||
/* find the corresponding menu items to update */
|
||||
child_list = gtk_container_get_children(GTK_CONTAINER(submenu));
|
||||
child_list_item = child_list;
|
||||
while(child_list_item) {
|
||||
menu_item_child = (GTK_BIN(child_list_item->data))->child;
|
||||
if (menu_item_child != NULL) {
|
||||
menu_item_name = gtk_label_get_text(GTK_LABEL(menu_item_child));
|
||||
menu_item_len = strlen (menu_item_name);
|
||||
if(strncmp(menu_item_name, "Align Left", 10) == 0) {
|
||||
if (!right_justify && menu_item_len == 10) {
|
||||
gtk_label_set_text(GTK_LABEL(menu_item_child), "Align Left\t(default)");
|
||||
} else if (right_justify && menu_item_len > 10) {
|
||||
gtk_label_set_text(GTK_LABEL(menu_item_child), "Align Left");
|
||||
}
|
||||
} else if (strncmp (menu_item_name, "Align Right", 11) == 0) {
|
||||
if (right_justify && menu_item_len == 11) {
|
||||
gtk_label_set_text(GTK_LABEL(menu_item_child), "Align Right\t(default)");
|
||||
} else if (!right_justify && menu_item_len > 11) {
|
||||
gtk_label_set_text(GTK_LABEL(menu_item_child), "Align Right");
|
||||
}
|
||||
}
|
||||
}
|
||||
child_list_item = g_list_next(child_list_item);
|
||||
}
|
||||
g_list_free(child_list);
|
||||
}
|
||||
|
||||
void
|
||||
set_menus_for_selected_tree_row(capture_file *cf)
|
||||
{
|
||||
|
|
|
@ -111,6 +111,9 @@ extern void set_menus_for_file_set(gboolean file_set, gboolean previous_file, gb
|
|||
/** The popup menu. */
|
||||
extern GtkWidget *popup_menu_object;
|
||||
|
||||
/* Update the packet list heading menu to indicate default
|
||||
column justification. */
|
||||
void menus_set_column_align_default (gboolean right_justify);
|
||||
|
||||
/* Enable or disable menu items based on whether a tree row is selected
|
||||
and and on whether a "Match Selected" can be done. */
|
||||
|
|
|
@ -280,7 +280,7 @@ new_packet_list_column_clicked_cb (GtkTreeViewColumn *col, gpointer user_data _U
|
|||
}
|
||||
|
||||
static gdouble
|
||||
get_xalign_value (gchar xalign, gint col_id)
|
||||
get_xalign_value (gchar xalign, gboolean right_justify)
|
||||
{
|
||||
double value;
|
||||
|
||||
|
@ -296,7 +296,7 @@ get_xalign_value (gchar xalign, gint col_id)
|
|||
break;
|
||||
case COLUMN_XALIGN_DEFAULT:
|
||||
default:
|
||||
if (right_justify_column (col_id)) {
|
||||
if (right_justify) {
|
||||
value = 1.0f;
|
||||
} else {
|
||||
value = 0.0f;
|
||||
|
@ -315,7 +315,8 @@ new_packet_list_xalign_column (gint col_id, GtkTreeViewColumn *col, gchar xalign
|
|||
#else
|
||||
GList *renderers = gtk_tree_view_column_get_cell_renderers (col);
|
||||
#endif
|
||||
gdouble value = get_xalign_value (xalign, col_id);
|
||||
gboolean right_justify = right_justify_column(col_id);
|
||||
gdouble value = get_xalign_value (xalign, right_justify);
|
||||
GList *entry;
|
||||
GtkCellRenderer *renderer;
|
||||
|
||||
|
@ -327,6 +328,12 @@ new_packet_list_xalign_column (gint col_id, GtkTreeViewColumn *col, gchar xalign
|
|||
}
|
||||
g_list_free (renderers);
|
||||
|
||||
if ((xalign == COLUMN_XALIGN_LEFT && !right_justify) ||
|
||||
(xalign == COLUMN_XALIGN_RIGHT && right_justify)) {
|
||||
/* Default value selected, save default in the recent settings */
|
||||
xalign = COLUMN_XALIGN_DEFAULT;
|
||||
}
|
||||
|
||||
recent_set_column_xalign (col_id, xalign);
|
||||
gtk_widget_queue_draw (packetlist->view);
|
||||
}
|
||||
|
@ -393,7 +400,10 @@ new_packet_list_column_button_pressed_cb (GtkWidget *widget, GdkEvent *event, gp
|
|||
{
|
||||
GtkWidget *col = (GtkWidget *) data;
|
||||
GtkWidget *menu = g_object_get_data(G_OBJECT(popup_menu_object), PM_PACKET_LIST_COL_KEY);
|
||||
gint col_id = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(col), E_MPACKET_LIST_COL_KEY));
|
||||
gboolean right_justify = right_justify_column (col_id);
|
||||
|
||||
menus_set_column_align_default (right_justify);
|
||||
g_object_set_data(G_OBJECT(packetlist->view), E_MPACKET_LIST_COLUMN_KEY, col);
|
||||
popup_menu_handler (widget, event, menu);
|
||||
}
|
||||
|
@ -407,6 +417,7 @@ create_view_and_model(void)
|
|||
gint i, col_width;
|
||||
gchar xalign;
|
||||
gdouble value;
|
||||
gboolean right_justify;
|
||||
GtkWidget *title_lb;
|
||||
gchar *tooltip_text;
|
||||
header_field_info *hfi;
|
||||
|
@ -441,10 +452,11 @@ create_view_and_model(void)
|
|||
xalign = recent_get_column_xalign(i);
|
||||
col = gtk_tree_view_column_new();
|
||||
gtk_tree_view_column_pack_start(col, renderer, TRUE);
|
||||
right_justify = right_justify_column (i);
|
||||
if (xalign != COLUMN_XALIGN_DEFAULT) {
|
||||
value = get_xalign_value(xalign, i);
|
||||
value = get_xalign_value(xalign, right_justify);
|
||||
g_object_set(G_OBJECT(renderer), "xalign", value, NULL);
|
||||
} else if (right_justify_column (i)) {
|
||||
} else if (right_justify) {
|
||||
g_object_set(G_OBJECT(renderer),
|
||||
"xalign",
|
||||
1.0,
|
||||
|
|
Loading…
Reference in New Issue