def __init__(self, parent=None): # needs to be defined before the base class is initialized or the # event filter won't work self._treePopupWidget = None super(XOrbRecordBox, self).__init__(parent) # define custom properties self._currentRecord = None # only used while loading self._changedRecord = -1 self._tableTypeName = '' self._tableLookupIndex = '' self._baseHints = ('', '') self._tableType = None self._order = None self._query = None self._iconMapper = None self._labelMapper = str self._required = True self._loaded = False self._showTreePopup = False self._autoInitialize = False self._threadEnabled = True self._specifiedColumns = None self._specifiedColumnsOnly = False # create threading options self._worker = XOrbLookupWorker() self._workerThread = QThread() self._worker.moveToThread(self._workerThread) self._worker.setBatched(False) self._workerThread.start() # create connections self.loadRequested.connect(self._worker.loadRecords) self.lineEdit().textEntered.connect(self.assignCurrentRecord) self.lineEdit().editingFinished.connect(self.emitCurrentRecordEdited) self.lineEdit().returnPressed.connect(self.emitCurrentRecordEdited) self._worker.loadingStarted.connect(self.markLoadingStarted) self._worker.loadingFinished.connect(self.markLoadingFinished) self._worker.loadedRecords.connect(self.addRecordsFromThread) self.currentIndexChanged.connect(self.emitCurrentRecordChanged) QApplication.instance().aboutToQuit.connect(self.__cleanupWorker)
def worker(self): """ Returns the worker object for loading records for this record box. :return <XOrbLookupWorker> """ if self._worker is None: self._worker = XOrbLookupWorker(self.isThreadEnabled()) self._worker.setBatchSize(self._batchSize) self._worker.setBatched(not self.isThreadEnabled()) # connect the worker self.loadRequested.connect(self._worker.loadRecords) self._worker.loadingStarted.connect(self.markLoadingStarted) self._worker.loadingFinished.connect(self.markLoadingFinished) self._worker.loadedRecords.connect(self.addRecordsFromThread) return self._worker