* src/matcher.[ch]
authorAlfons Hoogervorst <alfons@proteus.demon.nl>
Wed, 25 Dec 2002 19:06:48 +0000 (19:06 +0000)
committerAlfons Hoogervorst <alfons@proteus.demon.nl>
Wed, 25 Dec 2002 19:06:48 +0000 (19:06 +0000)
* 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
configure.in
src/matcher.c
src/matcher.h
src/matcher_parser_lex.l
src/matcher_parser_parse.y
src/prefs_matcher.c

index 71614c2f0e2e81efb1b425e9832e014346c56c9f..e2259c0079c645bead3f6dd97f8cbab4ddedd78a 100644 (file)
@@ -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
index 032894b770effbf675204c3f214a151c5497d69f..37fa2838d95073bb061456e3c96af8de1bacc406 100644 (file)
@@ -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
index 8a0427d8b593d70030aa3c6759fee080f12459fa..32d02c6675389a56ce04ef5135be6b63ba59c1d1 100644 (file)
@@ -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:
index aad70317d45a6ea90f1bc29e76d4358dedeb72fd..8ce17657b16a854896b2af77a76076d304319474 100644 (file)
@@ -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,
index fbbb80d1b9a0b27f3bcda43c8f19d5c0be297a56..a0f5d117b0086352845df92eebace1aa7857c697 100644 (file)
@@ -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;
index 1941f5b0f8ebd3ec82cac29752c7d0f6e6e0e3f3..d6e5c43a869eed8d9e1329f519c144f07aaa9f7f 100644 (file)
@@ -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;
index d3eba5fca943f9def1f0a5e367c86d202b781da8..830d0d8c8eee51caa783f6c4f0b3608bdc28623b 100644 (file)
@@ -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);