another plugin for qrscanner
authorthomasv <thomasv@gitorious>
Sun, 3 Mar 2013 13:49:42 +0000 (14:49 +0100)
committerthomasv <thomasv@gitorious>
Sun, 3 Mar 2013 13:49:42 +0000 (14:49 +0100)
gui/gui_classic.py
gui/qrcodewidget.py
plugins/pointofsale.py
plugins/qrscanner.py [moved from gui/qrscanner.py with 70% similarity]

index 9ef2a07..ff58063 100644 (file)
@@ -42,7 +42,7 @@ from electrum.wallet import format_satoshis
 from electrum.bitcoin import Transaction, is_valid
 from electrum import mnemonic
 
-import bmp, pyqrnative, qrscanner
+import bmp, pyqrnative
 import exchange_rate
 
 from decimal import Decimal
@@ -620,24 +620,7 @@ class ElectrumWindow(QMainWindow):
         self.payto_e = QLineEdit()
         grid.addWidget(QLabel(_('Pay to')), 1, 0)
         grid.addWidget(self.payto_e, 1, 1, 1, 3)
-        
-        def fill_from_qr():
-            qrcode = qrscanner.scan_qr()
-            if 'address' in qrcode:
-                self.payto_e.setText(qrcode['address'])
-            if 'amount' in qrcode:
-                self.amount_e.setText(str(qrcode['amount']))
-            if 'label' in qrcode:
-                self.message_e.setText(qrcode['label'])
-            if 'message' in qrcode:
-                self.message_e.setText("%s (%s)" % (self.message_e.text(), qrcode['message']))
-                
-
-        if qrscanner.is_available():
-            b = QPushButton(_("Scan QR code"))
-            b.clicked.connect(fill_from_qr)
-            grid.addWidget(b, 1, 5)
-    
+            
         grid.addWidget(HelpButton(_('Recipient of the funds.') + '\n\n' + _('You may enter a Bitcoin address, a label from your list of contacts (a list of completions will be proposed), or an alias (email-like address that forwards to a Bitcoin address)')), 1, 4)
 
         completer = QCompleter()
@@ -714,6 +697,7 @@ class ElectrumWindow(QMainWindow):
         self.amount_e.textChanged.connect(lambda: entry_changed(False) )
         self.fee_e.textChanged.connect(lambda: entry_changed(True) )
 
+        self.wallet.run_hook('create_send_tab',(self,grid))
         return w2
 
 
index a4af831..8f964b0 100644 (file)
@@ -3,7 +3,7 @@ from PyQt4.QtCore import *
 import PyQt4.QtCore as QtCore
 import PyQt4.QtGui as QtGui
 
-import bmp, pyqrnative, qrscanner
+import bmp, pyqrnative
 
 
 class QRCodeWidget(QWidget):
index 7191cf4..3b87f8b 100644 (file)
@@ -8,7 +8,7 @@ import PyQt4.QtCore as QtCore
 import PyQt4.QtGui as QtGui
 
 from electrum_gui.qrcodewidget import QRCodeWidget
-from electrum_gui import bmp, pyqrnative, qrscanner
+from electrum_gui import bmp, pyqrnative
 
 from electrum_gui.i18n import _
 
similarity index 70%
rename from gui/qrscanner.py
rename to plugins/qrscanner.py
index c6e2796..a13789e 100644 (file)
@@ -8,6 +8,26 @@ except ImportError:
 
 from urlparse import urlparse, parse_qs
 
+
+def init(wallet):
+    pass
+
+def init_gui(gui):
+    if is_enabled():
+        gui.wallet.set_hook('create_send_tab', create_send_tab)
+    else:
+        gui.wallet.unset_hook('create_send_tab', create_send_tab)
+
+def get_info():
+    return 'QR scans', "QR Scans"
+
+def is_enabled():
+    return is_available()
+
+def toggle(gui):
+    return is_enabled()
+
+
 def is_available():
     if not zbar:
         return False
@@ -62,6 +82,28 @@ def parse_uri(uri):
         
     return result    
 
+
+
+def fill_from_qr(self):
+    qrcode = qrscanner.scan_qr()
+    if 'address' in qrcode:
+        self.payto_e.setText(qrcode['address'])
+    if 'amount' in qrcode:
+        self.amount_e.setText(str(qrcode['amount']))
+    if 'label' in qrcode:
+        self.message_e.setText(qrcode['label'])
+    if 'message' in qrcode:
+        self.message_e.setText("%s (%s)" % (self.message_e.text(), qrcode['message']))
+                
+
+def create_send_tab(gui, grid):
+    if qrscanner.is_available():
+        b = QPushButton(_("Scan QR code"))
+        b.clicked.connect(lambda: fill_from_qr(gui))
+        grid.addWidget(b, 1, 5)
+
+
+
 if __name__ == '__main__':
     # Run some tests