Newer
Older
from __future__ import (absolute_import, division, print_function)
from PyQt4.QtCore import QThread
from PyQt4 import QtCore
class ThreadModel(QThread):
"""
A wrapper to allow threading with
the MaxEnt models.
"""
exceptionSignal = QtCore.pyqtSignal(object)
QThread.__init__(self)
def __del__(self):
self.wait()
def run(self):
self.model.execute()
self.model.output()
except KeyboardInterrupt:
pass
except Exception as error:
if self.user_cancel:
print("User ended job")
else:
self.sendSignal(error)
def sendSignal(self, error):
self.exceptionSignal.emit(error)
def join(self):
if self.exception is not None:
raise self.exception
def setInputs(self, inputs, runName):
self.model.setInputs(inputs, runName)
def threadWrapperSetUp(self, startSlot, endSlot):
self.started.connect(startSlot)
self.finished.connect(endSlot)
self.exceptionSignal.connect(message_box.warning)
def threadWrapperTearDown(self, startSlot, endSlot):
self.started.disconnect(startSlot)
self.finished.disconnect(endSlot)
self.exceptionSignal.disconnect(message_box.warning)