X-Git-Url: https://git.novaco.in/?a=blobdiff_plain;f=gui%2Fqt%2Fpaytoedit.py;h=8b3e24c3d68357c2c610ddff22c2604a0a6b3014;hb=1bb00ff5af3a7f23f23c92b69cc2ff412731a7f3;hp=35bdfe792b8a94ee3a808f6800bc27b10e57e167;hpb=f4dfec4565af18094e2626f4b0ba174cabf330e1;p=electrum-nvc.git diff --git a/gui/qt/paytoedit.py b/gui/qt/paytoedit.py index 35bdfe7..8b3e24c 100644 --- a/gui/qt/paytoedit.py +++ b/gui/qt/paytoedit.py @@ -28,7 +28,7 @@ RE_ADDRESS = '[1-9A-HJ-NP-Za-km-z]{26,}' RE_ALIAS = '(.*?)\s*\<([1-9A-HJ-NP-Za-km-z]{26,})\>' frozen_style = "QWidget { background-color:none; border:none;}" -normal_style = "QTextEdit { }" +normal_style = "QPlainTextEdit { }" class PayToEdit(QRTextEdit): @@ -39,13 +39,13 @@ class PayToEdit(QRTextEdit): self.document().contentsChanged.connect(self.update_size) self.heightMin = 0 self.heightMax = 150 - self.setMinimumHeight(27) - self.setMaximumHeight(27) self.c = None self.textChanged.connect(self.check_text) self.outputs = [] self.is_pr = False self.scan_f = self.win.pay_from_URI + self.update_size() + self.payto_address = None def lock_amount(self): self.amount_edit.setFrozen(True) @@ -56,6 +56,7 @@ class PayToEdit(QRTextEdit): def setFrozen(self, b): self.setReadOnly(b) self.setStyleSheet(frozen_style if b else normal_style) + self.button.setHidden(b) def setGreen(self): self.is_pr = True @@ -66,10 +67,17 @@ class PayToEdit(QRTextEdit): self.setStyleSheet("QWidget { background-color:#ffcccc;}") def parse_address_and_amount(self, line): - x, y = line.split(',') - address = self.parse_address(x) - amount = self.parse_amount(y) - return address, amount + m = re.match('^OP_RETURN\s+"(.+)"$', line.strip()) + if m: + type = 'op_return' + address = m.group(1) + amount = 0 + else: + x, y = line.split(',') + type = 'address' + address = self.parse_address(x) + amount = self.parse_amount(y) + return type, address, amount def parse_amount(self, x): @@ -108,17 +116,17 @@ class PayToEdit(QRTextEdit): for line in lines: try: - to_address, amount = self.parse_address_and_amount(line) + type, to_address, amount = self.parse_address_and_amount(line) except: continue - outputs.append((to_address, amount)) + outputs.append((type, to_address, amount)) total += amount self.outputs = outputs self.payto_address = None - if total: + if outputs: self.amount_edit.setAmount(total) else: self.amount_edit.setText("") @@ -138,7 +146,7 @@ class PayToEdit(QRTextEdit): except: amount = None - self.outputs = [(self.payto_address, amount)] + self.outputs = [('address', self.payto_address, amount)] return self.outputs[:] @@ -153,9 +161,11 @@ class PayToEdit(QRTextEdit): def update_size(self): docHeight = self.document().size().height() - if self.heightMin <= docHeight <= self.heightMax: - self.setMinimumHeight(docHeight + 2) - self.setMaximumHeight(docHeight + 2) + h = docHeight*17 + 11 + if self.heightMin <= h <= self.heightMax: + self.setMinimumHeight(h) + self.setMaximumHeight(h) + self.verticalScrollBar().hide() def setCompleter(self, completer): @@ -199,11 +209,7 @@ class PayToEdit(QRTextEdit): e.ignore() return - isShortcut = (e.modifiers() and Qt.ControlModifier) and e.key() == Qt.Key_E - - if not self.c or not isShortcut: - QTextEdit.keyPressEvent(self, e) - + QPlainTextEdit.keyPressEvent(self, e) ctrlOrShift = e.modifiers() and (Qt.ControlModifier or Qt.ShiftModifier) if self.c is None or (ctrlOrShift and e.text().isEmpty()): @@ -213,7 +219,7 @@ class PayToEdit(QRTextEdit): hasModifier = (e.modifiers() != Qt.NoModifier) and not ctrlOrShift; completionPrefix = self.textUnderCursor() - if not isShortcut and (hasModifier or e.text().isEmpty() or completionPrefix.length() < 1 or eow.contains(e.text().right(1)) ): + if hasModifier or e.text().isEmpty() or completionPrefix.length() < 1 or eow.contains(e.text().right(1)): self.c.popup().hide() return @@ -225,4 +231,3 @@ class PayToEdit(QRTextEdit): cr.setWidth(self.c.popup().sizeHintForColumn(0) + self.c.popup().verticalScrollBar().sizeHint().width()) self.c.complete(cr) -