From 5219edb7a53211d8fe63a61bedd15d300478044e Mon Sep 17 00:00:00 2001 From: Alfons Hoogervorst Date: Wed, 25 Dec 2002 19:06:48 +0000 Subject: [PATCH] * src/matcher.[ch] * src/matcher_parser_lex.l * src/matcher_parser_parse.y * src/prefs_matcher.c add locked flag to possible filtering / matcher conditions (also a good example what should be done to add a simple boolean condition) --- ChangeLog.claws | 10 ++++++++++ configure.in | 2 +- src/matcher.c | 10 ++++++++++ src/matcher.h | 1 + src/matcher_parser_lex.l | 2 ++ src/matcher_parser_parse.y | 15 +++++++++++++++ src/prefs_matcher.c | 28 ++++++++++++++++++++-------- 7 files changed, 59 insertions(+), 9 deletions(-) diff --git a/ChangeLog.claws b/ChangeLog.claws index 71614c2f0..e2259c007 100644 --- a/ChangeLog.claws +++ b/ChangeLog.claws @@ -1,3 +1,13 @@ +2002-12-25 [alfons] 0.8.7claws9 + + * src/matcher.[ch] + * src/matcher_parser_lex.l + * src/matcher_parser_parse.y + * src/prefs_matcher.c + add locked flag to possible filtering / matcher + conditions (also a good example what should be + done to add a simple boolean condition) + 2002-12-25 [christoph] 0.8.7claws8 * src/Makefile.am diff --git a/configure.in b/configure.in index 032894b77..37fa2838d 100644 --- a/configure.in +++ b/configure.in @@ -11,7 +11,7 @@ MINOR_VERSION=8 MICRO_VERSION=7 INTERFACE_AGE=0 BINARY_AGE=0 -EXTRA_VERSION=claws8 +EXTRA_VERSION=claws9 VERSION=$MAJOR_VERSION.$MINOR_VERSION.$MICRO_VERSION$EXTRA_VERSION dnl set $target diff --git a/src/matcher.c b/src/matcher.c index 8a0427d8b..32d02c667 100644 --- a/src/matcher.c +++ b/src/matcher.c @@ -51,6 +51,8 @@ static MatchParser matchparser_tab[] = { {MATCHCRITERIA_NOT_REPLIED, "~replied"}, {MATCHCRITERIA_FORWARDED, "forwarded"}, {MATCHCRITERIA_NOT_FORWARDED, "~forwarded"}, + {MATCHCRITERIA_LOCKED, "locked"}, + {MATCHCRITERIA_NOT_LOCKED, "~locked"}, /* msginfo headers */ {MATCHCRITERIA_SUBJECT, "subject"}, @@ -404,6 +406,10 @@ gboolean matcherprop_match(MatcherProp * prop, MsgInfo * info) return MSG_IS_FORWARDED(info->flags); case MATCHCRITERIA_NOT_FORWARDED: return !MSG_IS_FORWARDED(info->flags); + case MATCHCRITERIA_LOCKED: + return MSG_IS_LOCKED(info->flags); + case MATCHCRITERIA_NOT_LOCKED: + return !MSG_IS_LOCKED(info->flags); case MATCHCRITERIA_SUBJECT: return matcherprop_string_match(prop, info->subject); case MATCHCRITERIA_NOT_SUBJECT: @@ -812,6 +818,8 @@ gboolean matcherlist_match(MatcherList * matchers, MsgInfo * info) case MATCHCRITERIA_NOT_REPLIED: case MATCHCRITERIA_FORWARDED: case MATCHCRITERIA_NOT_FORWARDED: + case MATCHCRITERIA_LOCKED: + case MATCHCRITERIA_NOT_LOCKED: case MATCHCRITERIA_SUBJECT: case MATCHCRITERIA_NOT_SUBJECT: case MATCHCRITERIA_FROM: @@ -907,6 +915,8 @@ gchar * matcherprop_to_string(MatcherProp * matcher) case MATCHCRITERIA_NOT_REPLIED: case MATCHCRITERIA_FORWARDED: case MATCHCRITERIA_NOT_FORWARDED: + case MATCHCRITERIA_LOCKED: + case MATCHCRITERIA_NOT_LOCKED: return g_strdup(criteria_str); case MATCHCRITERIA_EXECUTE: case MATCHCRITERIA_NOT_EXECUTE: diff --git a/src/matcher.h b/src/matcher.h index aad70317d..8ce17657b 100644 --- a/src/matcher.h +++ b/src/matcher.h @@ -56,6 +56,7 @@ enum { MATCHCRITERIA_DELETED, MATCHCRITERIA_NOT_DELETED, MATCHCRITERIA_REPLIED, MATCHCRITERIA_NOT_REPLIED, MATCHCRITERIA_FORWARDED, MATCHCRITERIA_NOT_FORWARDED, + MATCHCRITERIA_LOCKED, MATCHCRITERIA_NOT_LOCKED, MATCHCRITERIA_SUBJECT, MATCHCRITERIA_NOT_SUBJECT, MATCHCRITERIA_FROM, MATCHCRITERIA_NOT_FROM, MATCHCRITERIA_TO, MATCHCRITERIA_NOT_TO, diff --git a/src/matcher_parser_lex.l b/src/matcher_parser_lex.l index fbbb80d1b..a0f5d117b 100644 --- a/src/matcher_parser_lex.l +++ b/src/matcher_parser_lex.l @@ -48,6 +48,8 @@ void matcher_parser_init(void) "~replied" return MATCHER_NOT_REPLIED; "forwarded" return MATCHER_FORWARDED; "~forwarded" return MATCHER_NOT_FORWARDED; +"locked" return MATCHER_LOCKED; +"~locked" return MATCHER_NOT_LOCKED; "subject" return MATCHER_SUBJECT; "~subject" return MATCHER_NOT_SUBJECT; "from" return MATCHER_FROM; diff --git a/src/matcher_parser_parse.y b/src/matcher_parser_parse.y index 1941f5b0f..d6e5c43a8 100644 --- a/src/matcher_parser_parse.y +++ b/src/matcher_parser_parse.y @@ -198,6 +198,7 @@ int matcher_parserwrap(void) %token MATCHER_OR MATCHER_AND %token MATCHER_COLOR MATCHER_SCORE_EQUAL MATCHER_REDIRECT MATCHER_DELETE_ON_SERVER %token MATCHER_SIZE_GREATER MATCHER_SIZE_SMALLER MATCHER_SIZE_EQUAL +%token MATCHER_LOCKED MATCHER_NOT_LOCKED %start file @@ -447,6 +448,20 @@ MATCHER_ALL criteria = MATCHCRITERIA_NOT_FORWARDED; prop = matcherprop_unquote_new(criteria, NULL, 0, NULL, 0); } +| MATCHER_LOCKED +{ + gint criteria = 0; + + criteria = MATCHCRITERIA_LOCKED; + prop = matcherprop_unquote_new(criteria, NULL, 0, NULL, 0); +} +| MATCHER_NOT_LOCKED +{ + gint criteria = 0; + + criteria = MATCHCRITERIA_NOT_LOCKED; + prop = matcherprop_unquote_new(criteria, NULL, 0, NULL, 0); +} | MATCHER_SUBJECT match_type MATCHER_STRING { gint criteria = 0; diff --git a/src/prefs_matcher.c b/src/prefs_matcher.c index d3eba5fca..830d0d8c8 100644 --- a/src/prefs_matcher.c +++ b/src/prefs_matcher.c @@ -103,16 +103,17 @@ enum { CRITERIA_DELETED = 18, CRITERIA_REPLIED = 19, CRITERIA_FORWARDED = 20, + CRITERIA_LOCKED = 21, - CRITERIA_SCORE_GREATER = 21, - CRITERIA_SCORE_LOWER = 22, - CRITERIA_SCORE_EQUAL = 23, + CRITERIA_SCORE_GREATER = 22, + CRITERIA_SCORE_LOWER = 23, + CRITERIA_SCORE_EQUAL = 24, - CRITERIA_EXECUTE = 24, + CRITERIA_EXECUTE = 25, - CRITERIA_SIZE_GREATER = 25, - CRITERIA_SIZE_SMALLER = 26, - CRITERIA_SIZE_EQUAL = 27 + CRITERIA_SIZE_GREATER = 26, + CRITERIA_SIZE_SMALLER = 27, + CRITERIA_SIZE_EQUAL = 28 }; enum { @@ -152,6 +153,7 @@ gchar * criteria_text [] = { N_("Unread flag"), N_("New flag"), N_("Marked flag"), N_("Deleted flag"), N_("Replied flag"), N_("Forwarded flag"), + N_("Locked flag"), N_("Score greater than"), N_("Score lower than"), N_("Score equal to"), N_("Execute"), @@ -720,13 +722,15 @@ static gint prefs_matcher_get_criteria_from_matching(gint matching_id) case MATCHCRITERIA_NOT_DELETED: case MATCHCRITERIA_DELETED: return CRITERIA_DELETED; - break; case MATCHCRITERIA_NOT_REPLIED: case MATCHCRITERIA_REPLIED: return CRITERIA_REPLIED; case MATCHCRITERIA_NOT_FORWARDED: case MATCHCRITERIA_FORWARDED: return CRITERIA_FORWARDED; + case MATCHCRITERIA_LOCKED: + case MATCHCRITERIA_NOT_LOCKED: + return CRITERIA_LOCKED; case MATCHCRITERIA_NOT_SUBJECT: case MATCHCRITERIA_SUBJECT: return CRITERIA_SUBJECT; @@ -805,6 +809,8 @@ static gint prefs_matcher_get_matching_from_criteria(gint criteria_id) return MATCHCRITERIA_REPLIED; case CRITERIA_FORWARDED: return MATCHCRITERIA_FORWARDED; + case CRITERIA_LOCKED: + return MATCHCRITERIA_LOCKED; case CRITERIA_SUBJECT: return MATCHCRITERIA_SUBJECT; case CRITERIA_FROM: @@ -867,6 +873,8 @@ static gint prefs_matcher_not_criteria(gint matcher_criteria) return MATCHCRITERIA_NOT_REPLIED; case MATCHCRITERIA_FORWARDED: return MATCHCRITERIA_NOT_FORWARDED; + case MATCHCRITERIA_LOCKED: + return MATCHCRITERIA_NOT_LOCKED; case MATCHCRITERIA_SUBJECT: return MATCHCRITERIA_NOT_SUBJECT; case MATCHCRITERIA_FROM: @@ -930,6 +938,7 @@ static MatcherProp * prefs_matcher_dialog_to_matcher() case CRITERIA_DELETED: case CRITERIA_REPLIED: case CRITERIA_FORWARDED: + case CRITERIA_LOCKED: case CRITERIA_EXECUTE: if (value_pred_flag == PREDICATE_FLAG_DISABLED) criteria = prefs_matcher_not_criteria(criteria); @@ -978,6 +987,7 @@ static MatcherProp * prefs_matcher_dialog_to_matcher() case CRITERIA_DELETED: case CRITERIA_REPLIED: case CRITERIA_FORWARDED: + case CRITERIA_LOCKED: break; case CRITERIA_SUBJECT: @@ -1154,6 +1164,7 @@ static void prefs_matcher_select(GtkCList *clist, gint row, gint column, case MATCHCRITERIA_NOT_DELETED: case MATCHCRITERIA_NOT_REPLIED: case MATCHCRITERIA_NOT_FORWARDED: + case MATCHCRITERIA_NOT_LOCKED: case MATCHCRITERIA_NOT_SUBJECT: case MATCHCRITERIA_NOT_FROM: case MATCHCRITERIA_NOT_TO: @@ -1275,6 +1286,7 @@ static void prefs_matcher_criteria_select(GtkList *list, case CRITERIA_DELETED: case CRITERIA_REPLIED: case CRITERIA_FORWARDED: + case CRITERIA_LOCKED: gtk_widget_set_sensitive(matcher.header_combo, FALSE); gtk_widget_set_sensitive(matcher.header_label, FALSE); gtk_widget_set_sensitive(matcher.value_label, FALSE); -- 2.25.1