def on_pbnStartModel_released(self): if self.running == True and self.paused == False: # Take care of pausing a run self.paused = True self.timer.stop() self.runThread.pause() self.pbnStartModel.setText(QString("Resume Estimation...")) elif self.running == True and self.paused == True: # Need to resume a paused run self.paused = False self.timer.start(1000) self.runThread.resume() self.pbnStartModel.setText(QString("Pause Estimation...")) elif self.running == False: self.logFileKey = 0 # Update the XMLConfig self.manager.project.update_xml_config() # Fire up a new thread and run the estimation # References to the GUI elements for status for this run... self.progressBar = self.runProgressBar self.statusLabel = self.runStatusLabel self.pbnStartModel.setText(QString("Pause Estimation...")) self.progressBar.setValue(0) self.statusLabel.setText(QString("Estimation initializing...")) self.runThread = RunEstimationThread(get_mainwindow_instance(), self) # Use this signal from the thread if it is capable of producing its own status signal QObject.connect(self.runThread, SIGNAL("estimationFinished(PyQt_PyObject)"), self.runFinishedFromThread) QObject.connect(self.runThread, SIGNAL("estimationError(PyQt_PyObject)"), self.runErrorFromThread) # Use this timer to call a function in the thread to check status if the thread is unable # to produce its own signal above self.timer = QTimer() QObject.connect(self.timer, SIGNAL("timeout()"), self.runStatusFromThread) self.timer.start(1000) self.running = True self.paused = False self.runThread.start() else: print "Unexpected state in the estimation run..."