Make it possible to "move" a filter around the temporary coloring rules
svn path=/trunk/; revision=23585
This commit is contained in:
parent
f4054ad148
commit
f9ca33580f
|
@ -90,7 +90,6 @@ void
|
||||||
color_filters_add_tmp(GSList **cfl)
|
color_filters_add_tmp(GSList **cfl)
|
||||||
{
|
{
|
||||||
gchar *name = NULL;
|
gchar *name = NULL;
|
||||||
gchar *stockstr = NULL;
|
|
||||||
guint32 i;
|
guint32 i;
|
||||||
gchar** bg_colors;
|
gchar** bg_colors;
|
||||||
gchar** fg_colors;
|
gchar** fg_colors;
|
||||||
|
@ -144,31 +143,51 @@ void
|
||||||
color_filters_set_tmp(guint8 filt_nr, gchar *filter, gboolean disabled)
|
color_filters_set_tmp(guint8 filt_nr, gchar *filter, gboolean disabled)
|
||||||
{
|
{
|
||||||
gchar *name = NULL;
|
gchar *name = NULL;
|
||||||
|
gchar *tmpfilter = NULL;
|
||||||
GSList *cfl;
|
GSList *cfl;
|
||||||
color_filter_t *colorf;
|
color_filter_t *colorf;
|
||||||
dfilter_t *compiled_filter;
|
dfilter_t *compiled_filter;
|
||||||
|
guint8 i;
|
||||||
|
|
||||||
name = g_strdup_printf("%s%02d",TEMP_COLOR_PREFIX,filt_nr);
|
/* Go through the tomporary filters and look for the same filter string.
|
||||||
cfl = g_slist_find_custom(color_filter_list, (gpointer *) name, color_filters_find_by_name_cb);
|
* If found, clear it so that a filter can be "moved" up and down the list
|
||||||
colorf = cfl->data;
|
*/
|
||||||
|
for ( i=1 ; i<=10 ; i++ ) {
|
||||||
|
/* If we need to reset the temporary filter (filter==NULL), don't look
|
||||||
|
* for other rules with the same filter string
|
||||||
|
*/
|
||||||
|
if( i!=filt_nr && filter==NULL )
|
||||||
|
continue;
|
||||||
|
|
||||||
if(colorf) {
|
name = g_strdup_printf("%s%02d",TEMP_COLOR_PREFIX,i);
|
||||||
if (!dfilter_compile(filter, &compiled_filter)) {
|
cfl = g_slist_find_custom(color_filter_list, (gpointer *) name, color_filters_find_by_name_cb);
|
||||||
simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK,
|
colorf = cfl->data;
|
||||||
"Could not compile color filter name: \"%s\" text: \"%s\".\n%s",
|
|
||||||
name, filter, dfilter_error_msg);
|
/* Only change the filter rule if this is the rule to change or if
|
||||||
} else {
|
* a matching filter string has been found
|
||||||
if (colorf->filter_text != NULL)
|
*/
|
||||||
g_free(colorf->filter_text);
|
if(colorf && ( (i==filt_nr) || (strstr(filter,colorf->filter_text)!=NULL) ) ) {
|
||||||
if (colorf->c_colorfilter != NULL)
|
/* set filter string to "frame" if we are resetting the rules
|
||||||
dfilter_free(colorf->c_colorfilter);
|
* or if we found a matching filter string which need to be cleared
|
||||||
colorf->filter_text = g_strdup(filter);
|
*/
|
||||||
colorf->c_colorfilter = compiled_filter;
|
tmpfilter = ( (filter==NULL) || (i!=filt_nr) ) ? "frame" : filter;
|
||||||
colorf->disabled = disabled;
|
if (!dfilter_compile(tmpfilter, &compiled_filter)) {
|
||||||
|
simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK,
|
||||||
|
"Could not compile color filter name: \"%s\""
|
||||||
|
" text: \"%s\".\n%s", name, filter, dfilter_error_msg);
|
||||||
|
} else {
|
||||||
|
if (colorf->filter_text != NULL)
|
||||||
|
g_free(colorf->filter_text);
|
||||||
|
if (colorf->c_colorfilter != NULL)
|
||||||
|
dfilter_free(colorf->c_colorfilter);
|
||||||
|
colorf->filter_text = g_strdup(tmpfilter);
|
||||||
|
colorf->c_colorfilter = compiled_filter;
|
||||||
|
colorf->disabled = ((i!=filt_nr) ? TRUE : disabled);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
g_free(name);
|
||||||
}
|
}
|
||||||
g_free(name);
|
return;
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Reset the temporary colorfilters */
|
/* Reset the temporary colorfilters */
|
||||||
|
@ -178,7 +197,7 @@ color_filters_reset_tmp()
|
||||||
guint8 i;
|
guint8 i;
|
||||||
|
|
||||||
for ( i=1 ; i<=10 ; i++ ) {
|
for ( i=1 ; i<=10 ; i++ ) {
|
||||||
color_filters_set_tmp(i, "frame", TRUE);
|
color_filters_set_tmp(i, NULL, TRUE);
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue