quickview.py
Go to the documentation of this file.
2 import python_qt_binding
3 from .utils.constants import _MICROSTRAIN_ROS_VERISON
4 from .utils.widgets import MicrostrainWidget
5 from .filter_data import FilterDataWidget
6 from .gq7_led import GQ7LEDWidget
7 from .sensor_data import SensorDataWidget
8 from .gnss_data import GNSSDataWidget
9 from .rtk_status import RTKStatusWidget
10 
12  def __init__(self, node, node_name_changed_callback):
13  # Initialize the parent class
14  super(DeviceSelectorWidget, self).__init__(node, 'DeviceSelector')
15 
16  # Set the node name in the line edit
17  self.node_name_line_edit.setText(self._node_name)
18 
19  # Connect the submit button to the passed callback
20  self._node_name_changed_callback = node_name_changed_callback
21  self.node_name_submit_button.clicked.connect(self._callback_wrapper)
22 
23  def run(self):
24  # Update the device data
25  self._update_device_data()
26 
28  self.node_connected_label.setText(self._device_report_monitor.connected_string)
29  self.model_name_label.setText(self._device_report_monitor.model_name_string)
30  self.model_number_label.setText(self._device_report_monitor.model_number_string)
31  self.serial_number_label.setText(self._device_report_monitor.serial_number_string)
32  self.options_label.setText(self._device_report_monitor.options_string)
33  self.firmware_version_label.setText(self._device_report_monitor.firmware_version_string)
34 
35  def _callback_wrapper(self):
36  self._node_name_changed_callback(self.node_name_line_edit.text())
37 
38 
40 
41  def __init__(self, context):
42  # Initialize the parent class
43  super(Quickview, self).__init__(context)
44 
45  # Save a copy of the node if we need to
46  if _MICROSTRAIN_ROS_VERISON == 2:
47  node = context.node
48  else:
49  node = None
50 
51  # Set some metadata
52  self.setObjectName('Quickview')
53 
54  # Initialize our widgets
55  device_selector_widget = DeviceSelectorWidget(node, self.change_node_name)
56  filter_data_widget = FilterDataWidget(node)
57  gq7_led_widget = GQ7LEDWidget(node)
58  sensor_data_widget = SensorDataWidget(node)
59  gnss_data_widget = GNSSDataWidget(node)
60  rtk_status_widget = RTKStatusWidget(node)
61 
62  # Organize the widgets in a grid layout, otherwise the UI will not be formatted properly
63  layout = python_qt_binding.QtWidgets.QGridLayout()
64  left_column_layout = python_qt_binding.QtWidgets.QGridLayout()
65  right_column_layout = python_qt_binding.QtWidgets.QGridLayout()
66  layout.addLayout(left_column_layout, 0, 0)
67  layout.addLayout(right_column_layout, 0, 1)
68 
69  left_column_layout.addWidget(device_selector_widget, 0, 0) # Left side
70  left_column_layout.addWidget(filter_data_widget, 1, 0)
71  right_column_layout.addWidget(gq7_led_widget, 0, 0) # Right side
72  right_column_layout.addWidget(sensor_data_widget, 1, 0)
73  right_column_layout.addWidget(gnss_data_widget, 2, 0)
74  right_column_layout.addWidget(rtk_status_widget, 3, 0)
75 
76  # Save the widgets so we can update them, and shut them down
77  self._widgets = [
78  device_selector_widget,
79  filter_data_widget,
80  gq7_led_widget,
81  sensor_data_widget,
82  gnss_data_widget,
83  rtk_status_widget
84  ]
85 
86  # The ROS wrapper only allows us to add widgets, so add a wrapper widget to the layout and pass that back to ROS
87  wrapper_widget = python_qt_binding.QtWidgets.QWidget()
88  wrapper_widget.setLayout(layout)
89  wrapper_widget.setObjectName('Quickview')
90  wrapper_widget.setWindowTitle('Quickview')
91 
92  context.add_widget(wrapper_widget)
93 
94  def shutdown_plugin(self):
95  # Stop the update loops
96  for widget in self._widgets:
97  widget.shutdown_timer()
98 
99  # call the parent function
100  return super(Quickview, self).shutdown_plugin()
101 
102  def change_node_name(self, node_name):
103  # Reconfigure all the widgets
104  for widget in self._widgets:
105  widget.reconfigure(node_name)
microstrain_inertial_rqt.utils.widgets.MicrostrainWidget._device_report_monitor
_device_report_monitor
Definition: widgets.py:31
qt_gui::plugin::Plugin
microstrain_inertial_rqt.utils.widgets.MicrostrainWidget._node_name
_node_name
Definition: widgets.py:28
microstrain_inertial_rqt.quickview.DeviceSelectorWidget.__init__
def __init__(self, node, node_name_changed_callback)
Definition: quickview.py:12
microstrain_inertial_rqt.sensor_data.SensorDataWidget
Definition: sensor_data.py:6
microstrain_inertial_rqt.quickview.DeviceSelectorWidget._callback_wrapper
def _callback_wrapper(self)
Definition: quickview.py:35
microstrain_inertial_rqt.quickview.Quickview.change_node_name
def change_node_name(self, node_name)
Definition: quickview.py:102
microstrain_inertial_rqt.gnss_data.GNSSDataWidget
Definition: gnss_data.py:6
microstrain_inertial_rqt.gq7_led.GQ7LEDWidget
Definition: gq7_led.py:6
microstrain_inertial_rqt.filter_data.FilterDataWidget
Definition: filter_data.py:6
microstrain_inertial_rqt.quickview.Quickview.shutdown_plugin
def shutdown_plugin(self)
Definition: quickview.py:94
microstrain_inertial_rqt.quickview.DeviceSelectorWidget._update_device_data
def _update_device_data(self)
Definition: quickview.py:27
microstrain_inertial_rqt.quickview.DeviceSelectorWidget._node_name_changed_callback
_node_name_changed_callback
Definition: quickview.py:20
microstrain_inertial_rqt.quickview.Quickview
Definition: quickview.py:39
qt_gui::plugin
microstrain_inertial_rqt.quickview.Quickview._widgets
_widgets
Definition: quickview.py:77
microstrain_inertial_rqt.utils.widgets.MicrostrainWidget
Definition: widgets.py:11
microstrain_inertial_rqt.quickview.DeviceSelectorWidget
Definition: quickview.py:11
microstrain_inertial_rqt.quickview.DeviceSelectorWidget.run
def run(self)
Definition: quickview.py:23
microstrain_inertial_rqt.quickview.Quickview.__init__
def __init__(self, context)
Definition: quickview.py:41
microstrain_inertial_rqt.rtk_status.RTKStatusWidget
Definition: rtk_status.py:6


microstrain_inertial_rqt
Author(s): Parker Hannifin Corp
autogenerated on Fri Apr 18 2025 02:52:41