tshow only active chains - electrum - Electrum Bitcoin wallet (HTM) git clone https://git.parazyd.org/electrum (DIR) Log (DIR) Files (DIR) Refs (DIR) Submodules --- (DIR) commit 814792eee1a26ecc6b3438ccc8255d8f26e7ee3c (DIR) parent a39e270bd3b1789f6e87000efd2d9243b0fad05d (HTM) Author: ThomasV <thomasv@electrum.org> Date: Tue, 18 Jul 2017 21:37:04 +0200 show only active chains Diffstat: M gui/qt/network_dialog.py | 40 +++++++++++++++---------------- M lib/network.py | 9 ++++++++- 2 files changed, 27 insertions(+), 22 deletions(-) --- (DIR) diff --git a/gui/qt/network_dialog.py b/gui/qt/network_dialog.py t@@ -94,31 +94,28 @@ class NodesListWidget(QTreeWidget): def update(self, network): self.clear() + self.addChild = self.addTopLevelItem checkpoint = network.get_checkpoint() - n_chains = len(network.blockchains) - if n_chains > 1: - for b in network.blockchains.values(): - items = filter(lambda i: i.blockchain==b, network.interfaces.values()) - if items: - name = network.get_blockchain_name(b) - x = QTreeWidgetItem([name + '@%d'%checkpoint, '%d'%b.height()]) - x.setData(0, Qt.UserRole, 1) - x.setData(1, Qt.UserRole, b.checkpoint) - for i in items: - star = ' *' if i == network.interface else '' - item = QTreeWidgetItem([i.host + star, '%d'%i.tip]) - item.setData(0, Qt.UserRole, 0) - item.setData(1, Qt.UserRole, i.server) - x.addChild(item) - self.addTopLevelItem(x) - x.setExpanded(True) - else: - for i in network.interfaces.values(): + chains = network.get_blockchains() + n_chains = len(chains) + for k, items in chains.items(): + b = network.blockchains[k] + name = network.get_blockchain_name(b) + if n_chains >1: + x = QTreeWidgetItem([name + '@%d'%checkpoint, '%d'%b.height()]) + x.setData(0, Qt.UserRole, 1) + x.setData(1, Qt.UserRole, b.checkpoint) + else: + x = self + for i in items: star = ' *' if i == network.interface else '' item = QTreeWidgetItem([i.host + star, '%d'%i.tip]) item.setData(0, Qt.UserRole, 0) item.setData(1, Qt.UserRole, i.server) - self.addTopLevelItem(item) + x.addChild(item) + if n_chains>1: + self.addTopLevelItem(x) + x.setExpanded(True) h = self.header() h.setStretchLastSection(False) t@@ -361,7 +358,8 @@ class NetworkChoiceLayout(object): n = len(self.network.get_interfaces()) status = _("Connected to %d nodes.")%n if n else _("Not connected") self.status_label.setText(status) - if len(self.network.blockchains)>1: + chains = self.network.get_blockchains() + if len(chains)>1: chain = self.network.blockchain() checkpoint = self.network.get_checkpoint() name = self.network.get_blockchain_name(self.network.blockchain()) (DIR) diff --git a/lib/network.py b/lib/network.py t@@ -1001,9 +1001,16 @@ class Network(util.DaemonThread): if self.interface and self.interface.blockchain is not None: self.blockchain_index = self.interface.blockchain.checkpoint self.config.set_key('blockchain_index', self.blockchain_index) - return self.blockchains[self.blockchain_index] + def get_blockchains(self): + out = {} + for k, b in self.blockchains.items(): + r = filter(lambda i: i.blockchain==b, self.interfaces.values()) + if r: + out[k] = r + return out + def get_blockchain_name(self, blockchain): checkpoint = self.get_checkpoint() _hash = blockchain.get_hash(checkpoint)