URI: 
       tbroadcast tx in a separate thread - electrum - Electrum Bitcoin wallet
  HTML git clone https://git.parazyd.org/electrum
   DIR Log
   DIR Files
   DIR Refs
   DIR Submodules
       ---
   DIR commit 88d4dab6cb839f37b5758ae7f6cbae9df56e07a7
   DIR parent 60bea77d1ec432fb978803a11cc2f6de1c36c295
  HTML Author: ThomasV <thomasv@gitorious>
       Date:   Sat,  5 Apr 2014 16:52:38 +0200
       
       broadcast tx in a separate thread
       
       Diffstat:
         M gui/qt/main_window.py               |      40 +++++++++++++++++++-------------
       
       1 file changed, 24 insertions(+), 16 deletions(-)
       ---
   DIR diff --git a/gui/qt/main_window.py b/gui/qt/main_window.py
       t@@ -180,6 +180,7 @@ class ElectrumWindow(QMainWindow):
                self.connect(self, QtCore.SIGNAL('banner_signal'), lambda: self.console.showMessage(self.network.banner) )
                self.connect(self, QtCore.SIGNAL('transaction_signal'), lambda: self.notify_transactions() )
                self.connect(self, QtCore.SIGNAL('send_tx2'), self.send_tx2)
       +        self.connect(self, QtCore.SIGNAL('send_tx3'), self.send_tx3)
        
                self.history_list.setFocus(True)
        
       t@@ -265,6 +266,8 @@ class ElectrumWindow(QMainWindow):
                if self.wallet.is_watching_only(): title += ' [%s]' % (_('watching only'))
                self.setWindowTitle( title )
                self.update_wallet()
       +        self.config.set_key('default_wallet_path', self.wallet.storage.path, True)
       +
                # Once GUI has been initialized check if we want to announce something since the callback has been called before the GUI was initialized
                self.notify_transactions()
                self.update_account_selector()
       t@@ -888,6 +891,7 @@ class ElectrumWindow(QMainWindow):
                # call hook to see if plugin needs gui interaction
                run_hook('send_tx', tx)
        
       +        # sign the tx
                def sign_thread():
                    time.sleep(0.1)
                    keypairs = {}
       t@@ -895,8 +899,6 @@ class ElectrumWindow(QMainWindow):
                    self.wallet.sign_transaction(tx, keypairs, password)
                    self.signed_tx_data = (tx, fee, label)
                    self.emit(SIGNAL('send_tx2'))
       -
       -        # sign the tx
                self.tx_wait_dialog = self.waiting_dialog('Signing..')
                threading.Thread(target=sign_thread).start()
        
       t@@ -920,23 +922,29 @@ class ElectrumWindow(QMainWindow):
                if label:
                    self.wallet.set_label(tx.hash(), label)
        
       -        if tx.is_complete:
       +        if not tx.is_complete:
       +            self.show_transaction(tx)
       +            return
        
       -            d = self.waiting_dialog('Broadcasting...')
       -            h = self.wallet.send_tx(tx)
       -            self.wallet.tx_event.wait()
       -            d.accept()
       -            
       -            status, msg = self.wallet.receive_tx( h, tx )
       -            if status:
       -                QMessageBox.information(self, '', _('Payment sent.')+'\n'+msg, _('OK'))
       -                self.do_clear()
       -                self.update_contacts_tab()
       -            else:
       -                QMessageBox.warning(self, _('Error'), msg, _('OK'))
       +        # broadcast the tx
       +        def broadcast_thread():
       +            self.tx_broadcast_result =  self.wallet.sendtx(tx)
       +            self.emit(SIGNAL('send_tx3'))
       +        self.tx_broadcast_dialog = self.waiting_dialog('Broadcasting..')
       +        threading.Thread(target=broadcast_thread).start()
       +
       +
       +    def send_tx3(self):
       +        self.tx_broadcast_dialog.accept()
       +        status, msg = self.tx_broadcast_result
       +        if status:
       +            QMessageBox.information(self, '', _('Payment sent.') + '\n' + msg, _('OK'))
       +            self.do_clear()
       +            self.update_contacts_tab()
                else:
       +            QMessageBox.warning(self, _('Error'), msg, _('OK'))
       +
        
       -            self.show_transaction(tx)