GUI enhancements (about & help windows)
Follow TCP stream for IPv6
Protocol activation/deactivation (Edit:protocols)
- "Properties..." menu item
+ Ability to mark the frames and associated features
+ "Protocol Properties..." menu item
Miscellaneous enhancements and fixes
}
/* main.c
*
- * $Id: main.c,v 1.145 2000/08/21 15:45:33 deniel Exp $
+ * $Id: main.c,v 1.146 2000/08/21 19:36:09 deniel Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@zing.org>
gtk_clist_sort(clist);
}
+/* mark packets */
+static void
+set_frame_mark(gboolean set, frame_data *frame, gint row) {
+ if (frame == NULL || row == -1) return;
+ frame->flags.marked = set;
+ /* XXX need user-configurable colors here */
+ gtk_clist_set_background(GTK_CLIST(packet_list), row,
+ (set) ? &BLACK : &WHITE);
+ gtk_clist_set_foreground(GTK_CLIST(packet_list), row,
+ (set) ? &WHITE : &BLACK);
+}
+
static void
packet_list_button_pressed_cb(GtkWidget *w, GdkEvent *event, gpointer data) {
if (event->type == GDK_BUTTON_PRESS && event_button->button == 2 &&
gtk_clist_get_selection_info(GTK_CLIST(w), event_button->x, event_button->y,
&row, &column)) {
- frame_data *fdata;
- fdata = (frame_data *) gtk_clist_get_row_data(GTK_CLIST(w), row);
- if (fdata != NULL) {
- fdata->flags.marked = !fdata->flags.marked;
- /* XXX need user-configurable colors here */
- gtk_clist_set_background(GTK_CLIST(packet_list), row,
- (fdata->flags.marked) ?&BLACK : &WHITE);
- gtk_clist_set_foreground(GTK_CLIST(packet_list), row,
- (fdata->flags.marked) ?&WHITE : &BLACK);
- }
+ frame_data *fdata = (frame_data *) gtk_clist_get_row_data(GTK_CLIST(w), row);
+ set_frame_mark(!fdata->flags.marked, fdata, row);
}
}
+void mark_frame_cb(GtkWidget *w, gpointer data) {
+ if (cfile.current_frame) {
+ /* XXX hum, should better have a "cfile->current_row" here ... */
+ set_frame_mark(!cfile.current_frame->flags.marked,
+ cfile.current_frame,
+ gtk_clist_find_row_from_data(GTK_CLIST(packet_list),
+ cfile.current_frame));
+ }
+}
+
+static void mark_all_frames(gboolean set) {
+ frame_data *fdata;
+ if (cfile.plist == NULL) return;
+ for (fdata = cfile.plist; fdata != NULL; fdata = fdata->next) {
+ set_frame_mark(set,
+ fdata,
+ gtk_clist_find_row_from_data(GTK_CLIST(packet_list), fdata));
+ }
+}
+
+void mark_all_frames_cb(GtkWidget *w, gpointer data) {
+ mark_all_frames(TRUE);
+}
+
+void unmark_all_frames_cb(GtkWidget *w, gpointer data) {
+ mark_all_frames(FALSE);
+}
+
/* What to do when a list item is selected/unselected */
static void
packet_list_select_cb(GtkWidget *w, gint row, gint col, gpointer evt) {
/* main.h
* Global defines, etc.
*
- * $Id: main.h,v 1.17 2000/08/20 07:53:45 guy Exp $
+ * $Id: main.h,v 1.18 2000/08/21 19:36:10 deniel Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@zing.org>
void expand_all_cb(GtkWidget *, gpointer);
void collapse_all_cb(GtkWidget *, gpointer);
void resolve_name_cb(GtkWidget *, gpointer);
+void mark_frame_cb(GtkWidget *, gpointer);
+void mark_all_frames_cb(GtkWidget *w, gpointer);
+void unmark_all_frames_cb(GtkWidget *w, gpointer);
#endif /* __MAIN_H__ */
/* menu.c
* Menu routines
*
- * $Id: menu.c,v 1.41 2000/08/21 12:33:21 deniel Exp $
+ * $Id: menu.c,v 1.42 2000/08/21 19:36:08 deniel Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@zing.org>
{"/Edit/_Find Frame...", "<control>F", GTK_MENU_FUNC(find_frame_cb), 0, NULL},
{"/Edit/_Go To Frame...", "<control>G", GTK_MENU_FUNC(goto_frame_cb), 0, NULL},
{"/Edit/<separator>", NULL, NULL, 0, "<Separator>"},
+ {"/Edit/Mark Frame", "<control>M", GTK_MENU_FUNC(mark_frame_cb), 0, NULL},
+ {"/Edit/Mark _All Frames", NULL, GTK_MENU_FUNC(mark_all_frames_cb), 0, NULL},
+ {"/Edit/_Unmark All Frames", NULL, GTK_MENU_FUNC(unmark_all_frames_cb), 0, NULL},
+ {"/Edit/<separator>", NULL, NULL, 0, "<Separator>"},
{"/Edit/_Preferences...", NULL, GTK_MENU_FUNC(prefs_cb), 0, NULL},
{"/Edit/_Filters...", NULL, GTK_MENU_FUNC(filter_dialog_cb), 0, NULL},
{"/Edit/P_rotocols...", NULL, GTK_MENU_FUNC(proto_cb), 0, NULL},
set_menus_for_selected_packet(gboolean have_selected_packet)
{
set_menu_sensitivity("/File/Print Packet", have_selected_packet);
+ set_menu_sensitivity("/Edit/Mark Frame", have_selected_packet);
+ set_menu_sensitivity("/Edit/Mark All Frames", have_selected_packet);
+ set_menu_sensitivity("/Edit/Unmark All Frames", have_selected_packet);
set_menu_sensitivity("/Display/Collapse All", have_selected_packet);
set_menu_sensitivity("/Display/Expand All", have_selected_packet);
set_menu_sensitivity("/Display/Show Packet In New Window", have_selected_packet);