URI: 
       tMerge branch 'verify-message' of github.com:wozz/electrum into wozz-verify-message - electrum - Electrum Bitcoin wallet
  HTML git clone https://git.parazyd.org/electrum
   DIR Log
   DIR Files
   DIR Refs
   DIR Submodules
       ---
   DIR commit 37cf6925cf7677b79c673600d460f163b8a1faaf
   DIR parent d160851496ccf196f76fbf8dee063c4cd7cddcdb
  HTML Author: ThomasV <thomasv@gitorious>
       Date:   Sun,  2 Mar 2014 20:26:42 +0100
       
       Merge branch 'verify-message' of github.com:wozz/electrum into wozz-verify-message
       
       Diffstat:
         M gui/qt/main_window.py               |      83 +++++++++++--------------------
       
       1 file changed, 30 insertions(+), 53 deletions(-)
       ---
   DIR diff --git a/gui/qt/main_window.py b/gui/qt/main_window.py
       t@@ -409,6 +409,9 @@ class ElectrumWindow(QMainWindow):
                plugins_labels = tools_menu.addAction(_("&Plugins"))
                plugins_labels.triggered.connect(self.plugins_dialog)
        
       +        verifymessage = tools_menu.addAction(_("&Verify message"))
       +        verifymessage.triggered.connect(self.verify_message)
       +
                tools_menu.addSeparator()
        
                csv_transaction_menu = tools_menu.addMenu(_("&Create transaction"))
       t@@ -1151,7 +1154,7 @@ class ElectrumWindow(QMainWindow):
                    menu.addAction(_("Edit label"), lambda: self.edit_label(True))
                    if self.wallet.seed:
                        menu.addAction(_("Private key"), lambda: self.show_private_key(addr))
       -                menu.addAction(_("Sign message"), lambda: self.sign_message(addr))
       +                menu.addAction(_("Sign message"), lambda: self.sign_message(True,addr))
                    if addr in self.wallet.imported_keys:
                        menu.addAction(_("Remove from wallet"), lambda: self.delete_imported_key(addr))
        
       t@@ -1718,16 +1721,26 @@ class ElectrumWindow(QMainWindow):
                except Exception as e:
                    self.show_message(str(e))
        
       -    def sign_message(self, address):
       -        if not address: return
       +    def do_verify(self, address, message, signature):
       +        message = unicode(message.toPlainText())
       +        message = message.encode('utf-8')
       +        if bitcoin.verify_message(address.text(), str(signature.toPlainText()), message):
       +            self.show_message(_("Signature verified"))
       +        else:
       +            self.show_message(_("Error: wrong signature"))
       +
       +
       +    def sign_message(self, sign, address):
       +        if sign and not address: return
                d = QDialog(self)
                d.setModal(1)
       -        d.setWindowTitle(_('Sign Message'))
       +        if sign:
       +            d.setWindowTitle(_('Sign Message'))
       +        elif not sign:
       +            d.setWindowTitle(_('Verify Message'))
                d.setMinimumSize(410, 290)
        
       -        tab_widget = QTabWidget()
       -        tab = QWidget()
       -        layout = QGridLayout(tab)
       +        layout = QGridLayout(d)
        
                sign_address = QLineEdit()
        
       t@@ -1745,61 +1758,23 @@ class ElectrumWindow(QMainWindow):
                layout.addWidget(sign_signature, 3, 1)
                layout.setRowStretch(3,1)
        
       -
       -        hbox = QHBoxLayout()
       -        b = QPushButton(_("Sign"))
       -        hbox.addWidget(b)
       -        b.clicked.connect(lambda: self.do_sign(sign_address, sign_message, sign_signature))
       -        b = QPushButton(_("Close"))
       -        b.clicked.connect(d.accept)
       -        hbox.addWidget(b)
       -        layout.addLayout(hbox, 4, 1)
       -        tab_widget.addTab(tab, _("Sign"))
       -
       -
       -        tab = QWidget()
       -        layout = QGridLayout(tab)
       -
       -        verify_address = QLineEdit()
       -        layout.addWidget(QLabel(_('Address')), 1, 0)
       -        layout.addWidget(verify_address, 1, 1)
       -
       -        verify_message = QTextEdit()
       -        layout.addWidget(QLabel(_('Message')), 2, 0)
       -        layout.addWidget(verify_message, 2, 1)
       -        layout.setRowStretch(2,3)
       -
       -        verify_signature = QTextEdit()
       -        layout.addWidget(QLabel(_('Signature')), 3, 0)
       -        layout.addWidget(verify_signature, 3, 1)
       -        layout.setRowStretch(3,1)
       -
       -        def do_verify():
       -            message = unicode(verify_message.toPlainText())
       -            message = message.encode('utf-8')
       -            if bitcoin.verify_message(verify_address.text(), str(verify_signature.toPlainText()), message):
       -                self.show_message(_("Signature verified"))
       -            else:
       -                self.show_message(_("Error: wrong signature"))
       -
                hbox = QHBoxLayout()
       -        b = QPushButton(_("Verify"))
       -        b.clicked.connect(do_verify)
       +        if sign:
       +            b = QPushButton(_("Sign"))
       +        elif not sign:
       +            b = QPushButton(_("Verify"))
                hbox.addWidget(b)
       +        if sign:
       +            b.clicked.connect(lambda: self.do_sign(sign_address, sign_message, sign_signature))
       +        elif not sign:
       +            b.clicked.connect(lambda: self.do_verify(sign_address, sign_message, sign_signature))
                b = QPushButton(_("Close"))
                b.clicked.connect(d.accept)
                hbox.addWidget(b)
                layout.addLayout(hbox, 4, 1)
       -        tab_widget.addTab(tab, _("Verify"))
       -
       -        vbox = QVBoxLayout()
       -        vbox.addWidget(tab_widget)
       -        d.setLayout(vbox)
                d.exec_()
        
        
       -
       -
            def question(self, msg):
                return QMessageBox.question(self, _('Message'), msg, QMessageBox.Yes | QMessageBox.No, QMessageBox.No) == QMessageBox.Yes
        
       t@@ -2188,6 +2163,8 @@ class ElectrumWindow(QMainWindow):
                event.accept()
        
        
       +    def verify_message(self):
       +        self.sign_message(False, "")
        
            def plugins_dialog(self):
                from electrum.plugins import plugins