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 Contains filter logic for a message filter. If the regex flag is False
00040 simple 'is this in that' text matching is used on _text. If the regex flag is True
00041 _text is treated as a regular expression with one exception. If it does not
00042 start with a ^ a .* is appended, and if it does not end with a $ then a .*
00043 is added to the end.
00044 The filter_changed signal should be connected to a slot which notifies the
00045 overall filtering system that it needs to reevaluate all entries.
00046 """
00047
00048 def __init__(self):
00049 super(MessageFilter, self).__init__()
00050 self._text = ''
00051 self._regex = False
00052
00053 def set_text(self, text):
00054 """
00055 Setter for _text
00056 :param text: text to set ''str''
00057 :emits filter_changed_signal: If _enabled is true
00058 """
00059 self._text = text
00060 if self.is_enabled():
00061 self.start_emit_timer(500)
00062
00063 def set_regex(self, checked):
00064 """
00065 Setter for _regex
00066 :param checked: boolean flag to set ''bool''
00067 :emits filter_changed_signal: If _enabled is true
00068 """
00069 self._regex = checked
00070 if self.is_enabled():
00071 self.start_emit_timer(500)
00072
00073 def has_filter(self):
00074 return self._text != ''
00075
00076 def test_message(self, message):
00077 """
00078 Tests if the message matches the filter.
00079 If the regex flag is False simple 'is this in that' text matching is used
00080 on _text. If the regex flag is True _text is treated as a regular expression
00081 with one exception. If it does not start with a ^ a .* is appended, and if
00082 it does not end with a $ then a .* is added to the end.
00083
00084 :param message: the message to be tested against the filters, ''Message''
00085 :returns: True if the message matches, ''bool''
00086 """
00087 return self._test_message(message.message)
00088
00089 def _test_message(self, value):
00090 if not self.is_enabled():
00091 return False
00092 if self._text != '':
00093 if self._regex:
00094 temp = self._text
00095 if temp[0] != '^':
00096 temp = '.*' + temp
00097 if temp[-1] != '$':
00098 temp += '.*'
00099 if QRegExp(temp).exactMatch(value):
00100 return True
00101 else:
00102 if value.find(self._text) != -1:
00103 return True
00104 return False