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 datetime import datetime
00034 import os
00035 import rospkg
00036
00037 from python_qt_binding import loadUi
00038 from python_qt_binding.QtCore import QDateTime
00039 from python_qt_binding.QtWidgets import QWidget
00040
00041
00042 class TimeFilterWidget(QWidget):
00043 def __init__(self, parentfilter, rospack, time_range_provider):
00044 """
00045 Widget for displaying interactive data related to time filtering.
00046 :param parentfilter: buddy filter were data is stored, ''TimeFilter''
00047 :param display_list_args: single element list containing one tuple with
00048 the min and max time to be displayed, ''list of tuple''
00049 """
00050 super(TimeFilterWidget, self).__init__()
00051 ui_file = os.path.join(rospack.get_path('rqt_console'), 'resource/filters', 'time_filter_widget.ui')
00052 loadUi(ui_file, self)
00053 self.setObjectName('TimeFilterWidget')
00054 self._parentfilter = parentfilter
00055
00056 self.start_datetime.dateTimeChanged[QDateTime].connect(self.handle_start_changed)
00057 self.stop_datetime.dateTimeChanged[QDateTime].connect(self.handle_stop_changed)
00058 self.stop_enabled_check_box.clicked[bool].connect(self.handle_stop_enabled_changed)
00059
00060
00061 mintime, maxtime = time_range_provider()
00062 if mintime != -1:
00063 mintime = str(mintime).split('.')
00064 maxtime = str(maxtime).split('.')
00065
00066 time = QDateTime()
00067 time.setTime_t(int(mintime[0]))
00068 mintime = time.addMSecs(int(str(mintime[1]).zfill(9)[:3]))
00069 self.start_datetime.setDateTime(mintime)
00070 time.setTime_t(int(maxtime[0]))
00071 maxtime = time.addMSecs(int(str(maxtime[1]).zfill(9)[:3]))
00072 self.stop_datetime.setDateTime(maxtime)
00073 else:
00074 self.start_datetime.setDateTime(datetime.now())
00075 self.stop_datetime.setDateTime(datetime.now())
00076
00077 def handle_start_changed(self, datetime_):
00078 self._parentfilter.set_start_time(datetime_)
00079
00080 def handle_stop_changed(self, datetime_):
00081 self._parentfilter.set_stop_time(datetime_)
00082
00083 def handle_stop_enabled_changed(self, checked):
00084 self._parentfilter.set_stop_time_enabled(checked)
00085 self.stop_datetime.setEnabled(checked)
00086
00087 def repopulate(self):
00088 """
00089 Stub function.
00090 If the widget had any dynamically adjustable data it would requery it
00091 in this function.
00092 """
00093 pass
00094
00095 def save_settings(self, settings):
00096 """
00097 Saves the settings for this filter to an ini file.
00098 :param settings: used to write the settings to an ini file ''qt_gui.settings.Settings''
00099 """
00100 settings.set_value('start_time', self._parentfilter._start_time.toString('hh:mm:ss.zzz (yyyy-MM-dd)'))
00101 settings.set_value('stop_time', self._parentfilter._stop_time.toString('hh:mm:ss.zzz (yyyy-MM-dd)'))
00102 settings.set_value('stop_time_enabled', self._parentfilter._stop_time_enabled)
00103
00104 def restore_settings(self, settings):
00105 """
00106 Restores the settings for this filter from an ini file.
00107 :param settings: used to extract the settings from an ini file ''qt_gui.settings.Settings''
00108 """
00109 self.handle_stop_enabled_changed(settings.value('stop_time_enabled') in [True, 'true'])
00110 if settings.contains('start_time'):
00111 self.handle_start_changed(QDateTime.fromString(settings.value('start_time'), 'hh:mm:ss.zzz (yyyy-MM-dd)'))
00112 else:
00113 self.handle_start_changed(QDateTime(datetime.now()))
00114 if settings.contains('stop_time'):
00115 self.handle_stop_changed(QDateTime.fromString(settings.value('stop_time'), 'hh:mm:ss.zzz (yyyy-MM-dd)'))
00116 else:
00117 self.handle_stop_changed(QDateTime(datetime.now()))
00118
00119 self.stop_datetime.setDateTime(self._parentfilter._stop_time)
00120 self.start_datetime.setDateTime(self._parentfilter._start_time)
00121 self.stop_enabled_check_box.setChecked(self._parentfilter._stop_time_enabled)