Browse Source

Merge #588: QValidator port number restriction only for ports

3cd54cb Adds JMIntValidator to ensure exact integer range (Adam Gibson)
48f5ddf QValidator port number restriction only for ports (Adam Gibson)
master
Adam Gibson 6 years ago
parent
commit
118c8ac803
No known key found for this signature in database
GPG Key ID: 141001A1AF77F20B
  1. 23
      scripts/joinmarket-qt.py
  2. 28
      scripts/qtsupport.py

23
scripts/joinmarket-qt.py

@ -79,7 +79,7 @@ from jmclient import load_program_config, get_network, update_persist_config,\
from qtsupport import ScheduleWizard, TumbleRestartWizard, config_tips,\
config_types, QtHandler, XStream, Buttons, OkButton, CancelButton,\
PasswordDialog, MyTreeWidget, JMQtMessageBox, BLUE_FG,\
donation_more_message, BitcoinAmountEdit
donation_more_message, BitcoinAmountEdit, JMIntValidator
from twisted.internet import task
@ -265,21 +265,28 @@ class SettingsTab(QDialog):
if name in config_types:
t = config_types[name]
if t == bool:
qt = QCheckBox()
sf = QCheckBox()
if val == 'testnet' or val.lower() == 'true':
qt.setChecked(True)
sf.setChecked(True)
elif t == 'amount':
qt = BitcoinAmountEdit(val)
sf = BitcoinAmountEdit(val)
elif not t:
continue
else:
qt = QLineEdit(val)
sf = QLineEdit(val)
if t == int:
qt.setValidator(QIntValidator(0, 65535))
if name in ["port", "rpc_port", "socks5_port",
"daemon_port"]:
sf.setValidator(JMIntValidator(1, 65535))
elif name == "tx_fees":
# must account for both tx_fees settings type,
# and we set upper limit well above default absurd
# check just in case a high value is needed:
sf.setValidator(JMIntValidator(1, 1000000))
else:
qt = QLineEdit(val)
sf = QLineEdit(val)
label = 'Testnet' if name == 'network' else name
results.append((QLabel(label), qt))
results.append((QLabel(label), sf))
return results
class SpendStateMgr(object):

28
scripts/qtsupport.py

@ -522,6 +522,22 @@ class MyTreeWidget(QTreeWidget):
# lambda: checkAddress(self, wdgts[0][1].text()))
# self.setLayout(layout)
class JMIntValidator(QIntValidator):
def __init__(self, minval, maxval):
super().__init__(minval, maxval)
self.minval = minval
self.maxval = maxval
self.allowed = set(string.digits)
def validate(self, arg__1, arg__2):
if not arg__1:
return QValidator.Intermediate
if not set(arg__1) <= self.allowed:
return QValidator.Invalid
# above guarantees integer
if not (int(arg__1) <= self.maxval and int(arg__1) >= self.minval):
return QValidator.Invalid
return super().validate(arg__1, arg__2)
class BitcoinAmountBTCValidator(QDoubleValidator):
@ -540,20 +556,10 @@ class BitcoinAmountBTCValidator(QDoubleValidator):
return super().validate(arg__1, arg__2)
class BitcoinAmountSatValidator(QIntValidator):
class BitcoinAmountSatValidator(JMIntValidator):
def __init__(self):
super().__init__(0, 2147483647)
self.setLocale(QtCore.QLocale.c())
self.allowed = set(string.digits)
def validate(self, arg__1, arg__2):
if not arg__1:
return QValidator.Intermediate
if not set(arg__1) <= self.allowed:
return QValidator.Invalid
return super().validate(arg__1, arg__2)
class BitcoinAmountEdit(QWidget):

Loading…
Cancel
Save