예제 #1
0
 def qr_input(self):
     from electrum import qrscanner
     try:
         data = qrscanner.scan_barcode(
             SimpleConfig.get_instance().get_video_device())
     except BaseException as e:
         self.show_error(repr(e))
         data = ''
     if not data:
         data = ''
     if self.allow_multi:
         new_text = self.text() + data + '\n'
     else:
         new_text = data
     self.setText(new_text)
     return data
예제 #2
0
    def __init__(self, data, parent=None, title="", show_text=False):
        WindowModalDialog.__init__(self, parent, title)

        vbox = QVBoxLayout()
        qrw = QRCodeWidget(data)
        vbox.addWidget(qrw, 1)
        if show_text:
            text = QTextEdit()
            text.setText(data)
            text.setReadOnly(True)
            vbox.addWidget(text)
        hbox = QHBoxLayout()
        hbox.addStretch(1)

        config = SimpleConfig.get_instance()
        if config:
            filename = os.path.join(config.path, "qrcode.png")

            def print_qr():
                p = qrw.grab()  # FIXME also grabs neutral colored padding
                p.save(filename, 'png')
                self.show_message(_("QR code saved to file") + " " + filename)

            def copy_to_clipboard():
                p = qrw.grab()
                QApplication.clipboard().setPixmap(p)
                self.show_message(_("QR code copied to clipboard"))

            b = QPushButton(_("Copy"))
            hbox.addWidget(b)
            b.clicked.connect(copy_to_clipboard)

            b = QPushButton(_("Save"))
            hbox.addWidget(b)
            b.clicked.connect(print_qr)

        b = QPushButton(_("Close"))
        hbox.addWidget(b)
        b.clicked.connect(self.accept)
        b.setDefault(True)

        vbox.addLayout(hbox)
        self.setLayout(vbox)