|
@ -384,7 +384,7 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, PrintError): |
|
|
|
|
|
|
|
|
def open_wallet(self): |
|
|
def open_wallet(self): |
|
|
wallet_folder = self.get_wallet_folder() |
|
|
wallet_folder = self.get_wallet_folder() |
|
|
filename = unicode(QFileDialog.getOpenFileName(self, "Select your wallet file", wallet_folder)) |
|
|
filename = QFileDialog.getOpenFileName(self, "Select your wallet file", wallet_folder) |
|
|
if not filename: |
|
|
if not filename: |
|
|
return |
|
|
return |
|
|
self.gui_object.new_window(filename) |
|
|
self.gui_object.new_window(filename) |
|
@ -393,7 +393,7 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, PrintError): |
|
|
def backup_wallet(self): |
|
|
def backup_wallet(self): |
|
|
path = self.wallet.storage.path |
|
|
path = self.wallet.storage.path |
|
|
wallet_folder = os.path.dirname(path) |
|
|
wallet_folder = os.path.dirname(path) |
|
|
filename = unicode( QFileDialog.getSaveFileName(self, _('Enter a filename for the copy of your wallet'), wallet_folder) ) |
|
|
filename = QFileDialog.getSaveFileName(self, _('Enter a filename for the copy of your wallet'), wallet_folder) |
|
|
if not filename: |
|
|
if not filename: |
|
|
return |
|
|
return |
|
|
|
|
|
|
|
@ -578,16 +578,16 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, PrintError): |
|
|
|
|
|
|
|
|
# custom wrappers for getOpenFileName and getSaveFileName, that remember the path selected by the user |
|
|
# custom wrappers for getOpenFileName and getSaveFileName, that remember the path selected by the user |
|
|
def getOpenFileName(self, title, filter = ""): |
|
|
def getOpenFileName(self, title, filter = ""): |
|
|
directory = self.config.get('io_dir', unicode(os.path.expanduser('~'))) |
|
|
directory = self.config.get('io_dir', os.path.expanduser('~')) |
|
|
fileName = unicode( QFileDialog.getOpenFileName(self, title, directory, filter) ) |
|
|
fileName = QFileDialog.getOpenFileName(self, title, directory, filter) |
|
|
if fileName and directory != os.path.dirname(fileName): |
|
|
if fileName and directory != os.path.dirname(fileName): |
|
|
self.config.set_key('io_dir', os.path.dirname(fileName), True) |
|
|
self.config.set_key('io_dir', os.path.dirname(fileName), True) |
|
|
return fileName |
|
|
return fileName |
|
|
|
|
|
|
|
|
def getSaveFileName(self, title, filename, filter = ""): |
|
|
def getSaveFileName(self, title, filename, filter = ""): |
|
|
directory = self.config.get('io_dir', unicode(os.path.expanduser('~'))) |
|
|
directory = self.config.get('io_dir', os.path.expanduser('~')) |
|
|
path = os.path.join( directory, filename ) |
|
|
path = os.path.join( directory, filename ) |
|
|
fileName = unicode( QFileDialog.getSaveFileName(self, title, path, filter) ) |
|
|
fileName = QFileDialog.getSaveFileName(self, title, path, filter) |
|
|
if fileName and directory != os.path.dirname(fileName): |
|
|
if fileName and directory != os.path.dirname(fileName): |
|
|
self.config.set_key('io_dir', os.path.dirname(fileName), True) |
|
|
self.config.set_key('io_dir', os.path.dirname(fileName), True) |
|
|
return fileName |
|
|
return fileName |
|
@ -880,7 +880,7 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, PrintError): |
|
|
def save_payment_request(self): |
|
|
def save_payment_request(self): |
|
|
addr = str(self.receive_address_e.text()) |
|
|
addr = str(self.receive_address_e.text()) |
|
|
amount = self.receive_amount_e.get_amount() |
|
|
amount = self.receive_amount_e.get_amount() |
|
|
message = unicode(self.receive_message_e.text()) |
|
|
message = self.receive_message_e.text() |
|
|
if not message and not amount: |
|
|
if not message and not amount: |
|
|
self.show_error(_('No message or amount')) |
|
|
self.show_error(_('No message or amount')) |
|
|
return False |
|
|
return False |
|
@ -982,7 +982,7 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, PrintError): |
|
|
def update_receive_qr(self): |
|
|
def update_receive_qr(self): |
|
|
addr = str(self.receive_address_e.text()) |
|
|
addr = str(self.receive_address_e.text()) |
|
|
amount = self.receive_amount_e.get_amount() |
|
|
amount = self.receive_amount_e.get_amount() |
|
|
message = unicode(self.receive_message_e.text()).encode('utf8') |
|
|
message = self.receive_message_e.text() |
|
|
self.save_request_button.setEnabled((amount is not None) or (message != "")) |
|
|
self.save_request_button.setEnabled((amount is not None) or (message != "")) |
|
|
uri = util.create_URI(addr, amount, message) |
|
|
uri = util.create_URI(addr, amount, message) |
|
|
self.receive_qr.setData(uri) |
|
|
self.receive_qr.setData(uri) |
|
@ -1281,7 +1281,7 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, PrintError): |
|
|
if self.payment_request and self.payment_request.has_expired(): |
|
|
if self.payment_request and self.payment_request.has_expired(): |
|
|
self.show_error(_('Payment request has expired')) |
|
|
self.show_error(_('Payment request has expired')) |
|
|
return |
|
|
return |
|
|
label = unicode( self.message_e.text() ) |
|
|
label = self.message_e.text() |
|
|
|
|
|
|
|
|
if self.payment_request: |
|
|
if self.payment_request: |
|
|
outputs = self.payment_request.get_outputs() |
|
|
outputs = self.payment_request.get_outputs() |
|
@ -1513,7 +1513,7 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, PrintError): |
|
|
if not URI: |
|
|
if not URI: |
|
|
return |
|
|
return |
|
|
try: |
|
|
try: |
|
|
out = util.parse_URI(unicode(URI), self.on_pr) |
|
|
out = util.parse_URI(URI, self.on_pr) |
|
|
except BaseException as e: |
|
|
except BaseException as e: |
|
|
self.show_error(_('Invalid bitcoin URI:') + '\n' + str(e)) |
|
|
self.show_error(_('Invalid bitcoin URI:') + '\n' + str(e)) |
|
|
return |
|
|
return |
|
@ -1807,7 +1807,7 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, PrintError): |
|
|
vbox.addLayout(grid) |
|
|
vbox.addLayout(grid) |
|
|
vbox.addLayout(Buttons(CancelButton(d), OkButton(d))) |
|
|
vbox.addLayout(Buttons(CancelButton(d), OkButton(d))) |
|
|
if d.exec_(): |
|
|
if d.exec_(): |
|
|
self.set_contact(unicode(line2.text()), str(line1.text())) |
|
|
self.set_contact(line2.text(), line1.text()) |
|
|
|
|
|
|
|
|
def show_master_public_keys(self): |
|
|
def show_master_public_keys(self): |
|
|
dialog = WindowModalDialog(self, "Master Public Keys") |
|
|
dialog = WindowModalDialog(self, "Master Public Keys") |
|
@ -1848,7 +1848,7 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, PrintError): |
|
|
except BaseException as e: |
|
|
except BaseException as e: |
|
|
self.show_error(str(e)) |
|
|
self.show_error(str(e)) |
|
|
return |
|
|
return |
|
|
from seed_dialog import SeedDialog |
|
|
from .seed_dialog import SeedDialog |
|
|
d = SeedDialog(self, seed, passphrase) |
|
|
d = SeedDialog(self, seed, passphrase) |
|
|
d.exec_() |
|
|
d.exec_() |
|
|
|
|
|
|
|
@ -1889,7 +1889,7 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, PrintError): |
|
|
@protected |
|
|
@protected |
|
|
def do_sign(self, address, message, signature, password): |
|
|
def do_sign(self, address, message, signature, password): |
|
|
address = str(address.text()).strip() |
|
|
address = str(address.text()).strip() |
|
|
message = unicode(message.toPlainText()).encode('utf-8').strip() |
|
|
message = message.toPlainText().strip() |
|
|
if not bitcoin.is_address(address): |
|
|
if not bitcoin.is_address(address): |
|
|
self.show_message('Invalid Bitcoin address.') |
|
|
self.show_message('Invalid Bitcoin address.') |
|
|
return |
|
|
return |
|
@ -1906,7 +1906,7 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, PrintError): |
|
|
|
|
|
|
|
|
def do_verify(self, address, message, signature): |
|
|
def do_verify(self, address, message, signature): |
|
|
address = str(address.text()).strip() |
|
|
address = str(address.text()).strip() |
|
|
message = unicode(message.toPlainText()).encode('utf-8').strip() |
|
|
message = message.toPlainText().strip() |
|
|
if not bitcoin.is_address(address): |
|
|
if not bitcoin.is_address(address): |
|
|
self.show_message('Invalid Bitcoin address.') |
|
|
self.show_message('Invalid Bitcoin address.') |
|
|
return |
|
|
return |
|
@ -1970,10 +1970,10 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, PrintError): |
|
|
self.wallet.thread.add(task, on_success=message_e.setText) |
|
|
self.wallet.thread.add(task, on_success=message_e.setText) |
|
|
|
|
|
|
|
|
def do_encrypt(self, message_e, pubkey_e, encrypted_e): |
|
|
def do_encrypt(self, message_e, pubkey_e, encrypted_e): |
|
|
message = unicode(message_e.toPlainText()) |
|
|
message = message_e.toPlainText() |
|
|
message = message.encode('utf-8') |
|
|
message = message.encode('utf-8') |
|
|
try: |
|
|
try: |
|
|
encrypted = bitcoin.encrypt_message(message, str(pubkey_e.text())) |
|
|
encrypted = bitcoin.encrypt_message(message, pubkey_e.text()) |
|
|
encrypted_e.setText(encrypted) |
|
|
encrypted_e.setText(encrypted) |
|
|
except BaseException as e: |
|
|
except BaseException as e: |
|
|
traceback.print_exc(file=sys.stdout) |
|
|
traceback.print_exc(file=sys.stdout) |
|
@ -2386,7 +2386,7 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, PrintError): |
|
|
lang_label = HelpLabel(_('Language') + ':', lang_help) |
|
|
lang_label = HelpLabel(_('Language') + ':', lang_help) |
|
|
lang_combo = QComboBox() |
|
|
lang_combo = QComboBox() |
|
|
from electrum.i18n import languages |
|
|
from electrum.i18n import languages |
|
|
lang_combo.addItems(languages.values()) |
|
|
lang_combo.addItems(list(languages.values())) |
|
|
try: |
|
|
try: |
|
|
index = languages.keys().index(self.config.get("language",'')) |
|
|
index = languages.keys().index(self.config.get("language",'')) |
|
|
except Exception: |
|
|
except Exception: |
|
@ -2570,7 +2570,7 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, PrintError): |
|
|
msg = _("Install the zbar package to enable this.") |
|
|
msg = _("Install the zbar package to enable this.") |
|
|
qr_label = HelpLabel(_('Video Device') + ':', msg) |
|
|
qr_label = HelpLabel(_('Video Device') + ':', msg) |
|
|
qr_combo.setEnabled(qrscanner.libzbar is not None) |
|
|
qr_combo.setEnabled(qrscanner.libzbar is not None) |
|
|
on_video_device = lambda x: self.config.set_key("video_device", str(qr_combo.itemData(x).toString()), True) |
|
|
on_video_device = lambda x: self.config.set_key("video_device", qr_combo.itemData(x), True) |
|
|
qr_combo.currentIndexChanged.connect(on_video_device) |
|
|
qr_combo.currentIndexChanged.connect(on_video_device) |
|
|
gui_widgets.append((qr_label, qr_combo)) |
|
|
gui_widgets.append((qr_label, qr_combo)) |
|
|
|
|
|
|
|
|