diff options
author | Michael Mann <mmann78@netscape.net> | 2015-12-22 15:07:00 -0500 |
---|---|---|
committer | Michael Mann <mmann78@netscape.net> | 2015-12-28 18:33:41 +0000 |
commit | 5e4bbcda9839d9fd4480db8c4f9386ff388d166c (patch) | |
tree | 9801cea61222e0e9e3f8c57f4574ddb6bab075c7 /ui | |
parent | c752daf4b8816d809a92894155ce8de1b24613c7 (diff) |
Refactor GUI dependencies out of color_filters.[ch] and move it to epan directory.
This also moved color.h into color_filters.h
Change-Id: Ic19e27aa1b3ec67e764aa7ee8bbef7b1187bb12e
Reviewed-on: https://code.wireshark.org/review/12831
Petri-Dish: Michael Mann <mmann78@netscape.net>
Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org>
Reviewed-by: Michael Mann <mmann78@netscape.net>
Diffstat (limited to 'ui')
-rw-r--r-- | ui/gtk/capture_file_dlg.c | 15 | ||||
-rw-r--r-- | ui/gtk/color_dlg.c | 57 | ||||
-rw-r--r-- | ui/gtk/color_edit_dlg.c | 3 | ||||
-rw-r--r-- | ui/gtk/color_utils.c | 9 | ||||
-rw-r--r-- | ui/gtk/color_utils.h | 10 | ||||
-rw-r--r-- | ui/gtk/compare_stat.c | 9 | ||||
-rw-r--r-- | ui/gtk/funnel_stat.c | 9 | ||||
-rw-r--r-- | ui/gtk/main.c | 41 | ||||
-rw-r--r-- | ui/gtk/main_menubar.c | 13 | ||||
-rw-r--r-- | ui/gtk/packet_list.c | 2 | ||||
-rw-r--r-- | ui/gtk/packet_list_store.c | 3 | ||||
-rw-r--r-- | ui/qt/Wireshark.pro | 1 | ||||
-rw-r--r-- | ui/qt/color_utils.cpp | 22 | ||||
-rw-r--r-- | ui/qt/color_utils.h | 4 | ||||
-rw-r--r-- | ui/qt/coloring_rules_dialog.cpp | 72 | ||||
-rw-r--r-- | ui/qt/column_preferences_frame.cpp | 2 | ||||
-rw-r--r-- | ui/qt/funnel_statistics.cpp | 10 | ||||
-rw-r--r-- | ui/qt/main_window_slots.cpp | 28 | ||||
-rw-r--r-- | ui/qt/module_preferences_scroll_area.h | 2 | ||||
-rw-r--r-- | ui/qt/packet_list.cpp | 3 | ||||
-rw-r--r-- | ui/qt/packet_list_model.cpp | 3 | ||||
-rw-r--r-- | ui/qt/packet_list_record.cpp | 3 | ||||
-rw-r--r-- | ui/qt/preferences_dialog.h | 2 | ||||
-rw-r--r-- | ui/qt/wireshark_application.cpp | 12 | ||||
-rw-r--r-- | ui/ui_util.h | 10 | ||||
-rw-r--r-- | ui/win32/file_dlg_win32.c | 16 |
26 files changed, 228 insertions, 133 deletions
diff --git a/ui/gtk/capture_file_dlg.c b/ui/gtk/capture_file_dlg.c index e120034751..bf4a7ecc99 100644 --- a/ui/gtk/capture_file_dlg.c +++ b/ui/gtk/capture_file_dlg.c @@ -31,8 +31,7 @@ #include <epan/prefs.h> #include "globals.h" -#include "color.h" -#include "color_filters.h" +#include <epan/color_filters.h> #include <wsutil/file_util.h> @@ -40,6 +39,7 @@ #include "ui/util.h" #include "ui/alert_box.h" +#include "ui/simple_dialog.h" #include "ui/file_dialog.h" #include "ui/recent.h" #include "ui/ui_util.h" @@ -2245,7 +2245,7 @@ file_color_import_cmd_cb(GtkWidget *color_filters, gpointer filter_list _U_) win32_import_color_file(GDK_WINDOW_HWND(gtk_widget_get_window(top_level)), color_filters); #else /* USE_WIN32_FILE_DIALOGS */ GtkWidget *main_vb, *cfglobal_but; - gchar *cf_name, *s; + gchar *cf_name, *s, *err_msg = NULL; /* No Apply button, and "OK" just sets our text widget, it doesn't activate it (i.e., it doesn't cause us to try to open the file). */ @@ -2277,11 +2277,13 @@ file_color_import_cmd_cb(GtkWidget *color_filters, gpointer filter_list _U_) } /* Try to open the color filter file. */ - if (!color_filters_import(cf_name, color_filters)) { + if (!color_filters_import(cf_name, color_filters, &err_msg, initialize_color, color_filter_add_cb)) { /* We couldn't open it; don't dismiss the open dialog box, just leave it around so that the user can, after they dismiss the alert box popped up for the open error, try again. */ + simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK, "%s", err_msg); + g_free(err_msg); g_free(cf_name); continue; } @@ -2341,6 +2343,7 @@ file_color_export_cmd_cb(GtkWidget *w _U_, gpointer filter_list) GtkWidget *cfselect_cb; gchar *cf_name; gchar *dirname; + gchar *err_msg = NULL; color_selected = FALSE; @@ -2390,10 +2393,12 @@ file_color_export_cmd_cb(GtkWidget *w _U_, gpointer filter_list) /* Write out the filters (all, or only the ones that are currently displayed or selected) to the file with the specified name. */ - if (!color_filters_export(cf_name, (GSList *)filter_list, color_selected)) { + if (!color_filters_export(cf_name, (GSList *)filter_list, color_selected, &err_msg)) { /* The write failed; don't dismiss the open dialog box, just leave it around so that the user can, after they dismiss the alert box popped up for the error, try again. */ + simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK, "%s", err_msg); + g_free(err_msg); g_free(cf_name); continue; } diff --git a/ui/gtk/color_dlg.c b/ui/gtk/color_dlg.c index dfbe60d773..edb6c6da13 100644 --- a/ui/gtk/color_dlg.c +++ b/ui/gtk/color_dlg.c @@ -28,8 +28,7 @@ #include <epan/packet.h> #include <epan/prefs.h> - -#include "../color_filters.h" +#include <epan/color_filters.h> #include "simple_dialog.h" @@ -149,6 +148,17 @@ int color_selected_count(void) return count; } + +/* a new color filter was read in from a filter file */ +void +color_filter_add_cb(color_filter_t *colorf, gpointer user_data) +{ + GtkWidget *color_filters = (GtkWidget*)user_data; + + add_filter_to_list(colorf, color_filters, FALSE); + + gtk_widget_grab_focus(color_filters); +} /* Create the "Coloring Rules" dialog. */ static GtkWidget* colorize_dialog_new (char *filter) @@ -406,7 +416,7 @@ colorize_dialog_new (char *filter) gtk_widget_grab_focus(color_filters); /* prepare filter list content */ - color_filters_clone(color_filters); + color_filters_clone(color_filters, color_filter_add_cb); g_object_set_data(G_OBJECT(color_win), COLOR_FILTER_LIST, &color_filter_edit_list); gtk_widget_show_all(color_win); @@ -734,18 +744,6 @@ add_filter_to_list(gpointer filter_arg, gpointer list_arg, gboolean prepend) } } - -/* a new color filter was read in from a filter file */ -void -color_filter_add_cb(color_filter_t *colorf, gpointer user_data) -{ - GtkWidget *color_filters = (GtkWidget*)user_data; - - add_filter_to_list(colorf, color_filters, FALSE); - - gtk_widget_grab_focus(color_filters); -} - /* Create a new filter, add it to the list, and pop up an "Edit color filter" dialog box to edit it. */ static void @@ -955,6 +953,7 @@ static void color_clear_cmd(GtkWidget *widget) { GtkWidget * color_filters; + gchar* err_msg = NULL; color_filters = (GtkWidget *)g_object_get_data(G_OBJECT(widget), COLOR_FILTERS_CL); @@ -964,7 +963,11 @@ color_clear_cmd(GtkWidget *widget) } /* try to read the global filters */ - color_filters_read_globals(color_filters); + if (!color_filters_read_globals(color_filters, &err_msg, initialize_color, color_filter_add_cb)) + { + simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK, "%s", err_msg); + g_free(err_msg); + } } /* User pressed "clear" button: ask user before really doing it */ @@ -1013,12 +1016,17 @@ color_clear_cb(GtkWidget *widget, gpointer data _U_) { static void overwrite_existing_colorfilters_cb(gpointer dialog _U_, gint btn, gpointer data _U_) { + gchar* err_msg = NULL; + switch (btn) { case(ESD_BTN_SAVE): /* overwrite the file*/ - if (!color_filters_write(color_filter_edit_list)) + if (!color_filters_write(color_filter_edit_list, &err_msg)) + { simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK, - "Could not open colorfilter file: %s", g_strerror(errno)); + "Could not open colorfilter file: %s", err_msg); + g_free(err_msg); + } else prefs.unknown_colorfilters = FALSE; break; @@ -1032,6 +1040,7 @@ overwrite_existing_colorfilters_cb(gpointer dialog _U_, gint btn, gpointer data static void colorfilters_main_save(void) { + gchar* err_msg = NULL; if (prefs.unknown_colorfilters) { gpointer dialog = simple_dialog(ESD_TYPE_CONFIRMATION, ESD_BTNS_SAVE_DONTSAVE, "Obsolete or unrecognized color filters have been detected. " @@ -1041,8 +1050,9 @@ colorfilters_main_save(void) simple_dialog_set_cb(dialog, overwrite_existing_colorfilters_cb, NULL); } else { - if (!color_filters_write(color_filter_edit_list)) - simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK, "Could not open filter file: %s", g_strerror(errno)); + if (!color_filters_write(color_filter_edit_list, &err_msg)) + simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK, "Could not open filter file: %s", err_msg); + g_free(err_msg); } } @@ -1064,6 +1074,8 @@ color_ok_cb(GtkButton *button _U_, gpointer user_data _U_) static void color_apply_cb(GtkButton *button _U_, gpointer user_data _U_) { + gchar* err_msg = NULL; + /* if we don't have a Save button, just save the settings now */ if (!prefs.gui_use_pref_save) colorfilters_main_save(); @@ -1071,7 +1083,10 @@ color_apply_cb(GtkButton *button _U_, gpointer user_data _U_) /* Apply the coloring rules, both the temporary ones in * color_filter_tmp_list as the permanent ones in color_filter_edit_list * */ - color_filters_apply(color_filter_tmp_list, color_filter_edit_list); + if (!color_filters_apply(color_filter_tmp_list, color_filter_edit_list, &err_msg)) { + simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK, "%s", err_msg); + g_free(err_msg); + } /* colorize list */ packet_list_colorize_packets(); diff --git a/ui/gtk/color_edit_dlg.c b/ui/gtk/color_edit_dlg.c index 33aa800c9c..5ee13a6e47 100644 --- a/ui/gtk/color_edit_dlg.c +++ b/ui/gtk/color_edit_dlg.c @@ -26,8 +26,7 @@ #include <epan/dfilter/dfilter.h> -#include "../color.h" -#include "../color_filters.h" +#include <epan/color_filters.h> #include "ui/simple_dialog.h" diff --git a/ui/gtk/color_utils.c b/ui/gtk/color_utils.c index 73a98163e3..7d9d70af07 100644 --- a/ui/gtk/color_utils.c +++ b/ui/gtk/color_utils.c @@ -26,17 +26,14 @@ #include <gtk/gtk.h> -#include "../color.h" - - #include "ui/gtk/color_utils.h" #if 0 static GdkColormap* sys_cmap; static GdkColormap* our_cmap = NULL; #endif -GdkColor WHITE = { 0, 65535, 65535, 65535 }; -/*GdkColor LTGREY = { 0, 57343, 57343, 57343 };*/ -GdkColor BLACK = { 0, 0, 0, 0 }; +/* static GdkColor WHITE = { 0, 65535, 65535, 65535 }; */ +/*static GdkColor LTGREY = { 0, 57343, 57343, 57343 };*/ +/* static GdkColor BLACK = { 0, 0, 0, 0 }; */ /* * Initialize a color with R, G, and B values, including any toolkit-dependent diff --git a/ui/gtk/color_utils.h b/ui/gtk/color_utils.h index c3923a51ea..15bddaef8d 100644 --- a/ui/gtk/color_utils.h +++ b/ui/gtk/color_utils.h @@ -24,20 +24,12 @@ #define __COLORS_H__ #include "ui/gtk/gui_utils.h" +#include <epan/color_filters.h> /** @file * Definitions for color structures and routines */ -/** The color white. */ -extern GdkColor WHITE; - -/** The color light-grey. */ -extern GdkColor LTGREY; - -/** The color black. */ -extern GdkColor BLACK; - /** Initialize the colors. */ void colors_init(void); diff --git a/ui/gtk/compare_stat.c b/ui/gtk/compare_stat.c index 6b13fd2d55..851ed217b0 100644 --- a/ui/gtk/compare_stat.c +++ b/ui/gtk/compare_stat.c @@ -64,8 +64,7 @@ #include "globals.h" /* Color settings */ -#include "color.h" -#include "color_filters.h" +#include <epan/color_filters.h> #include "packet_list.h" @@ -539,6 +538,7 @@ comparestat_draw(void *arg) frame_info *fInfo; guint32 first_file_amount, second_file_amount; char* addr_str; + gchar *err_msg = NULL; /* initial steps, clear all data before start*/ cs->zebra_time.secs=0; @@ -591,7 +591,10 @@ comparestat_draw(void *arg) g_string_printf(filter_str, "%s %s %s %s", "eth.dst==", addr_str, "|| eth.dst==", addr_str); wmem_free(NULL, addr_str); } - color_filters_set_tmp(COLOR_N, filter_str->str, FALSE); + if (!color_filters_set_tmp(COLOR_N, filter_str->str, FALSE, &err_msg)) { + simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK, "%s", err_msg); + g_free(err_msg); + } packet_list_colorize_packets(); /* Variance */ cs->stats.variance=compare_variance; diff --git a/ui/gtk/funnel_stat.c b/ui/gtk/funnel_stat.c index 96781a11f2..f7f15eb38a 100644 --- a/ui/gtk/funnel_stat.c +++ b/ui/gtk/funnel_stat.c @@ -44,7 +44,8 @@ #include <epan/funnel.h> #include "ui/progress_dlg.h" -#include "../color_filters.h" +#include "ui/simple_dialog.h" +#include <epan/color_filters.h> #include "ui/gtk/gui_utils.h" #include "ui/gtk/dlg_utils.h" @@ -465,7 +466,11 @@ static void funnel_set_filter(funnel_ops_id_t *ops_id _U_, const char* filter_st } static void funnel_set_color_filter_slot(guint8 filt_nr, const gchar* filter_string) { - color_filters_set_tmp(filt_nr, (gchar *)filter_string, FALSE); + gchar *err_msg = NULL; + if (!color_filters_set_tmp(filt_nr, (gchar *)filter_string, FALSE, &err_msg)) { + simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK, "%s", err_msg); + g_free(err_msg); + } } static void funnel_apply_filter(funnel_ops_id_t *ops_id _U_) { diff --git a/ui/gtk/main.c b/ui/gtk/main.c index 8eab2b5b55..93e255f946 100644 --- a/ui/gtk/main.c +++ b/ui/gtk/main.c @@ -97,8 +97,7 @@ #include "../file.h" #include "../frame_tvbuff.h" #include "../summary.h" -#include "../color.h" -#include "../color_filters.h" +#include <epan/color_filters.h> #include "../register.h" #include "../ringbuffer.h" #include "../log.h" @@ -355,6 +354,7 @@ void colorize_selected_ptree_cb(GtkWidget *w _U_, gpointer data _U_, guint8 filt_nr) { char *filter = NULL; + gchar *err_msg = NULL; if (cfile.finfo_selected) { filter = proto_construct_match_selected_string(cfile.finfo_selected, @@ -370,9 +370,16 @@ colorize_selected_ptree_cb(GtkWidget *w _U_, gpointer data _U_, guint8 filt_nr) color_display_with_filter(filter); } else { if (filt_nr==255) { - color_filters_reset_tmp(); + if (!color_filters_reset_tmp(&err_msg)) { + simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK, "%s", err_msg); + g_free(err_msg); + } } else { - color_filters_set_tmp(filt_nr,filter, FALSE); + if (!color_filters_set_tmp(filt_nr,filter, FALSE, &err_msg)) { + simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK, "%s", err_msg); + g_free(err_msg); + } + } packet_list_colorize_packets(); } @@ -1351,7 +1358,7 @@ main_colorize_changed(gboolean packet_list_colorize) /* change colorization */ if(packet_list_colorize != recent.packet_list_colorize) { recent.packet_list_colorize = packet_list_colorize; - color_filters_enable(packet_list_colorize); + packet_list_enable_color(packet_list_colorize); packet_list_colorize_packets(); } } @@ -2215,7 +2222,7 @@ main(int argc, char *argv[]) gint pl_size = 280, tv_size = 95, bv_size = 75; gchar *rc_file, *cf_name = NULL, *rfilter = NULL, *dfilter = NULL, *jfilter = NULL; dfilter_t *rfcode = NULL; - gchar *err_msg; + gchar *err_msg = NULL; gboolean rfilter_parse_failed = FALSE; e_prefs *prefs_p; char badopt; @@ -3135,7 +3142,7 @@ main(int argc, char *argv[]) g_free(rf_path); } - color_filters_enable(recent.packet_list_colorize); + packet_list_enable_color(recent.packet_list_colorize); /* rearrange all the widgets as we now have all recent settings ready for this */ main_widgets_rearrange(); @@ -3173,7 +3180,10 @@ main(int argc, char *argv[]) dnd_init(top_level); - color_filters_init(); + if (!color_filters_init(&err_msg, initialize_color, color_filter_add_cb)) { + simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK, "%s", err_msg); + g_free(err_msg); + } #ifdef HAVE_LIBPCAP capture_filter_init(); #endif @@ -3886,6 +3896,7 @@ void change_configuration_profile (const gchar *profile_name) char *gdp_path, *dp_path; char *rf_path; int rf_open_errno; + gchar* err_msg = NULL; /* First check if profile exists */ if (!profile_exists(profile_name, FALSE)) { @@ -3933,7 +3944,7 @@ void change_configuration_profile (const gchar *profile_name) } timestamp_set_type (recent.gui_time_format); timestamp_set_seconds_type (recent.gui_seconds_format); - color_filters_enable(recent.packet_list_colorize); + packet_list_enable_color(recent.packet_list_colorize); prefs_to_capture_opts(); prefs_apply_all(); @@ -3955,7 +3966,10 @@ void change_configuration_profile (const gchar *profile_name) } /* Reload color filters */ - color_filters_reload(); + if (!color_filters_reload(&err_msg, initialize_color, color_filter_add_cb)) { + simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK, "%s", err_msg); + g_free(err_msg); + } /* Reload list of interfaces on welcome page */ welcome_if_panel_reload(); @@ -3975,8 +3989,13 @@ void change_configuration_profile (const gchar *profile_name) void main_fields_changed (void) { + gchar* err_msg = NULL; + /* Reload color filters */ - color_filters_reload(); + if (!color_filters_reload(&err_msg, initialize_color, color_filter_add_cb)) { + simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK, "%s", err_msg); + g_free(err_msg); + } /* Syntax check filter */ filter_te_syntax_check_cb(main_display_filter_widget, NULL); diff --git a/ui/gtk/main_menubar.c b/ui/gtk/main_menubar.c index 4edfa5140f..8da4c80299 100644 --- a/ui/gtk/main_menubar.c +++ b/ui/gtk/main_menubar.c @@ -38,7 +38,7 @@ #include <epan/plugin_if.h> #include "globals.h" -#include "color_filters.h" +#include <epan/color_filters.h> #include "ui/main_statusbar.h" #include "ui/preference_utils.h" @@ -193,9 +193,13 @@ colorize_conversation_cb(conversation_filter_t* color_filter, int action_num) { gchar *filter = NULL; packet_info *pi = &cfile.edt->pi; + gchar *err_msg = NULL; if (action_num == 255) { - color_filters_reset_tmp(); + if (!color_filters_reset_tmp(&err_msg)) { + simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK, "%s", err_msg); + g_free(err_msg); + } packet_list_colorize_packets(); } else if (cfile.current_frame) { if (color_filter == NULL) { @@ -239,7 +243,10 @@ colorize_conversation_cb(conversation_filter_t* color_filter, int action_num) color_display_with_filter(filter); } else { /* Set one of the temporary coloring filters */ - color_filters_set_tmp(action_num, filter, FALSE); + if (!color_filters_set_tmp(action_num, filter, FALSE, &err_msg)) { + simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK, "%s", err_msg); + g_free(err_msg); + } packet_list_colorize_packets(); } diff --git a/ui/gtk/packet_list.c b/ui/gtk/packet_list.c index 28a1aec161..98f4978a1e 100644 --- a/ui/gtk/packet_list.c +++ b/ui/gtk/packet_list.c @@ -49,7 +49,7 @@ #include "ui/gtk/packet_history.h" #include "ui/gtk/keys.h" #include "ui/gtk/menus.h" -#include "color_filters.h" +#include <epan/color_filters.h> #include "ui/gtk/color_utils.h" #include "ui/gtk/packet_win.h" #include "ui/gtk/main.h" diff --git a/ui/gtk/packet_list_store.c b/ui/gtk/packet_list_store.c index d7696a3597..8c4e21606b 100644 --- a/ui/gtk/packet_list_store.c +++ b/ui/gtk/packet_list_store.c @@ -42,8 +42,7 @@ #include <epan/epan_dissect.h> #include <epan/column.h> -#include "color.h" -#include "color_filters.h" +#include <epan/color_filters.h> #include "frame_tvbuff.h" #include "globals.h" diff --git a/ui/qt/Wireshark.pro b/ui/qt/Wireshark.pro index ac42adad99..72467e0cca 100644 --- a/ui/qt/Wireshark.pro +++ b/ui/qt/Wireshark.pro @@ -191,7 +191,6 @@ SOURCES_WS_C = \ ../../capture_info.c \ ../../capture_opts.c \ ../../cfile.c \ - ../../color_filters.c \ ../../extcap.c \ ../../extcap_parser.c \ ../../file.c \ diff --git a/ui/qt/color_utils.cpp b/ui/qt/color_utils.cpp index e150a14003..d90d6046f7 100644 --- a/ui/qt/color_utils.cpp +++ b/ui/qt/color_utils.cpp @@ -23,28 +23,6 @@ #include "tango_colors.h" -/* - * Initialize a color with R, G, and B values, including any toolkit-dependent - * work that needs to be done. - */ -gboolean -initialize_color(color_t *color, guint16 red, guint16 green, guint16 blue) -{ - QColor qc; - - // color_t uses 16-bit components to match Gtk+. Qt use 8. - qc.setRgb(red>>8, green>>8, blue>>8); - if (!qc.isValid()) - return FALSE; - - // Match what color_filters.c does. - color->red = red; - color->green = green; - color->blue = blue; - color->pixel = 0; - return TRUE; -} - const QColor ColorUtils::expert_color_comment = QColor ( 0xb7, 0xf7, 0x74 ); /* Green */ const QColor ColorUtils::expert_color_chat = QColor ( 0x80, 0xb7, 0xf7 ); /* Light blue */ const QColor ColorUtils::expert_color_note = QColor ( 0xa0, 0xff, 0xff ); /* Bright turquoise */ diff --git a/ui/qt/color_utils.h b/ui/qt/color_utils.h index 8b1051837b..e9b1806363 100644 --- a/ui/qt/color_utils.h +++ b/ui/qt/color_utils.h @@ -26,7 +26,7 @@ #include <glib.h> -#include "color.h" +#include <epan/color_filters.h> #include <QBrush> #include <QColor> @@ -64,6 +64,8 @@ private: static const QList<QRgb> graph_colors_; }; +void color_filter_qt_add_cb(color_filter_t *colorf, gpointer user_data); + #endif // COLOR_UTILS_H /* diff --git a/ui/qt/coloring_rules_dialog.cpp b/ui/qt/coloring_rules_dialog.cpp index e8314f499a..846ff13112 100644 --- a/ui/qt/coloring_rules_dialog.cpp +++ b/ui/qt/coloring_rules_dialog.cpp @@ -28,9 +28,10 @@ #include "coloring_rules_dialog.h" #include <ui_coloring_rules_dialog.h> -#include "color.h" -#include "color_filters.h" +#include "epan/color_filters.h" +#include "ui/simple_dialog.h" +#include "ui/simple_dialog.h" #include "epan/dfilter/dfilter.h" #include "epan/prefs.h" @@ -39,6 +40,7 @@ #include "wsutil/filesystem.h" #include "color_utils.h" +#include "ui/ui_util.h" #include "display_filter_combo.h" #include "syntax_line_edit.h" #include "wireshark_application.h" @@ -60,15 +62,6 @@ // - Make the filter column narrower? It's easy to run into Qt's annoying // habit of horizontally scrolling QTreeWidgets here. -// Callback for color_filters_clone. -void -color_filter_add_cb(color_filter_t *colorf, gpointer user_data) -{ - ColoringRulesDialog *coloring_rules_dialog = static_cast<ColoringRulesDialog*>(user_data); - - if (!coloring_rules_dialog) return; - coloring_rules_dialog->addColor(colorf); -} enum { name_col_ = 0, @@ -93,7 +86,7 @@ ColoringRulesDialog::ColoringRulesDialog(QWidget *parent, QString add_filter) : ui->coloringRulesTreeWidget->setDropIndicatorShown(true); ui->coloringRulesTreeWidget->setDragDropMode(QAbstractItemView::InternalMove); - color_filters_clone(this); + color_filters_clone(this, color_filter_add_cb); for (int i = 0; i < ui->coloringRulesTreeWidget->columnCount(); i++) { ui->coloringRulesTreeWidget->setItemDelegateForColumn(i, &coloring_rules_tree_delegate_); @@ -330,7 +323,11 @@ void ColoringRulesDialog::on_buttonBox_clicked(QAbstractButton *button) if (button == import_button_) { QString file_name = QFileDialog::getOpenFileName(this, wsApp->windowTitleString(tr("Import Coloring Rules")), wsApp->lastOpenDir().path()); - color_filters_import(file_name.toUtf8().constData(), this); + gchar* err_msg = NULL; + if (!color_filters_import(file_name.toUtf8().constData(), this, &err_msg, initialize_color, color_filter_add_cb)) { + simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK, "%s", err_msg); + g_free(err_msg); + } } else if (button == export_button_) { int num_items = ui->coloringRulesTreeWidget->selectedItems().count(); @@ -345,7 +342,11 @@ void ColoringRulesDialog::on_buttonBox_clicked(QAbstractButton *button) wsApp->lastOpenDir().path()); if (!file_name.isEmpty()) { GSList *cfl = createColorFilterList(); - color_filters_export(file_name.toUtf8().constData(), cfl, FALSE); + gchar* err_msg = NULL; + if (!color_filters_export(file_name.toUtf8().constData(), cfl, FALSE, &err_msg)) { + simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK, "%s", err_msg); + g_free(err_msg); + } color_filter_list_delete(&cfl); } } @@ -354,6 +355,7 @@ void ColoringRulesDialog::on_buttonBox_clicked(QAbstractButton *button) void ColoringRulesDialog::on_buttonBox_accepted() { GSList *cfl = createColorFilterList(); + gchar* err_msg = NULL; if (prefs.unknown_colorfilters) { QMessageBox mb; mb.setText(tr("Your coloring rules file contains unknown rules")); @@ -365,9 +367,13 @@ void ColoringRulesDialog::on_buttonBox_accepted() int result = mb.exec(); if (result != QMessageBox::Save) return; } - color_filters_apply(conversation_colors_, cfl); - if (!color_filters_write(cfl)) { - QMessageBox::warning(this, tr("Unable to save coloring rules"), g_strerror(errno)); + if (!color_filters_apply(conversation_colors_, cfl, &err_msg)) { + simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK, "%s", err_msg); + g_free(err_msg); + } + if (!color_filters_write(cfl, &err_msg)) { + QMessageBox::warning(this, tr("Unable to save coloring rules: %s"), g_strerror(errno)); + g_free(err_msg); } color_filter_list_delete(&cfl); } @@ -431,6 +437,38 @@ void ColoringRulesTreeDelegate::ruleNameChanged(const QString name) } /* + * Initialize a color with R, G, and B values, including any toolkit-dependent + * work that needs to be done. + */ +gboolean +initialize_color(color_t *color, guint16 red, guint16 green, guint16 blue) +{ + QColor qc; + + // color_t uses 16-bit components to match Gtk+. Qt use 8. + qc.setRgb(red>>8, green>>8, blue>>8); + if (!qc.isValid()) + return FALSE; + + // Match what color_filters.c does. + color->red = red; + color->green = green; + color->blue = blue; + color->pixel = 0; + return TRUE; +} + +// Callback for color_filters_clone. +void +color_filter_add_cb(color_filter_t *colorf, gpointer user_data) +{ + ColoringRulesDialog *coloring_rules_dialog = static_cast<ColoringRulesDialog*>(user_data); + + if (!coloring_rules_dialog) return; + coloring_rules_dialog->addColor(colorf); +} + +/* * Editor modelines * * Local Variables: diff --git a/ui/qt/column_preferences_frame.cpp b/ui/qt/column_preferences_frame.cpp index 943861d352..87627124aa 100644 --- a/ui/qt/column_preferences_frame.cpp +++ b/ui/qt/column_preferences_frame.cpp @@ -23,8 +23,6 @@ #include <glib.h> -#include "color.h" - #include <epan/column-info.h> #include <epan/column.h> #include <epan/prefs.h> diff --git a/ui/qt/funnel_statistics.cpp b/ui/qt/funnel_statistics.cpp index abbb4f37ce..85e0f2b6a5 100644 --- a/ui/qt/funnel_statistics.cpp +++ b/ui/qt/funnel_statistics.cpp @@ -23,13 +23,13 @@ #include <glib.h> -#include "color.h" -#include "color_filters.h" +#include "epan/color_filters.h" #include "file.h" #include "epan/funnel.h" #include "ui/progress_dlg.h" +#include "ui/simple_dialog.h" #include "funnel_statistics.h" #include "funnel_string_dialog.h" @@ -230,7 +230,11 @@ void funnel_statistics_set_filter(funnel_ops_id_t *ops_id, const char* filter_st } void funnel_statistics_set_color_filter_slot(guint8 filter_num, const gchar* filter_string) { - color_filters_set_tmp(filter_num, (gchar *)filter_string, FALSE); + gchar *err_msg = NULL; + if (!color_filters_set_tmp(filter_num, (gchar *)filter_string, FALSE, &err_msg)) { + simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK, "%s", err_msg); + g_free(err_msg); + } } gboolean funnel_statistics_open_file(funnel_ops_id_t *ops_id, const char* fname, const char* filter, char**) { diff --git a/ui/qt/main_window_slots.cpp b/ui/qt/main_window_slots.cpp index 91ce271fb9..29416f02f6 100644 --- a/ui/qt/main_window_slots.cpp +++ b/ui/qt/main_window_slots.cpp @@ -38,7 +38,7 @@ #include "ui/capture.h" #endif -#include "color_filters.h" +#include "epan/color_filters.h" #include "wsutil/file_util.h" #include "wsutil/filesystem.h" @@ -1397,7 +1397,11 @@ void MainWindow::checkDisplayFilter() void MainWindow::fieldsChanged() { - color_filters_reload(); + gchar *err_msg = NULL; + if (!color_filters_reload(&err_msg, initialize_color, color_filter_add_cb)) { + simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK, "%s", err_msg); + g_free(err_msg); + } tap_listeners_dfilter_recompile(); emit checkDisplayFilter(); @@ -2245,7 +2249,7 @@ void MainWindow::on_actionViewNormalSize_triggered() void MainWindow::on_actionViewColorizePacketList_triggered(bool checked) { recent.packet_list_colorize = checked; - color_filters_enable(checked); + packet_list_enable_color(checked); packet_list_->packetListModel()->resetColorized(); } @@ -2302,7 +2306,11 @@ void MainWindow::colorizeConversation(bool create_rule) packet_list_, SLOT(recolorPackets())); coloring_rules_dialog.exec(); } else { - color_filters_set_tmp(cc_num, filter, FALSE); + gchar *err_msg = NULL; + if (!color_filters_set_tmp(cc_num, filter, FALSE, &err_msg)) { + simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK, "%s", err_msg); + g_free(err_msg); + } packet_list_->recolorPackets(); } } @@ -2322,7 +2330,11 @@ void MainWindow::colorizeWithFilter() if (ok) { // Assume "Color X" - color_filters_set_tmp(color_number, filter.toUtf8().constData(), FALSE); + gchar *err_msg = NULL; + if (color_filters_set_tmp(color_number, filter.toUtf8().constData(), FALSE, &err_msg)) { + simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK, "%s", err_msg); + g_free(err_msg); + } packet_list_->recolorPackets(); } else { // New coloring rule @@ -2336,7 +2348,11 @@ void MainWindow::colorizeWithFilter() void MainWindow::on_actionViewColorizeResetColorization_triggered() { - color_filters_reset_tmp(); + gchar *err_msg = NULL; + if (!color_filters_reset_tmp(&err_msg)) { + simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK, "%s", err_msg); + g_free(err_msg); + } packet_list_->recolorPackets(); setMenusForSelectedPacket(); } diff --git a/ui/qt/module_preferences_scroll_area.h b/ui/qt/module_preferences_scroll_area.h index c2bfb72eb3..7b46e8dfe8 100644 --- a/ui/qt/module_preferences_scroll_area.h +++ b/ui/qt/module_preferences_scroll_area.h @@ -26,8 +26,6 @@ #include <glib.h> -#include "color.h" - #include <epan/prefs.h> #include <epan/prefs-int.h> diff --git a/ui/qt/packet_list.cpp b/ui/qt/packet_list.cpp index 2d92d30779..0f5d57d694 100644 --- a/ui/qt/packet_list.cpp +++ b/ui/qt/packet_list.cpp @@ -47,8 +47,7 @@ #include "wsutil/str_util.h" -#include "color.h" -#include "color_filters.h" +#include <epan/color_filters.h> #include "frame_tvbuff.h" #include "color_utils.h" diff --git a/ui/qt/packet_list_model.cpp b/ui/qt/packet_list_model.cpp index db6e6f58f9..4bbb63658d 100644 --- a/ui/qt/packet_list_model.cpp +++ b/ui/qt/packet_list_model.cpp @@ -32,8 +32,7 @@ #include "ui/packet_list_utils.h" #include "ui/recent.h" -#include "color.h" -#include "color_filters.h" +#include <epan/color_filters.h> #include "frame_tvbuff.h" #include "color_utils.h" diff --git a/ui/qt/packet_list_record.cpp b/ui/qt/packet_list_record.cpp index 73b788405d..26f147feed 100644 --- a/ui/qt/packet_list_record.cpp +++ b/ui/qt/packet_list_record.cpp @@ -28,8 +28,7 @@ #include <epan/column.h> #include <epan/conversation.h> -#include "color.h" -#include "color_filters.h" +#include <epan/color_filters.h> #include "frame_tvbuff.h" #include <QStringList> diff --git a/ui/qt/preferences_dialog.h b/ui/qt/preferences_dialog.h index 95582e05f7..8c0824b228 100644 --- a/ui/qt/preferences_dialog.h +++ b/ui/qt/preferences_dialog.h @@ -26,8 +26,6 @@ #include <glib.h> -#include "color.h" - #include <epan/prefs.h> #include "wireshark_application.h" diff --git a/ui/qt/wireshark_application.cpp b/ui/qt/wireshark_application.cpp index 45e0587b46..ec648a56fc 100644 --- a/ui/qt/wireshark_application.cpp +++ b/ui/qt/wireshark_application.cpp @@ -48,8 +48,10 @@ #include "ui/util.h" #include "qt_ui_utils.h" +#include "color_utils.h" +#include "coloring_rules_dialog.h" -#include "color_filters.h" +#include "epan/color_filters.h" #include "log.h" #include "recent_file_status.h" @@ -303,6 +305,7 @@ void WiresharkApplication::setConfigurationProfile(const gchar *profile_name) char *gdp_path, *dp_path; char *rf_path; int rf_open_errno; + gchar *err_msg = NULL; /* First check if profile exists */ if (!profile_exists(profile_name, FALSE)) { @@ -366,7 +369,7 @@ void WiresharkApplication::setConfigurationProfile(const gchar *profile_name) timestamp_set_type (recent.gui_time_format); timestamp_set_precision(recent.gui_time_precision); timestamp_set_seconds_type (recent.gui_seconds_format); - color_filters_enable(recent.packet_list_colorize); + packet_list_enable_color(recent.packet_list_colorize); tap_update_timer_.setInterval(prefs.tap_update_interval); prefs_to_capture_opts(); @@ -391,7 +394,10 @@ void WiresharkApplication::setConfigurationProfile(const gchar *profile_name) } /* Reload color filters */ - color_filters_reload(); + if (!color_filters_reload(&err_msg, initialize_color, color_filter_add_cb)) { + simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK, "%s", err_msg); + g_free(err_msg); + } emit localInterfaceListChanged(); emit packetDissectionChanged(); diff --git a/ui/ui_util.h b/ui/ui_util.h index 4fb6c0f63d..fd5f1daedb 100644 --- a/ui/ui_util.h +++ b/ui/ui_util.h @@ -31,6 +31,7 @@ #include "epan/packet_info.h" #include "epan/column-utils.h" +#include "epan/color_filters.h" #ifdef __cplusplus extern "C" { @@ -82,6 +83,15 @@ gboolean packet_list_check_end(void); /* GTK+ only */ gboolean packet_list_select_row_from_data(frame_data *fdata_needle); void packet_list_resize_column(gint col); +/* XXX - Yes this isn't the best place, but they are used by file_dlg_win32.c, which is supposed + to be GUI independent, but has lots of GTK leanings. But if you put these in a GTK UI + header file, file_dlg_win32.c complains about all of the GTK structures also in the header + files + Function names make it clear where they are coming from +*/ +gboolean initialize_color(color_t *color, guint16 red, guint16 green, guint16 blue); +void color_filter_add_cb(color_filter_t *colorf, gpointer user_data); + #ifdef __cplusplus } #endif /* __cplusplus */ diff --git a/ui/win32/file_dlg_win32.c b/ui/win32/file_dlg_win32.c index 9e9c32d6c5..747819024b 100644 --- a/ui/win32/file_dlg_win32.c +++ b/ui/win32/file_dlg_win32.c @@ -41,7 +41,7 @@ #include "epan/addr_resolv.h" #include "epan/prefs.h" -#include "color_filters.h" +#include "epan/color_filters.h" #include "ui/alert_box.h" #include "ui/help_url.h" @@ -49,6 +49,7 @@ #include "ui/simple_dialog.h" #include "ui/ssl_key_export.h" #include "ui/util.h" +#include "ui/ui_util.h" #include "file_dlg_win32.h" @@ -898,6 +899,7 @@ win32_export_color_file(HWND h_wnd, capture_file *cf, gpointer filter_list) { TCHAR file_name[MAX_PATH] = _T(""); gchar *dirname; int ofnsize; + gchar *err_msg = NULL; ofnsize = win32_get_ofnsize(); ofn = g_malloc0(ofnsize); @@ -927,8 +929,12 @@ win32_export_color_file(HWND h_wnd, capture_file *cf, gpointer filter_list) { /* XXX - Support marked filters */ if (GetSaveFileName(ofn)) { g_free( (void *) ofn); - if (!color_filters_export(utf_16to8(file_name), filter_list, FALSE /* all filters */)) + if (!color_filters_export(utf_16to8(file_name), filter_list, FALSE /* all filters */, &err_msg)) + { + simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK, "%s", err_msg); + g_free(err_msg); return; + } /* Save the directory name for future file dialogs. */ dirname = get_dirname(utf_16to8(file_name)); /* Overwrites cf_name */ @@ -944,6 +950,7 @@ win32_import_color_file(HWND h_wnd, gpointer color_filters) { TCHAR file_name[MAX_PATH] = _T(""); gchar *dirname; int ofnsize; + gchar *err_msg = NULL; ofnsize = win32_get_ofnsize(); ofn = g_malloc0(ofnsize); @@ -971,8 +978,11 @@ win32_import_color_file(HWND h_wnd, gpointer color_filters) { /* XXX - Support export limited to selected filters */ if (GetOpenFileName(ofn)) { g_free( (void *) ofn); - if (!color_filters_import(utf_16to8(file_name), color_filters)) + if (!color_filters_import(utf_16to8(file_name), color_filters, &err_msg, initialize_color, color_filter_add_cb)) { + simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK, "%s", err_msg); + g_free(err_msg); return; + } /* Save the directory name for future file dialogs. */ dirname = get_dirname(utf_16to8(file_name)); /* Overwrites cf_name */ |