def tableView_didSelectRowAtIndexPath_(self, tv, indexPath) -> None: print("DID SELECT ROW CALLED FOR SECTION %s, ROW %s"%(str(indexPath.section),str(indexPath.row))) if tv.ptr == self.connectedTV.ptr: connected = utils.nspy_get_byname(self, 'connected') cdata = connected[indexPath.section] if connected and len(connected) > indexPath.section else None message = _("Unknown") title = _("Error") is_server = True extraData = None if cdata is not None and len(cdata.items) > indexPath.row: item = cdata.items[indexPath.row] extraData = item[2] is_server = extraData[0] server_or_branch = extraData[1] if is_server: server, port, *bla = deserialize_server(server_or_branch) message = _("Do you wish to use\n{}:{}\nas the wallet server?").format(str(server),str(port)) title = str(_("Use as server") + '?') else: branch = server_or_branch name = extraData[2] title = str(_("Follow this branch") + '?') message = str(_("Do you wish to follow the\n{}@{}\nbranch?").format(str(name),str(branch))) def wantsToChangeServerOrBranch() -> None: if is_server: self.followServer_(str(server_or_branch)) else: self.followBranch_(int(server_or_branch)) parent().question(message = message, title = title, yesno = True, onOk = wantsToChangeServerOrBranch) else: parent().show_error("An unknown error occurred.") elif tv.ptr == self.peersTV.ptr and indexPath.section == 0: servers = utils.nspy_get_byname(self, 'servers') srv = servers[indexPath.row] if servers is not None and len(servers) > indexPath.row else None if srv is not None: h, d, ser = srv server, port, *bla = deserialize_server(ser) message = _("Do you wish to use\n{}:{}\nas the blockchain server?").format(str(server),str(port)) title = str(_("Use as server") + '?') def wantsToChangeServer() -> None: self.setServer_(ser) parent().question(message = message, title = title, yesno = True, onOk = wantsToChangeServer) tv.deselectRowAtIndexPath_animated_(indexPath, True)
def follow_server(self, server): self.network.switch_to_interface(server) host, port, protocol, proxy, auto_connect = self.network.get_parameters( ) host, port, protocol = deserialize_server(server) self.network.set_parameters(host, port, protocol, proxy, auto_connect) self.update()
def on_view_blacklist(self, ignored): ''' The 'view ban list...' link leads to a modal dialog box where the user has the option to clear the entire blacklist. Build that dialog here. ''' bl = sorted(self.network.blacklisted_servers) parent = self.parent() if not bl: parent.show_error(_("Server ban list is empty!")) return d = WindowModalDialog(parent.top_level_window(), _("Banned Servers")) vbox = QVBoxLayout(d) vbox.addWidget(QLabel(_("Banned Servers") + " ({})".format(len(bl)))) tree = QTreeWidget() tree.setHeaderLabels([_('Host'), _('Port')]) for s in bl: host, port, protocol = deserialize_server(s) item = QTreeWidgetItem([host, str(port)]) item.setFlags(Qt.ItemIsEnabled) tree.addTopLevelItem(item) tree.setIndentation(3) h = tree.header() h.setStretchLastSection(False) h.setSectionResizeMode(0, QHeaderView.Stretch) h.setSectionResizeMode(1, QHeaderView.ResizeToContents) vbox.addWidget(tree) clear_but = QPushButton(_("Clear ban list")) weakSelf = Weak.ref(self) weakD = Weak.ref(d) clear_but.clicked.connect(lambda: weakSelf() and weakSelf(). on_clear_blacklist() and weakD().reject()) vbox.addLayout(Buttons(clear_but, CloseButton(d))) d.exec_()
def setServer_(self, s : ObjCInstance) -> None: host, port, protocol = deserialize_server(py_from_ns(s)) self.hostTF.text = str(host) self.portTF.text = str(port) self.lastPort = int(port) self.doSetServer() self.refresh()
def set_server(self, s): host, port, protocol = deserialize_server(s) self.parent.server_host.setText(host) self.parent.server_port.setText(port) self.parent.autoconnect_cb.setChecked(False) # force auto-connect off if they did "Use as server" self.parent.set_server() self.parent.update()
def followServer_(self, server_in : ObjCInstance) -> None: network = parent().daemon.network if parent() and parent().daemon else None if network is None: return server = py_from_ns(server_in) network.switch_to_interface(server) host, port, protocol, proxy, auto_connect = network.get_parameters() host, port, protocol = deserialize_server(server) network.set_parameters(host, port, protocol, proxy, auto_connect) self.refresh()
def set_server(self, s): host, port, protocol = deserialize_server(s) self.parent.server_host.setText(host) self.parent.server_port.setText(port) self.parent.set_server()