diff --git a/pytec/tec_qt.py b/pytec/tec_qt.py index 0431f87..6708fcd 100755 --- a/pytec/tec_qt.py +++ b/pytec/tec_qt.py @@ -60,32 +60,32 @@ class MainWindow(QtWidgets.QMainWindow): self.info_box = InfoBox() + # Models self.thermostat = Thermostat( self, self.report_refresh_spin.value() ) self._connecting_task = None + self.thermostat.connection_state_changed.connect(self._on_connection_changed) + self.autotuners = PIDAutoTuner(self, self.thermostat, 2) + self.autotuners.autotune_state_changed.connect(self.pid_autotune_handler) + + # Handlers for disconnections @asyncSlot() async def handle_connection_error(): self.info_box.display_info_box( "Connection Error", "Thermostat connection lost. Is it unplugged?" ) await self.thermostat.end_session() - self.thermostat.connection_error.connect(handle_connection_error) - self.thermostat.connection_state_changed.connect(self._on_connection_changed) - - self.autotuners = PIDAutoTuner(self, self.thermostat, 2) - self.autotuners.autotune_state_changed.connect(self.pid_autotune_handler) - async def autotune_disconnect(): for ch in range(self.NUM_CHANNELS): if self.autotuners.get_state(ch) != PIDAutotuneState.STATE_OFF: await self.autotuners.stop_pid_from_running(ch) - self.thermostat.disconnect_cb = autotune_disconnect + # Control Panel def get_ctrl_panel_config(args): with open(args.param_tree, "r", encoding="utf-8") as f: return json.load(f)["ctrl_panel"] @@ -98,17 +98,7 @@ class MainWindow(QtWidgets.QMainWindow): get_ctrl_panel_config(args), ) - self.zero_limits_warning = ZeroLimitsWarningView( - self.style(), self.limits_warning - ) - self.ctrl_panel_view.set_zero_limits_warning_sig.connect( - self.zero_limits_warning.set_limits_warning - ) - - self.report_apply_btn.clicked.connect( - lambda: self.thermostat.set_update_s(self.report_refresh_spin.value()) - ) - + # Graphs self.channel_graphs = LiveDataPlotter( self.thermostat, [ @@ -117,19 +107,31 @@ class MainWindow(QtWidgets.QMainWindow): ] ) - self.plot_options_menu = PlotOptionsMenu(self.channel_graphs) - self.plot_settings.setMenu(self.plot_options_menu) - + # Bottom bar self.conn_menu = ConnMenu(self.thermostat, self.connect_btn) self.connect_btn.setMenu(self.conn_menu) + self.zero_limits_warning = ZeroLimitsWarningView( + self.style(), self.limits_warning + ) + self.ctrl_panel_view.set_zero_limits_warning_sig.connect( + self.zero_limits_warning.set_limits_warning + ) + self.thermostat_ctrl_menu = ThermostatCtrlMenu( self.thermostat, self.info_box, self.style() ) self.thermostat_settings.setMenu(self.thermostat_ctrl_menu) + self.plot_options_menu = PlotOptionsMenu(self.channel_graphs) + self.plot_settings.setMenu(self.plot_options_menu) + self.loading_spinner.hide() + self.report_apply_btn.clicked.connect( + lambda: self.thermostat.set_update_s(self.report_refresh_spin.value()) + ) + if args.connect: if args.IP: self.host_set_line.setText(args.IP)