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 LocationFilter(BaseFilter):
00038 """
00039 Contains filter logic for a single location 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(LocationFilter, 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 test_message(self, message):
00074 """
00075 Tests if the message matches the filter.
00076 If the regex flag is False simple 'is this in that' text matching is used
00077 on _text. If the regex flag is True _text is treated as a regular expression
00078 with one exception. If it does not start with a ^ a .* is appended, and if
00079 it does not end with a $ then a .* is added to the end.
00080
00081 :param message: the message to be tested against the filters, ''Message''
00082 :returns: True if the message matches, ''bool''
00083 """
00084 if self.is_enabled() and self._text != '':
00085 if self._regex:
00086 temp = self._text
00087 if temp[0] != '^':
00088 temp = '.*' + temp
00089 if temp[-1] != '$':
00090 temp += '.*'
00091 if QRegExp(temp).exactMatch(message._location):
00092 return True
00093 else:
00094 if message._location.find(self._text) != -1:
00095 return True
00096 return False