taddress_dialog.py - electrum - Electrum Bitcoin wallet
HTML git clone https://git.parazyd.org/electrum
DIR Log
DIR Files
DIR Refs
DIR Submodules
---
taddress_dialog.py (4676B)
---
1 #!/usr/bin/env python
2 #
3 # Electrum - lightweight Bitcoin client
4 # Copyright (C) 2012 thomasv@gitorious
5 #
6 # Permission is hereby granted, free of charge, to any person
7 # obtaining a copy of this software and associated documentation files
8 # (the "Software"), to deal in the Software without restriction,
9 # including without limitation the rights to use, copy, modify, merge,
10 # publish, distribute, sublicense, and/or sell copies of the Software,
11 # and to permit persons to whom the Software is furnished to do so,
12 # subject to the following conditions:
13 #
14 # The above copyright notice and this permission notice shall be
15 # included in all copies or substantial portions of the Software.
16 #
17 # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
18 # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
19 # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
20 # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
21 # BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
22 # ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
23 # CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
24 # SOFTWARE.
25
26 from typing import TYPE_CHECKING
27
28 from PyQt5.QtWidgets import QVBoxLayout, QLabel
29
30 from electrum.i18n import _
31
32 from .util import WindowModalDialog, ButtonsLineEdit, ColorScheme, Buttons, CloseButton
33 from .history_list import HistoryList, HistoryModel
34 from .qrtextedit import ShowQRTextEdit
35
36 if TYPE_CHECKING:
37 from .main_window import ElectrumWindow
38
39
40 class AddressHistoryModel(HistoryModel):
41 def __init__(self, parent: 'ElectrumWindow', address):
42 super().__init__(parent)
43 self.address = address
44
45 def get_domain(self):
46 return [self.address]
47
48 def should_include_lightning_payments(self) -> bool:
49 return False
50
51
52 class AddressDialog(WindowModalDialog):
53
54 def __init__(self, parent: 'ElectrumWindow', address: str):
55 WindowModalDialog.__init__(self, parent, _("Address"))
56 self.address = address
57 self.parent = parent
58 self.config = parent.config
59 self.wallet = parent.wallet
60 self.app = parent.app
61 self.saved = True
62
63 self.setMinimumWidth(700)
64 vbox = QVBoxLayout()
65 self.setLayout(vbox)
66
67 vbox.addWidget(QLabel(_("Address") + ":"))
68 self.addr_e = ButtonsLineEdit(self.address)
69 self.addr_e.addCopyButton(self.app)
70 icon = "qrcode_white.png" if ColorScheme.dark_scheme else "qrcode.png"
71 self.addr_e.addButton(icon, self.show_qr, _("Show QR Code"))
72 self.addr_e.setReadOnly(True)
73 vbox.addWidget(self.addr_e)
74
75 try:
76 pubkeys = self.wallet.get_public_keys(address)
77 except BaseException as e:
78 pubkeys = None
79 if pubkeys:
80 vbox.addWidget(QLabel(_("Public keys") + ':'))
81 for pubkey in pubkeys:
82 pubkey_e = ButtonsLineEdit(pubkey)
83 pubkey_e.addCopyButton(self.app)
84 pubkey_e.setReadOnly(True)
85 vbox.addWidget(pubkey_e)
86
87 redeem_script = self.wallet.get_redeem_script(address)
88 if redeem_script:
89 vbox.addWidget(QLabel(_("Redeem Script") + ':'))
90 redeem_e = ShowQRTextEdit(text=redeem_script, config=self.config)
91 redeem_e.addCopyButton(self.app)
92 vbox.addWidget(redeem_e)
93
94 witness_script = self.wallet.get_witness_script(address)
95 if witness_script:
96 vbox.addWidget(QLabel(_("Witness Script") + ':'))
97 witness_e = ShowQRTextEdit(text=witness_script, config=self.config)
98 witness_e.addCopyButton(self.app)
99 vbox.addWidget(witness_e)
100
101 address_path_str = self.wallet.get_address_path_str(address)
102 if address_path_str:
103 vbox.addWidget(QLabel(_("Derivation path") + ':'))
104 der_path_e = ButtonsLineEdit(address_path_str)
105 der_path_e.addCopyButton(self.app)
106 der_path_e.setReadOnly(True)
107 vbox.addWidget(der_path_e)
108
109 vbox.addWidget(QLabel(_("History")))
110 addr_hist_model = AddressHistoryModel(self.parent, self.address)
111 self.hw = HistoryList(self.parent, addr_hist_model)
112 addr_hist_model.set_view(self.hw)
113 vbox.addWidget(self.hw)
114
115 vbox.addLayout(Buttons(CloseButton(self)))
116 self.format_amount = self.parent.format_amount
117 addr_hist_model.refresh('address dialog constructor')
118
119 def show_qr(self):
120 text = self.address
121 try:
122 self.parent.show_qrcode(text, 'Address', parent=self)
123 except Exception as e:
124 self.show_message(repr(e))