void CQExperimentData::slotWeightMethod(int weightMethod) { if (mpExperiment == NULL) return; if ((CExperiment::WeightMethod) weightMethod == mpExperiment->getWeightMethod()) return; switch ((CExperiment::WeightMethod) weightMethod) { case CExperiment::VALUE_SCALING: mpTable->horizontalHeaderItem(COL_SCALE)->setText("Epsilon"); break; default: mpTable->horizontalHeaderItem(COL_SCALE)->setText("Weight"); break; } size_t Current = mpExperimentSetCopy->keyToIndex(mpExperiment->CCopasiParameter::getKey()); size_t Next = Current + 1; // Find all experiments which are like this. while (Next < mpExperimentSetCopy->getExperimentCount() && mpCheckTo->isChecked()) { CExperiment * pNext = mpExperimentSetCopy->getExperiment(Next); if (!isLikePreviousExperiment(pNext)) break; Next++; } // Update each of them. while (true) { Next--; CExperiment * pNext = mpExperimentSetCopy->getExperiment(Next); bool Changed = saveTable(pNext); if (Changed) { std::ifstream File; File.open(CLocaleString::fromUtf8(pNext->getFileName()).c_str()); size_t CurrentLine = 1; pNext->read(File, CurrentLine); pNext->compile(); } pNext->setWeightMethod((CExperiment::WeightMethod) weightMethod); pNext->calculateWeights(); if (Next == Current) break; } loadTable(mpExperiment, false); }