ObjectPtr ScalarDialog::createNewGeneratedScalar(){ bool ok = false; Q_ASSERT(_document && _document->objectStore()); double value = _scalarTab->value().toDouble(&ok); if (!ok) { value = Equations::interpret(_document->objectStore(), _scalarTab->value().toLatin1(), &ok); } if (!ok) { return 0; //invalid } ScalarPtr scalar = _document->objectStore()->createObject<Scalar>(); scalar->setValue(value); scalar->setOrphan(true); scalar->setEditable(true); if (DataDialog::tagStringAuto()) { scalar->setDescriptiveName(QString()); } else { scalar->setDescriptiveName(DataDialog::tagString()); } scalar->writeLock(); scalar->registerChange(); scalar->unlock(); _dataObjectName = scalar->Name(); return static_cast<ObjectPtr>(scalar); }
// If a plugin provides a Parameters Vector, then scalars will be created, as well as a label. void BasicPlugin::createScalars() { // Assumes that this is called with a write lock in place on this object Q_ASSERT(myLockStatus() == KstRWLock::WRITELOCKED); if (hasParameterVector()) { VectorPtr vectorParam = _outputVectors["Parameters Vector"]; if (vectorParam) { QString paramName; int i = 0; int length = vectorParam->length(); Q_ASSERT(store()); for (paramName = parameterName(i); !paramName.isEmpty() && i < length; paramName = parameterName(++i)) { double scalarValue = vectorParam->value(i); if (!_outputScalars.contains(paramName)) { ScalarPtr s = store()->createObject<Scalar>(); s->setProvider(this); s->setSlaveName(paramName); s->setValue(scalarValue); s->writeLock(); _outputScalars.insert(paramName, s); } else { _outputScalars[paramName]->setValue(scalarValue); } } } } }