From 9c2d3bbbdda10dbc9e33d44019360c2d043bfdd8 Mon Sep 17 00:00:00 2001 From: Michael Wozniak Date: Thu, 7 Nov 2013 18:18:12 -0600 Subject: [PATCH 1/7] fix label editing in gtk --- gui/gtk.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/gui/gtk.py b/gui/gtk.py index 0eab4dd4..6c60f9ec 100644 --- a/gui/gtk.py +++ b/gui/gtk.py @@ -898,8 +898,7 @@ class ElectrumWindow: cell.set_property('editable', True) def edited_cb(cell, path, new_text, h_list): tx = h_list.get_value( h_list.get_iter(path), 0) - self.wallet.labels[tx] = new_text - self.wallet.save() + self.wallet.set_label(tx,new_text) self.update_history_tab() cell.connect('edited', edited_cb, self.history_list) def editing_started(cell, entry, path, h_list): @@ -974,8 +973,7 @@ class ElectrumWindow: cell.set_property('editable', True) def edited_cb2(cell, path, new_text, liststore): address = liststore.get_value( liststore.get_iter(path), 0) - self.wallet.labels[address] = new_text - self.wallet.save() + self.wallet.set_label(address, new_text) self.update_receiving_tab() self.update_sending_tab() self.update_history_tab() From ad498af71fa9e99a81b2503909fd23a44e57ba13 Mon Sep 17 00:00:00 2001 From: Michael Wozniak Date: Thu, 7 Nov 2013 20:24:13 -0600 Subject: [PATCH 2/7] add address type to receive tab in GTK GUI I = imported R = receive C = change --- gui/gtk.py | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/gui/gtk.py b/gui/gtk.py index 6c60f9ec..e67f6c72 100644 --- a/gui/gtk.py +++ b/gui/gtk.py @@ -941,7 +941,7 @@ class ElectrumWindow: def create_recv_tab(self): - self.recv_list = gtk.ListStore(str, str, str) + self.recv_list = gtk.ListStore(str, str, str, str) self.add_tab( self.make_address_list(True), 'Receive') self.update_receiving_tab() @@ -987,6 +987,13 @@ class ElectrumWindow: tvcolumn.pack_start(cell, True) tvcolumn.add_attribute(cell, 'text', 2) + if is_recv: + tvcolumn = gtk.TreeViewColumn('Type') + treeview.append_column(tvcolumn) + cell = gtk.CellRendererText() + tvcolumn.pack_start(cell, True) + tvcolumn.add_attribute(cell, 'text', 3) + scroll = gtk.ScrolledWindow() scroll.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) scroll.add(treeview) @@ -1100,12 +1107,14 @@ class ElectrumWindow: def update_receiving_tab(self): self.recv_list.clear() for address in self.wallet.addresses(True): - if self.wallet.is_change(address):continue + Type = "R" + if self.wallet.is_change(address): Type = "C" + if address in self.wallet.imported_keys.keys(): Type = "I" label = self.wallet.labels.get(address) h = self.wallet.history.get(address,[]) n = len(h) - tx = "None" if n==0 else "%d"%n - self.recv_list.append((address, label, tx )) + tx = "0" if n==0 else "%d"%n + self.recv_list.append((address, label, tx, Type )) def update_sending_tab(self): # detect addresses that are not mine in history, add them here... From 2abb071533c4d136290d370acb7e23515c5dd236 Mon Sep 17 00:00:00 2001 From: Michael Wozniak Date: Thu, 7 Nov 2013 20:36:53 -0600 Subject: [PATCH 3/7] network button fix for not connected to a network - GTK gui --- gui/gtk.py | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/gui/gtk.py b/gui/gtk.py index e67f6c72..fb0bb5c2 100644 --- a/gui/gtk.py +++ b/gui/gtk.py @@ -242,8 +242,9 @@ def run_network_dialog( network, parent ): import random status = "Please choose a server.\nSelect cancel if you are offline." - server = interface.server - host, port, protocol = server.split(':') + if network.is_connected(): + server = interface.server + host, port, protocol = server.split(':') servers = network.get_servers() @@ -261,7 +262,10 @@ def run_network_dialog( network, parent ): host_box.pack_start(host_label, False, False, 10) host_entry = gtk.Entry() host_entry.set_size_request(200,-1) - host_entry.set_text(server) + if network.is_connected(): + host_entry.set_text(server) + else: + host_entry.set_text("Not Connected") host_entry.show() host_box.pack_start(host_entry, False, False, 10) add_help_button(host_box, 'The name, port number and protocol of your Electrum server, separated by a colon. Example: "ecdsa.org:50002:s". Some servers allow you to connect through http (port 80) or https (port 443)') @@ -286,7 +290,7 @@ def run_network_dialog( network, parent ): def current_line(): return unicode(host_entry.get_text()).split(':') - + def set_combobox(protocol): combobox.set_active('tshg'.index(protocol)) @@ -300,7 +304,8 @@ def run_network_dialog( network, parent ): host_entry.set_text( host + ':' + port + ':' + protocol) combobox.connect("changed", lambda x:set_protocol('tshg'[combobox.get_active()])) - set_combobox(protocol) + if network.is_connected(): + set_combobox(protocol) server_list = gtk.ListStore(str) for host in servers.keys(): From 3c6808468efbc0f3c5369e28075f3eabc8a90759 Mon Sep 17 00:00:00 2001 From: Michael Wozniak Date: Thu, 7 Nov 2013 20:43:16 -0600 Subject: [PATCH 4/7] add F and P to address types in recv tab for Frozen and Prioritized addresses --- gui/gtk.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/gui/gtk.py b/gui/gtk.py index fb0bb5c2..e7a3a0f5 100644 --- a/gui/gtk.py +++ b/gui/gtk.py @@ -1115,6 +1115,8 @@ class ElectrumWindow: Type = "R" if self.wallet.is_change(address): Type = "C" if address in self.wallet.imported_keys.keys(): Type = "I" + if address in self.wallet.frozen_addresses: Type = Type + "F" + if address in self.wallet.prioritized_addresses: Type = Type + "P" label = self.wallet.labels.get(address) h = self.wallet.history.get(address,[]) n = len(h) From 6458c0f591193ef26e9ef765129aed8081c806b5 Mon Sep 17 00:00:00 2001 From: thomasv Date: Fri, 8 Nov 2013 11:17:40 +0100 Subject: [PATCH 5/7] don't show actinos that require private key if the wallet has no seed --- gui/qt/main_window.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/gui/qt/main_window.py b/gui/qt/main_window.py index aefa8dff..e3c6c1ea 100644 --- a/gui/qt/main_window.py +++ b/gui/qt/main_window.py @@ -1124,8 +1124,9 @@ class ElectrumWindow(QMainWindow): menu.addAction(_("Copy to clipboard"), lambda: self.app.clipboard().setText(addr)) menu.addAction(_("QR code"), lambda: self.show_qrcode("bitcoin:" + addr, _("Address")) ) menu.addAction(_("Edit label"), lambda: self.edit_label(True)) - menu.addAction(_("Private key"), lambda: self.show_private_key(addr)) - menu.addAction(_("Sign message"), lambda: self.sign_message(addr)) + if self.wallet.seed: + menu.addAction(_("Private key"), lambda: self.show_private_key(addr)) + menu.addAction(_("Sign message"), lambda: self.sign_message(addr)) if addr in self.wallet.imported_keys: menu.addAction(_("Remove from wallet"), lambda: self.delete_imported_key(addr)) From ef1c2c7760c033e67cd95e1c247060173fb410b9 Mon Sep 17 00:00:00 2001 From: Andy Weidenbaum Date: Fri, 8 Nov 2013 03:31:18 -0800 Subject: [PATCH 6/7] concealed flag for restore sequence --- electrum | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/electrum b/electrum index eae7687e..8cdabcb1 100755 --- a/electrum +++ b/electrum @@ -71,6 +71,7 @@ def arg_parser(): parser.add_option("-g", "--gui", dest="gui", help="User interface: qt, lite, gtk, text or stdio") parser.add_option("-w", "--wallet", dest="wallet_path", help="wallet path (default: electrum.dat)") parser.add_option("-o", "--offline", action="store_true", dest="offline", default=False, help="remain offline") + parser.add_option("-C", "--concealed", action="store_true", dest="concealed", default=False, help="don't echo seed to console when restoring") parser.add_option("-a", "--all", action="store_true", dest="show_all", default=False, help="show all addresses") parser.add_option("-l", "--labels", action="store_true", dest="show_labels", default=False, help="show the labels of listed addresses") parser.add_option("-f", "--fee", dest="tx_fee", default=None, help="set tx fee") @@ -209,7 +210,8 @@ if __name__ == '__main__': if gap: wallet.change_gap_limit(int(gap)) if cmd.name == 'restore': - seed = raw_input("seed:") + import getpass + seed = getpass.getpass(prompt = "seed:", stream = None) if options.concealed else raw_input("seed:") try: seed.decode('hex') except: From 48bd2557b7a55ac524d211bcc781f95c02681d34 Mon Sep 17 00:00:00 2001 From: thomasv Date: Fri, 8 Nov 2013 12:35:27 +0100 Subject: [PATCH 7/7] fix: store seed version --- lib/wallet.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/wallet.py b/lib/wallet.py index 26a95154..e8c72745 100644 --- a/lib/wallet.py +++ b/lib/wallet.py @@ -347,6 +347,7 @@ class Wallet: if not c0: self.seed_version = 4 + self.storage.put('seed_version', self.seed_version, True) self.create_old_account(K0) return @@ -355,6 +356,7 @@ class Wallet: "m/0'/": (c0, K0, cK0), } self.storage.put('master_public_keys', self.master_public_keys, True) + self.storage.put('seed_version', self.seed_version, True) self.create_account('1','Main account')