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 ..message import Message
00034
00035
00036 class FilterCollection:
00037 """
00038 This class provides an interface to filter Message objects based on
00039 of a set of filters which will be boolean combined with either 'or'
00040 or 'and' based on the combination type passed by the user.
00041 ''True'' for and combine and ''False'' for or combine
00042 """
00043 def __init__(self, proxymodel):
00044 """
00045 :param proxymodel: , ''QSortFilterProxyModel''
00046 """
00047 self._filters = []
00048 self._proxymodel = proxymodel
00049
00050 def test_message_array(self, message):
00051 """
00052 test_message function for an array formatted message
00053 :param message: array of the message member data in order ''list'':
00054 message text ''str'', severity ''str'', node ''str'',
00055 time in seconds with decimals ''str'', topic ''str'',
00056 """
00057 newmessage = Message()
00058 message[3] = self._proxymodel.sourceModel().timestring_to_timedata(message[3])
00059 message = newmessage.load_from_array(message)
00060 return self.test_message(message)
00061
00062 def test_message(self, message):
00063 """
00064 Tests if the message matches the entire list of filters.
00065 if passed an array of the 6 data elements of a message it will build one
00066 :param message: message to be tested against the filters, ''Message''
00067 :returns: True if the message matches the filters, ''bool''
00068 """
00069 for item in self._filters:
00070 if item.is_enabled() and item.test_message(message):
00071 return True
00072 return False
00073
00074 def append(self, newfilter):
00075 """
00076 Adds a new filter to the filter list and returns the index
00077 :returns: The index of the filter appended, ''int''
00078 """
00079 self._filters.append(newfilter)
00080
00081 def count_enabled_filters(self):
00082 enabled = 0
00083 for item in self._filters:
00084 if item.is_enabled():
00085 enabled += 1
00086 return enabled
00087
00088 def __len__(self):
00089 return len(self._filters)
00090
00091 def count(self):
00092 return len(self._filters)
00093
00094 def __delitem__(self, index):
00095 del self._filters[index]