|
|
@ -27,7 +27,10 @@ import wallet |
|
|
|
import webbrowser |
|
|
|
import history_widget |
|
|
|
import util |
|
|
|
import csv |
|
|
|
import datetime |
|
|
|
|
|
|
|
from wallet import format_satoshis |
|
|
|
import gui_qt |
|
|
|
import shutil |
|
|
|
|
|
|
@ -243,6 +246,9 @@ class MiniWindow(QDialog): |
|
|
|
backup_wallet = extra_menu.addAction( _("&Create wallet backup")) |
|
|
|
backup_wallet.triggered.connect(self.backup_wallet) |
|
|
|
|
|
|
|
export_csv = extra_menu.addAction( _("&Export transactions to CSV") ) |
|
|
|
export_csv.triggered.connect(self.actuator.csv_transaction) |
|
|
|
|
|
|
|
expert_gui = view_menu.addAction(_("&Classic GUI")) |
|
|
|
expert_gui.triggered.connect(expand_callback) |
|
|
|
themes_menu = view_menu.addMenu(_("&Themes")) |
|
|
@ -661,6 +667,48 @@ class MiniActuator: |
|
|
|
w.exec_() |
|
|
|
w.destroy() |
|
|
|
|
|
|
|
def csv_transaction(self): |
|
|
|
try: |
|
|
|
fileName = QFileDialog.getSaveFileName(QWidget(), 'Select file to export your wallet transactions to', os.path.expanduser('~/'), "*.csv") |
|
|
|
if fileName: |
|
|
|
with open(fileName, "w+") as csvfile: |
|
|
|
transaction = csv.writer(csvfile) |
|
|
|
transaction.writerow(["transaction_hash","label", "confirmations", "value", "fee", "balance", "timestamp"]) |
|
|
|
for item in self.wallet.get_tx_history(): |
|
|
|
tx_hash, confirmations, is_mine, value, fee, balance, timestamp = item |
|
|
|
if confirmations: |
|
|
|
if timestamp is not None: |
|
|
|
try: |
|
|
|
time_string = datetime.datetime.fromtimestamp(timestamp).isoformat(' ')[:-3] |
|
|
|
except [RuntimeError, TypeError, NameError] as reason: |
|
|
|
time_string = "unknown" |
|
|
|
pass |
|
|
|
else: |
|
|
|
time_string = "unknown" |
|
|
|
else: |
|
|
|
time_string = "pending" |
|
|
|
|
|
|
|
if value is not None: |
|
|
|
value_string = format_satoshis(value, True, self.wallet.num_zeros) |
|
|
|
else: |
|
|
|
value_string = '--' |
|
|
|
|
|
|
|
if fee is not None: |
|
|
|
fee_string = format_satoshis(fee, True, self.wallet.num_zeros) |
|
|
|
else: |
|
|
|
fee_string = '0' |
|
|
|
|
|
|
|
if tx_hash: |
|
|
|
label, is_default_label = self.wallet.get_label(tx_hash) |
|
|
|
else: |
|
|
|
label = "" |
|
|
|
|
|
|
|
balance_string = format_satoshis(balance, False, self.wallet.num_zeros) |
|
|
|
transaction.writerow([tx_hash, label, confirmations, value_string, fee_string, balance_string, time_string]) |
|
|
|
QMessageBox.information(None,"CSV Export created", "Your CSV export has been succesfully created.") |
|
|
|
except (IOError, os.error), reason: |
|
|
|
QMessageBox.critical(None,"Unable to create csv", "Electrum was unable to produce a transaction export.\n" + str(reason)) |
|
|
|
|
|
|
|
def send(self, address, amount, parent_window): |
|
|
|
"""Send bitcoins to the target address.""" |
|
|
|
dest_address = self.fetch_destination(address) |
|
|
|