From 18392017c63c538f99fa0cf833c8d494b54bd449 Mon Sep 17 00:00:00 2001 From: Dmitri Bogomolov <4glitch@gmail.com> Date: Tue, 20 Nov 2018 16:53:25 +0200 Subject: [PATCH] Do not propose user to restart Bitmessage if network settings have changed, drop network connections instead --- src/bitmessageqt/settings.py | 61 +++++++++++++++++++----------------- 1 file changed, 32 insertions(+), 29 deletions(-) diff --git a/src/bitmessageqt/settings.py b/src/bitmessageqt/settings.py index fc96b137..dced52ff 100644 --- a/src/bitmessageqt/settings.py +++ b/src/bitmessageqt/settings.py @@ -1,7 +1,7 @@ import os import sys -from PyQt4 import QtGui +from PyQt4 import QtCore, QtGui import debug import defaults @@ -29,6 +29,8 @@ class SettingsDialog(QtGui.QDialog): self.parent = parent self.firstrun = firstrun self.config = BMConfigParser() + self.net_restart_needed = False + self.timer = QtCore.QTimer() self.lineEditMaxOutboundConnections.setValidator( QtGui.QIntValidator(0, 8, self.lineEditMaxOutboundConnections)) @@ -98,7 +100,8 @@ class SettingsDialog(QtGui.QDialog): self.checkBoxSocksListen.setChecked( config.getboolean('bitmessagesettings', 'sockslisten')) - proxy_type = config.get('bitmessagesettings', 'socksproxytype') + proxy_type = config.safeGet( + 'bitmessagesettings', 'socksproxytype', 'none') if proxy_type == 'none': self.comboBoxProxyType.setCurrentIndex(0) self.lineEditSocksHostname.setEnabled(False) @@ -283,16 +286,11 @@ class SettingsDialog(QtGui.QDialog): if int(self.config.get('bitmessagesettings', 'port')) != int( self.lineEditTCPPort.text()): - if not self.config.safeGetBoolean('bitmessagesettings', 'dontconnect'): - QtGui.QMessageBox.about( - self, _translate("MainWindow", "Restart"), - _translate( - "MainWindow", - "You must restart Bitmessage for the port number" - " change to take effect.") - ) self.config.set( 'bitmessagesettings', 'port', str(self.lineEditTCPPort.text())) + if not self.config.safeGetBoolean('bitmessagesettings', 'dontconnect'): + self.net_restart_needed = True + if self.checkBoxUPnP.isChecked() != self.config.safeGetBoolean( 'bitmessagesettings', 'upnp'): self.config.set( @@ -303,32 +301,28 @@ class SettingsDialog(QtGui.QDialog): upnpThread = upnp.uPnPThread() upnpThread.start() + proxy_type = self.config.safeGet( + 'bitmessagesettings', 'socksproxytype', 'none') if ( - self.config.get('bitmessagesettings', 'socksproxytype') == - 'none' and - self.comboBoxProxyType.currentText()[0:5] == 'SOCKS' + proxy_type == 'none' and + self.comboBoxProxyType.currentText()[0:5] == 'SOCKS' and + shared.statusIconColor != 'red' ): - if shared.statusIconColor != 'red': - QtGui.QMessageBox.about( - self, _translate("MainWindow", "Restart"), - _translate( - "MainWindow", - "Bitmessage will use your proxy from now on but" - " you may want to manually restart Bitmessage now" - " to close existing connections (if any).") - ) + self.net_restart_needed = True if ( - self.config.get('bitmessagesettings', 'socksproxytype')[0:5] == - 'SOCKS' and self.comboBoxProxyType.currentText()[0:5] != 'SOCKS' + proxy_type[0:5] == 'SOCKS' and + self.comboBoxProxyType.currentText()[0:5] != 'SOCKS' ): + self.net_restart_needed = True self.parent.statusbar.clearMessage() # just in case we changed something in the network connectivity state.resetNetworkProtocolAvailability() - if self.comboBoxProxyType.currentText()[0:5] == 'SOCKS': - self.config.set('bitmessagesettings', 'socksproxytype', str( - self.comboBoxProxyType.currentText())) - else: - self.config.set('bitmessagesettings', 'socksproxytype', 'none') + self.config.set( + 'bitmessagesettings', 'socksproxytype', + str(self.comboBoxProxyType.currentText()) + if self.comboBoxProxyType.currentText()[0:5] == 'SOCKS' + else 'none' + ) self.config.set('bitmessagesettings', 'socksauthentication', str( self.checkBoxAuthentication.isChecked())) self.config.set('bitmessagesettings', 'sockshostname', str( @@ -495,6 +489,15 @@ class SettingsDialog(QtGui.QDialog): self.config.save() + if self.net_restart_needed: + self.net_restart_needed = False + self.config.set('bitmessagesettings', 'dontconnect', 'true') + self.timer.singleShot( + 5000, lambda: + self.config.remove_option( + 'bitmessagesettings', 'dontconnect') + ) + self.parent.updateStartOnLogon() if (