+2009-09-14 [colin] 3.7.2cvs32
+
+ * src/matcher.c
+ * src/matcher.h
+ * src/matcher_parser_parse.y
+ * src/prefs_matcher.c
+ Add 'has_attachment' and 'signed' matcher
+ expressions. Patch by Aleksei Miheev, fixes
+ bug 1997.
+
2009-09-14 [colin] 3.7.2cvs31
* src/common/utils.c
( cvs diff -u -r 1.24.2.25 -r 1.24.2.26 Makefile.am; ) > 3.7.2cvs29.patchset
( cvs diff -u -r 1.1.2.25 -r 1.1.2.26 manual/plugins.xml; cvs diff -u -r 1.1.2.7 -r 1.1.2.8 manual/es/plugins.xml; ) > 3.7.2cvs30.patchset
( cvs diff -u -r 1.36.2.174 -r 1.36.2.175 src/common/utils.c; ) > 3.7.2cvs31.patchset
+( cvs diff -u -r 1.75.2.65 -r 1.75.2.66 src/matcher.c; cvs diff -u -r 1.39.2.17 -r 1.39.2.18 src/matcher.h; cvs diff -u -r 1.25.2.33 -r 1.25.2.34 src/matcher_parser_parse.y; cvs diff -u -r 1.43.2.81 -r 1.43.2.82 src/prefs_matcher.c; ) > 3.7.2cvs32.patchset
MICRO_VERSION=2
INTERFACE_AGE=0
BINARY_AGE=0
-EXTRA_VERSION=31
+EXTRA_VERSION=32
EXTRA_RELEASE=
EXTRA_GTK2_VERSION=
{MATCHCRITERIA_NOT_WATCH_THREAD, "~watch_thread"},
{MATCHCRITERIA_SPAM, "spam"},
{MATCHCRITERIA_NOT_SPAM, "~spam"},
+ {MATCHCRITERIA_HAS_ATTACHMENT, "has_attachment"},
+ {MATCHCRITERIA_HAS_NO_ATTACHMENT, "~has_attachment"},
+ {MATCHCRITERIA_SIGNED, "signed"},
+ {MATCHCRITERIA_NOT_SIGNED, "~signed"},
/* msginfo headers */
{MATCHCRITERIA_SUBJECT, "subject"},
return MSG_IS_SPAM(info->flags);
case MATCHCRITERIA_NOT_SPAM:
return !MSG_IS_SPAM(info->flags);
+ case MATCHCRITERIA_HAS_ATTACHMENT:
+ return MSG_IS_WITH_ATTACHMENT(info->flags);
+ case MATCHCRITERIA_HAS_NO_ATTACHMENT:
+ return !MSG_IS_WITH_ATTACHMENT(info->flags);
+ case MATCHCRITERIA_SIGNED:
+ return MSG_IS_SIGNED(info->flags);
+ case MATCHCRITERIA_NOT_SIGNED:
+ return !MSG_IS_SIGNED(info->flags);
case MATCHCRITERIA_COLORLABEL:
{
gint color = MSG_GET_COLORLABEL_VALUE(info->flags);
case MATCHCRITERIA_NOT_LOCKED:
case MATCHCRITERIA_SPAM:
case MATCHCRITERIA_NOT_SPAM:
+ case MATCHCRITERIA_HAS_ATTACHMENT:
+ case MATCHCRITERIA_HAS_NO_ATTACHMENT:
+ case MATCHCRITERIA_SIGNED:
+ case MATCHCRITERIA_NOT_SIGNED:
case MATCHCRITERIA_COLORLABEL:
case MATCHCRITERIA_NOT_COLORLABEL:
case MATCHCRITERIA_IGNORE_THREAD:
case MATCHCRITERIA_NOT_LOCKED:
case MATCHCRITERIA_SPAM:
case MATCHCRITERIA_NOT_SPAM:
+ case MATCHCRITERIA_HAS_ATTACHMENT:
+ case MATCHCRITERIA_HAS_NO_ATTACHMENT:
+ case MATCHCRITERIA_SIGNED:
+ case MATCHCRITERIA_NOT_SIGNED:
case MATCHCRITERIA_PARTIAL:
case MATCHCRITERIA_NOT_PARTIAL:
case MATCHCRITERIA_IGNORE_THREAD:
MC_(FORWARDED), MC_(NOT_FORWARDED),
MC_(LOCKED), MC_(NOT_LOCKED),
MC_(SPAM),MC_(NOT_SPAM),
+ MC_(HAS_ATTACHMENT), MC_(HAS_NO_ATTACHMENT),
+ MC_(SIGNED), MC_(NOT_SIGNED),
MC_(PARTIAL), MC_(NOT_PARTIAL),
MC_(COLORLABEL), MC_(NOT_COLORLABEL),
MC_(IGNORE_THREAD), MC_(NOT_IGNORE_THREAD),
%token MATCHER_ADD_TO_ADDRESSBOOK
%token MATCHER_STOP MATCHER_HIDE MATCHER_IGNORE MATCHER_WATCH
%token MATCHER_SPAM MATCHER_NOT_SPAM
+%token MATCHER_HAS_ATTACHMENT MATCHER_HAS_NO_ATTACHMENT
+%token MATCHER_SIGNED MATCHER_NOT_SIGNED
%token MATCHER_TAG MATCHER_NOT_TAG MATCHER_SET_TAG MATCHER_UNSET_TAG
%token MATCHER_TAGGED MATCHER_NOT_TAGGED MATCHER_CLEAR_TAGS
criteria = MATCHCRITERIA_NOT_SPAM;
prop = matcherprop_new(criteria, NULL, 0, NULL, 0);
}
+| MATCHER_HAS_ATTACHMENT
+{
+ gint criteria = 0;
+
+ criteria = MATCHCRITERIA_HAS_ATTACHMENT;
+ prop = matcherprop_new(criteria, NULL, 0, NULL, 0);
+}
+| MATCHER_HAS_NO_ATTACHMENT
+{
+ gint criteria = 0;
+
+ criteria = MATCHCRITERIA_HAS_NO_ATTACHMENT;
+ prop = matcherprop_new(criteria, NULL, 0, NULL, 0);
+}
+| MATCHER_SIGNED
+{
+ gint criteria = 0;
+
+ criteria = MATCHCRITERIA_SIGNED;
+ prop = matcherprop_new(criteria, NULL, 0, NULL, 0);
+}
+| MATCHER_NOT_SIGNED
+{
+ gint criteria = 0;
+
+ criteria = MATCHCRITERIA_NOT_SIGNED;
+ prop = matcherprop_new(criteria, NULL, 0, NULL, 0);
+}
| MATCHER_PARTIAL
{
gint criteria = 0;
CRITERIA_FOUND_IN_ADDRESSBOOK = 34,
CRITERIA_TAG = 35,
- CRITERIA_TAGGED = 36
+ CRITERIA_TAGGED = 36,
+
+ CRITERIA_HAS_ATTACHMENT = 37,
+ CRITERIA_SIGNED = 38
};
enum {
COMBOBOX_ADD(store, _("Forwarded"), CRITERIA_FORWARDED);
COMBOBOX_ADD(store, _("Locked"), CRITERIA_LOCKED);
COMBOBOX_ADD(store, _("Spam"), CRITERIA_SPAM);
+ COMBOBOX_ADD(store, _("Has attachment"), CRITERIA_HAS_ATTACHMENT);
+ COMBOBOX_ADD(store, _("Signed"), CRITERIA_SIGNED);
matcher.model_flags = GTK_TREE_MODEL(store);
store = gtk_list_store_new(3, G_TYPE_STRING, G_TYPE_INT, G_TYPE_BOOLEAN);
case MATCHCRITERIA_NOT_SPAM:
case MATCHCRITERIA_SPAM:
return CRITERIA_SPAM;
+ case MATCHCRITERIA_HAS_ATTACHMENT:
+ case MATCHCRITERIA_HAS_NO_ATTACHMENT:
+ return CRITERIA_HAS_ATTACHMENT;
+ case MATCHCRITERIA_SIGNED:
+ case MATCHCRITERIA_NOT_SIGNED:
+ return CRITERIA_SIGNED;
case MATCHCRITERIA_PARTIAL:
case MATCHCRITERIA_NOT_PARTIAL:
return CRITERIA_PARTIAL;
return MATCHCRITERIA_LOCKED;
case CRITERIA_SPAM:
return MATCHCRITERIA_SPAM;
+ case CRITERIA_HAS_ATTACHMENT:
+ return MATCHCRITERIA_HAS_ATTACHMENT;
+ case CRITERIA_SIGNED:
+ return MATCHCRITERIA_SIGNED;
case CRITERIA_PARTIAL:
return MATCHCRITERIA_PARTIAL;
case CRITERIA_COLORLABEL:
return MATCHCRITERIA_NOT_LOCKED;
case MATCHCRITERIA_SPAM:
return MATCHCRITERIA_NOT_SPAM;
+ case MATCHCRITERIA_HAS_ATTACHMENT:
+ return MATCHCRITERIA_HAS_NO_ATTACHMENT;
+ case MATCHCRITERIA_SIGNED:
+ return MATCHCRITERIA_NOT_SIGNED;
case MATCHCRITERIA_PARTIAL:
return MATCHCRITERIA_NOT_PARTIAL;
case MATCHCRITERIA_COLORLABEL:
case CRITERIA_FORWARDED:
case CRITERIA_LOCKED:
case CRITERIA_SPAM:
+ case CRITERIA_HAS_ATTACHMENT:
+ case CRITERIA_SIGNED:
case CRITERIA_COLORLABEL:
return gtk_combo_box_get_active(GTK_COMBO_BOX(matcher.match_combo2));
case CRITERIA_WATCH_THREAD:
case CRITERIA_FORWARDED:
case CRITERIA_LOCKED:
case CRITERIA_SPAM:
+ case CRITERIA_HAS_ATTACHMENT:
+ case CRITERIA_SIGNED:
case CRITERIA_PARTIAL:
case CRITERIA_IGNORE_THREAD:
case CRITERIA_WATCH_THREAD:
case CRITERIA_FORWARDED:
case CRITERIA_LOCKED:
case CRITERIA_SPAM:
+ case CRITERIA_HAS_ATTACHMENT:
+ case CRITERIA_SIGNED:
match_criteria = MATCH_FLAG;
break;
case CRITERIA_PARTIAL:
case MATCHCRITERIA_NOT_FORWARDED:
case MATCHCRITERIA_NOT_LOCKED:
case MATCHCRITERIA_NOT_SPAM:
+ case MATCHCRITERIA_HAS_NO_ATTACHMENT:
+ case MATCHCRITERIA_NOT_SIGNED:
case MATCHCRITERIA_NOT_PARTIAL:
case MATCHCRITERIA_NOT_COLORLABEL:
case MATCHCRITERIA_NOT_IGNORE_THREAD:
case CRITERIA_FORWARDED:
case CRITERIA_LOCKED:
case CRITERIA_SPAM:
+ case CRITERIA_HAS_ATTACHMENT:
+ case CRITERIA_SIGNED:
case CRITERIA_COLORLABEL:
gtk_combo_box_set_active(GTK_COMBO_BOX(matcher.match_combo2),
negative_cond ? PREDICATE_FLAG_DISABLED :