address_field in sweep dialog
authorThomasV <thomasv@gitorious>
Mon, 5 May 2014 07:58:29 +0000 (09:58 +0200)
committerThomasV <thomasv@gitorious>
Mon, 5 May 2014 07:58:29 +0000 (09:58 +0200)
gui/qt/main_window.py
gui/qt/util.py

index 9ac9bb2..677679c 100644 (file)
@@ -1905,9 +1905,12 @@ class ElectrumWindow(QMainWindow):
 
         private_keys = {}
         addresses = self.wallet.addresses(True)
+        done = False
         def privkeys_thread():
             for addr in addresses:
                 time.sleep(0.1)
+                if done: 
+                    break
                 private_keys[addr] = "\n".join(self.wallet.get_private_key(addr, password))
                 d.emit(SIGNAL('computing_privkeys'))
             d.emit(SIGNAL('show_privkeys'))
@@ -1922,6 +1925,7 @@ class ElectrumWindow(QMainWindow):
         threading.Thread(target=privkeys_thread).start()
 
         if not d.exec_():
+            done = True
             return
 
         filename = filename_e.text()
@@ -2028,6 +2032,7 @@ class ElectrumWindow(QMainWindow):
     def sweep_key_dialog(self):
         d = QDialog(self)
         d.setWindowTitle(_('Sweep private keys'))
+        d.setMinimumSize(600, 300)
 
         vbox = QVBoxLayout(d)
         vbox.addWidget(QLabel(_("Enter private keys")))
@@ -2035,20 +2040,33 @@ class ElectrumWindow(QMainWindow):
         keys_e = QTextEdit()
         keys_e.setTabChangesFocus(True)
         vbox.addWidget(keys_e)
+
+        h, address_e = address_field(self.wallet.addresses())
+        vbox.addLayout(h)
+
         vbox.addStretch(1)
         hbox, button = ok_cancel_buttons2(d, _('Sweep'))
         vbox.addLayout(hbox)
         button.setEnabled(False)
 
-        keys_e.textChanged.connect(lambda: button.setEnabled(Wallet.is_private_key(str(keys_e.toPlainText()).strip())))
+        def get_address():
+            addr = str(address_e.text())
+            if bitcoin.is_address(addr):
+                return addr
+
+        def get_pk():
+            pk = str(keys_e.toPlainText()).strip()
+            if Wallet.is_private_key(pk):
+                return pk.split()
+
+        f = lambda: button.setEnabled(get_address() is not None and get_pk() is not None)
+        keys_e.textChanged.connect(f)
+        address_e.textChanged.connect(f)
         if not d.exec_():
             return
 
-        text = str(keys_e.toPlainText()).strip()
-        privkeys = text.split()
-        to_address = self.wallet.addresses()[0]
         fee = self.wallet.fee
-        tx = Transaction.sweep(privkeys, self.network, to_address, fee)
+        tx = Transaction.sweep(get_pk(), self.network, get_address(), fee)
         self.show_transaction(tx)
 
 
index a3ba598..275cfa5 100644 (file)
@@ -78,6 +78,27 @@ def text_dialog(parent, title, label, ok_label, default=None):
         return unicode(txt.toPlainText())
 
 
+
+
+def address_field(addresses):
+    hbox = QHBoxLayout()
+    address_e = QLineEdit()
+    if addresses:
+        address_e.setText(addresses[0])
+    def func():
+        i = addresses.index(str(address_e.text())) + 1
+        i = i % len(addresses)
+        address_e.setText(addresses[i])
+    button = QPushButton(_('Address'))
+    button.clicked.connect(func)
+    hbox.addWidget(button)
+    hbox.addWidget(address_e)
+    return hbox, address_e
+
+    
+
+
+
 class MyTreeWidget(QTreeWidget):
     def __init__(self, parent):
         QTreeWidget.__init__(self, parent)