def __init__(self, parent=None): QtWidgets.QWidget.__init__(self, parent) super(MoxaSetupForm, self).__init__(parent) self.setupUi(self) self.lock = QtCore.QReadWriteLock() self.MoxaSetupThread = MoxaSetupThread(self.lock, self) #self.MoxaSetupThread.connect( SIGNAL('setpBsetup'), self._pBsetup) self._initActions() # setup button actions
def __init__(self, parent=None): QtWidgets.QWidget.__init__(self, parent) super(MoxaSetupForm, self).__init__(parent) self.setupUi(self) self.setWindowState(QtCore.Qt.WindowMaximized) self.setWindowFlags(QtCore.Qt.FramelessWindowHint) self.lock = QtCore.QReadWriteLock() self.MoxaSetupThread = MoxaSetupThread(self.lock, self) self._initActions() # setup button actions
def __init__(self, parent=None): QtWidgets.QWidget.__init__(self, parent) super(MoxaSetupForm, self).__init__(parent) # titleBarHeight = self.style().pixelMetric(QtWidgets.QStyle.PM_TitleBarHeight, QtWidgets.QStyleOptionTitleBar(), self) self.setupUi(self) #self.showMaximized() self.setWindowState(QtCore.Qt.WindowMaximized) self.setWindowFlags(QtCore.Qt.FramelessWindowHint) self.lock = QtCore.QReadWriteLock() self.MoxaSetupThread = MoxaSetupThread(self.lock, self) #geometry = app.desktop().screenGeometry() #geometry.setHeight(geometry.height()- titleBarHeight ) #self.setGeometry(geometry) self._initActions() # setup button actions
def start(self, table_name, sql_insert_queue, sql_insert_mutex, sql_insert_condition): # table_name = "dfdfd" # # sql_insert_queue = Queue.Queue() # sql_insert_mutex = QtCore.QMutex() # sql_insert_condition = QtCore.QWaitCondition() self.rw_lock = QtCore.QReadWriteLock() mftsize = (os.path.getsize(self.options.filename)) / 1024 self.mftsize = mftsize filename = self.options.filename self.mft_seqs_flag_list = [ 0 ] * self.mftsize # 0 empty, 1 parsering, 2 done. self.mft = {} self.thread_no = max(1, QtCore.QThread.idealThreadCount()) self.thread_no = 10 # 1'26'' self.thread_no = 1 # 1'12'' printself.thread_no self.thread_pool = [ MftWorkerThread(self.mft, self.mft_seqs_flag_list, mftsize, filename, self.rw_lock, sql_insert_queue, sql_insert_mutex, sql_insert_condition, table_name, self.options, parent=self.parent) for _ in range(self.thread_no) ] for thread in self.thread_pool: # thread.add_row_to_model_SIGNAL.connect(self.target_slot) # thread.update_progress_SIGNAL.connect(self.update_progress_slot) thread.start()
def __init__(self): QtCore.QObject.__init__(self) self.__lock = QtCore.QReadWriteLock()
def __init__(self): super().__init__() self.__lock = QtCore.QReadWriteLock()
class DataModel(QtCore.QObject): """the data model emits signals when source/time position has changed """ _dataSourceChanged = QtCore.pyqtSignal() _dataPosChanged = QtCore.pyqtSignal(int) _rwLock = QtCore.QReadWriteLock() def __init__(self, dataContainer=None, prefetchSize=0): assert prefetchSize >= 0 super(DataModel, self).__init__() self.dataLoadThread = DataLoadThread(self._rwLock) self._dataSourceChanged.connect(self.dataSourceChanged) self._dataPosChanged.connect(self.dataPosChanged) if dataContainer: self.setContainer(dataContainer, prefetchSize) @classmethod def fromPath(self, fName, prefetchSize=0): d = DataModel() d.loadFromPath(fName, prefetchSize) return d def setContainer(self, dataContainer=None, prefetchSize=0): self.dataContainer = dataContainer self.prefetchSize = prefetchSize self.nset = [0] self.data = defaultdict(lambda: None) if self.dataContainer: self.stopDataLoadThread() self.dataLoadThread.load(self.nset, self.data, self.dataContainer) self.dataLoadThread.start(priority=QtCore.QThread.LowPriority) self._dataSourceChanged.emit() self.setPos(0) def __repr__(self): return "DataModel: %s \t %s" % (self.dataContainer.name, self.size()) def dataSourceChanged(self): logger.debug("data source changed:\n%s", self) def dataPosChanged(self, pos): logger.debug("data position changed to %i", pos) def stopDataLoadThread(self): self.dataLoadThread.stopped = True def prefetch(self, pos): self._rwLock.lockForWrite() self.nset[:] = self.neighborhood(pos) self._rwLock.unlock() def sizeT(self): if self.dataContainer: return self.dataContainer.sizeT() def size(self): if self.dataContainer: return self.dataContainer.size() def name(self): if self.dataContainer: return self.dataContainer.name def stackUnits(self): if self.dataContainer: return self.dataContainer.stackUnits def setPos(self, pos): if pos < 0 or pos >= self.sizeT(): raise IndexError("setPos(pos): %i outside of [0,%i]!" % (pos, self.sizeT() - 1)) return if not hasattr(self, "pos") or self.pos != pos: self.pos = pos self._dataPosChanged.emit(pos) self.prefetch(self.pos) def __getitem__(self, pos): # self._rwLock.lockForRead() if not hasattr(self, "data"): print( "something is wrong in datamodel as its lacking a 'data' atttribute!" ) return None # switching of the prefetched version for now... # as for some instances there seems to be a race condition still self._rwLock.lockForWrite() if pos not in self.data: newdata = self.dataContainer[pos] self.data[pos] = newdata else: newdata = self.data[pos] self._rwLock.unlock() self.prefetch(pos) return newdata def neighborhood(self, pos): # FIXME mod stackSize! return np.arange(pos, pos + self.prefetchSize + 1) % self.sizeT() def loadFromPath(self, fName, prefetchSize=0): if isinstance(fName, (tuple, list)): if re.match(".*\.(tif|tiff)", fName[0]): self.setContainer(TiffMultipleFiles(fName), prefetchSize) elif re.match(".*\.(raw)", fName[0]): self.setContainer(RawMultipleFiles(fName), prefetchSize=0) elif re.match(".*\.(tif|tiff)", fName): self.setContainer(TiffData(fName), prefetchSize=0) elif re.match(".*\.(raw)", fName): self.setContainer(RawData(fName), prefetchSize=0) elif re.match(".*\.(png|jpg|bmp)", fName): self.setContainer(Img2dData(fName), prefetchSize=0) # elif re.match(".*\.h5",fName): # self.setContainer(HDF5Data(fName),prefetchSize = 0) elif re.match(".*\.czi", fName): self.setContainer(CZIData(fName), prefetchSize=0) elif os.path.isdir(fName): if os.path.exists(os.path.join(fName, "metadata.txt")): self.setContainer(SpimData(fName), prefetchSize) elif os.path.exists(os.path.join(fName, "default.index.txt")): self.setContainer(XwingData(fName), prefetchSize) else: self.setContainer(TiffFolderData(fName), prefetchSize=prefetchSize)