import time
import wallet
import webbrowser
+import history_widget
try:
import lib.gui_qt as gui_qt
main_layout.addWidget(self.amount_input, 2, 0)
main_layout.addWidget(self.send_button, 2, 1)
+ self.history_list = history_widget.HistoryWidget()
+ self.history_list.setObjectName("history")
+ self.history_list.hide()
+ self.history_list.setAlternatingRowColors(True)
+ main_layout.addWidget(self.history_list, 3, 0, 1, -1)
+
menubar = QMenuBar()
electrum_menu = menubar.addMenu(_("&Bitcoin"))
- #electrum_menu.addMenu(_("&Servers"))
- #electrum_menu.addSeparator()
electrum_menu.addAction(_("&Quit"))
view_menu = menubar.addMenu(_("&View"))
expert_gui = view_menu.addAction(_("&Pro Mode"))
self.connect(expert_gui, SIGNAL("triggered()"), expand_callback)
+ show_history = view_menu.addAction(_("Show History"))
+ show_history.setCheckable(True)
+ self.connect(show_history, SIGNAL("toggled(bool)"), self.show_history)
+
+ help_menu = menubar.addMenu(_("&Help"))
+ the_website = help_menu.addAction(_("&Website"))
+ self.connect(the_website, SIGNAL("triggered()"), self.the_website)
+ help_menu.addSeparator()
+ report_bug = help_menu.addAction(_("&Report Bug"))
+ self.connect(report_bug, SIGNAL("triggered()"), self.show_report_bug)
+ show_about = help_menu.addAction(_("&About"))
+ self.connect(show_about, SIGNAL("triggered()"), self.show_about)
+
main_layout.setMenuBar(menubar)
quit_shortcut = QShortcut(QKeySequence("Ctrl+Q"), self)
def update_completions(self, completions):
self.address_completions.setStringList(completions)
+ def update_history(self, tx_history):
+ for tx in tx_history[-10:]:
+ address = tx["default_label"]
+ amount = D(tx["value"]) / 10**8
+ self.history_list.append(address, amount)
+
def acceptbit(self):
self.actuator.acceptbit(self.quote_currencies[0])
+ def the_website(self):
+ webbrowser.open("http://electrum-desktop.com")
+
def show_about(self):
QMessageBox.about(self, "Electrum",
_("Electrum's focus is speed, with low resource usage and simplifying Bitcoin. You do not need to perform regular backups, because your wallet can be recovered from a secret phrase that you can memorize or write on paper. Startup times are instant because it operates in conjuction with high-performance servers that handle the most complicated parts of the Bitcoin system."))
QMessageBox.information(self, "Electrum - " + _("Reporting Bugs"),
_("Email bug reports to %s") % "genjix" + "@" + "riseup.net")
+ def show_history(self, toggle_state):
+ if toggle_state:
+ self.history_list.show()
+ else:
+ self.history_list.hide()
+
class BalanceLabel(QLabel):
SHOW_CONNECTING = 1
if self.wallet.up_to_date:
self.update_balance()
self.update_completions()
+ self.update_history()
def initializing(self):
if self.state == self.INITIALIZING:
completions = completions + self.wallet.aliases.keys()
self.window.update_completions(completions)
+ def update_history(self):
+ tx_history = self.wallet.get_tx_history()
+ self.window.update_history(tx_history)
+
if __name__ == "__main__":
app = QApplication(sys.argv)
with open(rsrc("style.css")) as style_file:
--- /dev/null
+from PyQt4.QtGui import *
+from i18n import _
+
+class HistoryWidget(QTreeWidget):
+
+ def __init__(self, parent=None):
+ QTreeWidget.__init__(self, parent)
+ self.setColumnCount(2)
+ self.setHeaderLabels([_("Amount"), _("To / From")])
+ self.setIndentation(0)
+
+ def append(self, address, amount):
+ if amount >= 0:
+ display_amount = "+%s" % amount
+ else:
+ display_amount = "-%s" % (-amount)
+ item = QTreeWidgetItem([display_amount, address])
+ self.insertTopLevelItem(0, item)
+
if tx['value']<0:
for o_addr in tx['outputs']:
if not self.is_mine(o_addr):
- dest_label = self.labels.get(o_addr)
- if dest_label:
- default_label = 'to: ' + dest_label
- else:
- default_label = 'to: ' + o_addr
+ try:
+ default_label = self.labels[o_addr]
+ except KeyError:
+ default_label = o_addr
else:
for o_addr in tx['outputs']:
if self.is_mine(o_addr) and not self.is_change(o_addr):
if o_addr:
dest_label = self.labels.get(o_addr)
- if dest_label:
- default_label = 'at: ' + dest_label
- else:
- default_label = 'at: ' + o_addr
+ try:
+ default_label = self.labels[o_addr]
+ except KeyError:
+ default_label = o_addr
tx['default_label'] = default_label
data_files += [
(util.appdata_dir(), ["data/background.png", "data/style.css"]),
(os.path.join(util.appdata_dir(), "icons"), [
- "data/icons/accounts.png",
"data/icons/confirmed.png",
- "data/icons/expand.png",
- "data/icons/interact.png",
"data/icons/unconfirmed.png"
])
]
author = "thomasv",
author_email = "thomasv@gitorious",
license = "GNU GPLv3",
- url = "http://ecdsa/electrum",
+ url = "http://electrum-desktop.com",
long_description = """Lightweight Bitcoin Wallet"""
)