def __init__(self, wallet, config):
QMainWindow.__init__(self)
+ self.lite = None
self.wallet = wallet
self.config = config
self.wallet.interface.register_callback('updated', self.update_callback)
text = _( "Not connected" )
icon = QIcon(":icons/status_disconnected.png")
- if self.funds_error:
- text = _( "Not enough funds" )
-
+ self.status_text = text
self.statusBar().showMessage(text)
self.status_button.setIcon( icon )
if inputs:
palette = QPalette()
palette.setColor(self.amount_e.foregroundRole(), QColor('black'))
+ text = self.status_text
else:
palette = QPalette()
palette.setColor(self.amount_e.foregroundRole(), QColor('red'))
self.funds_error = True
+ text = _( "Not enough funds" )
+
+ self.statusBar().showMessage(text)
self.amount_e.setPalette(palette)
self.fee_e.setPalette(palette)
- self.update_wallet()
self.amount_e.textChanged.connect(lambda: entry_changed(False) )
self.fee_e.textChanged.connect(lambda: entry_changed(True) )
return w
+ def delete_imported_key(self, addr):
+ if self.question("Do you want to remove %s from your wallet?"%addr):
+ self.wallet.imported_keys.pop(addr)
+ self.update_receive_tab()
+ self.update_history_tab()
+ self.wallet.save()
+
+
def create_receive_menu(self, position):
# fixme: this function apparently has a side effect.
# if it is not called the menu pops up several times
menu.addAction(_("View QR"), lambda: ElectrumWindow.show_qrcode("Address","bitcoin:"+addr) )
menu.addAction(_("Edit label"), lambda: self.edit_label(True))
menu.addAction(_("Sign message"), lambda: self.sign_message(addr))
+ if addr in self.wallet.imported_keys:
+ menu.addAction(_("Remove from wallet"), lambda: self.delete_imported_key(addr))
if self.receive_tab_mode == 1:
t = _("Unfreeze") if addr in self.wallet.frozen_addresses else _("Freeze")
return textbox
def create_status_bar(self):
+ self.status_text = ""
sb = QStatusBar()
sb.setFixedHeight(35)
+ qtVersion = qVersion()
+ if (int(qtVersion[0]) >= 4 and int(qtVersion[2]) >= 7):
+ sb.addPermanentWidget( StatusBarButton( QIcon(":icons/switchgui.png"), "Switch to Lite Mode", self.go_lite ) )
if self.wallet.seed:
sb.addPermanentWidget( StatusBarButton( QIcon(":icons/lock.png"), "Password", lambda: self.change_password_dialog(self.wallet, self) ) )
sb.addPermanentWidget( StatusBarButton( QIcon(":icons/preferences.png"), "Preferences", self.settings_dialog ) )
self.status_button = StatusBarButton( QIcon(":icons/status_disconnected.png"), "Network", lambda: self.network_dialog(self.wallet, self) )
sb.addPermanentWidget( self.status_button )
self.setStatusBar(sb)
+
+ def go_lite(self):
+ import gui_lite
+ self.hide()
+ if self.lite:
+ self.lite.mini.show()
+ else:
+ self.lite = gui_lite.ElectrumGui(self.wallet, self.config, self)
+ self.lite.main(None)
def new_contact_dialog(self):
text, ok = QInputDialog.getText(self, _('New Contact'), _('Address') + ':')
password = None
try:
- seed = wallet.pw_decode(wallet.seed, password)
+ seed = wallet.decode_seed(password)
except:
- QMessageBox.warning(parent, _('Error'),
- _('Incorrect Password'), _('OK'))
+ QMessageBox.warning(parent, _('Error'), _('Incorrect Password'), _('OK'))
return
dialog = QDialog(None)
d = QDialog(self)
d.setModal(1)
d.setWindowTitle('Sign Message')
- d.setMinimumSize(270, 350)
+ d.setMinimumSize(410, 290)
tab_widget = QTabWidget()
tab = QWidget()
layout = QGridLayout(tab)
sign_address = QLineEdit()
+
sign_address.setText(address)
layout.addWidget(QLabel(_('Address')), 1, 0)
layout.addWidget(sign_address, 1, 1)
sign_message = QTextEdit()
layout.addWidget(QLabel(_('Message')), 2, 0)
- layout.addWidget(sign_message, 2, 1, 2, 1)
+ layout.addWidget(sign_message, 2, 1)
+ layout.setRowStretch(2,3)
- sign_signature = QLineEdit()
+ sign_signature = QTextEdit()
layout.addWidget(QLabel(_('Signature')), 3, 0)
layout.addWidget(sign_signature, 3, 1)
+ layout.setRowStretch(3,1)
def do_sign():
if self.wallet.use_encryption:
password = None
try:
- signature = self.wallet.sign_message(sign_address.text(), str(sign_message.toPlainText()), password)
+ signature = self.wallet.sign_message(str(sign_address.text()), str(sign_message.toPlainText()), password)
sign_signature.setText(signature)
except BaseException, e:
self.show_message(str(e))
verify_message = QTextEdit()
layout.addWidget(QLabel(_('Message')), 2, 0)
- layout.addWidget(verify_message, 2, 1, 2, 1)
+ layout.addWidget(verify_message, 2, 1)
+ layout.setRowStretch(2,3)
- verify_signature = QLineEdit()
+ verify_signature = QTextEdit()
layout.addWidget(QLabel(_('Signature')), 3, 0)
layout.addWidget(verify_signature, 3, 1)
+ layout.setRowStretch(3,1)
def do_verify():
try:
- self.wallet.verify_message(verify_address.text(), verify_signature.text(), str(verify_message.toPlainText()))
+ self.wallet.verify_message(verify_address.text(), str(verify_signature.toPlainText()), str(verify_message.toPlainText()))
self.show_message("Signature verified")
except BaseException, e:
self.show_message(str(e))
new_password2 = unicode(conf_pw.text())
try:
- seed = wallet.pw_decode( wallet.seed, password)
+ seed = wallet.decode_seed(password)
except:
QMessageBox.warning(parent, _('Error'), _('Incorrect Password'), _('OK'))
return
csv_transaction(self.wallet)
def do_import_privkey(self):
- text, ok = QInputDialog.getText(self, _('Import private key'), _('Key') + ':')
- if ok:
- sec = str(text)
+ if not self.wallet.imported_keys:
+ r = QMessageBox.question(None, _('Warning'), _('Warning: Imported keys are not recoverable from seed.') + ' ' \
+ + _('If you ever need to restore your wallet from its seed, these keys will be lost.') + '\n\n' \
+ + _('Are you sure you understand what you are doing?'), 3, 4)
+ if r == 4: return
+
+ text, ok = QInputDialog.getText(self, _('Import private key'), _('Private Key') + ':')
+ if not ok: return
+ sec = str(text)
+ if self.wallet.use_encryption:
password = self.password_dialog()
-
+ if not password:
+ return
+ else:
+ password = None
try:
addr = self.wallet.import_key(sec, password)
if not addr:
QMessageBox.critical(None, "Unable to import key", "error")
else:
QMessageBox.information(None, "Key imported", addr)
+ self.update_receive_tab()
+ self.update_history_tab()
except BaseException as e:
QMessageBox.critical(None, "Unable to import key", str(e))