def __init__(self, parent=None): """Instantiate a AddTargets object @param self An AddTargets instance @param parent A QtGui.QWidget parent object """ QtGui.QDialog.__init__(self, parent) self.targets = [] self.ui = Ui_AddTargetsDialog() self.ui.setupUi(self) self.opts = { self.ui.singleRadio: self.ui.singleWidget, self.ui.hostnameRadio: self.ui.hostnameWidget, self.ui.rangeRadio: self.ui.rangeWidget, self.ui.subnetRadio: self.ui.subnetWidget, } self.ipValidator = QtGui.QRegExpValidator( QtCore.QRegExp(r"0*(2(5[0-5]|[0-4]\d)|1?\d{1,2})" + r"(\.0*(2(5[0-5]|[0-4]\d)|1?\d{1,2})){3}"), self ) self.urlValidator = QtGui.QRegExpValidator(QtCore.QRegExp(r"^[\x20-\x7E]*$"), self) self.ui.singleIpLine.setValidator(self.ipValidator) self.ui.fromIPLine.setValidator(self.ipValidator) self.ui.toIPLine.setValidator(self.ipValidator) self.ui.IPLine.setValidator(self.ipValidator) self.ui.netmaskLine.setValidator(self.ipValidator) self.ui.hostnameLine.setValidator(self.urlValidator) self.optClicked()
class AddTargets(QtGui.QDialog): """Creates add targets dialog""" # Implement custom signal to carry IP list ipList = QtCore.pyqtSignal(list, name="ipList") def __init__(self, parent=None): """Instantiate a AddTargets object @param self An AddTargets instance @param parent A QtGui.QWidget parent object """ QtGui.QDialog.__init__(self, parent) self.targets = [] self.ui = Ui_AddTargetsDialog() self.ui.setupUi(self) self.opts = { self.ui.singleRadio: self.ui.singleWidget, self.ui.hostnameRadio: self.ui.hostnameWidget, self.ui.rangeRadio: self.ui.rangeWidget, self.ui.subnetRadio: self.ui.subnetWidget, } self.ipValidator = QtGui.QRegExpValidator( QtCore.QRegExp(r"0*(2(5[0-5]|[0-4]\d)|1?\d{1,2})" + r"(\.0*(2(5[0-5]|[0-4]\d)|1?\d{1,2})){3}"), self ) self.urlValidator = QtGui.QRegExpValidator(QtCore.QRegExp(r"^[\x20-\x7E]*$"), self) self.ui.singleIpLine.setValidator(self.ipValidator) self.ui.fromIPLine.setValidator(self.ipValidator) self.ui.toIPLine.setValidator(self.ipValidator) self.ui.IPLine.setValidator(self.ipValidator) self.ui.netmaskLine.setValidator(self.ipValidator) self.ui.hostnameLine.setValidator(self.urlValidator) self.optClicked() def optClicked(self): """An new option was selected on Dialog then, setEnabled False on others widgets @param self An ExportPage instance """ for i in self.opts: if i.isChecked(): self.opts[i].setEnabled(True) else: self.opts[i].setEnabled(False) self.parseTargets() def accept(self): if self.targets: self.ipList.emit(self.targets) QtGui.QDialog.accept(self) def parseTargets(self): self.targets = [] if self.ui.singleRadio.isChecked(): t = self.ui.singleIpLine.text() if self.ipValidator.validate(t, len(t))[0] == 2: self.targets.append(t) elif self.ui.hostnameRadio.isChecked(): t = self.ui.hostnameLine.text() if self.urlValidator.validate(t, len(t))[0] == 2: self.targets.append(t) elif self.ui.rangeRadio.isChecked(): f = self.ui.fromIPLine.text() t = self.ui.toIPLine.text() if self.ipValidator.validate(f, len(f))[0] == self.ipValidator.validate(t, len(t))[0] == 2: for i in IPRange(f, t): self.targets.append(i) elif self.ui.subnetRadio.isChecked(): i = self.ui.IPLine.text() n = self.ui.netmaskLine.text() if self.ipValidator.validate(i, len(i))[0] == self.ipValidator.validate(n, len(n))[0] == 2: for i in Subnetwork(i, n): self.targets.append(i) if self.targets: self.ui.nextButton.setEnabled(True) else: self.ui.nextButton.setEnabled(False)