timeline_pane.py
Go to the documentation of this file.
00001 # Software License Agreement (BSD License)
00002 #
00003 # Copyright (c) 2012, Willow Garage, Inc.
00004 # All rights reserved.
00005 #
00006 # Redistribution and use in source and binary forms, with or without
00007 # modification, are permitted provided that the following conditions
00008 # are met:
00009 #
00010 #  * Redistributions of source code must retain the above copyright
00011 #    notice, this list of conditions and the following disclaimer.
00012 #  * Redistributions in binary form must reproduce the above
00013 #    copyright notice, this list of conditions and the following
00014 #    disclaimer in the documentation and/or other materials provided
00015 #    with the distribution.
00016 #  * Neither the name of Willow Garage, Inc. nor the names of its
00017 #    contributors may be used to endorse or promote products derived
00018 #    from this software without specific prior written permission.
00019 #
00020 # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
00021 # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
00022 # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
00023 # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
00024 # COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
00025 # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
00026 # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
00027 # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
00028 # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
00029 # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
00030 # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
00031 # POSSIBILITY OF SUCH DAMAGE.
00032 #
00033 # Author: Isaac Saito, Ze'ev Klapow, Austin Hendrix
00034 
00035 import os
00036 
00037 from python_qt_binding import loadUi
00038 from python_qt_binding.QtCore import Signal, Slot
00039 from python_qt_binding.QtWidgets import QWidget
00040 import rospy
00041 import rospkg
00042 
00043 from rqt_robot_monitor.timeline import Timeline
00044 
00045 
00046 class TimelinePane(QWidget):
00047     """
00048     This class defines the pane where timeline and its related components
00049     are displayed.
00050     """
00051     status_updated = Signal(list)
00052     pause_changed = Signal(bool)
00053     position_changed = Signal(int)
00054     redraw = Signal()
00055 
00056     def __init__(self, parent, paused=False):
00057         """
00058         Because this class is intended to be instantiated via Qt's .ui file,
00059         taking argument other than parent widget is not possible, which is
00060         ported to set_timeline_data method. That said, set_timeline_data must
00061         be called (soon) after an object of this is instantiated.
00062         """
00063         super(TimelinePane, self).__init__(parent=parent)
00064 
00065         rp = rospkg.RosPack()
00066         ui_file = os.path.join(rp.get_path('rqt_robot_monitor'),
00067                                'resource',
00068                                'timelinepane.ui')
00069         loadUi(ui_file, self)
00070 
00071         self._timeline_view.show()
00072         self._timeline_view.position_changed.connect(self._signal_position_changed)
00073 
00074         # connect pause button
00075         self._pause_button.clicked[bool].connect(self._signal_pause_changed)
00076 
00077         # bootstrap initial state
00078         self._pause_button.setChecked(paused)
00079 
00080         self.redraw.connect(self._signal_redraw)
00081 
00082     def _signal_pause_changed(self, paused):
00083         self.pause_changed.emit(paused)
00084 
00085     def _signal_position_changed(self, position):
00086         self.position_changed.emit(position)
00087 
00088     @Slot(bool)
00089     def set_paused(self, paused):
00090         self._pause_button.setChecked(paused)
00091 
00092     @Slot(list)
00093     def set_levels(self, levels):
00094         '''
00095         :param levels: List of status levels
00096         '''
00097         self._timeline_view.set_levels(levels)
00098 
00099     @Slot(int)
00100     def set_position(self, position):
00101         self._timeline_view.set_marker_pos(position)
00102 
00103     @Slot()
00104     def _signal_redraw(self):
00105         self._timeline_view.redraw.emit()


rqt_robot_monitor
Author(s): Austin Hendrix, Isaac Saito, Ze'ev Klapow, Kevin Watts, Josh Faust
autogenerated on Thu May 16 2019 03:10:09