Browse Source

password dialog

283
thomasv 13 years ago
parent
commit
30b67779cb
  1. 9
      client/gui.py
  2. 87
      client/gui_qt.py
  3. 10
      client/wallet.py

9
client/gui.py

@ -441,14 +441,7 @@ def change_password_dialog(wallet, parent, icon):
show_message("passwords do not match")
return
wallet.use_encryption = (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()
wallet.update_password(seed, new_password)
if icon:
if wallet.use_encryption:

87
client/gui_qt.py

@ -35,14 +35,14 @@ class ElectrumWindow(QMainWindow):
tabs.setSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Expanding)
self.setCentralWidget(tabs)
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.show()
QShortcut(QKeySequence("Ctrl+W"), self, self.close)
QShortcut(QKeySequence("Ctrl+Q"), self, self.close)
QShortcut(QKeySequence("Ctrl+PgUp"), self, lambda: tabs.setCurrentIndex( tabs.currentIndex() - 1))
QShortcut(QKeySequence("Ctrl+PgDown"), 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 )%tabs.count() ))
def connect_slots(self, sender):
@ -79,12 +79,13 @@ class ElectrumWindow(QMainWindow):
def create_history_tab(self):
self.history_list = w = QTreeWidget(self)
#print w.getContentsMargins()
w.setColumnCount(5)
w.setColumnWidth(0, 40)
w.setColumnWidth(1, 140)
w.setColumnWidth(2, 340)
w.setColumnWidth(3, 120)
w.setColumnWidth(4, 120)
w.setColumnWidth(2, 350)
w.setColumnWidth(3, 140)
w.setColumnWidth(4, 140)
w.setHeaderLabels( [ '', 'Date', 'Description', 'Amount', 'Balance'] )
self.connect(w, SIGNAL('itemActivated(QTreeWidgetItem*, int)'), self.tx_details)
self.connect(w, SIGNAL('itemDoubleClicked(QTreeWidgetItem*, int)'), self.tx_label_clicked)
@ -204,23 +205,26 @@ class ElectrumWindow(QMainWindow):
grid = QtGui.QGridLayout()
grid.setSpacing(8)
grid.setColumnMinimumWidth(3,300)
grid.setColumnStretch(4,1)
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(descriptionEdit, 2, 1)
grid.addWidget(descriptionEdit, 2, 1, 1, 3)
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(feeEdit, 4, 1)
grid.addWidget(feeEdit, 4, 1, 1, 2)
sendButton = QPushButton("Send")
clearButton = QPushButton("Clear")
grid.addWidget(sendButton, 5, 1)
grid.addWidget(clearButton, 5, 1)
clearButton = QPushButton("Clear")
grid.addWidget(clearButton, 5, 2)
w.setLayout(grid)
w.show()
@ -237,7 +241,7 @@ class ElectrumWindow(QMainWindow):
l = QTreeWidget(self)
l.setColumnCount(3)
l.setColumnWidth(0, 330)
l.setColumnWidth(0, 350)
l.setColumnWidth(1, 330)
l.setColumnWidth(2, 20)
l.setHeaderLabels( ['Address', 'Label','Tx'])
@ -347,6 +351,7 @@ class ElectrumWindow(QMainWindow):
b.setToolTip("Password")
b.setFlat(True)
b.setMaximumWidth(25)
b.clicked.connect(self.change_password_dialog)
hbox.addWidget(b)
icon = QIcon("icons/preferences.svg")
@ -402,6 +407,62 @@ class ElectrumWindow(QMainWindow):
+ ' '.join(mnemonic.mn_encode(seed)) + "\""
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():

10
client/wallet.py

@ -759,3 +759,13 @@ class Wallet:
raise BaseException("Invalid bitcoin address")
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…
Cancel
Save