예제 #1
0
    async def _draw(self):
        # TODO: figure out window width etc.
        if self._pad is None:
            self._pad = curses.newpad(2, 100)
        else:
            self._pad.clear()

        CYELLOW = curses.color_pair(5)
        CBOLD = curses.A_BOLD
        CREVERSE = curses.A_REVERSE

        x = 1
        for mode_string in MODES:
            first_char, rest = mode_string[0], mode_string[1:]
            modifier = curses.A_BOLD
            if self._mode == mode_string:
                # first_char = first_char.upper()
                modifier += CREVERSE
            self._pad.addstr(0, x, first_char, modifier + CYELLOW)
            self._pad.addstr(0, x + 1, rest, modifier)
            x += len(mode_string) + 5

        if self._dt:
            self._pad.addstr(0, 81,
                             isoformatseconds(self._dt)[:19], CYELLOW + CBOLD)

        await self._draw_pad_to_screen()
예제 #2
0
    async def _draw_transaction(self, transaction):
        CGREEN = curses.color_pair(1)
        CRED = curses.color_pair(3)
        CYELLOW = curses.color_pair(5)
        CBOLD = curses.A_BOLD

        self._pad.addstr(
            0, 1, "time {}".format(
                isoformatseconds(
                    datetime.datetime.utcfromtimestamp(transaction["time"]))),
            CBOLD)
        self._pad.addstr(1, 1, "size {}b".format(transaction["size"]), CBOLD)
        self._pad.addstr(1, 15, "vsize {}b".format(transaction["vsize"]),
                         CBOLD)
        self._pad.addstr(2, 1, "locktime {}".format(transaction["locktime"]),
                         CBOLD)
        self._pad.addstr(2, 23, "v{}".format(transaction["version"]), CBOLD)

        self._pad.addstr(0, 31, "txid {}".format(transaction["txid"]), CBOLD)
        self._pad.addstr(1, 31, "hash {}".format(transaction["hash"]), CBOLD)
        if "blockhash" in transaction:
            self._pad.addstr(2, 30,
                             "block {}".format(transaction["blockhash"]),
                             CBOLD)
        else:
            self._pad.addstr(2, 58, "unconfirmed transaction!", CBOLD + CRED)
예제 #3
0
    async def _draw_wallet(self, wallet):
        CGREEN = curses.color_pair(1)
        CRED = curses.color_pair(3)
        CYELLOW = curses.color_pair(5)
        CBOLD = curses.A_BOLD
        CREVERSE = curses.A_REVERSE

        if "transactions" in wallet:
            offset = self._tx_offset[0]

            self._pad.addstr(
                0, 1, "Transactions: {}".format(len(wallet["transactions"])),
                CBOLD)
            self._pad.addstr(0, 68, "[UP/DOWN: browse, ENTER: select]",
                             CYELLOW)

            if offset > 0:
                self._pad.addstr(1, 25, "... ^ ...", CBOLD)

            if offset < len(wallet["transactions"]) - 11:
                self._pad.addstr(19, 25, "... v ...", CBOLD)

            for i, tx in enumerate(wallet["transactions"]):
                if i < offset:
                    continue
                if i > offset + 5:
                    break

                color = CGREEN if tx["amount"] >= 0 else CRED
                # if i == self._selected_tx[0] and self._hash == self._selected_tx[1]:
                if i == self._selected_tx[0]:
                    color += CBOLD + CREVERSE
                    # hackerino
                    self._pad.addstr(2 + ((i - offset) * 3), 1, " " * 98,
                                     color)
                    self._pad.addstr(2 + ((i - offset) * 3) + 1, 1, " " * 98,
                                     color)

                self._pad.addstr(
                    2 + ((i - offset) * 3), 1, "{}".format(
                        isoformatseconds(
                            datetime.datetime.utcfromtimestamp(
                                tx["timereceived"]))), color)
                self._pad.addstr(2 + ((i - offset) * 3), 30,
                                 "block: {: 7d}".format(tx["blockindex"]),
                                 color)
                self._pad.addstr(2 + ((i - offset) * 3), 81,
                                 "{: 15.8f} VTC".format(tx["amount"], ), color)
                self._pad.addstr(2 + ((i - offset) * 3) + 1, 1,
                                 "{}".format(tx["address"]), color)
                self._pad.addstr(2 + ((i - offset) * 3) + 1, 36,
                                 "{}".format(tx["txid"]), color)
예제 #4
0
    async def _draw_block(self, block, bestblockhash):
        CGREEN = curses.color_pair(1)
        CRED = curses.color_pair(3)
        CYELLOW = curses.color_pair(5)
        CBOLD = curses.A_BOLD

        self._pad.addstr(
            0, 46, "[J/K: browse, HOME/END: quicker, L: best, TAB: manual]",
            CYELLOW)

        self._pad.addstr(
            0, 1, "Time {}".format(
                isoformatseconds(
                    datetime.datetime.utcfromtimestamp(block["time"]))), CBOLD)
        self._pad.addstr(0, 31, "Height {}".format(block["height"]), CBOLD)

        self._pad.addstr(1, 1, "Size {} bytes".format(block["size"]), CBOLD)
        self._pad.addstr(2, 1, "Weight {} WU".format(block["weight"]), CBOLD)
        self._pad.addstr(3, 1, "Diff {:,d}".format(int(block["difficulty"])),
                         CBOLD)
        self._pad.addstr(4, 1, "Version 0x{}".format(block["versionHex"]),
                         CBOLD)

        self._pad.addstr(1, 31, "Hash {}".format(block["hash"]), CBOLD)
        if "previousblockhash" in block:
            self._pad.addstr(2, 31,
                             "Prev {}".format(block["previousblockhash"]),
                             CBOLD)
        else:
            self._pad.addstr(2, 60, "genesis block!", CBOLD + CRED)

        if "nextblockhash" in block:
            self._pad.addstr(3, 31, "Next {}".format(block["nextblockhash"]),
                             CBOLD)
        elif block["hash"] == bestblockhash:
            self._pad.addstr(3, 60, "best block!", CBOLD + CGREEN)

        self._pad.addstr(4, 31, "Root {}".format(block["merkleroot"]), CBOLD)