Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033 from python_qt_binding.QtCore import QRegExp
00034 from .base_filter import BaseFilter
00035
00036
00037 class MessageFilter(BaseFilter):
00038
00039 """
00040 Contains filter logic for a message filter. If the regex flag is False
00041 simple 'is this in that' text matching is used on _text. If the regex flag is True
00042 _text is treated as a regular expression with one exception. If it does not
00043 start with a ^ a .* is appended, and if it does not end with a $ then a .*
00044 is added to the end.
00045 The filter_changed signal should be connected to a slot which notifies the
00046 overall filtering system that it needs to reevaluate all entries.
00047 """
00048
00049 def __init__(self):
00050 super(MessageFilter, self).__init__()
00051 self._text = ''
00052 self._regex = False
00053
00054 def set_text(self, text):
00055 """
00056 Setter for _text
00057 :param text: text to set ''str''
00058 :emits filter_changed_signal: If _enabled is true
00059 """
00060 self._text = text
00061 if self.is_enabled():
00062 self.start_emit_timer(500)
00063
00064 def set_regex(self, checked):
00065 """
00066 Setter for _regex
00067 :param checked: boolean flag to set ''bool''
00068 :emits filter_changed_signal: If _enabled is true
00069 """
00070 self._regex = checked
00071 if self.is_enabled():
00072 self.start_emit_timer(500)
00073
00074 def has_filter(self):
00075 return self._text != ''
00076
00077 def test_message(self, message):
00078 """
00079 Tests if the message matches the filter.
00080 If the regex flag is False simple 'is this in that' text matching is used
00081 on _text. If the regex flag is True _text is treated as a regular expression
00082 with one exception. If it does not start with a ^ a .* is appended, and if
00083 it does not end with a $ then a .* is added to the end.
00084
00085 :param message: the message to be tested against the filters, ''Message''
00086 :returns: True if the message matches, ''bool''
00087 """
00088 return self._test_message(message.message)
00089
00090 def _test_message(self, value):
00091 if not self.is_enabled():
00092 return False
00093 if self._text != '':
00094 if self._regex:
00095 temp = self._text
00096 if temp[0] != '^':
00097 temp = '.*' + temp
00098 if temp[-1] != '$':
00099 temp += '.*'
00100 if QRegExp(temp).exactMatch(value):
00101 return True
00102 else:
00103 if value.find(self._text) != -1:
00104 return True
00105 return False