custom_filter.py
Go to the documentation of this file.
00001 # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
00002 # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
00003 # COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
00004 # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
00005 # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
00006 # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
00007 # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
00008 # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
00009 # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
00010 # POSSIBILITY OF SUCH DAMAGE.
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)


rqt_console
Author(s): Aaron Blasdel
autogenerated on Fri Jan 3 2014 11:54:30