From 45b08f2e3fa69cdb314780a96ef0185f2de08737 Mon Sep 17 00:00:00 2001 From: Artem30801 Date: Fri, 17 Jan 2020 19:55:59 +0300 Subject: [PATCH] Fix of possible exceptions with signal disconnection --- Server/copter_table.py | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/Server/copter_table.py b/Server/copter_table.py index 2f9b1ac..0d89830 100644 --- a/Server/copter_table.py +++ b/Server/copter_table.py @@ -1,5 +1,6 @@ from functools import partial from copy import deepcopy +import logging from PyQt5 import QtWidgets, QtCore, QtGui from PyQt5.QtCore import Qt as Qt @@ -44,7 +45,7 @@ class CopterTableWidget(QTableView): self.setContextMenuPolicy(Qt.CustomContextMenu) self.customContextMenuRequested.connect(self.open_menu) - self._signal_connection = None + self.config_dialog_signal.connect(lambda x: x) # Adjust properties self.setSizeAdjustPolicy(QtWidgets.QAbstractScrollArea.AdjustToContents) @@ -120,12 +121,14 @@ class CopterTableWidget(QTableView): @pyqtSlot() def edit_config(self, copter): - if self._signal_connection is not None: - self.config_dialog_signal.disconnect(self._signal_connection) - - call = ConfigDialog().call_copter_dialog - self._signal_connection = self.config_dialog_signal.connect(call) - copter.client.get_response("config", self.config_dialog_signal.emit) + try: + self.config_dialog_signal.disconnect() + except (TypeError, RuntimeError) as error: + logging.error(f"Disconnection of signal failed: {error}") + else: + call = ConfigDialog().call_copter_dialog + self.config_dialog_signal.connect(call) + copter.client.get_response("config", self.config_dialog_signal.emit) # def _selfcheck_shortener(self, data): # TODO!!! # shortened = []