def __init__(self, parent=None): """Instantiate a ScanTargets object @param self A ScanTargets instance @param parent A QtGui.QWidget parent object """ QtGui.QDialog.__init__(self, parent) self.ui = Ui_ScanTargetsDialog() self.ui.setupUi(self) self.makeMenu() self.threads = [] self.total = 0.0 self.finished = 0.0
class ScanTargets(QtGui.QDialog): """Creates scan targets dialog""" # Implement custom signal to carry IP list ipDict = QtCore.pyqtSignal(dict, name="ipDict") def __init__(self, parent=None): """Instantiate a ScanTargets object @param self A ScanTargets instance @param parent A QtGui.QWidget parent object """ QtGui.QDialog.__init__(self, parent) self.ui = Ui_ScanTargetsDialog() self.ui.setupUi(self) self.makeMenu() self.threads = [] self.total = 0.0 self.finished = 0.0 def makeMenu(self): self.menu = QtGui.QMenu(self.ui.selectButton) self.menu.addAction(self.tr("Select All"))\ .triggered.connect(self.selectAll) self.menu.addAction(self.tr("Select Online"))\ .triggered.connect(self.selectOnline) self.menu.addAction(self.tr("Select None"))\ .triggered.connect(self.selectNone) self.menu.addSeparator() self.menu.addAction(self.tr("Invert Selection"))\ .triggered.connect(self.invertSelection) self.ui.selectButton.setMenu(self.menu) def scan(self, targets): self.ui.progressBar.setValue(0) self.finished = 0 self.total = len(targets) for i in targets: T = ThreadedScan(i, parent=self.ui.targetsTree) self.threads.append(T) T.finished.connect(self.increaseProgress) T.start() def rescan(self): self.ui.progressBar.setValue(0) self.finished = 0 for i in self.threads: i.setSelected(False) i.start() def increaseProgress(self): self.finished += 1 v = int(round(100.0*(self.finished/self.total))) self.ui.progressBar.setValue(v) def accept(self): targets = {} for i in self.threads: if i.isSelected(): targets[i.address] = i.online self.ipDict.emit(targets) QtGui.QDialog.accept(self) def show(self, targets): self.total = len(targets) if self.isVisible(): return self.scan(targets) QtGui.QWidget.show(self) def selectAll(self): for i in self.threads: i.setSelected(True) def selectNone(self): for i in self.threads: i.setSelected(False) def selectOnline(self): for i in self.threads: if i.online: i.setSelected(True) else: i.setSelected(False) def invertSelection(self): for i in self.threads: i.setSelected(not i.isSelected())