password dialog
This commit is contained in:
parent
034f740fd2
commit
30b67779cb
|
@ -441,14 +441,7 @@ def change_password_dialog(wallet, parent, icon):
|
||||||
show_message("passwords do not match")
|
show_message("passwords do not match")
|
||||||
return
|
return
|
||||||
|
|
||||||
wallet.use_encryption = (new_password != '')
|
wallet.update_password(seed, new_password)
|
||||||
wallet.seed = wallet.pw_encode( seed, new_password)
|
|
||||||
for k in wallet.imported_keys.keys():
|
|
||||||
a = wallet.imported_keys[k]
|
|
||||||
b = wallet.pw_decode(a, password)
|
|
||||||
c = wallet.pw_encode(b, new_password)
|
|
||||||
wallet.imported_keys[k] = c
|
|
||||||
wallet.save()
|
|
||||||
|
|
||||||
if icon:
|
if icon:
|
||||||
if wallet.use_encryption:
|
if wallet.use_encryption:
|
||||||
|
|
|
@ -35,14 +35,14 @@ class ElectrumWindow(QMainWindow):
|
||||||
tabs.setSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Expanding)
|
tabs.setSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Expanding)
|
||||||
self.setCentralWidget(tabs)
|
self.setCentralWidget(tabs)
|
||||||
self.create_status_bar()
|
self.create_status_bar()
|
||||||
self.setGeometry(100,100,800,400)
|
self.setGeometry(100,100,840,400)
|
||||||
self.setWindowTitle( 'Electrum ' + self.wallet.electrum_version + ' - Qt')
|
self.setWindowTitle( 'Electrum ' + self.wallet.electrum_version + ' - Qt')
|
||||||
self.show()
|
self.show()
|
||||||
|
|
||||||
QShortcut(QKeySequence("Ctrl+W"), self, self.close)
|
QShortcut(QKeySequence("Ctrl+W"), self, self.close)
|
||||||
QShortcut(QKeySequence("Ctrl+Q"), self, self.close)
|
QShortcut(QKeySequence("Ctrl+Q"), self, self.close)
|
||||||
QShortcut(QKeySequence("Ctrl+PgUp"), self, lambda: tabs.setCurrentIndex( tabs.currentIndex() - 1))
|
QShortcut(QKeySequence("Ctrl+PgUp"), self, lambda: tabs.setCurrentIndex( (tabs.currentIndex() - 1 )%tabs.count() ))
|
||||||
QShortcut(QKeySequence("Ctrl+PgDown"), self, lambda: tabs.setCurrentIndex( tabs.currentIndex() + 1))
|
QShortcut(QKeySequence("Ctrl+PgDown"), self, lambda: tabs.setCurrentIndex( (tabs.currentIndex() + 1 )%tabs.count() ))
|
||||||
|
|
||||||
|
|
||||||
def connect_slots(self, sender):
|
def connect_slots(self, sender):
|
||||||
|
@ -79,12 +79,13 @@ class ElectrumWindow(QMainWindow):
|
||||||
|
|
||||||
def create_history_tab(self):
|
def create_history_tab(self):
|
||||||
self.history_list = w = QTreeWidget(self)
|
self.history_list = w = QTreeWidget(self)
|
||||||
|
#print w.getContentsMargins()
|
||||||
w.setColumnCount(5)
|
w.setColumnCount(5)
|
||||||
w.setColumnWidth(0, 40)
|
w.setColumnWidth(0, 40)
|
||||||
w.setColumnWidth(1, 140)
|
w.setColumnWidth(1, 140)
|
||||||
w.setColumnWidth(2, 340)
|
w.setColumnWidth(2, 350)
|
||||||
w.setColumnWidth(3, 120)
|
w.setColumnWidth(3, 140)
|
||||||
w.setColumnWidth(4, 120)
|
w.setColumnWidth(4, 140)
|
||||||
w.setHeaderLabels( [ '', 'Date', 'Description', 'Amount', 'Balance'] )
|
w.setHeaderLabels( [ '', 'Date', 'Description', 'Amount', 'Balance'] )
|
||||||
self.connect(w, SIGNAL('itemActivated(QTreeWidgetItem*, int)'), self.tx_details)
|
self.connect(w, SIGNAL('itemActivated(QTreeWidgetItem*, int)'), self.tx_details)
|
||||||
self.connect(w, SIGNAL('itemDoubleClicked(QTreeWidgetItem*, int)'), self.tx_label_clicked)
|
self.connect(w, SIGNAL('itemDoubleClicked(QTreeWidgetItem*, int)'), self.tx_label_clicked)
|
||||||
|
@ -204,23 +205,26 @@ class ElectrumWindow(QMainWindow):
|
||||||
|
|
||||||
grid = QtGui.QGridLayout()
|
grid = QtGui.QGridLayout()
|
||||||
grid.setSpacing(8)
|
grid.setSpacing(8)
|
||||||
|
grid.setColumnMinimumWidth(3,300)
|
||||||
|
grid.setColumnStretch(4,1)
|
||||||
|
|
||||||
grid.addWidget(QLabel('Pay to'), 1, 0)
|
grid.addWidget(QLabel('Pay to'), 1, 0)
|
||||||
grid.addWidget(paytoEdit, 1, 1)
|
grid.addWidget(paytoEdit, 1, 1, 1, 3)
|
||||||
|
|
||||||
grid.addWidget(QLabel('Description'), 2, 0)
|
grid.addWidget(QLabel('Description'), 2, 0)
|
||||||
grid.addWidget(descriptionEdit, 2, 1)
|
grid.addWidget(descriptionEdit, 2, 1, 1, 3)
|
||||||
|
|
||||||
grid.addWidget(QLabel('Amount'), 3, 0)
|
grid.addWidget(QLabel('Amount'), 3, 0)
|
||||||
grid.addWidget(amountEdit, 3, 1)
|
grid.addWidget(amountEdit, 3, 1, 1, 2)
|
||||||
|
|
||||||
grid.addWidget(QLabel('Fee'), 4, 0)
|
grid.addWidget(QLabel('Fee'), 4, 0)
|
||||||
grid.addWidget(feeEdit, 4, 1)
|
grid.addWidget(feeEdit, 4, 1, 1, 2)
|
||||||
|
|
||||||
sendButton = QPushButton("Send")
|
sendButton = QPushButton("Send")
|
||||||
clearButton = QPushButton("Clear")
|
|
||||||
grid.addWidget(sendButton, 5, 1)
|
grid.addWidget(sendButton, 5, 1)
|
||||||
grid.addWidget(clearButton, 5, 1)
|
|
||||||
|
clearButton = QPushButton("Clear")
|
||||||
|
grid.addWidget(clearButton, 5, 2)
|
||||||
|
|
||||||
w.setLayout(grid)
|
w.setLayout(grid)
|
||||||
w.show()
|
w.show()
|
||||||
|
@ -237,7 +241,7 @@ class ElectrumWindow(QMainWindow):
|
||||||
|
|
||||||
l = QTreeWidget(self)
|
l = QTreeWidget(self)
|
||||||
l.setColumnCount(3)
|
l.setColumnCount(3)
|
||||||
l.setColumnWidth(0, 330)
|
l.setColumnWidth(0, 350)
|
||||||
l.setColumnWidth(1, 330)
|
l.setColumnWidth(1, 330)
|
||||||
l.setColumnWidth(2, 20)
|
l.setColumnWidth(2, 20)
|
||||||
l.setHeaderLabels( ['Address', 'Label','Tx'])
|
l.setHeaderLabels( ['Address', 'Label','Tx'])
|
||||||
|
@ -347,6 +351,7 @@ class ElectrumWindow(QMainWindow):
|
||||||
b.setToolTip("Password")
|
b.setToolTip("Password")
|
||||||
b.setFlat(True)
|
b.setFlat(True)
|
||||||
b.setMaximumWidth(25)
|
b.setMaximumWidth(25)
|
||||||
|
b.clicked.connect(self.change_password_dialog)
|
||||||
hbox.addWidget(b)
|
hbox.addWidget(b)
|
||||||
|
|
||||||
icon = QIcon("icons/preferences.svg")
|
icon = QIcon("icons/preferences.svg")
|
||||||
|
@ -402,6 +407,62 @@ class ElectrumWindow(QMainWindow):
|
||||||
+ ' '.join(mnemonic.mn_encode(seed)) + "\""
|
+ ' '.join(mnemonic.mn_encode(seed)) + "\""
|
||||||
QMessageBox.information(self, 'Seed', msg, 'OK')
|
QMessageBox.information(self, 'Seed', msg, 'OK')
|
||||||
|
|
||||||
|
def change_password_dialog(self):
|
||||||
|
d = QDialog(self)
|
||||||
|
d.setModal(1)
|
||||||
|
|
||||||
|
|
||||||
|
pw = QLineEdit()
|
||||||
|
pw.setEchoMode(2)
|
||||||
|
new_pw = QLineEdit()
|
||||||
|
new_pw.setEchoMode(2)
|
||||||
|
conf_pw = QLineEdit()
|
||||||
|
conf_pw.setEchoMode(2)
|
||||||
|
|
||||||
|
grid = QGridLayout()
|
||||||
|
grid.setSpacing(8)
|
||||||
|
|
||||||
|
msg = 'Your wallet is encrypted. Use this dialog to change the password.\n To disable wallet encryption, enter an empty new password.' if self.wallet.use_encryption else 'Your wallet keys are not encrypted'
|
||||||
|
grid.addWidget(QLabel(msg), 0, 0, 1, 2)
|
||||||
|
|
||||||
|
grid.addWidget(QLabel('Password'), 1, 0)
|
||||||
|
grid.addWidget(pw, 1, 1)
|
||||||
|
|
||||||
|
grid.addWidget(QLabel('New Password'), 2, 0)
|
||||||
|
grid.addWidget(new_pw, 2, 1)
|
||||||
|
|
||||||
|
grid.addWidget(QLabel('Confirm Password'), 3, 0)
|
||||||
|
grid.addWidget(conf_pw, 3, 1)
|
||||||
|
|
||||||
|
b = QPushButton("Cancel")
|
||||||
|
grid.addWidget(b, 5, 1)
|
||||||
|
b.clicked.connect(d.reject)
|
||||||
|
|
||||||
|
b = QPushButton("OK")
|
||||||
|
grid.addWidget(b, 5, 2)
|
||||||
|
b.clicked.connect(d.accept)
|
||||||
|
|
||||||
|
d.setLayout(grid)
|
||||||
|
|
||||||
|
if not d.exec_(): return
|
||||||
|
|
||||||
|
password = str(pw.text())
|
||||||
|
print password
|
||||||
|
new_password = str(new_pw.text())
|
||||||
|
new_password2 = str(conf_pw.text())
|
||||||
|
|
||||||
|
try:
|
||||||
|
seed = self.wallet.pw_decode( self.wallet.seed, password)
|
||||||
|
except:
|
||||||
|
QMessageBox.warning(self, 'Error', 'Incorrect Password', 'OK')
|
||||||
|
return
|
||||||
|
|
||||||
|
if new_password != new_password2:
|
||||||
|
QMessageBox.warning(self, 'Error', 'Passwords do not match', 'OK')
|
||||||
|
return
|
||||||
|
|
||||||
|
self.wallet.update_password(seed, new_password)
|
||||||
|
|
||||||
|
|
||||||
class BitcoinGUI():
|
class BitcoinGUI():
|
||||||
|
|
||||||
|
|
|
@ -759,3 +759,13 @@ class Wallet:
|
||||||
raise BaseException("Invalid bitcoin address")
|
raise BaseException("Invalid bitcoin address")
|
||||||
|
|
||||||
return target, signing_addr, auth_name
|
return target, signing_addr, auth_name
|
||||||
|
|
||||||
|
def update_password(self, seed, new_password):
|
||||||
|
self.use_encryption = (new_password != '')
|
||||||
|
self.seed = self.pw_encode( seed, new_password)
|
||||||
|
for k in self.imported_keys.keys():
|
||||||
|
a = self.imported_keys[k]
|
||||||
|
b = self.pw_decode(a, password)
|
||||||
|
c = self.pw_encode(b, new_password)
|
||||||
|
self.wallet.imported_keys[k] = c
|
||||||
|
self.wallet.save()
|
||||||
|
|
Loading…
Reference in New Issue