Addon Manager: Fix signals in connection check

This commit is contained in:
Chris Hennes
2024-02-08 11:48:42 -06:00
committed by Chris Hennes
parent dfbc90d351
commit c8d33261f8
2 changed files with 51 additions and 23 deletions

View File

@@ -45,8 +45,7 @@ class ConnectionCheckerGUI(QtCore.QObject):
# Check the connection in a new thread, so FreeCAD stays responsive
self.connection_checker = ConnectionChecker()
self.connection_checker.success.connect(self._check_succeeded)
self.connection_checker.failure.connect(self._network_connection_failed)
self.signals_connected = False
self.connection_message_timer = None
self.connection_check_message = None
@@ -54,6 +53,9 @@ class ConnectionCheckerGUI(QtCore.QObject):
def start(self):
"""Start the connection check"""
self.connection_checker.start()
self.connection_checker.success.connect(self._check_succeeded)
self.connection_checker.failure.connect(self._network_connection_failed)
self.signals_connected = True
# If it takes longer than a half second to check the connection, show a message:
self.connection_message_timer = QtCore.QTimer.singleShot(
@@ -75,8 +77,7 @@ class ConnectionCheckerGUI(QtCore.QObject):
def cancel_network_check(self, _):
"""Cancel the check"""
if not self.connection_checker.isFinished():
self.connection_checker.success.disconnect(self._check_succeeded)
self.connection_checker.failure.disconnect(self._network_connection_failed)
self._disconnect_signals()
self.connection_checker.requestInterruption()
self.connection_checker.wait(500)
self.connection_check_message.close()
@@ -99,10 +100,12 @@ class ConnectionCheckerGUI(QtCore.QObject):
translate("AddonsInstaller", "Missing dependency"),
translate(
"AddonsInstaller",
"Could not import QtNetwork -- see Report View for details. Addon Manager unavailable.",
"Could not import QtNetwork -- see Report View for details. Addon Manager "
"unavailable.",
),
)
self._disconnect_signals()
self.check_complete.emit()
def _check_succeeded(self):
@@ -112,4 +115,11 @@ class ConnectionCheckerGUI(QtCore.QObject):
self.connection_check_message.close()
self.connection_available.emit()
self._disconnect_signals()
self.check_complete.emit()
def _disconnect_signals(self):
if self.signals_connected:
self.connection_checker.success.disconnect(self._check_succeeded)
self.connection_checker.failure.disconnect(self._network_connection_failed)
self.signals_connected = False