def __init__(self, parent=None): # boilerplate QtGui.QDialog.__init__(self, parent) self.ui = Ui_Helper() self.ui.setupUi(self) # load sorting orders into combobox from vrptw import sort_keys self.ui.greedyOrder.addItems(sorted(sort_keys.keys())) # add custom mpl canvas self.plot = Plot(self) # the worker thread (one, for now) self.worker = Worker(self) # the stopwatch placeholder self.watch = '(no watch set!)' QtCore.QObject.connect(self.ui.update, QtCore.SIGNAL("clicked()"), self.plot_savings) QtCore.QObject.connect(self.ui.best, QtCore.SIGNAL("clicked()"), self.plot_best) QtCore.QObject.connect(self.ui.greedy, QtCore.SIGNAL("clicked()"), self.plot_greedy) QtCore.QObject.connect(self.ui.clearPlot, QtCore.SIGNAL("clicked()"), self.clear_plot)
class Helper(QtGui.QDialog): def __init__(self, parent=None): # boilerplate QtGui.QDialog.__init__(self, parent) self.ui = Ui_Helper() self.ui.setupUi(self) # load sorting orders into combobox from vrptw import sort_keys self.ui.greedyOrder.addItems(sorted(sort_keys.keys())) # add custom mpl canvas self.plot = Plot(self) # the worker thread (one, for now) self.worker = Worker(self) # the stopwatch placeholder self.watch = '(no watch set!)' QtCore.QObject.connect(self.ui.update, QtCore.SIGNAL("clicked()"), self.plot_savings) QtCore.QObject.connect(self.ui.best, QtCore.SIGNAL("clicked()"), self.plot_best) QtCore.QObject.connect(self.ui.greedy, QtCore.SIGNAL("clicked()"), self.plot_greedy) QtCore.QObject.connect(self.ui.clearPlot, QtCore.SIGNAL("clicked()"), self.clear_plot) def lock_ui(self): """Called before entering the background operation.""" from stopwatch import StopWatch self.watch = StopWatch() self.ui.update.setEnabled(False) self.ui.best.setEnabled(False) def background_done(self): """Slot to unlock some UI elements after finished background operation.""" self.ui.update.setEnabled(True) self.ui.best.setEnabled(True) self.ui.progressBar.setEnabled(False) self.ui.textEdit.append("Processing finished in %s seconds" % self.watch) print "What now?", self.watch def plot_best(self): self.worker.performOperation(BestOperation(self.tests_chosen())) def plot_savings(self): mi = self.ui.mi.value() waitlimit = self.ui.waitlimit.value() if self.ui.has_waitlimit.checkState() else None mfs = self.ui.mfs.checkState() self.worker.performOperation(SavingsOperation(self.tests_chosen(), mi, waitlimit, mfs)) def plot_greedy(self): order = str(self.ui.greedyOrder.currentText()) self.worker.performOperation(GreedyOperation(self.tests_chosen(), order)) def clear_plot(self): """Slot for clearing the plot.""" self.plot.reset() def init_progress(self, maxProgress): """Slot for resetting the progress bar's value to 0 with a new maximum.""" self.ui.progressBar.setEnabled(True) self.ui.progressBar.setMaximum(maxProgress) self.ui.progressBar.setValue(0) def update_progress(self, progress): """Slot for updating the progress bar.""" print "--- one done ---" self.ui.progressBar.setValue(progress) def tests_chosen(self): """Return the selected pattern in the families list.""" return str(self.ui.families.currentItem().text())