diff options
-rw-r--r-- | epan/column.c | 28 | ||||
-rw-r--r-- | epan/column.h | 3 | ||||
-rw-r--r-- | epan/prefs.c | 60 | ||||
-rw-r--r-- | gtk/menus.c | 53 | ||||
-rw-r--r-- | gtk/menus.h | 2 | ||||
-rw-r--r-- | gtk/new_packet_list.c | 50 | ||||
-rw-r--r-- | gtk/new_packet_list.h | 3 | ||||
-rw-r--r-- | gtk/prefs_column.c | 101 |
8 files changed, 279 insertions, 21 deletions
diff --git a/epan/column.c b/epan/column.c index 03ed22d673..e3ffceade2 100644 --- a/epan/column.c +++ b/epan/column.c @@ -655,6 +655,34 @@ get_column_title(const gint col) return(cfmt->title); } +gboolean +get_column_visible(const gint col) +{ + GList *clp = g_list_nth(prefs.col_list, col); + fmt_data *cfmt; + + if (!clp) /* Invalid column requested */ + return TRUE; + + cfmt = (fmt_data *) clp->data; + + return(cfmt->visible); +} + +void +set_column_visible(const gint col, gboolean visible) +{ + GList *clp = g_list_nth(prefs.col_list, col); + fmt_data *cfmt; + + if (!clp) /* Invalid column requested */ + return; + + cfmt = (fmt_data *) clp->data; + + cfmt->visible = visible; +} + const gchar * get_column_custom_field(const gint col) { diff --git a/epan/column.h b/epan/column.h index 89c0bec4a9..a30a889b42 100644 --- a/epan/column.h +++ b/epan/column.h @@ -33,6 +33,7 @@ typedef struct _fmt_data { gchar *title; gchar *fmt; gchar *custom_field; + gboolean visible; } fmt_data; const gchar *col_format_to_string(const gint); @@ -41,6 +42,8 @@ gint get_column_format(const gint); void get_column_format_matches(gboolean *, const gint); gint get_column_format_from_str(const gchar *); gchar *get_column_title(const gint); +gboolean get_column_visible(const gint); +void set_column_visible(const gint, gboolean); const gchar *get_column_custom_field(const gint); const gchar *get_column_width_string(const gint, const gint); const char *get_column_longest_string(const gint); diff --git a/epan/prefs.c b/epan/prefs.c index a2dcd8ab01..107668a265 100644 --- a/epan/prefs.c +++ b/epan/prefs.c @@ -68,6 +68,7 @@ static void free_col_info(e_prefs *); static gboolean prefs_initialized = FALSE; static gchar *gpf_path = NULL; +static gchar *cols_hidden_list = NULL; /* * XXX - variables to allow us to attempt to interpret the first @@ -1083,6 +1084,7 @@ init_prefs(void) { cfmt = (fmt_data *) g_malloc(sizeof(fmt_data)); cfmt->title = g_strdup(col_fmt[i * 2]); cfmt->fmt = g_strdup(col_fmt[(i * 2) + 1]); + cfmt->visible = TRUE; cfmt->custom_field = NULL; prefs.col_list = g_list_append(prefs.col_list, cfmt); } @@ -1640,6 +1642,30 @@ prefs_is_capture_device_hidden(const char *name) } /* + * Returns TRUE if the given column is hidden + */ +static gboolean +prefs_is_column_hidden(const gchar *cols_hidden, const char *fmt) +{ + gchar *tok, *cols; + size_t len; + + if (cols_hidden && fmt) { + cols = g_strdup (cols_hidden); + len = strlen (fmt); + for (tok = strtok (cols, ","); tok; tok = strtok(NULL, ",")) { + if (strlen (tok) == len && strcmp (fmt, tok) == 0) { + g_free (cols); + return TRUE; + } + } + g_free (cols); + } + + return FALSE; +} + +/* * Returns TRUE if the given device should capture in monitor mode by default */ gboolean @@ -1667,6 +1693,7 @@ prefs_capture_device_monitor_mode(const char *name) #define PRS_PRINT_DEST "print.destination" #define PRS_PRINT_FILE "print.file" #define PRS_PRINT_CMD "print.command" +#define PRS_COL_HIDDEN "column.hidden" #define PRS_COL_FMT "column.format" #define PRS_STREAM_CL_FG "stream.client.fg" #define PRS_STREAM_CL_BG "stream.client.bg" @@ -1902,6 +1929,8 @@ set_pref(gchar *pref_name, gchar *value, void *private_data _U_) } else if (strcmp(pref_name, PRS_PRINT_CMD) == 0) { g_free(prefs.pr_cmd); prefs.pr_cmd = g_strdup(value); + } else if (strcmp(pref_name, PRS_COL_HIDDEN) == 0) { + cols_hidden_list = g_strdup (value); } else if (strcmp(pref_name, PRS_COL_FMT) == 0) { col_l = prefs_get_string_list(value); if (col_l == NULL) @@ -1946,22 +1975,27 @@ set_pref(gchar *pref_name, gchar *value, void *private_data _U_) prefs.num_cols = llen / 2; col_l_elt = g_list_first(col_l); while(col_l_elt) { + gchar *prefs_fmt; cfmt = (fmt_data *) g_malloc(sizeof(fmt_data)); cfmt->title = g_strdup(col_l_elt->data); col_l_elt = col_l_elt->next; if (strncmp(col_l_elt->data, cust_format, cust_format_len) == 0) { - gchar *fmt = g_strdup(col_l_elt->data); cfmt->fmt = g_strdup(cust_format); - cfmt->custom_field = g_strdup(&fmt[cust_format_len+1]); /* add 1 for ':' */ - g_free (fmt); + prefs_fmt = g_strdup(col_l_elt->data); + cfmt->custom_field = g_strdup(&prefs_fmt[cust_format_len+1]); /* add 1 for ':' */ } else { cfmt->fmt = g_strdup(col_l_elt->data); + prefs_fmt = g_strdup(cfmt->fmt); cfmt->custom_field = NULL; } + cfmt->visible = prefs_is_column_hidden (cols_hidden_list, prefs_fmt) ? FALSE : TRUE; + g_free (prefs_fmt); col_l_elt = col_l_elt->next; prefs.col_list = g_list_append(prefs.col_list, cfmt); } prefs_clear_string_list(col_l); + g_free (cols_hidden_list); + cols_hidden_list = NULL; } else if (strcmp(pref_name, PRS_STREAM_CL_FG) == 0) { cval = strtoul(value, NULL, 16); prefs.st_client_fg.pixel = 0; @@ -2786,6 +2820,7 @@ write_prefs(char **pf_path_return) GList *clp, *col_l; fmt_data *cfmt; const gchar *cust_format = col_format_to_string(COL_CUSTOM); + GString *cols_hidden = g_string_new (""); /* Needed for "-G defaultprefs" */ init_prefs(); @@ -2968,16 +3003,31 @@ write_prefs(char **pf_path_return) clp = prefs.col_list; col_l = NULL; while (clp) { + gchar *prefs_fmt; cfmt = (fmt_data *) clp->data; col_l = g_list_append(col_l, g_strdup(cfmt->title)); if ((strcmp(cfmt->fmt, cust_format) == 0) && (cfmt->custom_field)) { - gchar *fmt = g_strdup_printf("%s:%s", cfmt->fmt, cfmt->custom_field); - col_l = g_list_append(col_l, fmt); + prefs_fmt = g_strdup_printf("%s:%s", cfmt->fmt, cfmt->custom_field); + col_l = g_list_append(col_l, prefs_fmt); } else { + prefs_fmt = cfmt->fmt; col_l = g_list_append(col_l, g_strdup(cfmt->fmt)); } + if (!cfmt->visible) { + if (strlen (cols_hidden->str)) { + g_string_append (cols_hidden, ", "); + } + g_string_append (cols_hidden, prefs_fmt); + } clp = clp->next; } + fprintf (pf, "\n# Packet list hidden columns.\n"); + fprintf (pf, "# List all columns to hide in the packet list.\n"); + fprintf (pf, "%s: %s\n", PRS_COL_HIDDEN, cols_hidden->str); + /* This frees the list of strings, but not the strings to which it + refers; they are free'ed in put_string_list(). */ + g_string_free (cols_hidden, TRUE); + fprintf (pf, "\n# Packet list column format.\n"); fprintf (pf, "# Each pair of strings consists of a column title and its format.\n"); fprintf (pf, "%s: %s\n", PRS_COL_FMT, put_string_list(col_l)); diff --git a/gtk/menus.c b/gtk/menus.c index 81ddc33d97..a0c7776c09 100644 --- a/gtk/menus.c +++ b/gtk/menus.c @@ -43,6 +43,7 @@ #include <epan/strutil.h> #include <epan/plugins.h> #include <epan/epan_dissect.h> +#include <epan/column.h> #include "../print.h" #include "../register.h" @@ -618,6 +619,7 @@ static GtkItemFactoryEntry menu_items[] = #ifdef NEW_PACKET_LIST {"/View/Resize All Columns", "<shift><control>R", GTK_MENU_FUNC(new_packet_list_resize_columns_cb), 0, "<StockItem>", WIRESHARK_STOCK_RESIZE_COLUMNS,}, + {"/View/Visible Columns", NULL, NULL, 0, NULL, NULL,}, #else {"/View/Resize All Columns", "<shift><control>R", GTK_MENU_FUNC(packet_list_resize_columns_cb), 0, "<StockItem>", WIRESHARK_STOCK_RESIZE_COLUMNS,}, @@ -807,6 +809,7 @@ static GtkItemFactoryEntry packet_list_heading_items[] = {"/<separator>", NULL, NULL, 0, "<Separator>", NULL,}, + {"/Hide Column", NULL, GTK_MENU_FUNC(new_packet_list_column_menu_cb), COLUMN_SELECTED_HIDE, NULL, NULL,}, {"/Remove Column", NULL, GTK_MENU_FUNC(new_packet_list_column_menu_cb), COLUMN_SELECTED_REMOVE, "<StockItem>", GTK_STOCK_DELETE,} #else {"/Sort Ascending", NULL, GTK_MENU_FUNC(packet_list_column_menu_cb), COLUMN_SELECTED_SORT_ASCENDING, "<StockItem>", GTK_STOCK_SORT_ASCENDING,}, @@ -3326,6 +3329,56 @@ rebuild_protocol_prefs_menu (module_t *prefs_module_p, gboolean preferences) } +#ifdef NEW_PACKET_LIST +static void +menu_visible_column_toggle (GtkWidget *w _U_, gpointer data) +{ + new_packet_list_toggle_visible_column (GPOINTER_TO_INT(data)); +} + +static void +menu_activate_all_columns (GtkWidget *w _U_, gpointer data _U_) +{ + new_packet_list_set_all_columns_visible (); +} + +void +rebuild_visible_columns_menu (void) +{ + GtkWidget *menu_columns, *menu_item; + GtkWidget *sub_menu; + GList *clp; + fmt_data *cfmt; + gint col_id = 0; + + menu_columns = gtk_item_factory_get_widget(main_menu_factory, "/View/Visible Columns"); + + sub_menu = gtk_menu_new(); + gtk_menu_item_set_submenu (GTK_MENU_ITEM(menu_columns), sub_menu); + + clp = g_list_first (prefs.col_list); + while (clp) { + cfmt = (fmt_data *) clp->data; + menu_item = gtk_check_menu_item_new_with_label(cfmt->title); + gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM(menu_item), cfmt->visible); + g_signal_connect(menu_item, "activate", G_CALLBACK(menu_visible_column_toggle), GINT_TO_POINTER(col_id)); + gtk_menu_shell_append (GTK_MENU_SHELL(sub_menu), menu_item); + gtk_widget_show (menu_item); + clp = g_list_next (clp); + col_id++; + } + + menu_item = gtk_menu_item_new(); + gtk_menu_shell_append (GTK_MENU_SHELL(sub_menu), menu_item); + gtk_widget_show (menu_item); + + menu_item = gtk_menu_item_new_with_label ("Enable All"); + gtk_menu_shell_append (GTK_MENU_SHELL(sub_menu), menu_item); + g_signal_connect(menu_item, "activate", G_CALLBACK(menu_activate_all_columns), NULL); + gtk_widget_show (menu_item); +} +#endif + void menus_set_column_align_default (gboolean right_justify) { diff --git a/gtk/menus.h b/gtk/menus.h index e87575eb4f..d1e35a8ff1 100644 --- a/gtk/menus.h +++ b/gtk/menus.h @@ -65,6 +65,8 @@ extern void menu_colorize_changed(gboolean packet_list_colorize); /* Reset preferences menu on profile or preference change. */ extern void menu_prefs_reset(void); +extern void rebuild_visible_columns_menu (void); + #ifdef HAVE_LIBPCAP /** The "Auto Scroll Packet List in Live Capture" option changed. */ extern void menu_auto_scroll_live_changed(gboolean auto_scroll_in); diff --git a/gtk/new_packet_list.c b/gtk/new_packet_list.c index 186a0256db..4dbef78ae4 100644 --- a/gtk/new_packet_list.c +++ b/gtk/new_packet_list.c @@ -199,6 +199,7 @@ col_title_change_ok (GtkWidget *w, gpointer parent_w) prefs_main_write(); } + rebuild_visible_columns_menu (); window_destroy(GTK_WIDGET(parent_w)); } @@ -352,6 +353,49 @@ new_packet_list_xalign_column (gint col_id, GtkTreeViewColumn *col, gchar xalign } static void +new_packet_list_set_visible_column (gint col_id, GtkTreeViewColumn *col, gboolean visible) +{ + gtk_tree_view_column_set_visible(col, visible); + set_column_visible(col_id, visible); + + if (!prefs.gui_use_pref_save) { + prefs_main_write(); + } + + rebuild_visible_columns_menu (); + gtk_widget_queue_draw (packetlist->view); +} + +void +new_packet_list_toggle_visible_column (gint col_id) +{ + GtkTreeViewColumn *col = + gtk_tree_view_get_column(GTK_TREE_VIEW(GTK_TREE_VIEW(packetlist->view)), col_id); + + new_packet_list_set_visible_column (col_id, col, get_column_visible(col_id) ? FALSE : TRUE); +} + +void +new_packet_list_set_all_columns_visible (void) +{ + GtkTreeViewColumn *col; + int col_id; + + for (col_id = 0; col_id < cfile.cinfo.num_cols; col_id++) { + col = gtk_tree_view_get_column(GTK_TREE_VIEW(GTK_TREE_VIEW(packetlist->view)), col_id); + gtk_tree_view_column_set_visible(col, TRUE); + set_column_visible(col_id, TRUE); + } + + if (!prefs.gui_use_pref_save) { + prefs_main_write(); + } + + rebuild_visible_columns_menu (); + gtk_widget_queue_draw (packetlist->view); +} + +static void new_packet_list_remove_column (gint col_id, GtkTreeViewColumn *col _U_) { column_prefs_remove(col_id); @@ -399,6 +443,9 @@ new_packet_list_column_menu_cb (GtkWidget *w _U_, gpointer user_data _U_, COLUMN case COLUMN_SELECTED_RENAME: col_title_edit_dlg (col); break; + case COLUMN_SELECTED_HIDE: + new_packet_list_set_visible_column (col_id, col, FALSE); + break; case COLUMN_SELECTED_REMOVE: new_packet_list_remove_column (col_id, col); break; @@ -494,6 +541,7 @@ create_view_and_model(void) g_free (escaped_title); gtk_tree_view_column_set_clickable(col, TRUE); gtk_tree_view_column_set_resizable(col, TRUE); + gtk_tree_view_column_set_visible(col, get_column_visible(i)); gtk_tree_view_column_set_sizing(col,GTK_TREE_VIEW_COLUMN_FIXED); gtk_tree_view_column_set_reorderable(col, TRUE); /* XXX - Should this be saved in the prefs? */ @@ -545,6 +593,8 @@ create_view_and_model(void) } } + rebuild_visible_columns_menu (); + return packetlist->view; } diff --git a/gtk/new_packet_list.h b/gtk/new_packet_list.h index 9ed095c13c..6df8f66f4d 100644 --- a/gtk/new_packet_list.h +++ b/gtk/new_packet_list.h @@ -40,11 +40,14 @@ typedef enum { COLUMN_SELECTED_ALIGN_DEFAULT, COLUMN_SELECTED_RESIZE, COLUMN_SELECTED_RENAME, + COLUMN_SELECTED_HIDE, COLUMN_SELECTED_REMOVE } COLUMN_SELECTED_E; GtkWidget *new_packet_list_create(void); void new_packet_list_recreate(void); +void new_packet_list_toggle_visible_column (gint col_id); +void new_packet_list_set_all_columns_visible (void); void new_packet_list_column_menu_cb (GtkWidget *w, gpointer data, COLUMN_SELECTED_E action); void new_packet_list_resize_columns_cb(GtkWidget *widget _U_, gpointer data _U_); gboolean new_packet_list_get_event_row_column(GdkEventButton *event_button, gint *physical_row, gint *row, gint *column); diff --git a/gtk/prefs_column.c b/gtk/prefs_column.c index daaa898cde..f5f754a8d6 100644 --- a/gtk/prefs_column.c +++ b/gtk/prefs_column.c @@ -62,6 +62,43 @@ static void column_field_changed_cb(GtkEditable *, gpointer); static void column_dnd_row_deleted_cb(GtkTreeModel *, GtkTreePath *, gpointer); static gboolean column_title_changed_cb(GtkCellRendererText *, const gchar *, const gchar *, gpointer); +enum { +#ifdef NEW_PACKET_LIST + VISIBLE_COLUMN, +#endif + TITLE_COLUMN, + FORMAT_COLUMN, + DATA_COLUMN, + N_COLUMN /* The number of columns */ +}; + +#ifdef NEW_PACKET_LIST +/* Visible toggled */ +static void +visible_toggled(GtkCellRendererToggle *cell _U_, gchar *path_str, gpointer data) +{ + GtkTreeModel *model = (GtkTreeModel *)data; + GtkTreeIter iter; + GtkTreePath *path = gtk_tree_path_new_from_string(path_str); + GList *clp; + fmt_data *cfmt; + + gtk_tree_model_get_iter(model, &iter, path); + gtk_tree_model_get(model, &iter, DATA_COLUMN, &clp, -1); + + cfmt = (fmt_data *) clp->data; + if (cfmt->visible) + cfmt->visible = FALSE; + else + cfmt->visible = TRUE; + + gtk_list_store_set(GTK_LIST_STORE(model), &iter, VISIBLE_COLUMN, cfmt->visible, -1); + cfile.cinfo.columns_changed = TRUE; + + gtk_tree_path_free(path); +} /* visible_toggled */ +#endif + /* * Create and display the column selection widgets. * Called as part of the creation of the Preferences notebook ( Edit ! Preferences ) @@ -77,7 +114,11 @@ column_prefs_show(GtkWidget *prefs_window) { gint i; gchar *fmt; gint cur_fmt; +#ifdef NEW_PACKET_LIST + const gchar *column_titles[] = {"Visible", "Title", "Field type"}; +#else const gchar *column_titles[] = {"Title", "Field type"}; +#endif GtkListStore *store; GtkCellRenderer *renderer; GtkTreeViewColumn *column; @@ -107,7 +148,11 @@ column_prefs_show(GtkWidget *prefs_window) { gtk_container_add(GTK_CONTAINER(list_vb), list_sc); gtk_widget_show(list_sc); - store = gtk_list_store_new(3, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_POINTER); + store = gtk_list_store_new(N_COLUMN, +#ifdef NEW_PACKET_LIST + G_TYPE_BOOLEAN, +#endif + G_TYPE_STRING, G_TYPE_STRING, G_TYPE_POINTER); column_row_deleted_handler_id = g_signal_connect(GTK_TREE_MODEL(store), "row-deleted", G_CALLBACK(column_dnd_row_deleted_cb), NULL); @@ -118,15 +163,23 @@ column_prefs_show(GtkWidget *prefs_window) { gtk_tooltips_set_tip (tooltips, column_l, "Click on a title to change its name.\nDrag an item to change its order.", NULL); +#ifdef NEW_PACKET_LIST + renderer = gtk_cell_renderer_toggle_new(); + g_signal_connect(renderer, "toggled", G_CALLBACK(visible_toggled), store); + column = gtk_tree_view_column_new_with_attributes(column_titles[VISIBLE_COLUMN], renderer, "active", VISIBLE_COLUMN, NULL); + gtk_tree_view_column_set_sizing(column, GTK_TREE_VIEW_COLUMN_AUTOSIZE); + gtk_tree_view_append_column(GTK_TREE_VIEW(column_l), column); +#endif + renderer = gtk_cell_renderer_text_new(); g_object_set(G_OBJECT(renderer), "editable", TRUE, NULL); g_signal_connect (renderer, "edited", G_CALLBACK(column_title_changed_cb), GTK_TREE_MODEL(store)); - column = gtk_tree_view_column_new_with_attributes(column_titles[0], renderer, "text", 0, NULL); + column = gtk_tree_view_column_new_with_attributes(column_titles[TITLE_COLUMN], renderer, "text", TITLE_COLUMN, NULL); gtk_tree_view_column_set_sizing(column, GTK_TREE_VIEW_COLUMN_AUTOSIZE); gtk_tree_view_append_column(GTK_TREE_VIEW(column_l), column); renderer = gtk_cell_renderer_text_new(); - column = gtk_tree_view_column_new_with_attributes(column_titles[1], renderer, "text", 1, NULL); + column = gtk_tree_view_column_new_with_attributes(column_titles[FORMAT_COLUMN], renderer, "text", FORMAT_COLUMN, NULL); gtk_tree_view_column_set_sizing(column, GTK_TREE_VIEW_COLUMN_AUTOSIZE); gtk_tree_view_append_column(GTK_TREE_VIEW(column_l), column); @@ -152,8 +205,17 @@ column_prefs_show(GtkWidget *prefs_window) { } fmt = g_strdup_printf("%s", col_format_desc(cur_fmt)); } +#if GTK_CHECK_VERSION(2,6,0) + gtk_list_store_insert_with_values(store, &iter, G_MAXINT, +#else gtk_list_store_append(store, &iter); - gtk_list_store_set(store, &iter, 0, cfmt->title, 1, fmt, 2, clp, -1); + gtk_list_store_set(store, &iter, +#endif +#ifdef NEW_PACKET_LIST + VISIBLE_COLUMN, cfmt->visible, +#endif + TITLE_COLUMN, cfmt->title, FORMAT_COLUMN, fmt, DATA_COLUMN, clp, -1); + if (first_row) { first_iter = iter; first_row = FALSE; @@ -332,11 +394,18 @@ column_list_new_cb(GtkWidget *w _U_, gpointer data) { column_prefs_add_custom (cur_fmt, title, NULL); model = gtk_tree_view_get_model(column_l); +#if GTK_CHECK_VERSION(2,6,0) + gtk_list_store_insert_with_values(GTK_LIST_STORE(model), &iter, G_MAXINT, +#else gtk_list_store_append(GTK_LIST_STORE(model), &iter); gtk_list_store_set(GTK_LIST_STORE(model), &iter, - 0, title, - 1, col_format_desc(cur_fmt), - 2, g_list_last(prefs.col_list), +#endif +#ifdef NEW_PACKET_LIST + VISIBLE_COLUMN, TRUE, +#endif + TITLE_COLUMN, title, + FORMAT_COLUMN, col_format_desc(cur_fmt), + DATA_COLUMN, g_list_last(prefs.col_list), -1); /* Triggers call to column_list_select_cb() */ @@ -370,7 +439,7 @@ column_list_delete_cb(GtkWidget *w _U_, gpointer data) { sel = gtk_tree_view_get_selection(column_l); if (gtk_tree_selection_get_selected(sel, &model, &iter)) { - gtk_tree_model_get(model, &iter, 2, &clp, -1); + gtk_tree_model_get(model, &iter, DATA_COLUMN, &clp, -1); cfmt = (fmt_data *) clp->data; g_free(cfmt->title); @@ -432,9 +501,9 @@ column_title_changed_cb(GtkCellRendererText *cell _U_, const gchar *str_path, co gtk_tree_model_get_iter(model, &iter, path); - gtk_list_store_set(GTK_LIST_STORE(model), &iter, 0, new_title, -1); + gtk_list_store_set(GTK_LIST_STORE(model), &iter, TITLE_COLUMN, new_title, -1); - gtk_tree_model_get(model, &iter, 2, &clp, -1); + gtk_tree_model_get(model, &iter, DATA_COLUMN, &clp, -1); if (clp) { cfmt = (fmt_data *) clp->data; g_free(cfmt->title); @@ -463,7 +532,7 @@ column_list_select_cb(GtkTreeSelection *sel, gpointer data _U_) /* if something was selected */ if (gtk_tree_selection_get_selected(sel, &model, &iter)) { - gtk_tree_model_get(model, &iter, 2, &clp, -1); + gtk_tree_model_get(model, &iter, DATA_COLUMN, &clp, -1); g_assert(clp != NULL); cfmt = (fmt_data *) clp->data; cur_fmt = get_column_format_from_str(cfmt->fmt); @@ -532,7 +601,7 @@ column_menu_changed_cb(GtkWidget *w, gpointer data) { return; /* no column list selection [Can this happen ?]: ignore callback */ cur_cb_fmt = gtk_combo_box_get_active(GTK_COMBO_BOX(w)); - gtk_tree_model_get(model, &iter, 2, &clp, -1); + gtk_tree_model_get(model, &iter, DATA_COLUMN, &clp, -1); cfmt = (fmt_data *) clp->data; cur_fmt = get_column_format_from_str(cfmt->fmt); @@ -566,7 +635,7 @@ column_menu_changed_cb(GtkWidget *w, gpointer data) { } g_signal_handler_unblock(field_te, column_field_changed_handler_id); - gtk_list_store_set(GTK_LIST_STORE(model), &iter, 1, fmt, -1); + gtk_list_store_set(GTK_LIST_STORE(model), &iter, FORMAT_COLUMN, fmt, -1); g_free(fmt); g_free(cfmt->fmt); cfmt->fmt = g_strdup(col_format_to_string(cur_cb_fmt)); @@ -600,7 +669,7 @@ column_field_changed_cb(GtkEditable *te, gpointer data) { } field = gtk_editable_get_chars(te, 0, -1); - gtk_tree_model_get(model, &iter, 2, &clp, -1); + gtk_tree_model_get(model, &iter, DATA_COLUMN, &clp, -1); cfmt = (fmt_data *) clp->data; if (strcmp(cfmt->custom_field, field) == 0) { return; /* no action req'd */ @@ -610,7 +679,7 @@ column_field_changed_cb(GtkEditable *te, gpointer data) { cur_fmt = get_column_format_from_str(cfmt->fmt); fmt = g_strdup_printf("%s (%s)", col_format_desc(cur_fmt), field); - gtk_list_store_set(GTK_LIST_STORE(model), &iter, 1, fmt, -1); + gtk_list_store_set(GTK_LIST_STORE(model), &iter, FORMAT_COLUMN, fmt, -1); g_free(fmt); g_free(cfmt->custom_field); cfmt->custom_field = field; @@ -647,7 +716,7 @@ column_dnd_row_deleted_cb(GtkTreeModel *model, GtkTreePath *path _U_, gpointer d items_left; items_left = gtk_tree_model_iter_next (model, &iter)) { - gtk_tree_model_get(model, &iter, 2, &clp, -1); + gtk_tree_model_get(model, &iter, DATA_COLUMN, &clp, -1); if (clp) { prefs.col_list = g_list_remove_link(prefs.col_list, clp); new_col_list = g_list_concat(new_col_list, clp); |