Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 from .base_filter import BaseFilter
00013 from .message_filter import MessageFilter
00014 from .node_filter import NodeFilter
00015 from .severity_filter import SeverityFilter
00016 from .topic_filter import TopicFilter
00017
00018
00019 class CustomFilter(BaseFilter):
00020 """
00021 Contains filter logic for the custom filter which allows message, severity,
00022 node and topic filtering simultaniously. All of these filters must match
00023 together or the custom filter does not match
00024 """
00025
00026 def __init__(self):
00027 super(CustomFilter, self).__init__()
00028
00029 self._message = MessageFilter()
00030 self._message.filter_changed_signal.connect(self.relay_emit_signal)
00031 self._severity = SeverityFilter()
00032 self._severity.filter_changed_signal.connect(self.relay_emit_signal)
00033 self._node = NodeFilter()
00034 self._node.filter_changed_signal.connect(self.relay_emit_signal)
00035 self._topic = TopicFilter()
00036 self._topic.filter_changed_signal.connect(self.relay_emit_signal)
00037
00038 def set_enabled(self, checked):
00039 """
00040 :signal: emits filter_changed_signal
00041 :param checked: enables the filters if checked is True''bool''
00042 """
00043 self._message.set_enabled(checked)
00044 self._severity.set_enabled(checked)
00045 self._node.set_enabled(checked)
00046 self._topic.set_enabled(checked)
00047 super(CustomFilter, self).set_enabled(checked)
00048
00049 def relay_emit_signal(self):
00050 """
00051 Passes any signals emitted by the child filters along
00052 """
00053 self.start_emit_timer(1)
00054
00055 def test_message(self, message):
00056 """
00057 Tests if the message matches the filter.
00058 :param message: the message to be tested against the filters, ''Message''
00059 :returns: True if the message matches all child filters, ''bool''
00060 """
00061 return self._message.test_message(message) and self._severity.test_message(message) and self._node.test_message(message) and self._topic.test_message(message)