* src/matcher.[ch]
authorAlfons Hoogervorst <alfons@proteus.demon.nl>
Tue, 31 Dec 2002 09:46:20 +0000 (09:46 +0000)
committerAlfons Hoogervorst <alfons@proteus.demon.nl>
Tue, 31 Dec 2002 09:46:20 +0000 (09:46 +0000)
* src/matcher_parser_parse.y
* src/prefs_matcher.c
add "ignore_thread" and "~ignore_thread" condition so it's
possible to make the actions / scoring operate on the ignore
thread flag

ChangeLog.claws
configure.in
src/matcher.c
src/matcher.h
src/matcher_parser_parse.y
src/prefs_matcher.c

index 0d96508..7fc4dd7 100644 (file)
@@ -1,3 +1,12 @@
+2002-12-31 [alfons]    0.8.8claws28
+
+       * src/matcher.[ch]
+       * src/matcher_parser_parse.y
+       * src/prefs_matcher.c
+               add "ignore_thread" and "~ignore_thread" condition so it's
+               possible to make the actions / scoring operate on the ignore
+               thread flag
+
 2002-12-31 [christoph] 0.8.8claws27
 
        * src/addrbook.c
index 87abc86..57dbf96 100644 (file)
@@ -11,7 +11,7 @@ MINOR_VERSION=8
 MICRO_VERSION=8
 INTERFACE_AGE=0
 BINARY_AGE=0
-EXTRA_VERSION=claws27
+EXTRA_VERSION=claws28
 VERSION=$MAJOR_VERSION.$MINOR_VERSION.$MICRO_VERSION$EXTRA_VERSION
 
 dnl set $target
index de68c28..2e80f71 100644 (file)
@@ -55,6 +55,8 @@ static MatchParser matchparser_tab[] = {
        {MATCHCRITERIA_NOT_LOCKED, "~locked"},
        {MATCHCRITERIA_COLORLABEL, "colorlabel"},
        {MATCHCRITERIA_NOT_COLORLABEL, "~colorlabel"},
+       {MATCHCRITERIA_IGNORE_THREAD, "ignore_thread"},
+       {MATCHCRITERIA_NOT_IGNORE_THREAD, "~ignore_thread"},
 
        /* msginfo headers */
        {MATCHCRITERIA_SUBJECT, "subject"},
@@ -419,7 +421,11 @@ gboolean matcherprop_match(MatcherProp *prop, MsgInfo *info)
        case MATCHCRITERIA_COLORLABEL:
                return MSG_GET_COLORLABEL_VALUE(info->flags) == prop->value; 
        case MATCHCRITERIA_NOT_COLORLABEL:
-               return MSG_GET_COLORLABEL_VALUE(info->flags) != prop->value; 
+               return MSG_GET_COLORLABEL_VALUE(info->flags) != prop->value;
+       case MATCHCRITERIA_IGNORE_THREAD:
+               return MSG_IS_IGNORE_THREAD(info->flags);
+       case MATCHCRITERIA_NOT_IGNORE_THREAD:
+               return !MSG_IS_IGNORE_THREAD(info->flags);
        case MATCHCRITERIA_SUBJECT:
                return matcherprop_string_match(prop, info->subject);
        case MATCHCRITERIA_NOT_SUBJECT:
@@ -832,6 +838,8 @@ gboolean matcherlist_match(MatcherList *matchers, MsgInfo *info)
                case MATCHCRITERIA_NOT_LOCKED:
                case MATCHCRITERIA_COLORLABEL:
                case MATCHCRITERIA_NOT_COLORLABEL:
+               case MATCHCRITERIA_IGNORE_THREAD:
+               case MATCHCRITERIA_NOT_IGNORE_THREAD:
                case MATCHCRITERIA_SUBJECT:
                case MATCHCRITERIA_NOT_SUBJECT:
                case MATCHCRITERIA_FROM:
@@ -930,6 +938,8 @@ gchar *matcherprop_to_string(MatcherProp *matcher)
        case MATCHCRITERIA_NOT_FORWARDED:
        case MATCHCRITERIA_LOCKED:
        case MATCHCRITERIA_NOT_LOCKED:
+       case MATCHCRITERIA_IGNORE_THREAD:
+       case MATCHCRITERIA_NOT_IGNORE_THREAD:
                return g_strdup(criteria_str);
        case MATCHCRITERIA_EXECUTE:
        case MATCHCRITERIA_NOT_EXECUTE:
index 109f880..ba2cbca 100644 (file)
@@ -78,6 +78,7 @@ enum {
        MC_(FORWARDED), MC_(NOT_FORWARDED),
        MC_(LOCKED), MC_(NOT_LOCKED),
        MC_(COLORLABEL), MC_(NOT_COLORLABEL),
+       MC_(IGNORE_THREAD), MC_(NOT_IGNORE_THREAD),
        MC_(SUBJECT), MC_(NOT_SUBJECT),
        MC_(FROM), MC_(NOT_FROM),
        MC_(TO), MC_(NOT_TO),
index 48299b3..bf99d19 100644 (file)
@@ -220,6 +220,7 @@ int matcher_parserwrap(void)
 %token MATCHER_SIZE_GREATER MATCHER_SIZE_SMALLER MATCHER_SIZE_EQUAL
 %token MATCHER_LOCKED MATCHER_NOT_LOCKED
 %token MATCHER_COLORLABEL MATCHER_NOT_COLORLABEL
+%token MATCHER_IGNORE_THREAD MATCHER_NOT_IGNORE_THREAD
 
 %start file
 
@@ -505,6 +506,20 @@ MATCHER_ALL
        else if (value > MAX_COLORLABELS) value = MAX_COLORLABELS;
        prop = matcherprop_unquote_new(criteria, NULL, 0, NULL, value);
 }
+| MATCHER_IGNORE_THREAD
+{
+       gint criteria = 0;
+
+       criteria = MATCHCRITERIA_IGNORE_THREAD;
+       prop = matcherprop_unquote_new(criteria, NULL, 0, NULL, 0);
+}
+| MATCHER_NOT_IGNORE_THREAD
+{
+       gint criteria = 0;
+
+       criteria = MATCHCRITERIA_NOT_IGNORE_THREAD;
+       prop = matcherprop_unquote_new(criteria, NULL, 0, NULL, 0);
+}
 | MATCHER_SUBJECT match_type MATCHER_STRING
 {
        gint criteria = 0;
index 63d579b..bbc3d37 100644 (file)
@@ -112,16 +112,17 @@ enum {
        CRITERIA_FORWARDED = 20,
        CRITERIA_LOCKED = 21,
        CRITERIA_COLORLABEL = 22,
+       CRITERIA_IGNORE_THREAD = 23,
 
-       CRITERIA_SCORE_GREATER = 23,
-       CRITERIA_SCORE_LOWER = 24,
-       CRITERIA_SCORE_EQUAL = 25,
+       CRITERIA_SCORE_GREATER = 24,
+       CRITERIA_SCORE_LOWER = 25,
+       CRITERIA_SCORE_EQUAL = 26,
 
-       CRITERIA_EXECUTE = 26,
+       CRITERIA_EXECUTE = 27,
 
-       CRITERIA_SIZE_GREATER = 27,
-       CRITERIA_SIZE_SMALLER = 28,
-       CRITERIA_SIZE_EQUAL   = 29
+       CRITERIA_SIZE_GREATER = 28,
+       CRITERIA_SIZE_SMALLER = 29,
+       CRITERIA_SIZE_EQUAL   = 30
 };
 
 enum {
@@ -163,6 +164,7 @@ static gchar *criteria_text [] = {
        N_("Replied flag"), N_("Forwarded flag"),
        N_("Locked flag"),
        N_("Color label"),
+       N_("Ignore thread"),
        N_("Score greater than"), N_("Score lower than"),
        N_("Score equal to"),
        N_("Execute"),
@@ -738,6 +740,9 @@ static gint prefs_matcher_get_criteria_from_matching(gint matching_id)
        case MATCHCRITERIA_COLORLABEL:
        case MATCHCRITERIA_NOT_COLORLABEL:
                return CRITERIA_COLORLABEL;
+       case MATCHCRITERIA_IGNORE_THREAD:
+       case MATCHCRITERIA_NOT_IGNORE_THREAD:
+               return CRITERIA_IGNORE_THREAD;
        case MATCHCRITERIA_NOT_SUBJECT:
        case MATCHCRITERIA_SUBJECT:
                return CRITERIA_SUBJECT;
@@ -820,6 +825,8 @@ static gint prefs_matcher_get_matching_from_criteria(gint criteria_id)
                return MATCHCRITERIA_LOCKED;
        case CRITERIA_COLORLABEL:
                return MATCHCRITERIA_COLORLABEL;
+       case CRITERIA_IGNORE_THREAD:
+               return MATCHCRITERIA_IGNORE_THREAD;
        case CRITERIA_SUBJECT:
                return MATCHCRITERIA_SUBJECT;
        case CRITERIA_FROM:
@@ -886,6 +893,8 @@ static gint prefs_matcher_not_criteria(gint matcher_criteria)
                return MATCHCRITERIA_NOT_LOCKED;
        case MATCHCRITERIA_COLORLABEL:
                return MATCHCRITERIA_NOT_COLORLABEL;
+       case MATCHCRITERIA_IGNORE_THREAD:
+               return MATCHCRITERIA_NOT_IGNORE_THREAD;
        case MATCHCRITERIA_SUBJECT:
                return MATCHCRITERIA_NOT_SUBJECT;
        case MATCHCRITERIA_FROM:
@@ -952,6 +961,7 @@ static MatcherProp *prefs_matcher_dialog_to_matcher(void)
        case CRITERIA_LOCKED:
        case CRITERIA_EXECUTE:
        case CRITERIA_COLORLABEL:
+       case CRITERIA_IGNORE_THREAD:
                if (value_pred_flag == PREDICATE_FLAG_DISABLED)
                        criteria = prefs_matcher_not_criteria(criteria);
                break;
@@ -1000,6 +1010,7 @@ static MatcherProp *prefs_matcher_dialog_to_matcher(void)
        case CRITERIA_REPLIED:
        case CRITERIA_FORWARDED:
        case CRITERIA_LOCKED:
+       case CRITERIA_IGNORE_THREAD:
                break;
 
        case CRITERIA_SUBJECT:
@@ -1181,6 +1192,7 @@ static void prefs_matcher_select(GtkCList *clist, gint row, gint column,
        case MATCHCRITERIA_NOT_FORWARDED:
        case MATCHCRITERIA_NOT_LOCKED:
        case MATCHCRITERIA_NOT_COLORLABEL:
+       case MATCHCRITERIA_NOT_IGNORE_THREAD:
        case MATCHCRITERIA_NOT_SUBJECT:
        case MATCHCRITERIA_NOT_FROM:
        case MATCHCRITERIA_NOT_TO:
@@ -1336,6 +1348,7 @@ static void prefs_matcher_criteria_select(GtkList *list,
        case CRITERIA_REPLIED:
        case CRITERIA_FORWARDED:
        case CRITERIA_LOCKED:
+       case CRITERIA_IGNORE_THREAD:
                gtk_widget_set_sensitive(matcher.header_combo, FALSE);
                gtk_widget_set_sensitive(matcher.header_label, FALSE);
                gtk_widget_set_sensitive(matcher.value_label, FALSE);