void KstMatrixDefaults::sync() { KST::matrixList.lock().readLock(); KstRMatrixList rmatrixList = kstObjectSubList<KstMatrix,KstRMatrix>(KST::matrixList); KST::matrixList.lock().unlock(); int j = rmatrixList.count() - 1; // Find a non-stdin source while (j >= 0) { rmatrixList[j]->readLock(); KstDataSourcePtr dsp = rmatrixList[j]->dataSource(); rmatrixList[j]->unlock(); if (dsp && !kst_cast<KstStdinSource>(dsp)) { break; } --j; } if (j >= 0) { rmatrixList[j]->readLock(); // get the settings _dataSource = rmatrixList[j]->filename(); _xStart = rmatrixList[j]->reqXStart(); _yStart = rmatrixList[j]->reqYStart(); _xNumSteps = rmatrixList[j]->reqXNumSteps(); _yNumSteps = rmatrixList[j]->reqYNumSteps(); _skip = rmatrixList[j]->skip(); _doAve = rmatrixList[j]->doAverage(); _doSkip = rmatrixList[j]->doSkip(); rmatrixList[j]->unlock(); } }
void KstChangeFileDialog::updateChangeFileDialog() { KstRVectorList rvl = kstObjectSubList<KstVector,KstRVector>(KST::vectorList); KstRMatrixList rml = kstObjectSubList<KstMatrix,KstRMatrix>(KST::matrixList); QMap<QString, QString> filesUsed; int i; // clear list ChangeFileCurveList->clear(); // first add vectors for (i = 0; i < (int)rvl.count(); i++) { rvl[i]->readLock(); ChangeFileCurveList->insertItem(rvl[i]->tag().displayString()); filesUsed.insert(rvl[i]->filename(), rvl[i]->filename()); rvl[i]->unlock(); } // then add matrices for (i = 0; i < (int)rml.count(); i++) { rml[i]->readLock(); ChangeFileCurveList->insertItem(rml[i]->tag().displayString()); filesUsed.insert(rml[i]->filename(), rml[i]->filename()); rml[i]->unlock(); } QString currentFile = _files->currentText(); _files->clear(); KstReadLocker ml(&KST::dataSourceList.lock()); for (KstDataSourceList::Iterator it = KST::dataSourceList.begin(); it != KST::dataSourceList.end(); ++it) { if (filesUsed.contains((*it)->fileName())) { _files->insertItem((*it)->fileName()); } } if (_files->contains(currentFile)) { _files->setCurrentText(currentFile); } _allFromFile->setEnabled(_files->count() > 0); _files->setEnabled(_files->count() > 0); if (_first) { _dataFile->setURL(KST::vectorDefaults.dataSource()); _first = false; } }