show server type (pruning or full)

This commit is contained in:
thomasv 2012-11-20 13:33:36 +01:00
parent 50064d20fd
commit 2385cc3ad8
2 changed files with 16 additions and 12 deletions

View File

@ -1430,11 +1430,12 @@ class ElectrumWindow(QMainWindow):
label = _('Active Servers') if wallet.interface.servers else _('Default Servers') label = _('Active Servers') if wallet.interface.servers else _('Default Servers')
servers_list_widget = QTreeWidget(parent) servers_list_widget = QTreeWidget(parent)
servers_list_widget.setHeaderLabels( [ label ] ) servers_list_widget.setHeaderLabels( [ label, _('Type') ] )
servers_list_widget.setMaximumHeight(150) servers_list_widget.setMaximumHeight(150)
for _host, _x in servers_list: servers_list_widget.setColumnWidth(0, 250)
servers_list_widget.addTopLevelItem(QTreeWidgetItem( [ _host ] )) for _host in servers_list.keys():
_type = 'pruning' if servers_list[_host].get('pruning') else 'full'
servers_list_widget.addTopLevelItem(QTreeWidgetItem( [ _host, _type ] ))
def change_server(host, protocol=None): def change_server(host, protocol=None):
pp = plist.get(host,DEFAULT_PORTS) pp = plist.get(host,DEFAULT_PORTS)

View File

@ -101,24 +101,27 @@ class Interface(threading.Thread):
self.server_version = result self.server_version = result
elif method == 'server.peers.subscribe': elif method == 'server.peers.subscribe':
servers = [] servers = {}
for item in result: for item in result:
s = [] s = []
host = item[1] host = item[1]
ports = [] ports = []
version = None version = None
pruning = False
if len(item) > 2: if len(item) > 2:
for v in item[2]: for v in item[2]:
if re.match("[stgh]\d+", v): if re.match("[stgh]\d+", v):
ports.append((v[0], v[1:])) ports.append((v[0], v[1:]))
if re.match("v(.?)+", v): elif re.match("v(.?)+", v):
version = v[1:] version = v[1:]
elif v == 'p':
pruning = True
try: try:
is_recent = float(version)>=float(PROTOCOL_VERSION) is_recent = float(version)>=float(PROTOCOL_VERSION)
except: except:
is_recent = False is_recent = False
if ports and is_recent: if ports and is_recent:
servers.append((host, ports)) servers[host] = {'ports':ports, 'pruning':pruning}
self.servers = servers self.servers = servers
self.trigger_callback('peers') self.trigger_callback('peers')
@ -367,7 +370,7 @@ class Interface(threading.Thread):
self.callbacks = {} self.callbacks = {}
self.lock = threading.Lock() self.lock = threading.Lock()
self.servers = [] # actual list from IRC self.servers = {} # actual list from IRC
self.rtime = 0 self.rtime = 0
self.bytes_received = 0 self.bytes_received = 0
@ -494,15 +497,15 @@ class Interface(threading.Thread):
def get_servers_list(self): def get_servers_list(self):
plist = {} plist = {}
if not self.servers: if not self.servers:
servers_list = [] servers_list = {}
for x in DEFAULT_SERVERS: for x in DEFAULT_SERVERS:
h,port,protocol = x.split(':') h,port,protocol = x.split(':')
servers_list.append( (h,[(protocol,port)] ) ) servers_list[h] = {'ports':[(protocol,port)]}
else: else:
servers_list = self.servers servers_list = self.servers
for item in servers_list: for _host, v in servers_list.items():
_host, pp = item pp = v['ports']
z = {} z = {}
for item2 in pp: for item2 in pp:
_protocol, _port = item2 _protocol, _port = item2