예제 #1
0
    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)
예제 #2
0
 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