f.close()\r
\r
\r
-\r
+def save_qrcode(qr, filename):\r
+ bitmap = BitMap( 35*8, 35*8 )\r
+ #print len(bitmap.bitarray)\r
+ bitmap.bitarray = []\r
+ k = 33\r
+ for r in range(35):\r
+ tmparray = [ 0 ] * 35*8\r
+\r
+ if 0 < r < 34:\r
+ for c in range(k):\r
+ if qr.isDark(r-1, c):\r
+ tmparray[ (1+c)*8:(2+c)*8] = [1]*8\r
+\r
+ for i in range(8):\r
+ bitmap.bitarray.append( tmparray[:] )\r
+\r
+ bitmap.saveFile( filename )\r
\r
\r
\r
from decimal import Decimal
import mnemonic
-import datetime
+import datetime, re
elif out == "receive":
global receive_addr
receive_addr = select_from_addresses()
+ amount = modal_input('Amount', 'Amount you want receive. ', '', "numberDecimal")
+ if amount:
+ receive_addr = 'bitcoin:%s?amount=%s'%(receive_addr, amount)
+
if not receive_addr:
out = None
code = droid.scanBarcode()
r = code.result
if r:
- addr = r['extras']['SCAN_RESULT']
- if addr:
- droid.fullSetProperty("recipient","text",addr)
+ data = r['extras']['SCAN_RESULT']
+ if data:
+ if re.match('^bitcoin:', data):
+ payto, amount, label, _, _, _, _ = wallet.parse_url(data, None, None)
+ droid.fullSetProperty("recipient", "text",payto)
+ droid.fullSetProperty("amount", "text", amount)
+ droid.fullSetProperty("label", "text", label)
+ else:
+ droid.fullSetProperty("recipient", "text", data)
+
elif event["name"] in menu_commands:
out = event["name"]
# fixme: this is highly inefficient
droid.dialogCreateSpinnerProgress("please wait")
droid.dialogShow()
- import pyqrnative, bmp
- qr = pyqrnative.QRCode(4, pyqrnative.QRErrorCorrectLevel.H)
- qr.addData(addr)
- qr.make()
- k = qr.getModuleCount()
- bitmap = bmp.BitMap( 35*8, 35*8 )
- print len(bitmap.bitarray)
- bitmap.bitarray = []
- assert k == 33
-
- for r in range(35):
- tmparray = [ 0 ] * 35*8
-
- if 0 < r < 34:
- for c in range(k):
- if qr.isDark(r-1, c):
- tmparray[ (1+c)*8:(2+c)*8] = [1]*8
-
- for i in range(8):
- bitmap.bitarray.append( tmparray[:] )
-
- bitmap.saveFile( "/sdcard/sl4a/qrcode.bmp" )
- droid.dialogDismiss()
+ try:
+ import pyqrnative, bmp
+ qr = pyqrnative.QRCode(4, pyqrnative.QRErrorCorrectLevel.L)
+ qr.addData(addr)
+ qr.make()
+ k = qr.getModuleCount()
+ assert k == 33
+ bmp.save_qrcode(qr,"/sdcard/sl4a/qrcode.bmp")
+ finally:
+ droid.dialogDismiss()
class QRCodeWidget(QWidget):
def __init__(self, addr):
- import pyqrnative
super(QRCodeWidget, self).__init__()
- self.addr = addr
self.setGeometry(300, 300, 350, 350)
- self.qr = pyqrnative.QRCode(4, pyqrnative.QRErrorCorrectLevel.H)
+ self.set_addr(addr)
+
+ def set_addr(self, addr):
+ import pyqrnative
+ self.addr = addr
+ self.qr = pyqrnative.QRCode(4, pyqrnative.QRErrorCorrectLevel.L)
self.qr.addData(addr)
self.qr.make()
addr = unicode( i.text(0) )
return addr
- qrButton = EnterButton("QR",lambda: ElectrumWindow.showqrcode(get_addr(l)))
+ qrButton = EnterButton("QR",lambda: self.show_address_qrcode(get_addr(l)))
def copy2clipboard(addr):
self.app.clipboard().setText(addr)
+ ' '.join(mnemonic.mn_encode(seed)) + "\""
QMessageBox.information(parent, 'Seed', msg, 'OK')
- ElectrumWindow.showqrcode(seed)
+ ElectrumWindow.show_seed_qrcode(seed)
@staticmethod
- def showqrcode(address):
+ def show_seed_qrcode(seed):
+ if not seed: return
+ d = QDialog(None)
+ d.setModal(1)
+ d.setWindowTitle(seed)
+ d.setMinimumSize(270, 300)
+ vbox = QVBoxLayout()
+ vbox.addWidget(QRCodeWidget(seed))
+ hbox = QHBoxLayout()
+ hbox.addStretch(1)
+ b = QPushButton("OK")
+ hbox.addWidget(b)
+ b.clicked.connect(d.accept)
+
+ vbox.addLayout(hbox)
+ d.setLayout(vbox)
+ d.exec_()
+
+ def show_address_qrcode(self,address):
if not address: return
d = QDialog(None)
d.setModal(1)
d.setWindowTitle(address)
- d.setMinimumSize(270, 300)
+ d.setMinimumSize(270, 350)
vbox = QVBoxLayout()
- vbox.addWidget(QRCodeWidget(address))
- vbox.addLayout(ok_cancel_buttons(d))
+ qrw = QRCodeWidget(address)
+ vbox.addWidget(qrw)
+
+ hbox = QHBoxLayout()
+ amount_e = QLineEdit()
+ hbox.addWidget(QLabel('Amount'))
+ hbox.addWidget(amount_e)
+ vbox.addLayout(hbox)
+
+ #hbox = QHBoxLayout()
+ #label_e = QLineEdit()
+ #hbox.addWidget(QLabel('Label'))
+ #hbox.addWidget(label_e)
+ #vbox.addLayout(hbox)
+
+ def amount_changed():
+ amount = numbify(amount_e)
+ #label = str( label_e.getText() )
+ if amount is not None:
+ qrw.set_addr('bitcoin:%s?amount=%s'%(address,str( Decimal(amount) /100000000)))
+ else:
+ qrw.set_addr( address )
+ qrw.repaint()
+
+ def do_save():
+ import bmp
+ bmp.save_qrcode(qrw.qr, "qrcode.bmp")
+ self.show_message("QR code saved to file 'qrcode.bmp'")
+
+ amount_e.textChanged.connect( amount_changed )
+
+ hbox = QHBoxLayout()
+ hbox.addStretch(1)
+ b = QPushButton("Save")
+ b.clicked.connect(do_save)
+ hbox.addWidget(b)
+ b = QPushButton("Close")
+ hbox.addWidget(b)
+ b.clicked.connect(d.accept)
+
+ vbox.addLayout(hbox)
d.setLayout(vbox)
d.exec_()