diff --git a/gui/qt/network_dialog.py b/gui/qt/network_dialog.py index 83d7ef9f0..0d0521fff 100644 --- a/gui/qt/network_dialog.py +++ b/gui/qt/network_dialog.py @@ -169,15 +169,20 @@ class NetworkChoiceLayout(object): check_for_disable() self.proxy_mode.connect(self.proxy_mode, SIGNAL('currentIndexChanged(int)'), check_for_disable) + self.proxy_mode.setCurrentIndex(self.proxy_mode.findText(str(proxy_config.get("mode").upper()))) self.proxy_host.setText(proxy_config.get("host")) self.proxy_port.setText(proxy_config.get("port")) + self.proxy_mode.connect(self.proxy_mode, SIGNAL('currentIndexChanged(int)'), self.proxy_settings_changed) + self.proxy_host.connect(self.proxy_host, SIGNAL('textEdited(QString)'), self.proxy_settings_changed) + self.proxy_port.connect(self.proxy_port, SIGNAL('textEdited(QString)'), self.proxy_settings_changed) + grid.addWidget(QLabel(_('Proxy') + ':'), 4, 0) grid.addWidget(self.proxy_mode, 4, 1) grid.addWidget(self.proxy_host, 4, 2) grid.addWidget(self.proxy_port, 4, 3) - self.tor_button = QPushButton("Use Tor Proxy") + self.tor_button = QCheckBox("Use Tor Proxy") self.tor_button.setIcon(QIcon(":icons/tor_logo.png")) self.tor_button.hide() self.tor_button.clicked.connect(self.use_tor_proxy) @@ -264,14 +269,25 @@ class NetworkChoiceLayout(object): def suggest_proxy(self, found_proxy): self.tor_proxy = found_proxy self.tor_button.setText("Use Tor proxy at port " + str(found_proxy[1])) + if self.proxy_mode.currentIndex() == 2 \ + and self.proxy_host.text() == "127.0.0.1" \ + and self.proxy_port.text() == str(found_proxy[1]): + self.tor_button.setChecked(True) self.tor_button.show() - def use_tor_proxy(self): + def use_tor_proxy(self, use_it): # 2 = SOCKS5 - self.proxy_mode.setCurrentIndex(2) - self.proxy_host.setText("127.0.0.1") - self.proxy_port.setText(str(self.tor_proxy[1])) - self.tor_button.hide() + if not use_it: + self.proxy_mode.setCurrentIndex(0) + self.tor_button.setChecked(False) + else: + self.proxy_mode.setCurrentIndex(2) + self.proxy_host.setText("127.0.0.1") + self.proxy_port.setText(str(self.tor_proxy[1])) + self.tor_button.setChecked(True) + + def proxy_settings_changed(self): + self.tor_button.setChecked(False) class TorDetector(QThread): @@ -291,7 +307,7 @@ class TorDetector(QThread): @staticmethod def is_tor_port(port): try: - s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + s = socket._socketobject(socket.AF_INET, socket.SOCK_STREAM) s.settimeout(0.1) s.connect(("127.0.0.1", port)) # Tor responds uniquely to HTTP-like requests