Browse Source

Enable adding transactions from file through Drag and Drop

3.1
Johann Bauer 7 years ago
parent
commit
95da5a8bed
  1. 12
      gui/qt/history_list.py
  2. 34
      gui/qt/util.py

12
gui/qt/history_list.py

@ -47,11 +47,12 @@ TX_ICONS = [
]
class HistoryList(MyTreeWidget):
class HistoryList(MyTreeWidget, AcceptFileDragDrop):
filter_columns = [2, 3, 4] # Date, Description, Amount
def __init__(self, parent=None):
MyTreeWidget.__init__(self, parent, self.create_menu, [], 3)
AcceptFileDragDrop.__init__(self, ".txn")
self.refresh_headers()
self.setColumnHidden(1, True)
@ -205,3 +206,12 @@ class HistoryList(MyTreeWidget):
if item.data(0, Qt.UserRole) in to_delete:
root.removeChild(item)
_offset += 1
def onFileAdded(self, fn):
with open(fn) as f:
tx = self.parent.tx_from_text(f.read())
self.wallet.add_transaction(tx.txid(), tx)
self.wallet.save_transactions()
self.on_update()

34
gui/qt/util.py

@ -635,6 +635,40 @@ class ColorScheme:
if ColorScheme.has_dark_background(widget):
ColorScheme.dark_scheme = True
class AcceptFileDragDrop:
def __init__(self, file_type=""):
assert isinstance(self, QWidget)
self.setAcceptDrops(True)
self.file_type = file_type
def validateEvent(self, event):
if not event.mimeData().hasUrls():
event.ignore()
return False
for url in event.mimeData().urls():
if not url.toLocalFile().endswith(self.file_type):
event.ignore()
return False
event.accept()
return True
def dragEnterEvent(self, event):
self.validateEvent(event)
def dragMoveEvent(self, event):
if self.validateEvent(event):
event.setDropAction(Qt.CopyAction)
def dropEvent(self, event):
if self.validateEvent(event):
for url in event.mimeData().urls():
self.onFileAdded(url.toLocalFile())
def onFileAdded(self, fn):
raise NotImplementedError()
if __name__ == "__main__":
app = QApplication([])
t = WaitingDialog(None, 'testing ...', lambda: [time.sleep(1)], lambda x: QMessageBox.information(None, 'done', "done"))

Loading…
Cancel
Save