aboutsummaryrefslogtreecommitdiffstats
path: root/colors.c
diff options
context:
space:
mode:
authorGuy Harris <guy@alum.mit.edu>1999-12-19 07:01:30 +0000
committerGuy Harris <guy@alum.mit.edu>1999-12-19 07:01:30 +0000
commit26e926e61448e5ae44b6af151bf231082c1d41d5 (patch)
tree912f49f0963136d5826bdd3e665726e6c14df3fd /colors.c
parentbcc9362c47cdf02e0bab474ffae25e1150674e9f (diff)
Add to the "color_filter_t" structure members to store the name and
filter string for the filter. Maintain a list of the "color_filter_t" structures for all color filters. svn path=/trunk/; revision=1357
Diffstat (limited to 'colors.c')
-rw-r--r--colors.c44
1 files changed, 33 insertions, 11 deletions
diff --git a/colors.c b/colors.c
index 9b5c347ab4..f65c6e3e89 100644
--- a/colors.c
+++ b/colors.c
@@ -1,7 +1,7 @@
/* colors.c
* Definitions for color structures and routines
*
- * $Id: colors.c,v 1.18 1999/12/09 07:19:02 guy Exp $
+ * $Id: colors.c,v 1.19 1999/12/19 07:01:29 guy Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@zing.org>
@@ -55,6 +55,8 @@ static GtkWidget* create_colorize_win(colfilter *filter,
static GtkWidget* create_color_sel_win(colfilter *filter, GdkColor *);
static gboolean get_color(GdkColor *new_color);
+static GSList *filter_list;
+
static GdkColormap* sys_cmap;
static GdkColormap* our_cmap = NULL;
@@ -183,7 +185,6 @@ new_color_filter(colfilter *filters, gchar *name, gchar *filter_string)
{
color_filter_t *colorf;
gchar *data[2];
-
gint row;
data[0] = g_strdup(name);
@@ -191,12 +192,28 @@ new_color_filter(colfilter *filters, gchar *name, gchar *filter_string)
row = gtk_clist_append(GTK_CLIST(filters->color_filters), data);
colorf = (color_filter_t *)g_malloc(sizeof (color_filter_t));
+ colorf->filter_name = data[0];
+ colorf->filter_text = data[1];
colorf->bg_color = WHITE;
colorf->fg_color = BLACK;
colorf->c_colorfilter = NULL;
+ filter_list = g_slist_append(filter_list, colorf);
gtk_clist_set_row_data(GTK_CLIST(filters->color_filters), row, colorf);
}
+static void
+delete_color_filter(color_filter_t *colorf)
+{
+ if (colorf->filter_name != NULL)
+ g_free(colorf->filter_name);
+ if (colorf->filter_text != NULL)
+ g_free(colorf->filter_text);
+ if (colorf->c_colorfilter != NULL)
+ dfilter_destroy(colorf->c_colorfilter);
+ filter_list = g_slist_remove(filter_list, colorf);
+ g_free(colorf);
+}
+
static gboolean
read_filters(colfilter *filter)
{
@@ -357,11 +374,15 @@ color_delete_cb(GtkWidget *widget, gpointer user_data)
{
colfilter *filter;
GtkWidget *color_change_colors;
+ color_filter_t *colorf;
filter = (colfilter *)user_data;
if(filter->row_selected != -1){
+ colorf = gtk_clist_get_row_data(GTK_CLIST(filter->color_filters),
+ filter->row_selected);
gtk_clist_remove(GTK_CLIST(filter->color_filters),
filter->row_selected);
+ delete_color_filter(colorf);
filter->num_of_filters--;
if(!filter->num_of_filters){
/* No filters any more, so none can be selected... */
@@ -576,6 +597,7 @@ colorize_ok_cb (GtkButton *button,
GdkColor new_bg_color;
gchar *filter_name;
gchar *filter_text;
+ color_filter_t *cfilter;
dfilter *compiled_filter;
dialog = (GtkWidget *)user_data;
@@ -594,17 +616,21 @@ colorize_ok_cb (GtkButton *button,
g_free(filter_text);
return;
}
-
- color_filter(cf.colors, cf.colors->row_selected)->fg_color = new_fg_color;
- color_filter(cf.colors, cf.colors->row_selected)->bg_color = new_bg_color;
+ cfilter = color_filter(cf.colors, cf.colors->row_selected);
+ if (cfilter->filter_name != NULL)
+ g_free(cfilter->filter_name);
+ cfilter->filter_name = filter_name;
+ if (cfilter->filter_text != NULL)
+ g_free(cfilter->filter_text);
+ cfilter->filter_text = filter_text;
+ cfilter->fg_color = new_fg_color;
+ cfilter->bg_color = new_bg_color;
gtk_clist_set_foreground(GTK_CLIST(cf.colors->color_filters),
cf.colors->row_selected, &new_fg_color);
gtk_clist_set_background(GTK_CLIST(cf.colors->color_filters),
cf.colors->row_selected, &new_bg_color);
-
-
if(dfilter_compile(filter_text, &compiled_filter) != 0 ){
simple_dialog(ESD_TYPE_WARN, NULL, "Filter \"%s\" did not compile correctly.\n"
" Please try again. Filter unchanged.\n%s\n", filter_name,dfilter_error_msg);
@@ -617,10 +643,6 @@ colorize_ok_cb (GtkButton *button,
set_color_filter_name(cf.colors,cf.colors->row_selected,filter_name);
gtk_widget_destroy(dialog);
}
- g_free(filter_name);
- g_free(filter_text);
-
-
}
/* Revert to existing colors */