Beispiel #1
0
    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_()
Beispiel #4
0
 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()
Beispiel #5
0
 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()
Beispiel #6
0
 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()