tMerge pull request #4827 from SomberNight/android_oneserver - electrum - Electrum Bitcoin wallet HTML git clone https://git.parazyd.org/electrum DIR Log DIR Files DIR Refs DIR Submodules --- DIR commit f7f4fef1560a2763b5994f26d27fdc01cc59becd DIR parent e059867314ad8cdc8f29b33cfa179f2df77b8fc2 HTML Author: ThomasV <thomasv@electrum.org> Date: Wed, 14 Nov 2018 16:13:05 +0100 Merge pull request #4827 from SomberNight/android_oneserver implement oneserver option for kivy Diffstat: M electrum/gui/kivy/main_window.py | 9 +++++++++ M electrum/gui/kivy/uix/ui_screens/n… | 7 +++++++ M electrum/network.py | 16 ++++++++++++---- M setup.py | 2 +- 4 files changed, 29 insertions(+), 5 deletions(-) --- DIR diff --git a/electrum/gui/kivy/main_window.py b/electrum/gui/kivy/main_window.py t@@ -101,6 +101,14 @@ class ElectrumWindow(App): def toggle_auto_connect(self, x): self.auto_connect = not self.auto_connect + oneserver = BooleanProperty(False) + def on_oneserver(self, instance, x): + net_params = self.network.get_parameters() + net_params = net_params._replace(oneserver=self.oneserver) + self.network.run_from_another_thread(self.network.set_parameters(net_params)) + def toggle_oneserver(self, x): + self.oneserver = not self.oneserver + def choose_server_dialog(self, popup): from .uix.dialogs.choice_dialog import ChoiceDialog protocol = 's' t@@ -275,6 +283,7 @@ class ElectrumWindow(App): self.server_host = net_params.host self.server_port = net_params.port self.auto_connect = net_params.auto_connect + self.oneserver = net_params.oneserver self.proxy_config = net_params.proxy if net_params.proxy else {} self.plugins = kwargs.get('plugins', []) DIR diff --git a/electrum/gui/kivy/uix/ui_screens/network.kv b/electrum/gui/kivy/uix/ui_screens/network.kv t@@ -39,6 +39,13 @@ Popup: CardSeparator SettingsItem: + title: _("One-server mode") + ': ' + ('ON' if app.oneserver else 'OFF') + description: _("Only connect to a single server") + action: app.toggle_oneserver + disabled: app.auto_connect and not app.oneserver + + CardSeparator + SettingsItem: value: "%d blocks" % app.num_blocks title: _("Blockchain") + ': ' + self.value description: _('Verified block headers') DIR diff --git a/electrum/network.py b/electrum/network.py t@@ -116,6 +116,7 @@ class NetworkParameters(NamedTuple): protocol: str proxy: Optional[dict] auto_connect: bool + oneserver: bool = False proxy_modes = ['socks4', 'socks5'] t@@ -176,7 +177,6 @@ class Network(PrintError): if config is None: config = {} # Do not use mutables as default values! self.config = SimpleConfig(config) if isinstance(config, dict) else config # type: SimpleConfig - self.num_server = 10 if not self.config.get('oneserver') else 0 blockchain.blockchains = blockchain.read_blockchains(self.config) self.print_error("blockchains", list(blockchain.blockchains)) self._blockchain_preferred_block = self.config.get('blockchain_preferred_block', None) # type: Optional[Dict] t@@ -388,7 +388,8 @@ class Network(PrintError): port=port, protocol=protocol, proxy=self.proxy, - auto_connect=self.auto_connect) + auto_connect=self.auto_connect, + oneserver=self.oneserver) def get_donation_address(self): if self.is_connected(): t@@ -498,16 +499,18 @@ class Network(PrintError): except: return self.config.set_key('auto_connect', net_params.auto_connect, False) + self.config.set_key('oneserver', net_params.oneserver, False) self.config.set_key('proxy', proxy_str, False) self.config.set_key('server', server_str, True) # abort if changes were not allowed by config if self.config.get('server') != server_str \ - or self.config.get('proxy') != proxy_str: + or self.config.get('proxy') != proxy_str \ + or self.config.get('oneserver') != net_params.oneserver: return async with self.restart_lock: self.auto_connect = net_params.auto_connect - if self.proxy != proxy or self.protocol != protocol: + if self.proxy != proxy or self.protocol != protocol or self.oneserver != net_params.oneserver: # Restart the network defaulting to the given server await self._stop() self.default_server = server_str t@@ -517,6 +520,10 @@ class Network(PrintError): else: await self.switch_lagging_interface() + def _set_oneserver(self, oneserver: bool): + self.num_server = 10 if not oneserver else 0 + self.oneserver = oneserver + async def _switch_to_random_interface(self): '''Switch to a random connected server other than the current one''' servers = self.get_interfaces() # Those in connected state t@@ -810,6 +817,7 @@ class Network(PrintError): self.protocol = deserialize_server(self.default_server)[2] self.server_queue = queue.Queue() self._set_proxy(deserialize_proxy(self.config.get('proxy'))) + self._set_oneserver(self.config.get('oneserver')) self._start_interface(self.default_server) async def main(): DIR diff --git a/setup.py b/setup.py t@@ -12,7 +12,7 @@ import subprocess from setuptools import setup, find_packages from setuptools.command.install import install -MIN_PYTHON_VERSION = "3.6" +MIN_PYTHON_VERSION = "3.6.1" _min_python_version_tuple = tuple(map(int, (MIN_PYTHON_VERSION.split("."))))