aboutsummaryrefslogtreecommitdiffstats
path: root/ui
diff options
context:
space:
mode:
authorMichael Mann <mmann78@netscape.net>2015-12-22 15:07:00 -0500
committerMichael Mann <mmann78@netscape.net>2015-12-28 18:33:41 +0000
commit5e4bbcda9839d9fd4480db8c4f9386ff388d166c (patch)
tree9801cea61222e0e9e3f8c57f4574ddb6bab075c7 /ui
parentc752daf4b8816d809a92894155ce8de1b24613c7 (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.c15
-rw-r--r--ui/gtk/color_dlg.c57
-rw-r--r--ui/gtk/color_edit_dlg.c3
-rw-r--r--ui/gtk/color_utils.c9
-rw-r--r--ui/gtk/color_utils.h10
-rw-r--r--ui/gtk/compare_stat.c9
-rw-r--r--ui/gtk/funnel_stat.c9
-rw-r--r--ui/gtk/main.c41
-rw-r--r--ui/gtk/main_menubar.c13
-rw-r--r--ui/gtk/packet_list.c2
-rw-r--r--ui/gtk/packet_list_store.c3
-rw-r--r--ui/qt/Wireshark.pro1
-rw-r--r--ui/qt/color_utils.cpp22
-rw-r--r--ui/qt/color_utils.h4
-rw-r--r--ui/qt/coloring_rules_dialog.cpp72
-rw-r--r--ui/qt/column_preferences_frame.cpp2
-rw-r--r--ui/qt/funnel_statistics.cpp10
-rw-r--r--ui/qt/main_window_slots.cpp28
-rw-r--r--ui/qt/module_preferences_scroll_area.h2
-rw-r--r--ui/qt/packet_list.cpp3
-rw-r--r--ui/qt/packet_list_model.cpp3
-rw-r--r--ui/qt/packet_list_record.cpp3
-rw-r--r--ui/qt/preferences_dialog.h2
-rw-r--r--ui/qt/wireshark_application.cpp12
-rw-r--r--ui/ui_util.h10
-rw-r--r--ui/win32/file_dlg_win32.c16
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 */