本文整理汇总了C++中KstDataSourcePtr::isEmpty方法的典型用法代码示例。如果您正苦于以下问题:C++ KstDataSourcePtr::isEmpty方法的具体用法?C++ KstDataSourcePtr::isEmpty怎么用?C++ KstDataSourcePtr::isEmpty使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类KstDataSourcePtr
的用法示例。
在下文中一共展示了KstDataSourcePtr::isEmpty方法的14个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: loadMatrix
QString KstIfaceImpl::loadMatrix(const QString& name, const QString& file, const QString& field,
int xStart, int yStart, int xNumSteps, int yNumSteps,
int skipFrames, bool boxcarFilter) {
KstDataSourcePtr src;
/* generate or find the kstfile */
KST::dataSourceList.lock().writeLock();
KstDataSourceList::Iterator it = KST::dataSourceList.findReusableFileName(file);
if (it == KST::dataSourceList.end()) {
src = KstDataSource::loadSource(file);
if (!src || !src->isValid()) {
KST::dataSourceList.lock().unlock();
return QString::null;
}
if (src->isEmpty()) {
KST::dataSourceList.lock().unlock();
return QString::null;
}
KST::dataSourceList.append(src);
} else {
src = *it;
}
src->writeLock();
KST::dataSourceList.lock().unlock();
// make sure field is valid
if (!src->isValidMatrix(field)) {
src->unlock();
return QString::null;
}
// make sure name is unique, else generate a unique one
KST::matrixList.lock().readLock();
QString matrixName;
if (name.isEmpty()) {
matrixName = "M" + QString::number(KST::matrixList.count() + 1);
} else {
matrixName = name;
}
while (KstData::self()->matrixTagNameNotUnique(matrixName, false)) {
matrixName = "M" + QString::number(KST::matrixList.count() + 1);
}
KST::matrixList.lock().unlock();
KstMatrixPtr p = new KstRMatrix(src, field, matrixName, xStart, yStart, xNumSteps, yNumSteps,
boxcarFilter, skipFrames > 0, skipFrames);
KST::addMatrixToList(p);
src->unlock();
if (p) {
_doc->forceUpdate();
_doc->setModified();
return p->tagName();
}
return QString::null;
}
示例2: empty
KJS::Value KstBindDataSource::empty(KJS::ExecState *exec) const {
Q_UNUSED(exec)
KstDataSourcePtr s = makeSource(_d);
if (s) {
KstReadLocker rl(s);
return KJS::Boolean(s->isEmpty());
}
return KJS::Boolean(false);
}
示例3: changeDataFile
bool KstIfaceImpl::changeDataFile(const QString& vector, const QString& fileName, bool update) {
KST::vectorList.lock().readLock();
KstRVectorPtr rvp = kst_cast<KstRVector>(*KST::vectorList.findTag(vector));
KST::vectorList.lock().unlock();
if (!rvp) {
return false;
}
KST::dataSourceList.lock().writeLock();
KstDataSourceList::Iterator it = KST::dataSourceList.findReusableFileName(fileName);
KstDataSourcePtr file;
QString invalidSources;
if (it == KST::dataSourceList.end()) {
file = KstDataSource::loadSource(fileName);
if (!file || !file->isValid() || file->isEmpty()) {
KST::dataSourceList.lock().unlock();
return false;
}
KST::dataSourceList.append(file);
} else {
file = *it;
}
KST::dataSourceList.lock().unlock();
rvp->writeLock();
file->writeLock();
if (!file->isValidField(vector)) {
file->unlock();
rvp->unlock();
return false;
}
rvp->changeFile(file);
file->unlock();
bool rc = rvp->isValid();
rvp->unlock();
if (update) {
KstApp::inst()->forceUpdate();
}
return rc;
}
示例4: while
const QString& KstIfaceImpl::loadVector(const QString& file, const QString& field) {
KstDataSourcePtr src;
/* generate or find the kstfile */
KST::dataSourceList.lock().writeLock();
KstDataSourceList::Iterator it = KST::dataSourceList.findReusableFileName(file);
if (it == KST::dataSourceList.end()) {
src = KstDataSource::loadSource(file);
if (!src || !src->isValid()) {
KST::dataSourceList.lock().unlock();
return QString::null;
}
if (src->isEmpty()) {
KST::dataSourceList.lock().unlock();
return QString::null;
}
KST::dataSourceList.append(src);
} else {
src = *it;
}
src->writeLock();
KST::dataSourceList.lock().unlock();
KST::vectorList.lock().readLock();
QString vname = "V" + QString::number(KST::vectorList.count() + 1);
while (KstData::self()->vectorTagNameNotUnique(vname, false)) {
vname = "V" + QString::number(KST::vectorList.count() + 1);
}
KST::vectorList.lock().unlock();
KstVectorPtr p = new KstRVector(src, field, vname, 0, -1, 0, false, false);
KST::addVectorToList(p);
src->unlock();
if (p) {
_doc->forceUpdate();
_doc->setModified();
return p->tagName();
}
return QString::null;
}
示例5: editSingleRMatrix
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();
//.........这里部分代码省略.........
示例6: new_IRMatrix
bool KstMatrixDialog::new_IRMatrix() {
KstDataSourcePtr file;
KstRMatrixPtr matrix;
KstDataSourceList::iterator it;
QString pField;
QString tagName;
bool doSkip;
bool doAve;
int xStart = _w->_xStartCountFromEnd->isChecked() ? -1 : _w->_xStart->value();
int yStart = _w->_yStartCountFromEnd->isChecked() ? -1 : _w->_yStart->value();
int xNumSteps = _w->_xNumStepsReadToEnd->isChecked() ? -1 : _w->_xNumSteps->value();
int yNumSteps = _w->_yNumStepsReadToEnd->isChecked() ? -1 : _w->_yNumSteps->value();
int skip;
//
// create a unique name...
//
tagName = (_tagName->text() == "<New_Matrix>") ? KST::suggestMatrixName(_w->_field->currentText()) : _tagName->text();
if (KstData::self()->matrixTagNameNotUnique(tagName)) {
_tagName->setFocus();
return false;
}
//
// 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 matrix is not defined for the requested file."));
file->unlock();
return false;
}
doSkip = _w->_doSkip->isChecked();
doAve = _w->_doAve->isChecked();
skip = _w->_skip->value();
matrix = new KstRMatrix(file, pField, KstObjectTag(tagName, file->tag(), false),
xStart, yStart, xNumSteps, yNumSteps, doAve, doSkip, skip);
emit matrixCreated(KstMatrixPtr(matrix));
matrix = 0L; // drop the reference
emit modified();
return true;
}
示例7: applyFileChange
bool KstChangeFileDialog::applyFileChange() {
KstDataSourcePtr file;
KST::dataSourceList.lock().writeLock();
KstDataSourceList::Iterator it = KST::dataSourceList.findReusableFileName(_dataFile->url());
QString invalidSources;
int invalid = 0;
if (it == KST::dataSourceList.end()) {
file = KstDataSource::loadSource(_dataFile->url());
if (!file || !file->isValid()) {
KST::dataSourceList.lock().unlock();
QMessageBox::warning(this, tr("Kst"), tr("The file could not be loaded."));
return false;
}
if (file->isEmpty()) {
KST::dataSourceList.lock().unlock();
QMessageBox::warning(this, tr("Kst"), tr("The file does not contain data."));
return false;
}
KST::dataSourceList.append(file);
} else {
file = *it;
}
KST::dataSourceList.lock().unlock();
KstApp *app = KstApp::inst();
KstRVectorList rvl = kstObjectSubList<KstVector,KstRVector>(KST::vectorList);
KstRMatrixList rml = kstObjectSubList<KstMatrix,KstRMatrix>(KST::matrixList);
int selected = 0;
int handled = 0;
int count = (int)ChangeFileCurveList->count();
for (int i = 0; i < count; i++) {
if (ChangeFileCurveList->isSelected(i)) {
++selected;
}
}
// a map to keep track of which objects have been duplicated, and mapping
// old object -> new object
KstDataObjectDataObjectMap duplicatedMap;
QMap<KstVectorPtr, KstVectorPtr> duplicatedVectors;
QMap<KstMatrixPtr, KstMatrixPtr> duplicatedMatrices;
KstDataSourceList oldSources;
// go through the vectors
for (int i = 0; i < (int)rvl.count(); i++) {
if (ChangeFileCurveList->isSelected(i)) {
KstRVectorPtr vector = rvl[i];
vector->writeLock();
file->readLock();
bool valid = file->isValidField(vector->field());
file->unlock();
if (!valid) {
if (invalid > 0) {
invalidSources = tr("%1, %2").arg(invalidSources).arg(vector->field());
} else {
invalidSources = vector->field();
}
++invalid;
} else {
if (_duplicateSelected->isChecked()) {
// block vector updates until vector is setup properly
KST::vectorList.lock().writeLock();
// create a new vector
KstRVectorPtr newVector = vector->makeDuplicate();
if (!oldSources.contains(newVector->dataSource())) {
oldSources << newVector->dataSource();
}
newVector->changeFile(file);
KST::vectorList.lock().unlock();
// duplicate dependents
if (_duplicateDependents->isChecked()) {
duplicatedVectors.insert(KstVectorPtr(vector), KstVectorPtr(newVector));
KST::duplicateDependents(KstVectorPtr(vector), duplicatedMap, duplicatedVectors);
}
} else {
if (!oldSources.contains(vector->dataSource())) {
oldSources << vector->dataSource();
}
vector->changeFile(file);
}
}
vector->unlock();
app->slotUpdateProgress(selected, ++handled, tr("Updating vectors..."));
}
}
// go through the matrices
for (int i = (int)rvl.count(); i < (int)ChangeFileCurveList->count(); i++) {
if (ChangeFileCurveList->isSelected(i)) {
KstRMatrixPtr matrix = rml[i-rvl.count()];
matrix->writeLock();
file->readLock();
bool valid = file->isValidMatrix(matrix->field());
file->unlock();
//.........这里部分代码省略.........
示例8: applyFileChange
bool KstChangeFileDialogI::applyFileChange() {
KstDataSourcePtr file;
KST::dataSourceList.lock().writeLock();
KstDataSourceList::Iterator it = KST::dataSourceList.findReusableFileName(_dataFile->url());
QString invalidSources;
int invalid = 0;
if (it == KST::dataSourceList.end()) {
file = KstDataSource::loadSource(_dataFile->url());
if (!file || !file->isValid()) {
KST::dataSourceList.lock().unlock();
KMessageBox::sorry(this, i18n("The file could not be loaded."));
return false;
}
if (file->isEmpty()) {
KST::dataSourceList.lock().unlock();
KMessageBox::sorry(this, i18n("The file does not contain data."));
return false;
}
KST::dataSourceList.append(file);
} else {
file = *it;
}
KST::dataSourceList.lock().unlock();
KstApp *app = KstApp::inst();
KstRVectorList rvl = kstObjectSubList<KstVector,KstRVector>(KST::vectorList);
KstRMatrixList rml = kstObjectSubList<KstMatrix,KstRMatrix>(KST::matrixList);
int selected = 0;
int handled = 0;
int count = (int)ChangeFileCurveList->count();
for (int i = 0; i < count; i++) {
if (ChangeFileCurveList->isSelected(i)) {
++selected;
}
}
// a map to keep track of which objects have been duplicated, and mapping
// old object -> new object
KstDataObjectDataObjectMap duplicatedMap;
QMap<KstVectorPtr, KstVectorPtr> duplicatedVectors;
QMap<KstMatrixPtr, KstMatrixPtr> duplicatedMatrices;
KstDataSourceList oldSources;
// go through the vectors
for (int i = 0; i < (int)rvl.count(); i++) {
if (ChangeFileCurveList->isSelected(i)) {
KstRVectorPtr vector = rvl[i];
vector->writeLock();
file->readLock();
bool valid = file->isValidField(vector->field());
file->unlock();
if (!valid) {
if (invalid > 0) {
// FIXME: invalid list construction for i18n
invalidSources = i18n("%1, %2").arg(invalidSources).arg(vector->field());
} else {
invalidSources = vector->field();
}
++invalid;
} else {
if (_duplicateSelected->isChecked()) {
// block vector updates until vector is setup properly
KST::vectorList.lock().writeLock();
// create a new vector
KstRVectorPtr newVector = vector->makeDuplicate();
if (!oldSources.contains(newVector->dataSource())) {
oldSources << newVector->dataSource();
}
newVector->changeFile(file);
KST::vectorList.lock().unlock();
// duplicate dependents
if (_duplicateDependents->isChecked()) {
duplicatedVectors.insert(KstVectorPtr(vector), KstVectorPtr(newVector));
KST::duplicateDependents(KstVectorPtr(vector), duplicatedMap, duplicatedVectors);
}
} else {
if (!oldSources.contains(vector->dataSource())) {
oldSources << vector->dataSource();
}
vector->changeFile(file);
}
}
vector->unlock();
app->slotUpdateProgress(selected, ++handled, i18n("Updating vectors..."));
}
}
// go through the matrices
for (int i = (int)rvl.count(); i < (int)ChangeFileCurveList->count(); i++) {
if (ChangeFileCurveList->isSelected(i)) {
KstRMatrixPtr matrix = rml[i-rvl.count()];
matrix->writeLock();
file->readLock();
bool valid = file->isValidMatrix(matrix->field());
//.........这里部分代码省略.........
示例9: editSingleObjectRV
bool KstVectorDialogI::editSingleObjectRV(KstVectorPtr vcPtr) {
KstRVectorPtr rvp = kst_cast<KstRVector>(vcPtr);
KstDataSourcePtr file;
if (_fileNameDirty) {
// if there is not an active KstFile, create one
KST::dataSourceList.lock().writeLock();
KstDataSourceList::Iterator it = KST::dataSourceList.findReusableFileName(_w->FileName->url());
if (it == KST::dataSourceList.end()) {
file = KstDataSource::loadSource(_w->FileName->url());
if (!file || !file->isValid()) {
KST::dataSourceList.lock().unlock();
KMessageBox::sorry(this, i18n("The file could not be opened."));
return false;
}
if (file->isEmpty()) {
KST::dataSourceList.lock().unlock();
KMessageBox::sorry(this, i18n("The file does not contain data."));
return false;
}
KST::dataSourceList.append(file);
} else {
file = *it;
}
KST::dataSourceList.lock().unlock();
} else {
KstRVectorList vcList = kstObjectSubList<KstVector,KstRVector>(KST::vectorList);
for (uint i = 0; i < _editMultipleWidget->_objectList->count(); i++) {
if (_editMultipleWidget->_objectList->isSelected(i)) {
// get the pointer to the object
KstRVectorList::Iterator vcIter = vcList.findTag(_editMultipleWidget->_objectList->text(i));
if (vcIter == vcList.end()) {
return false;
}
KstRVectorPtr rvp = *vcIter;
rvp->readLock();
file = rvp->dataSource();
rvp->unlock();
}
}
}
file->writeLock();
if (rvp) {
QString pField;
if (_fileNameDirty) {
pField = _w->Field->currentText();
if (!file->isValidField(pField)) {
KMessageBox::sorry(this, i18n("The requested field is not defined for the requested file."));
file->unlock();
return false;
}
} else {
pField = rvp->field();
}
int f0 = 0, n = 0;
if (_f0Dirty) {
if (_w->_kstDataRange->isStartRelativeTime()) {
f0 = file->sampleForTime(_w->_kstDataRange->f0Value());
} else if (_w->_kstDataRange->isStartAbsoluteTime()) {
bool ok = false;
f0 = file->sampleForTime(_w->_kstDataRange->f0DateTimeValue(), &ok);
if (!ok) {
file->unlock();
KMessageBox::sorry(this, i18n("The requested field or file could not use the specified date."));
return false;
}
} else {
f0 = int(_w->_kstDataRange->f0Value());
}
}
if (_nDirty) {
if (_w->_kstDataRange->isRangeRelativeTime()) {
double nValStored = _w->_kstDataRange->nValue();
if (_w->_kstDataRange->CountFromEnd->isChecked()) {
int frameCount = file->frameCount(_w->Field->currentText());
double msCount = file->relativeTimeForSample(frameCount - 1);
n = frameCount - 1 - file->sampleForTime(msCount - nValStored);
} else {
double fTime = file->relativeTimeForSample(f0);
n = file->sampleForTime(fTime + nValStored) - file->sampleForTime(fTime);
}
} else {
n = int(_w->_kstDataRange->nValue());
}
}
// use existing requested start and number of frames if not dirty
rvp->readLock();
if (!_f0Dirty) {
f0 = rvp->reqStartFrame();
}
if (!_nDirty) {
n = rvp->reqNumFrames();
}
// other parameters for multiple edit
bool pCountFromEnd, pReadToEnd, pDoSkip, pDoFilter;
int pSkip;
//.........这里部分代码省略.........
示例10: newObject
bool KstVectorDialogI::newObject() {
KstDataSourcePtr file;
QString tag_name = _tagName->text();
if (_w->_readFromSource->isChecked()) {
tag_name.replace(defaultTag, _w->Field->currentText());
tag_name = KST::suggestVectorName(tag_name);
// if there is not an active DataSource, create one
{
KST::dataSourceList.lock().writeLock();
KstDataSourceList::Iterator it = KST::dataSourceList.findReusableFileName(_w->FileName->url());
if (it == KST::dataSourceList.end()) {
file = KstDataSource::loadSource(_w->FileName->url());
if (!file || !file->isValid()) {
KST::dataSourceList.lock().unlock();
KMessageBox::sorry(this, i18n("The file could not be loaded."));
return false;
}
if (file->isEmpty()) {
KST::dataSourceList.lock().unlock();
KMessageBox::sorry(this, i18n("The file does not contain data."));
return false;
}
KST::dataSourceList.append(file);
} else {
file = *it;
}
KST::dataSourceList.lock().unlock();
}
file->readLock();
if (!file->isValidField(_w->Field->currentText())) {
file->unlock();
KMessageBox::sorry(this, i18n("The requested field is not defined for the requested file."));
return false;
}
int f0, n;
if (_w->_kstDataRange->isStartRelativeTime()) {
f0 = file->sampleForTime(_w->_kstDataRange->f0Value());
} else if (_w->_kstDataRange->isStartAbsoluteTime()) {
bool ok = false;
f0 = file->sampleForTime(_w->_kstDataRange->f0DateTimeValue(), &ok);
if (!ok) {
file->unlock();
KMessageBox::sorry(this, i18n("The requested field or file could not use the specified date."));
return false;
}
} else {
f0 = int(_w->_kstDataRange->f0Value());
}
if (_w->_kstDataRange->isRangeRelativeTime()) {
double nValStored = _w->_kstDataRange->nValue();
if (_w->_kstDataRange->CountFromEnd->isChecked()) {
int frameCount = file->frameCount(_w->Field->currentText());
double msCount = file->relativeTimeForSample(frameCount - 1);
n = frameCount - 1 - file->sampleForTime(msCount - nValStored);
} else {
double fTime = file->relativeTimeForSample(f0);
n = file->sampleForTime(fTime + nValStored) - file->sampleForTime(fTime);
}
} else {
n = int(_w->_kstDataRange->nValue());
}
file->unlock();
// create the vector
KstRVectorPtr vector = new KstRVector(
file, _w->Field->currentText(),
KstObjectTag(tag_name, file->tag(), false),
_w->_kstDataRange->CountFromEnd->isChecked() ? -1 : f0,
_w->_kstDataRange->ReadToEnd->isChecked() ? -1 : n,
_w->_kstDataRange->Skip->value(),
_w->_kstDataRange->DoSkip->isChecked(),
_w->_kstDataRange->DoFilter->isChecked());
emit vectorCreated(KstVectorPtr(vector));
vector = 0L;
emit modified();
} else {
double x0 = _w->_xMin->text().toDouble();
double x1 = _w->_xMax->text().toDouble();
int n = _w->_N->value();
QString tagname = _tagName->text();
if (tagname == defaultTag) {
tagname = KST::suggestVectorName(QString("(%1..%2)").arg(x0).arg(x1));
}
KstSVectorPtr svector = new KstSVector(x0, x1, n, KstObjectTag(tagname, KstObjectTag::globalTagContext));
emit vectorCreated(KstVectorPtr(svector));
svector = 0L;
emit modified();
}
return true;
}
示例11: main
int main(int argc, char *argv[]) {
atexit(exitHelper);
KInstance inst("d2asc");
KstDataSourcePtr file;
KConfig *kConfigObject = new KConfig("kstdatarc", false, false);
KstDataSource::setupOnStartup(kConfigObject);
fieldEntry field;
QValueList<fieldEntry> fieldList;
char *filename;
bool do_ave = false, do_skip = false;
int start_frame=0, n_frames=2000000;
int n_skip = 0;
int NS=0, i_S;
int i;
if (argc < 3 || argv[1][0] == '-') {
Usage();
return -1;
}
filename = argv[1];
for (i = 2; i < argc; i++) {
if (argv[i][0] == '-') {
if (argv[i][1] == 'f') {
i++;
start_frame = atoi(argv[i]);
} else if (argv[i][1] == 'n') {
i++;
n_frames = atoi(argv[i]);
} else if (argv[i][1] == 's') {
i++;
n_skip = atoi(argv[i]);
if (n_skip>0) do_skip = true;
} else if (argv[i][1] == 'a') {
do_ave = true;
} else if (argv[i][1] == 'x') {
i++;
field.field = argv[i];
field.doHex = true;
fieldList.append(field);
} else {
Usage();
}
} else {
field.field = argv[i];
field.doHex = false;
fieldList.append(field);
}
}
if (!do_skip) {
do_ave = false;
}
file = KstDataSource::loadSource(filename);
if (!file || !file->isValid() || file->isEmpty()) {
fprintf(stderr, "d2asc error: file %s has no data\n", filename);
return -2;
}
/** make vectors and fill the list **/
QPtrList<KstRVector> vlist;
for (i=0; i<int(fieldList.size()); i++) {
if (!file->isValidField(fieldList[i].field)) {
fprintf(stderr, "d2asc error: field %s in file %s is not valid\n",
fieldList[i].field.latin1(), filename);
return -3;
}
KstRVectorPtr v = new KstRVector(file, fieldList[i].field, KstObjectTag("tag", KstObjectTag::globalTagContext), start_frame, n_frames, n_skip, n_skip>0, do_ave);
vlist.append(v);
}
/* find NS */
for (i = 0; i < int(fieldList.size()); i++) {
while (vlist.at(i)->update(-1) != KstObject::NO_CHANGE)
; // read vector
if (vlist.at(i)->length() > NS) {
NS = vlist.at(i)->length();
}
}
for (i_S = 0; i_S < NS; i_S++) {
for (i = 0; i < int(fieldList.size()); i++) {
if (fieldList[i].doHex) {
printf("%4x ", (int)vlist.at(i)->interpolate(i_S, NS));
} else {
printf("%.16g ", vlist.at(i)->interpolate(i_S, NS));
}
}
printf("\n");
}
}
示例12: edit_I
bool KstVectorDialogI::edit_I() {
KstDataSourcePtr file;
KstRVectorList vectorList = kstObjectSubList<KstVector,KstRVector>(KST::vectorList);
/* verify that the vector name is unique */
DP->readLock();
if (_tagName->text() != DP->tagName() && KST::vectorTagNameNotUnique(_tagName->text())) {
DP->readUnlock();
return false;
}
DP->readUnlock();
/* if there is not an active KstFile, create one */
{
KST::dataSourceList.lock().writeLock();
KstDataSourceList::Iterator it =
KST::dataSourceList.findFileName(FileName->url());
if (it == KST::dataSourceList.end()) {
file = KstDataSource::loadSource(FileName->url());
if (!file || !file->isValid()) {
KST::dataSourceList.lock().writeUnlock();
KMessageBox::sorry(this, i18n("The file could not be opened."));
return false;
}
if (file->isEmpty()) {
KST::dataSourceList.lock().writeUnlock();
KMessageBox::sorry(this, i18n("The file does not contain data."));
return false;
}
KST::dataSourceList.append(file);
} else {
file = *it;
}
KST::dataSourceList.lock().writeUnlock();
}
file->readLock();
if (!file->isValidField(Field->currentText())) {
file->readUnlock();
KMessageBox::sorry(this, i18n("The requested field is not defined for "
"the requested file\n"));
return false;
}
file->readUnlock();
int f0, n;
if (_kstDataRange->isTime()) {
file->readLock();
f0 = file->sampleForTime(_kstDataRange->f0Value());
n = file->sampleForTime(_kstDataRange->nValue());
file->readUnlock();
} else {
f0 = _kstDataRange->f0Value();
n = _kstDataRange->nValue();
}
/* change the vector */
DP->writeLock();
DP->change(file, Field->currentText(),
_tagName->text(),
(_kstDataRange->CountFromEnd->isChecked() ? -1 : f0),
(_kstDataRange->ReadToEnd->isChecked() ? -1 : n),
_kstDataRange->Skip->value(),
_kstDataRange->DoSkip->isChecked(),
_kstDataRange->DoFilter->isChecked());
DP->writeUnlock();
vectorList.clear();
emit modified();
return true;
}
示例13: new_I
bool KstVectorDialogI::new_I() {
KstDataSourcePtr file;
KstRVectorList vectorList = kstObjectSubList<KstVector,KstRVector>(KST::vectorList);
QString tag_name = _tagName->text();
tag_name.replace("<New_Vector>", Field->currentText());
KST::vectorList.lock().readLock();
int i_c = KST::vectorList.count() + 1;
KST::vectorList.lock().readUnlock();
while (KST::vectorTagNameNotUnique(tag_name, false)) {
tag_name.sprintf("V%d-", i_c);
tag_name += Field->currentText();
i_c++;
}
vectorList.clear();
/* if there is not an active DataSource, create one */
{
KST::dataSourceList.lock().writeLock();
KstDataSourceList::Iterator it = KST::dataSourceList.findFileName(FileName->url());
if (it == KST::dataSourceList.end()) {
file = KstDataSource::loadSource(FileName->url());
if (!file || !file->isValid()) {
KST::dataSourceList.lock().writeUnlock();
KMessageBox::sorry(this, i18n("The file could not be loaded."));
return false;
}
if (file->isEmpty()) {
KST::dataSourceList.lock().writeUnlock();
KMessageBox::sorry(this, i18n("The file does not contain data."));
return false;
}
KST::dataSourceList.append(file);
} else {
file = *it;
}
KST::dataSourceList.lock().writeUnlock();
}
file->readLock();
if (!file->isValidField(Field->currentText())) {
file->readUnlock();
KMessageBox::sorry(this, i18n("The requested field is not defined for the requested file."));
return false;
}
file->readUnlock();
int f0, n;
if (_kstDataRange->isTime()) {
file->readLock();
f0 = file->sampleForTime(_kstDataRange->f0Value());
n = file->sampleForTime(_kstDataRange->nValue());
file->readUnlock();
} else {
f0 = _kstDataRange->f0Value();
n = _kstDataRange->nValue();
}
/* create the vector */
KstRVectorPtr vector = new KstRVector(
file, Field->currentText(),
tag_name,
(_kstDataRange->CountFromEnd->isChecked() ? -1 : f0),
(_kstDataRange->ReadToEnd->isChecked() ? -1 : n),
_kstDataRange->Skip->value(),
_kstDataRange->DoSkip->isChecked(),
_kstDataRange->DoFilter->isChecked());
KST::addVectorToList(KstVectorPtr(vector));
emit vectorCreated(KstVectorPtr(vector));
vector = 0L;
emit modified();
return true;
}
示例14: main
//.........这里部分代码省略.........
QString creatingEquations = i18n("Creating equations");
QString creatingCurves = i18n("Creating curves");
QString creatingPlots = i18n("Creating plots");
int count;
int handled;
kst->slotUpdateProgress( 0, 0, QString::null );
SetCMDOptions(args, in, n_y);
KstTopLevelViewPtr tlv = kst->activeView();
if (!tlv) {
// if there was no active view then we create one...
kst->newWindow(false);
tlv = kst->activeView();
}
if (!tlv) {
kstdError() << i18n("Can't create a view.") << endl;
return 0;
}
CreatePlots(in, tlv);
Kst2DPlotList plist = kstObjectSubList<KstViewObject, Kst2DPlot>(tlv->children());
i_plot = 0;
Kst2DPlotPtr plot = *plist.at(i_plot);
KstVCurveList vcurves = kstObjectSubList<KstBaseCurve,KstVCurve>(plot->Curves);
// make stand alone equations if there are no files
if (args->count() < 1) {
if (!yEqList.isEmpty()) {
QString eqS;
double max, min;
int n;
bool xeq;
SetEqXRanges(args->getOption("xe"), &min, &max, &n, &xeq);
if (xeq) {
count = yEqList.size();
handled = 0;
kst->slotUpdateProgress( count, handled, creatingEquations );
for (eq_i = yEqList.begin(); eq_i != yEqList.end(); ++eq_i) {
eqS = *eq_i;
if (NoVectorEq(eqS)) {
KstEquationPtr eq = new KstEquation(KST::suggestEQName(eqS), eqS, min, max, n);
KstVCurvePtr vc = new KstVCurve(KST::suggestCurveName(eq->tag(), true),
eq->vX(), eq->vY(), 0L, 0L, 0L, 0L,
KstColorSequence::next(vcurves,plot->backgroundColor()));
KST::dataObjectList.lock().writeLock();
KST::dataObjectList.append(eq.data());
KST::dataObjectList.append(vc.data());
KST::dataObjectList.lock().unlock();
plot->addCurve(vc.data());
if (in.sep_plots) {
i_plot++;
if (i_plot < in.n_plots) {
plot = *plist.at(i_plot);
}
}
}