diff options
author | Jakub Zawadzki <darkjames-ws@darkjames.pl> | 2012-07-25 17:59:56 +0000 |
---|---|---|
committer | Jakub Zawadzki <darkjames-ws@darkjames.pl> | 2012-07-25 17:59:56 +0000 |
commit | fce74c732bcdce8a773fc488d1be4e9278e078b1 (patch) | |
tree | c2d283a2a8b94ffe6d44b598c7e9535668b1c770 | |
parent | 85e9ca3940da85fccaba810bc379be3ec3ef81a7 (diff) |
Make PacketListRecord structure private.
svn path=/trunk/; revision=44004
-rw-r--r-- | ui/gtk/new_packet_list.c | 106 | ||||
-rw-r--r-- | ui/gtk/packet_list_store.c | 51 | ||||
-rw-r--r-- | ui/gtk/packet_list_store.h | 24 |
3 files changed, 73 insertions, 108 deletions
diff --git a/ui/gtk/new_packet_list.c b/ui/gtk/new_packet_list.c index 2bfae5c18c..95928653b1 100644 --- a/ui/gtk/new_packet_list.c +++ b/ui/gtk/new_packet_list.c @@ -852,19 +852,19 @@ create_view_and_model(void) return packetlist->view; } -static PacketListRecord * +static frame_data * new_packet_list_get_record(GtkTreeModel *model, GtkTreeIter *iter) { - PacketListRecord *record; - /* The last column is reserved for the entire PacketListRecord */ + frame_data *fdata; + /* The last column is reserved for frame_data */ gint record_column = gtk_tree_model_get_n_columns(model)-1; gtk_tree_model_get(model, iter, record_column, - &record, + &fdata, -1); - return record; + return fdata; } void @@ -1147,11 +1147,9 @@ new_packet_list_select_row_from_data(frame_data *fdata_needle) return FALSE; do { - PacketListRecord *record; frame_data *fdata; - record = new_packet_list_get_record(model, &iter); - fdata = record->fdata; + fdata = new_packet_list_get_record(model, &iter); if(fdata == fdata_needle) { scroll_to_and_select_iter(model, NULL, &iter); @@ -1268,7 +1266,7 @@ new_packet_list_get_event_row_column(GdkEventButton *event_button, GtkTreeIter iter; GList *cols; gint *indices; - PacketListRecord *record; + frame_data *fdata; /* Fetch indices */ gtk_tree_model_get_iter(model, &iter, path); @@ -1279,8 +1277,8 @@ new_packet_list_get_event_row_column(GdkEventButton *event_button, gtk_tree_path_free(path); /* Fetch physical row */ - record = new_packet_list_get_record(model, &iter); - *physical_row = record->fdata->num; + fdata = new_packet_list_get_record(model, &iter); + *physical_row = fdata->num; /* Fetch column */ /* XXX -doesn't work if columns are re-arranged? */ @@ -1299,16 +1297,16 @@ new_packet_list_get_row_data(gint row) { GtkTreePath *path = gtk_tree_path_new(); GtkTreeIter iter; - PacketListRecord *record; + frame_data *fdata; gtk_tree_path_append_index(path, row-1); gtk_tree_model_get_iter(GTK_TREE_MODEL(packetlist), &iter, path); - record = new_packet_list_get_record(GTK_TREE_MODEL(packetlist), &iter); + fdata = new_packet_list_get_record(GTK_TREE_MODEL(packetlist), &iter); gtk_tree_path_free(path); - return record->fdata; + return fdata; } static void @@ -1317,25 +1315,13 @@ show_cell_data_func(GtkTreeViewColumn *col _U_, GtkCellRenderer *renderer, { guint col_num = GPOINTER_TO_INT(data); frame_data *fdata; - const gchar *cell_text; - PacketListRecord *record; - - record = new_packet_list_get_record(model, iter); - fdata = record->fdata; - - if (!record->columnized || !record->colorized) { - packet_list_dissect_and_cache_iter(packetlist, iter, - !record->columnized, - !record->colorized); - } + gchar *cell_text; - g_assert(record->col_text); - - if (col_based_on_frame_data(&cfile.cinfo, col_num)) { - col_fill_in_frame_data(fdata, &cfile.cinfo, col_num, FALSE); - cell_text = cfile.cinfo.col_data[col_num]; - }else - cell_text = record->col_text[col_num]; + gtk_tree_model_get(model, iter, + col_num, &cell_text, + /* The last column is reserved for frame_data */ + gtk_tree_model_get_n_columns(model)-1, &fdata, + -1); g_assert(cell_text); @@ -1375,6 +1361,7 @@ show_cell_data_func(GtkTreeViewColumn *col _U_, GtkCellRenderer *renderer, "background-set", FALSE, NULL); } + g_free(cell_text); } void @@ -1475,16 +1462,16 @@ new_packet_list_mark_frame_cb(GtkWidget *w _U_, gpointer data _U_) GtkTreeModel *model; GtkTreeSelection *selection; GtkTreeIter iter; - PacketListRecord *record; + frame_data *fdata; selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(packetlist->view)); /* model is filled with the current model as a convenience. */ if (!gtk_tree_selection_get_selected(selection, &model, &iter)) return; - record = new_packet_list_get_record(model, &iter); + fdata = new_packet_list_get_record(model, &iter); - set_frame_mark(!record->fdata->flags.marked, record->fdata); + set_frame_mark(!fdata->flags.marked, fdata); mark_frames_ready(); } @@ -1551,15 +1538,15 @@ new_packet_list_ignore_frame_cb(GtkWidget *w _U_, gpointer data _U_) GtkTreeModel *model; GtkTreeSelection *selection; GtkTreeIter iter; - PacketListRecord *record; + frame_data *fdata; selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(packetlist->view)); /* model is filled with the current model as a convenience. */ if (!gtk_tree_selection_get_selected(selection, &model, &iter)) return; - record = new_packet_list_get_record(model, &iter); - set_frame_ignore(!record->fdata->flags.ignored, record->fdata); + fdata = new_packet_list_get_record(model, &iter); + set_frame_ignore(!fdata->flags.ignored, fdata); redissect_packets(); } @@ -1646,20 +1633,6 @@ new_packet_list_get_column_id (gint col_num) return col_id; } -static gboolean -get_col_text_from_record( PacketListRecord *record, gint col_num, gchar** cell_text) -{ - gint col_id = new_packet_list_get_column_id (col_num); - - if (col_based_on_frame_data(&cfile.cinfo, col_id)) { - col_fill_in_frame_data(record->fdata, &cfile.cinfo, col_id, FALSE); - *cell_text = g_strdup(cfile.cinfo.col_data[col_id]); - }else - *cell_text = g_strdup(record->col_text[col_id]); - - return TRUE; -} - void new_packet_list_copy_summary_cb(gpointer data _U_, copy_summary_type copy_type) { @@ -1669,7 +1642,7 @@ new_packet_list_copy_summary_cb(gpointer data _U_, copy_summary_type copy_type) GtkTreeModel *model; GtkTreeSelection *selection; GtkTreeIter iter; - PacketListRecord *record; + frame_data *fdata; if(CS_CSV == copy_type) { text = g_string_new("\""); @@ -1683,7 +1656,7 @@ new_packet_list_copy_summary_cb(gpointer data _U_, copy_summary_type copy_type) if (!gtk_tree_selection_get_selected(selection, &model, &iter)) return; - record = new_packet_list_get_record(model, &iter); + fdata = new_packet_list_get_record(model, &iter); for(col = 0; col < cfile.cinfo.num_cols; ++col) { if(col != 0) { if(CS_CSV == copy_type) { @@ -1692,10 +1665,11 @@ new_packet_list_copy_summary_cb(gpointer data _U_, copy_summary_type copy_type) g_string_append_c(text, '\t'); } } - if(get_col_text_from_record( record, col, &celltext)){ - g_string_append(text,celltext); - g_free(celltext); - } + + gtk_tree_model_get(model, &iter, new_packet_list_get_column_id(col), &celltext, -1); + g_string_append(text,celltext); + g_free(celltext); + } if(CS_CSV == copy_type) { g_string_append_c(text,'"'); @@ -1711,16 +1685,16 @@ new_packet_list_get_packet_comment(void) GtkTreeModel *model; GtkTreeSelection *selection; GtkTreeIter iter; - PacketListRecord *record; + frame_data *fdata; selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(packetlist->view)); /* model is filled with the current model as a convenience. */ if (!gtk_tree_selection_get_selected(selection, &model, &iter)) return NULL; - record = new_packet_list_get_record(model, &iter); + fdata = new_packet_list_get_record(model, &iter); - return record->fdata->opt_comment; + return fdata->opt_comment; } void @@ -1730,18 +1704,18 @@ new_packet_list_update_packet_comment(gchar *new_packet_comment) GtkTreeModel *model; GtkTreeSelection *selection; GtkTreeIter iter; - PacketListRecord *record; + frame_data *fdata; selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(packetlist->view)); /* model is filled with the current model as a convenience. */ if (!gtk_tree_selection_get_selected(selection, &model, &iter)) return; - record = new_packet_list_get_record(model, &iter); + fdata = new_packet_list_get_record(model, &iter); /* Check if the comment has changed */ - if (record->fdata->opt_comment) { - if (strcmp(record->fdata->opt_comment, new_packet_comment) == 0) { + if (fdata->opt_comment) { + if (strcmp(fdata->opt_comment, new_packet_comment) == 0) { g_free(new_packet_comment); return; } @@ -1754,7 +1728,7 @@ new_packet_list_update_packet_comment(gchar *new_packet_comment) } /* The comment has changed, let's update it */ - cf_update_packet_comment(&cfile, record->fdata, new_packet_comment); + cf_update_packet_comment(&cfile, fdata, new_packet_comment); /* Update the main window, as we now have unsaved changes. */ main_update_for_unsaved_changes(&cfile); diff --git a/ui/gtk/packet_list_store.c b/ui/gtk/packet_list_store.c index 6867b6b4d7..b88b853f95 100644 --- a/ui/gtk/packet_list_store.c +++ b/ui/gtk/packet_list_store.c @@ -54,6 +54,28 @@ #include "globals.h" +/** PacketListRecord: represents a row */ +typedef struct _PacketListRecord { + /** The column text for some columns */ + gchar **col_text; + /**< The length of the column text strings in 'col_text' */ + gushort *col_text_len; + + frame_data *fdata; + + /** Has this record been columnized? */ + gboolean columnized; + /** Has this record been colorized? */ + gboolean colorized; + + /* admin stuff used by the custom list model */ + /** position within the physical array */ + guint physical_pos; + /** position within the visible array */ + gint visible_pos; + +} PacketListRecord; + static void packet_list_init(PacketList *pkg_tree); static void packet_list_class_init(PacketListClass *klass); static void packet_list_tree_model_init(GtkTreeModelIface *iface); @@ -380,11 +402,19 @@ packet_list_get_value(GtkTreeModel *tree_model, GtkTreeIter *iter, gint column, */ switch(type){ case G_TYPE_POINTER: - g_value_set_pointer(value, record); + g_value_set_pointer(value, record->fdata); break; case G_TYPE_STRING: - g_return_if_fail(record->col_text); - g_value_set_string(value, record->col_text[column]); + if (!record->columnized || !record->colorized) + packet_list_dissect_and_cache_record(packet_list, record, !record->columnized, !record->colorized); + + if (col_based_on_frame_data(&cfile.cinfo, column)) { + col_fill_in_frame_data(record->fdata, &cfile.cinfo, column, FALSE); + g_value_set_string(value, cfile.cinfo.col_data[column]); + } else { + g_return_if_fail(record->col_text); + g_value_set_string(value, record->col_text[column]); + } break; default: g_warning (G_STRLOC ": Unsupported type (%s) retrieved.", g_type_name (value->g_type)); @@ -1113,21 +1143,6 @@ packet_list_recreate_visible_rows(PacketList *packet_list) return vis_idx; } -void -packet_list_dissect_and_cache_iter(PacketList *packet_list, GtkTreeIter *iter, gboolean dissect_columns, gboolean dissect_color) -{ - PacketListRecord *record; - - g_return_if_fail(packet_list != NULL); - g_return_if_fail(PACKETLIST_IS_LIST(packet_list)); - g_return_if_fail(iter != NULL); - g_return_if_fail(iter->user_data != NULL); - - record = iter->user_data; - - packet_list_dissect_and_cache_record(packet_list, record, dissect_columns, dissect_color); -} - static void packet_list_dissect_and_cache_record(PacketList *packet_list, PacketListRecord *record, gboolean dissect_columns, gboolean dissect_color) { diff --git a/ui/gtk/packet_list_store.h b/ui/gtk/packet_list_store.h index 6d01f7f144..3612769d2a 100644 --- a/ui/gtk/packet_list_store.h +++ b/ui/gtk/packet_list_store.h @@ -45,7 +45,6 @@ extern GType packet_list_get_type(void); #define PACKETLIST_IS_LIST_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE(klass), PACKETLIST_TYPE_LIST) #define PACKETLIST_LIST_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), PACKETLIST_TYPE_LIST, PacketListClass)) -typedef struct _PacketListRecord PacketListRecord; typedef struct _PacketList PacketList; typedef struct _PacketListClass PacketListClass; @@ -55,28 +54,6 @@ typedef struct _PacketListClass PacketListClass; #define PACKET_LIST_RECORD_COUNT(rows) ((rows) ? (rows)->len : 0) #define PACKET_LIST_RECORD_INDEX_VALID(rows, idx) ((rows) ? (((guint) (idx)) < (rows)->len) : FALSE) -/** PacketListRecord: represents a row */ -struct _PacketListRecord -{ - /** The column text for some columns */ - gchar **col_text; - /**< The length of the column text strings in 'col_text' */ - gushort *col_text_len; - - frame_data *fdata; - - /** Has this record been columnized? */ - gboolean columnized; - /** Has this record been colorized? */ - gboolean colorized; - - /* admin stuff used by the custom list model */ - /** position within the physical array */ - guint physical_pos; - /** position within the visible array */ - gint visible_pos; -}; - /** PacketList: Everything for our model implementation. */ struct _PacketList { @@ -122,7 +99,6 @@ guint packet_list_recreate_visible_rows(PacketList *packet_list); gboolean packet_list_visible_record(PacketList *packet_list, GtkTreeIter *iter); gint packet_list_append_record(PacketList *packet_list, frame_data *fdata); void packet_list_change_record(PacketList *packet_list, guint row, gint col, column_info *cinfo); -void packet_list_dissect_and_cache_iter(PacketList *packet_list, GtkTreeIter *iter, gboolean dissect_columns, gboolean dissect_color); gboolean packet_list_do_packet_list_dissect_and_cache_all(PacketList *packet_list, gint sort_col_id); void packet_list_reset_colorized(PacketList *packet_list); const char* packet_list_get_widest_column_string(PacketList *packet_list, gint col); |