From 350e8d66c755038d499a27325d26e038bdc22c85 Mon Sep 17 00:00:00 2001 From: Jonathan Warren Date: Wed, 24 Jul 2013 11:46:28 -0400 Subject: [PATCH] Prompt user to connect at first startup --- src/bitmessageqt/__init__.py | 28 ++++++++++++++++++++++++++-- src/class_outgoingSynSender.py | 3 ++- src/class_singleListener.py | 4 +++- src/helper_startup.py | 1 + 4 files changed, 32 insertions(+), 4 deletions(-) diff --git a/src/bitmessageqt/__init__.py b/src/bitmessageqt/__init__.py index 3ee43370..a7206c75 100644 --- a/src/bitmessageqt/__init__.py +++ b/src/bitmessageqt/__init__.py @@ -23,6 +23,7 @@ from settings import * from about import * from help import * from iconglossary import * +from connect import * import sys from time import strftime, localtime, gmtime import time @@ -424,6 +425,8 @@ class MyForm(QtGui.QMainWindow): self.rerenderComboBoxSendFrom() + + # Show or hide the application window after clicking an item within the # tray icon or, on Windows, the try icon itself. def appIndicatorShowOrHideWindow(self): @@ -1160,6 +1163,16 @@ class MyForm(QtGui.QMainWindow): "MainWindow", "Successfully joined chan. ")) self.ui.tabWidget.setCurrentIndex(3) + def showConnectDialog(self): + self.connectDialogInstance = connectDialog(self) + if self.connectDialogInstance.exec_(): + if self.connectDialogInstance.ui.radioButtonConnectNow.isChecked(): + shared.config.remove_option('bitmessagesettings', 'dontconnect') + with open(shared.appdata + 'keys.dat', 'wb') as configfile: + shared.config.write(configfile) + else: + self.click_actionSettings() + def openKeysFile(self): if 'linux' in sys.platform: subprocess.call(["xdg-open", shared.appdata + 'keys.dat']) @@ -1946,8 +1959,9 @@ class MyForm(QtGui.QMainWindow): shared.config.set('bitmessagesettings', 'startintray', str( self.settingsDialogInstance.ui.checkBoxStartInTray.isChecked())) if int(shared.config.get('bitmessagesettings', 'port')) != int(self.settingsDialogInstance.ui.lineEditTCPPort.text()): - QMessageBox.about(self, _translate("MainWindow", "Restart"), _translate( - "MainWindow", "You must restart Bitmessage for the port number change to take effect.")) + if not shared.safeConfigGetBoolean('bitmessagesettings', 'dontconnect'): + QMessageBox.about(self, _translate("MainWindow", "Restart"), _translate( + "MainWindow", "You must restart Bitmessage for the port number change to take effect.")) shared.config.set('bitmessagesettings', 'port', str( self.settingsDialogInstance.ui.lineEditTCPPort.text())) if shared.config.get('bitmessagesettings', 'socksproxytype') == 'none' and str(self.settingsDialogInstance.ui.comboBoxProxyType.currentText())[0:5] == 'SOCKS': @@ -2867,7 +2881,15 @@ class helpDialog(QtGui.QDialog): self.parent = parent self.ui.labelHelpURI.setOpenExternalLinks(True) QtGui.QWidget.resize(self, QtGui.QWidget.sizeHint(self)) + +class connectDialog(QtGui.QDialog): + def __init__(self, parent): + QtGui.QWidget.__init__(self, parent) + self.ui = Ui_connectDialog() + self.ui.setupUi(self) + self.parent = parent + QtGui.QWidget.resize(self, QtGui.QWidget.sizeHint(self)) class aboutDialog(QtGui.QDialog): @@ -3211,6 +3233,8 @@ def run(): myapp.appIndicatorInit(app) myapp.ubuntuMessagingMenuInit() myapp.notifierInit() + if shared.safeConfigGetBoolean('bitmessagesettings', 'dontconnect'): + myapp.showConnectDialog() # ask the user if we may connect if gevent is None: sys.exit(app.exec_()) else: diff --git a/src/class_outgoingSynSender.py b/src/class_outgoingSynSender.py index 5c21d72c..ac0b11ac 100644 --- a/src/class_outgoingSynSender.py +++ b/src/class_outgoingSynSender.py @@ -23,7 +23,8 @@ class outgoingSynSender(threading.Thread): self.selfInitiatedConnections = selfInitiatedConnections def run(self): - time.sleep(1) + while shared.safeConfigGetBoolean('bitmessagesettings', 'dontconnect'): + time.sleep(2) while True: while len(self.selfInitiatedConnections[self.streamNumber]) >= 8: # maximum number of outgoing connections = 8 time.sleep(10) diff --git a/src/class_singleListener.py b/src/class_singleListener.py index d6b46643..f339b2ba 100644 --- a/src/class_singleListener.py +++ b/src/class_singleListener.py @@ -26,7 +26,9 @@ class singleListener(threading.Thread): # proxy 'none' or configure SOCKS listening then this will start listening for # connections. while shared.config.get('bitmessagesettings', 'socksproxytype')[0:5] == 'SOCKS' and not shared.config.getboolean('bitmessagesettings', 'sockslisten'): - time.sleep(300) + time.sleep(10) + while shared.safeConfigGetBoolean('bitmessagesettings', 'dontconnect'): + time.sleep(1) with shared.printLock: print 'Listening for incoming connections.' diff --git a/src/helper_startup.py b/src/helper_startup.py index 46150d4d..3359a080 100644 --- a/src/helper_startup.py +++ b/src/helper_startup.py @@ -66,6 +66,7 @@ def loadConfig(): 'bitmessagesettings', 'maxacceptablenoncetrialsperbyte', '0') shared.config.set( 'bitmessagesettings', 'maxacceptablepayloadlengthextrabytes', '0') + shared.config.set('bitmessagesettings', 'dontconnect', 'true') if storeConfigFilesInSameDirectoryAsProgramByDefault: # Just use the same directory as the program and forget about