edit column directly

This commit is contained in:
ThomasV 2012-11-29 07:38:32 +01:00
parent 522d4d7f91
commit 74a8a5f77a
1 changed files with 37 additions and 55 deletions

View File

@ -451,6 +451,12 @@ class ElectrumWindow(QMainWindow):
l.editItem( item, c )
item.setFlags(Qt.ItemIsSelectable | Qt.ItemIsUserCheckable | Qt.ItemIsEnabled | Qt.ItemIsDragEnabled)
def edit_amount(self):
l = self.receive_list
item = l.currentItem()
item.setFlags(Qt.ItemIsEditable|Qt.ItemIsSelectable | Qt.ItemIsUserCheckable | Qt.ItemIsEnabled | Qt.ItemIsDragEnabled)
l.editItem( item, 3 )
item.setFlags(Qt.ItemIsSelectable | Qt.ItemIsUserCheckable | Qt.ItemIsEnabled | Qt.ItemIsDragEnabled)
def address_label_clicked(self, item, column, l, column_addr, column_label):
@ -493,6 +499,35 @@ class ElectrumWindow(QMainWindow):
self.recv_changed(item)
if column == 3:
address = unicode( item.text(column_addr) )
text = unicode( item.text(3) )
try:
index = self.wallet.addresses.index(address)
except:
return
try:
amount = int( Decimal( unicode(text)) * 100000000 )
item.setText(3,format_satoshis(amount,False, self.wallet.num_zeros))
except:
amount = self.wallet.requested_amounts.get(address)
if amount:
item.setText(3,format_satoshis(amount,False, self.wallet.num_zeros))
else:
item.setText(3,"")
return
self.wallet.requested_amounts[address] = amount
label = self.wallet.labels.get(address)
if not label:
label = 'invoice %04d'%(index+1)
self.update_receive_item(self.receive_list.currentItem())
if self.qr_window:
self.qr_window.set_content( address, label, amount )
def recv_changed(self, a):
"current item changed"
@ -831,59 +866,6 @@ class ElectrumWindow(QMainWindow):
self.show_message(_("QR code saved to file") + " " + self.qr_window.filename)
def request_amount_dialog(self, address):
# pick the first unused address
# print "please wait" in qr window
# enter amount in usd
d = QDialog()
d.setWindowTitle('Request payment')
d.setModal(1)
vbox = QVBoxLayout()
vbox.addWidget(QLabel(address))
grid = QGridLayout()
grid.setSpacing(8)
vbox.addLayout(grid)
try:
index = self.wallet.addresses.index(address)
except:
return
label = self.wallet.labels.get(address,'invoice %04d'%(index+1))
grid.addWidget(QLabel(_('Label')), 0, 0)
label_e = QLineEdit()
label_e.setText(label)
grid.addWidget(label_e, 0, 1)
amount_e = QLineEdit()
amount_e.textChanged.connect(lambda: numbify(amount_e))
grid.addWidget(QLabel(_('Amount')), 1, 0)
grid.addWidget(amount_e, 1, 1, 1, 3)
vbox.addLayout(ok_cancel_buttons(d))
d.setLayout(vbox)
amount_e.setFocus()
if not d.exec_(): return
try:
amount = int( Decimal( unicode( amount_e.text())) * 100000000 )
except:
return
self.wallet.requested_amounts[address] = amount
label = unicode(label_e.text())
if label:
self.wallet.labels[address] = label
self.update_receive_item(self.receive_list.currentItem())
if self.qr_window:
self.qr_window.set_content( address, label, amount )
def details_button_text(self):
return _('Hide details') if self.detailed_view else _('Show details')
@ -925,7 +907,7 @@ class ElectrumWindow(QMainWindow):
menu = QMenu()
menu.addAction(_("Copy to clipboard"), lambda: self.app.clipboard().setText(addr))
if self.qr_window and self.qr_window.isVisible():
menu.addAction(_("Request amount"), lambda: self.request_amount_dialog(addr))
menu.addAction(_("Request amount"), lambda: self.edit_amount())
menu.addAction(_("Edit label"), lambda: self.edit_label(True))
menu.addAction(_("Sign message"), lambda: self.sign_message(addr))
@ -994,7 +976,7 @@ class ElectrumWindow(QMainWindow):
item.setData(2,0,label)
amount = self.wallet.requested_amounts.get(address,None)
amount_str = format_satoshis( amount, False, self.wallet.num_zeros ) if amount is not None else "--"
amount_str = format_satoshis( amount, False, self.wallet.num_zeros ) if amount is not None else ""
item.setData(3,0,amount_str)
c, u = self.wallet.get_addr_balance(address)