void KstMatrixDefaults::sync() { KstRMatrixList::iterator it; KstRMatrixList rmatrixList; KstRMatrixPtr rmatrix; KST::matrixList.lock().readLock(); rmatrixList = kstObjectSubList<KstMatrix,KstRMatrix>(KST::matrixList); KST::matrixList.lock().unlock(); // // find a non-stdin source... // for (it=rmatrixList.begin(); it!=rmatrixList.end(); ++it) { KstDataSourcePtr dsp; rmatrix = *it; rmatrix->readLock(); dsp = rmatrix->dataSource(); rmatrix->unlock(); if (dsp && !kst_cast<KstStdinSource>(dsp)) { break; } } if (it != rmatrixList.end()) { rmatrix->readLock(); _dataSource = rmatrix->filename(); _xStart = rmatrix->reqXStart(); _yStart = rmatrix->reqYStart(); _xNumSteps = rmatrix->reqXNumSteps(); _yNumSteps = rmatrix->reqYNumSteps(); _skip = rmatrix->skip(); _doAve = rmatrix->doAverage(); _doSkip = rmatrix->doSkip(); rmatrix->unlock(); } }
bool KstMatrixDialog::editSingleRMatrix(KstRMatrixPtr rmp) { KstDataSourcePtr file; QString pField; bool doSkip, doAve; int xStart; int yStart; int xNumSteps; int yNumSteps; int skip; if (_fileNameDirty) { KstDataSourceList::iterator it; // // if there is not an active KstFile, create one... // KST::dataSourceList.lock().writeLock(); // xxx it = KST::dataSourceList.findReusableFileName(_w->_fileName->url()); if (it == KST::dataSourceList.end()) { // xxx file = KstDataSource::loadSource(_w->_fileName->url()); if (!file || !file->isValid()) { KST::dataSourceList.lock().unlock(); QMessageBox::warning(this, QObject::tr("Kst"), QObject::tr("The file could not be opened.")); return false; } if (file->isEmpty()) { KST::dataSourceList.lock().unlock(); QMessageBox::warning(this, QObject::tr("Kst"), QObject::tr("The file does not contain data.")); return false; } KST::dataSourceList.append(file); } else { file = *it; } KST::dataSourceList.lock().unlock(); pField = _w->_field->currentText(); if (!file->isValidMatrix(pField)) { QMessageBox::warning(this, QObject::tr("Kst"), QObject::tr("The requested field is not defined for the requested file.")); file->unlock(); return false; } } else { rmp->readLock(); file = rmp->dataSource(); pField = rmp->field(); rmp->unlock(); } rmp->readLock(); if (_xStartDirty || _xStartCountFromEndDirty) { xStart = _w->_xStartCountFromEnd->isChecked() ? -1 : _w->_xStart->value(); } else { xStart = rmp->reqXStart(); } if (_yStartDirty || _yStartCountFromEndDirty) { yStart = _w->_yStartCountFromEnd->isChecked() ? -1 : _w->_yStart->value(); } else { yStart = rmp->reqYStart(); } if (_xNumStepsDirty || _xNumStepsReadToEndDirty) { xNumSteps = _w->_xNumStepsReadToEnd->isChecked() ? -1 : _w->_xNumSteps->value(); } else { xNumSteps = rmp->reqXNumSteps(); } if (_yNumStepsDirty || _yNumStepsReadToEndDirty) { yNumSteps = _w->_yNumStepsReadToEnd->isChecked() ? -1 : _w->_yNumSteps->value(); } else { yNumSteps = rmp->reqYNumSteps(); } if (_doSkipDirty) { doSkip = _w->_doSkip->isChecked(); } else { doSkip = rmp->doSkip(); } if (_doAveDirty) { doAve = _w->_doAve->isChecked(); } else { doAve = rmp->doAverage(); } if (_skipDirty) { skip = _w->_skip->value(); } else { skip = rmp->skip(); } rmp->unlock(); rmp->writeLock(); rmp->change(file, pField, KstObjectTag(rmp->tag().tag(), rmp->tag().context()), xStart, yStart, xNumSteps, yNumSteps, doAve, doSkip, skip); rmp->unlock(); return true; }
void KstMatrixDialog::fillFieldsForRMatrixEdit() { KstRMatrixPtr rmp; // // first hide/show the correct widgets... // _w->_readFromSource->setChecked(true); _w->_generateGradient->setChecked(false); _w->_dataSourceGroup->show(); _w->_dataRangeGroup->show(); _w->_gradientGroup->hide(); _w->_scalingGroup->hide(); rmp = kst_cast<KstRMatrix>(_dp); if (rmp) { rmp->readLock(); // // fill in the list of fields... // _w->_field->clear(); /* xxx if (_fieldCompletion) { _fieldCompletion->clear(); } */ // // scope for iterator... // { KstDataSourcePtr tf; KstDataSourceList::iterator it; KST::dataSourceList.lock().readLock(); it = KST::dataSourceList.findReusableFileName(rmp->filename()); if (it != KST::dataSourceList.end()) { tf = *it; tf->readLock(); _w->_field->insertItems(0, tf->matrixList()); /* xxx if (_fieldCompletion) { _fieldCompletion->insertItems(tf->matrixList()); } */ tf->unlock(); } else { QStringList list; // xxx list = KstDataSource::matrixListForSource(_w->_fileName->url()); _w->_field->insertItems(0, list); /* xxx if (_fieldCompletion) { _fieldCompletion->insertItems(list); } */ } KST::dataSourceList.lock().unlock(); } _w->_field->setEnabled(_w->_field->count() > 0); _ok->setEnabled(_w->_field->isEnabled()); _w->_field->setItemText(_w->_field->currentIndex(), rmp->field()); // // fill in the other parameters... // // xxx _w->_fileName->setURL(rmp->filename()); _w->_xStart->setValue(rmp->reqXStart()); _w->_yStart->setValue(rmp->reqYStart()); _w->_xNumSteps->setValue(rmp->reqXNumSteps()); _w->_yNumSteps->setValue(rmp->reqYNumSteps()); _w->_xStartCountFromEnd->setChecked(rmp->xCountFromEnd()); _w->_yStartCountFromEnd->setChecked(rmp->yCountFromEnd()); _w->_xNumStepsReadToEnd->setChecked(rmp->xReadToEnd()); _w->_yNumStepsReadToEnd->setChecked(rmp->yReadToEnd()); _w->_doSkip->setChecked(rmp->doSkip()); _w->_skip->setValue(rmp->skip()); _w->_doAve->setChecked(rmp->doAverage()); rmp->unlock(); } }