SpeciesInitialValueLostFocusCommand::SpeciesInitialValueLostFocusCommand( CQSpeciesDetail *pSpecieDetail) : CCopasiUndoCommand("Species", SPECIES_TYPE_CHANGE, "Change") , mpSpecieDetail(pSpecieDetail) , mpSpeciesData(new UndoSpeciesData(mpSpecieDetail->mpMetab)) , mFirstTime(true) { std::string sName = mpSpecieDetail->mpMetab->getObjectName(); setText(QString(": Species Initial Value Change for %1").arg(FROM_UTF8(sName))); setName(mpSpeciesData->getName()); { double newValue = mpSpecieDetail->mpEditInitialValue->text().toDouble(); std::ostringstream strs; strs.precision(std::numeric_limits< double >::digits10); strs << newValue; std::string str = strs.str(); setNewValue(str); } { std::ostringstream strs; strs.precision(std::numeric_limits< double >::digits10); strs << mpSpecieDetail->mInitialConcentration; std::string str = strs.str(); setOldValue(str); } setProperty("Initial Value"); }
void Ruler::setValue(qreal value) { setOldValue(value); if (value != m_value) { m_value = value; emit needsRepaint(); } }
//------------------------------------------------------------------------ void CVuMeter::draw (CDrawContext *_pContext) { if (!getOnBitmap ()) return; CRect _rectOn (rectOn); CRect _rectOff (rectOff); CPoint pointOn; CPoint pointOff; CDrawContext *pContext = _pContext; bounceValue (); float newValue = getOldValue () - decreaseValue; if (newValue < value) newValue = value; setOldValue (newValue); newValue = (newValue - getMin ()) / getRange (); // normalize if (style & kHorizontal) { CCoord tmp = (CCoord)(((int32_t)(nbLed * newValue + 0.5f) / (float)nbLed) * getOnBitmap ()->getWidth ()); pointOff (tmp, 0); _rectOff.left += tmp; _rectOn.right = tmp + rectOn.left; } else { CCoord tmp = (CCoord)(((int32_t)(nbLed * (1.f - newValue) + 0.5f) / (float)nbLed) * getOnBitmap ()->getHeight ()); pointOn (0, tmp); _rectOff.bottom = tmp + rectOff.top; _rectOn.top += tmp; } if (getOffBitmap ()) { getOffBitmap ()->draw (pContext, _rectOff, pointOff); } getOnBitmap ()->draw (pContext, _rectOn, pointOn); setDirty (false); }
EventDataChangeCommand::EventDataChangeCommand(QModelIndex index, const QVariant value, int role, CQEventDM *pEventDM) { // stores the data mOld = index.data(Qt::DisplayRole); mNew = value; mpEventDM = pEventDM; mIndex = index; mRole = role; //mPathIndex = pathFromIndex(index); this->setText(eventDataChangeText()); //set the data for UNDO history assert(CCopasiRootContainer::getDatamodelList()->size() > 0); CCopasiDataModel* pDataModel = (*CCopasiRootContainer::getDatamodelList())[0]; assert(pDataModel != NULL); CModel * pModel = pDataModel->getModel(); CEvent *pEvent = pModel->getEvents()[index.row()]; mType = EVENTDATACHANGE; setEntityType("Event"); setAction("Change"); setName(pEvent->getObjectName()); setOldValue(TO_UTF8(mOld.toString())); setNewValue(TO_UTF8(mNew.toString())); switch (index.column()) { case 0: setProperty(""); break; case 1: setProperty("Name"); break; } }
CompartmentDataChangeCommand::CompartmentDataChangeCommand( const QModelIndex& index, const QVariant& value, int role, CQCompartmentDM *pCompartmentDM) : CCopasiUndoCommand("Compartment", COMPARTMENT_DATA_CHANGE, "Change") , mNew(value) , mOld(index.data(Qt::DisplayRole)) , mIndex(index) , mpCompartmentDM(pCompartmentDM) , mRole(role) , mPathIndex() , mpCompartmentUndoData(NULL) { //set the data for UNDO history assert(pCompartmentDM->getDataModel() != NULL); CModel * pModel = pCompartmentDM->getDataModel()->getModel(); assert(pModel != NULL); if (pModel->getCompartments().size() <= (size_t)index.row()) { return; } CCompartment *pCompartment = &pModel->getCompartments()[index.row()]; setKey(pCompartment->getKey()); setName(pCompartment->getObjectName()); setOldValue(TO_UTF8(mOld.toString())); setNewValue(TO_UTF8(mNew.toString())); switch (index.column()) { case 0: setProperty(""); break; case 1: setProperty("Name"); break; case 2: setProperty("Type"); switch (mNew.toInt()) { case 0: setNewValue("fixed"); break; case 1: setNewValue("assignment"); break; case 2: setNewValue("ode"); break; } break; case 3: setProperty("Initial Volume"); // need to store additional undo data to be able to restore // species initial concentrations / patricle numbers mpCompartmentUndoData = new UndoCompartmentData(pCompartment); break; } setText(QString(": Changed compartment %1").arg(getProperty().c_str())); }