tfixes for stdio/text gui - electrum - Electrum Bitcoin wallet
 (HTM) git clone https://git.parazyd.org/electrum
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) Submodules
       ---
 (DIR) commit 43664d5f113992062ffc33c2f63ebd485069e6aa
 (DIR) parent 1f14894c43ca4193fb07c202f22e421365c50d2d
 (HTM) Author: SomberNight <somber.night@protonmail.com>
       Date:   Thu, 13 Sep 2018 15:11:28 +0200
       
       fixes for stdio/text gui
       
       Diffstat:
         M electrum/gui/stdio.py               |       2 +-
         M electrum/gui/text.py                |      47 +++++++++++++++++++------------
         M electrum/util.py                    |       9 ++++++---
       
       3 files changed, 36 insertions(+), 22 deletions(-)
       ---
 (DIR) diff --git a/electrum/gui/stdio.py b/electrum/gui/stdio.py
       t@@ -88,7 +88,7 @@ class ElectrumGui:
                + "%d"%(width[2]+delta)+"s"+"%"+"%d"%(width[3]+delta)+"s"
                messages = []
        
       -        for tx_hash, tx_mined_status, delta, balance in self.wallet.get_history():
       +        for tx_hash, tx_mined_status, delta, balance in reversed(self.wallet.get_history()):
                    if tx_mined_status.conf:
                        timestamp = tx_mined_status.timestamp
                        try:
 (DIR) diff --git a/electrum/gui/text.py b/electrum/gui/text.py
       t@@ -182,8 +182,10 @@ class ElectrumGui:
                self.maxpos = 6
        
            def print_banner(self):
       -        if self.network:
       -            self.print_list( self.network.banner.split('\n'))
       +        if self.network and self.network.banner:
       +            banner = self.network.banner
       +            banner = banner.replace('\r', '')
       +            self.print_list(banner.split('\n'))
        
            def print_qr(self, data):
                import qrcode
       t@@ -198,9 +200,15 @@ class ElectrumGui:
                self.qr.print_ascii(out=s, invert=False)
                msg = s.getvalue()
                lines = msg.split('\n')
       -        for i, l in enumerate(lines):
       -            l = l.encode("utf-8")
       -            self.stdscr.addstr(i+5, 5, l, curses.color_pair(3))
       +        try:
       +            for i, l in enumerate(lines):
       +                l = l.encode("utf-8")
       +                self.stdscr.addstr(i+5, 5, l, curses.color_pair(3))
       +        except curses.error:
       +            m = 'error. screen too small?'
       +            m = m.encode(self.encoding)
       +            self.stdscr.addstr(5, 1, m, 0)
       +
        
            def print_list(self, lst, firstline = None):
                lst = list(lst)
       t@@ -301,19 +309,22 @@ class ElectrumGui:
            def main(self):
        
                tty.setraw(sys.stdin)
       -        while self.tab != -1:
       -            self.run_tab(0, self.print_history, self.run_history_tab)
       -            self.run_tab(1, self.print_send_tab, self.run_send_tab)
       -            self.run_tab(2, self.print_receive, self.run_receive_tab)
       -            self.run_tab(3, self.print_addresses, self.run_banner_tab)
       -            self.run_tab(4, self.print_contacts, self.run_contacts_tab)
       -            self.run_tab(5, self.print_banner, self.run_banner_tab)
       -
       -        tty.setcbreak(sys.stdin)
       -        curses.nocbreak()
       -        self.stdscr.keypad(0)
       -        curses.echo()
       -        curses.endwin()
       +        try:
       +            while self.tab != -1:
       +                self.run_tab(0, self.print_history, self.run_history_tab)
       +                self.run_tab(1, self.print_send_tab, self.run_send_tab)
       +                self.run_tab(2, self.print_receive, self.run_receive_tab)
       +                self.run_tab(3, self.print_addresses, self.run_banner_tab)
       +                self.run_tab(4, self.print_contacts, self.run_contacts_tab)
       +                self.run_tab(5, self.print_banner, self.run_banner_tab)
       +        except curses.error as e:
       +            raise Exception("Error with curses. Is your screen too small?") from e
       +        finally:
       +            tty.setcbreak(sys.stdin)
       +            curses.nocbreak()
       +            self.stdscr.keypad(0)
       +            curses.echo()
       +            curses.endwin()
        
        
            def do_clear(self):
 (DIR) diff --git a/electrum/util.py b/electrum/util.py
       t@@ -23,7 +23,7 @@
        import binascii
        import os, sys, re, json
        from collections import defaultdict
       -from typing import NamedTuple
       +from typing import NamedTuple, Union
        from datetime import datetime
        import decimal
        from decimal import Decimal
       t@@ -282,9 +282,12 @@ class DaemonThread(threading.Thread, PrintError):
        
        
        verbosity = '*'
       -def set_verbosity(b):
       +def set_verbosity(filters: Union[str, bool]):
            global verbosity
       -    verbosity = b
       +    if type(filters) is bool:  # backwards compat
       +        verbosity = '*' if filters else ''
       +        return
       +    verbosity = filters
        
        
        def print_error(*args):