Beispiel #1
0
 def __init__(self, account,           # account is the HDKey
             *args,                    # unknown args we will pass to the parent
             script_fn=script.p2wpkh,  # how to calculate scriptpubkey
             network=NETWORKS["main"], # what network to use to get an address
             **kwargs                  # unknown kwargs we will pass to the parent
             ):
     super().__init__(*args, **kwargs)
     self.account = account
     self.script_fn = script_fn
     self.network = network
     self._index = 0
     # create title
     self.title = lv.label(self)
     self.title.set_align(lv.label.ALIGN.CENTER)
     self.title.align(self, lv.ALIGN.IN_TOP_MID, 0, 50)
     # create qr code
     self.qr = QRCode(self)
     self.qr.set_size(400)
     self.qr.align(self.title,lv.ALIGN.OUT_BOTTOM_MID, 0, 20)
     self.lbl = lv.label(self)
     # create buttons
     self.next_btn = lv.btn(self)
     lbl = lv.label(self.next_btn)
     lbl.set_text("Next")
     self.next_btn.set_width(150)
     self.next_btn.set_event_cb(self.next_address)
     self.prev_btn = lv.btn(self)
     self.prev_btn.set_width(150)
     lbl = lv.label(self.prev_btn)
     lbl.set_text("Previous")
     self.prev_btn.set_event_cb(self.prev_address)
     # finally show first address
     self.show_address(self._index)
Beispiel #2
0
 def __init__(self, account, *args, 
             script_fn=script.p2wpkh, 
             network=NETWORKS["main"],
             **kwargs):
     super().__init__(*args, **kwargs)
     self.account = account
     self.script_fn = script_fn
     self.network = network
     self._index = 0
     # create title
     self.title = lv.label(self)
     self.title.set_align(lv.label.ALIGN.CENTER)
     self.title.align(self, lv.ALIGN.IN_TOP_MID, 0, 50)
     # create qr code
     self.qr = QRCode(self)
     self.qr.set_size(400)
     self.qr.align(self.title,lv.ALIGN.OUT_BOTTOM_MID, 0, 20)
     self.lbl = lv.label(self)
     # create buttons
     self.next_btn = lv.btn(self)
     lbl = lv.label(self.next_btn)
     lbl.set_text("Next")
     self.next_btn.set_width(150)
     self.next_btn.set_event_cb(self.next_address)
     self.prev_btn = lv.btn(self)
     self.prev_btn.set_width(150)
     lbl = lv.label(self.prev_btn)
     lbl.set_text("Previous")
     self.prev_btn.set_event_cb(self.prev_address)
     # finally show first address
     self.show_address(self._index)
Beispiel #3
0
    def show_address(self):
        self.screen = lv.obj()

        self.qr = QRCode(self.screen)
        self.qr.set_size(400)
        self.qr.align(self.screen, lv.ALIGN.CENTER, 0, -100)
        self.qr.set_text(self.address)

        self.address_label = lv.label(self.screen)
        address_text = format_address(self.address)
        self.address_label.set_text(address_text)
        self.address_label.align(self.screen, lv.ALIGN.CENTER, 0, 150)

        self.path_label = lv.label(self.screen)
        self.path_label.set_text("BIP32: " + self.path)
        self.path_label.align(self.screen, lv.ALIGN.CENTER, 0, 250)

        lv.scr_load(self.screen)
Beispiel #4
0
 def __init__(self, title="Title", message="Text", qrmessage="Text"):
     super().__init__()
     # create title
     self.title = lv.label(self)
     self.title.set_text(title)
     self.title.set_align(lv.label.ALIGN.CENTER)
     self.title.align(self, lv.ALIGN.IN_TOP_MID, 0, 50)
     # create qr code
     self.qr = QRCode(self)
     self.qr.set_text(qrmessage)
     self.qr.set_size(400)
     self.qr.align(self.title, lv.ALIGN.OUT_BOTTOM_MID, 0, 20)
     self.lbl = lv.label(self)
     # make sure it is within the screen
     self.lbl.set_long_mode(lv.label.LONG.BREAK)
     self.lbl.set_width(400)
     self.lbl.set_text(message)
     self.lbl.set_align(lv.label.ALIGN.CENTER)
     self.lbl.align(self.qr, lv.ALIGN.OUT_BOTTOM_MID, 0, 20)
Beispiel #5
0
class AddressNavigator(lv.obj):
    def __init__(self, account,           # account is the HDKey
                *args,                    # unknown args we will pass to the parent
                script_fn=script.p2wpkh,  # how to calculate scriptpubkey
                network=NETWORKS["main"], # what network to use to get an address
                **kwargs                  # unknown kwargs we will pass to the parent
                ):
        super().__init__(*args, **kwargs)
        self.account = account
        self.script_fn = script_fn
        self.network = network
        self._index = 0
        # create title
        self.title = lv.label(self)
        self.title.set_align(lv.label.ALIGN.CENTER)
        self.title.align(self, lv.ALIGN.IN_TOP_MID, 0, 50)
        # create qr code
        self.qr = QRCode(self)
        self.qr.set_size(400)
        self.qr.align(self.title,lv.ALIGN.OUT_BOTTOM_MID, 0, 20)
        self.lbl = lv.label(self)
        # create buttons
        self.next_btn = lv.btn(self)
        lbl = lv.label(self.next_btn)
        lbl.set_text("Next")
        self.next_btn.set_width(150)
        self.next_btn.set_event_cb(self.next_address)
        self.prev_btn = lv.btn(self)
        self.prev_btn.set_width(150)
        lbl = lv.label(self.prev_btn)
        lbl.set_text("Previous")
        self.prev_btn.set_event_cb(self.prev_address)
        # finally show first address
        self.show_address(self._index)

    def show_address(self, idx:int, change=False):
        self.title.set_text("Address #%d" % (idx+1))
        self.title.align(self, lv.ALIGN.IN_TOP_MID, 0, 50)
        child = self.account.derive([int(change), idx])
        addr = self.script_fn(child).address(network=self.network)
        self.qr.set_text("bitcoin:"+addr)
        self.lbl.set_text(addr)
        self.lbl.set_align(lv.label.ALIGN.CENTER)
        self.lbl.align(self.qr, lv.ALIGN.OUT_BOTTOM_MID, 0, 20)
        # disable the previous button if child index is 0
        self.prev_btn.set_state(lv.btn.STATE.INA if idx == 0 else lv.btn.STATE.REL)
        self.next_btn.align(self.qr, lv.ALIGN.OUT_BOTTOM_MID, 90, 70)
        self.prev_btn.align(self.qr, lv.ALIGN.OUT_BOTTOM_MID, -90, 70)

    def next_address(self, obj, event):
        if event == lv.EVENT.RELEASED:
            self._index += 1
            self.show_address(self._index)
            
    def prev_address(self, obj, event):
        if event == lv.EVENT.RELEASED and self._index > 0:
            self._index -= 1
            self.show_address(self._index)
Beispiel #6
0
class AddressNavigator(lv.obj):
    def __init__(self, account, *args, 
                script_fn=script.p2wpkh, 
                network=NETWORKS["main"],
                **kwargs):
        super().__init__(*args, **kwargs)
        self.account = account
        self.script_fn = script_fn
        self.network = network
        self._index = 0
        # create title
        self.title = lv.label(self)
        self.title.set_align(lv.label.ALIGN.CENTER)
        self.title.align(self, lv.ALIGN.IN_TOP_MID, 0, 50)
        # create qr code
        self.qr = QRCode(self)
        self.qr.set_size(400)
        self.qr.align(self.title,lv.ALIGN.OUT_BOTTOM_MID, 0, 20)
        self.lbl = lv.label(self)
        # create buttons
        self.next_btn = lv.btn(self)
        lbl = lv.label(self.next_btn)
        lbl.set_text("Next")
        self.next_btn.set_width(150)
        self.next_btn.set_event_cb(self.next_address)
        self.prev_btn = lv.btn(self)
        self.prev_btn.set_width(150)
        lbl = lv.label(self.prev_btn)
        lbl.set_text("Previous")
        self.prev_btn.set_event_cb(self.prev_address)
        # finally show first address
        self.show_address(self._index)

    def show_address(self, idx:int, change=False):
        self.title.set_text("Address #%d" % (idx+1))
        self.title.align(self, lv.ALIGN.IN_TOP_MID, 0, 50)
        pub = self.account.derive([int(change), idx]).key
        addr = self.script_fn(pub).address(network=self.network)
        self.qr.set_text("bitcoin:"+addr)
        self.lbl.set_text(addr)
        self.lbl.set_align(lv.label.ALIGN.CENTER)
        self.lbl.align(self.qr, lv.ALIGN.OUT_BOTTOM_MID, 0, 20)
        self.prev_btn.set_state(lv.btn.STATE.INA if idx == 0 else lv.btn.STATE.REL)
        self.next_btn.align(self.qr, lv.ALIGN.OUT_BOTTOM_MID, 90, 70)
        self.prev_btn.align(self.qr, lv.ALIGN.OUT_BOTTOM_MID, -90, 70)

    def next_address(self, obj, event):
        if event == lv.EVENT.RELEASED:
            self._index += 1
            self.show_address(self._index)
            
    def prev_address(self, obj, event):
        if event == lv.EVENT.RELEASED and self._index > 0:
            self._index -= 1
            self.show_address(self._index)
Beispiel #7
0
class AddressView():
    def __init__(self, address, path):
        self.address = address
        self.path = path
        self.show_address()

    def show_address(self):
        self.screen = lv.obj()

        self.qr = QRCode(self.screen)
        self.qr.set_size(400)
        self.qr.align(self.screen, lv.ALIGN.CENTER, 0, -100)
        self.qr.set_text(self.address)

        self.address_label = lv.label(self.screen)
        address_text = format_address(self.address)
        self.address_label.set_text(address_text)
        self.address_label.align(self.screen, lv.ALIGN.CENTER, 0, 150)

        self.path_label = lv.label(self.screen)
        self.path_label.set_text("BIP32: " + self.path)
        self.path_label.align(self.screen, lv.ALIGN.CENTER, 0, 250)

        lv.scr_load(self.screen)