Skip to content

Commit

Permalink
Merge e303814 into d0d32f7
Browse files Browse the repository at this point in the history
  • Loading branch information
agarny committed Sep 24, 2018
2 parents d0d32f7 + e303814 commit adbd5f6
Show file tree
Hide file tree
Showing 8 changed files with 66 additions and 71 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -341,16 +341,16 @@
<translation>Réinitialiser Paramètres Modèle</translation>
</message>
<message>
<source>Reset the state/rate model parameters or all the model parameters</source>
<translation>Réinitialiser les paramètres état/taux du modèle ou tous les paramètres du modèle</translation>
<source>Reset the state model parameters or all the model parameters</source>
<translation>Réinitialiser les paramètres état du modèle ou tous les paramètres du modèle</translation>
</message>
<message>
<source>States/Rates</source>
<translation>États/Taux</translation>
<source>States</source>
<translation>États</translation>
</message>
<message>
<source>Reset the state/rate model parameters</source>
<translation>Réinitialiser les paramètres état/taux du modèle</translation>
<source>Reset the state model parameters</source>
<translation>Réinitialiser les paramètres état du modèle</translation>
</message>
<message>
<source>All</source>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -96,9 +96,9 @@ void SimulationExperimentViewPlugin::filePermissionsChanged(const QString &pFile

void SimulationExperimentViewPlugin::fileModified(const QString &pFileName)
{
// Let our view widget know that a file has been modified
Q_UNUSED(pFileName);

mViewWidget->fileModified(pFileName);
// We don't handle this interface...
}

//==============================================================================
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -157,7 +157,7 @@ SimulationExperimentViewSimulationWidget::SimulationExperimentViewSimulationWidg
QKeySequence(Qt::ControlModifier|Qt::Key_F2), mToolBarWidget);
mResetModelParametersAction = Core::newAction(QIcon(":/oxygen/actions/view-refresh.png"),
mToolBarWidget);
mResetStateRateModelParametersAction = Core::newAction(mToolBarWidget);
mResetStateModelParametersAction = Core::newAction(mToolBarWidget);
mResetAllModelParametersAction = Core::newAction(mToolBarWidget);
mClearSimulationResultsAction = Core::newAction(QIcon(":/oxygen/actions/trash-empty.png"),
mToolBarWidget);
Expand Down Expand Up @@ -193,8 +193,8 @@ SimulationExperimentViewSimulationWidget::SimulationExperimentViewSimulationWidg
this, &SimulationExperimentViewSimulationWidget::stopSimulation);
connect(mResetModelParametersAction, &QAction::triggered,
this, &SimulationExperimentViewSimulationWidget::resetModelParameters);
connect(mResetStateRateModelParametersAction, &QAction::triggered,
this, &SimulationExperimentViewSimulationWidget::resetStateRateModelParameters);
connect(mResetStateModelParametersAction, &QAction::triggered,
this, &SimulationExperimentViewSimulationWidget::resetStateModelParameters);
connect(mResetAllModelParametersAction, &QAction::triggered,
this, &SimulationExperimentViewSimulationWidget::resetAllModelParameters);
connect(mClearSimulationResultsAction, &QAction::triggered,
Expand Down Expand Up @@ -265,7 +265,7 @@ SimulationExperimentViewSimulationWidget::SimulationExperimentViewSimulationWidg
QToolButton *resetModelParametersToolButton = new QToolButton(mToolBarWidget);
QMenu *resetModelParametersDropDownMenu = new QMenu(resetModelParametersToolButton);

resetModelParametersDropDownMenu->addAction(mResetStateRateModelParametersAction);
resetModelParametersDropDownMenu->addAction(mResetStateModelParametersAction);
resetModelParametersDropDownMenu->addAction(mResetAllModelParametersAction);

resetModelParametersToolButton->setDefaultAction(mResetModelParametersAction);
Expand Down Expand Up @@ -549,9 +549,9 @@ void SimulationExperimentViewSimulationWidget::retranslateUi()
I18nInterface::retranslateAction(mStopSimulationAction, tr("Stop Simulation"),
tr("Stop the simulation"));
I18nInterface::retranslateAction(mResetModelParametersAction, tr("Reset Model Parameters"),
tr("Reset the state/rate model parameters or all the model parameters"));
I18nInterface::retranslateAction(mResetStateRateModelParametersAction, tr("States/Rates"),
tr("Reset the state/rate model parameters"));
tr("Reset the state model parameters or all the model parameters"));
I18nInterface::retranslateAction(mResetStateModelParametersAction, tr("States"),
tr("Reset the state model parameters"));
I18nInterface::retranslateAction(mResetAllModelParametersAction, tr("All"),
tr("Reset all the model parameters"));
I18nInterface::retranslateAction(mClearSimulationResultsAction, tr("Clear Simulation Results"),
Expand Down Expand Up @@ -960,7 +960,7 @@ void SimulationExperimentViewSimulationWidget::initialize(bool pReloadingView)
// simulation mode, so we are fine...

if (pReloadingView)
clearSimulationResults(false);
clearSimulationResults();
else
updateSimulationMode();

Expand Down Expand Up @@ -1272,16 +1272,6 @@ void SimulationExperimentViewSimulationWidget::filePermissionsChanged()

//==============================================================================

void SimulationExperimentViewSimulationWidget::fileModified()
{
// Update our reset action, but only if we are dealing with a CellML file

if (mSimulation->fileType() == SimulationSupport::Simulation::CellmlFile)
mResetModelParametersAction->setEnabled(Core::FileManager::instance()->isModified(mSimulation->fileName()));
}

//==============================================================================

void SimulationExperimentViewSimulationWidget::fileReloaded()
{
// The given file has been reloaded, so reload ourselves, i.e. finalise and
Expand Down Expand Up @@ -1395,9 +1385,9 @@ void SimulationExperimentViewSimulationWidget::resetModelParameters()

//==============================================================================

void SimulationExperimentViewSimulationWidget::resetStateRateModelParameters()
void SimulationExperimentViewSimulationWidget::resetStateModelParameters()
{
// Reset our state/rate model parameters
// Reset our state model parameters

mSimulation->reset(false);
}
Expand All @@ -1413,7 +1403,7 @@ void SimulationExperimentViewSimulationWidget::resetAllModelParameters()

//==============================================================================

void SimulationExperimentViewSimulationWidget::clearSimulationResults(bool pCheckSimulationResults)
void SimulationExperimentViewSimulationWidget::clearSimulationResults()
{
setUpdatesEnabled(false);
// Clear our simulation results
Expand All @@ -1424,26 +1414,16 @@ void SimulationExperimentViewSimulationWidget::clearSimulationResults(bool pChec

mSimulation->results()->reset();

// Update our simulation mode and check for results, if requested
// Update our simulation mode and check for results

updateSimulationMode();

if (pCheckSimulationResults)
mViewWidget->checkSimulationResults(mSimulation->fileName(), ResetRuns);
mViewWidget->checkSimulationResults(mSimulation->fileName(), ResetRuns);
setUpdatesEnabled(true);
}

//==============================================================================

void SimulationExperimentViewSimulationWidget::clearSimulationResults()
{
// Clear our simulation results

clearSimulationResults(true);
}

//==============================================================================

void SimulationExperimentViewSimulationWidget::developmentMode()
{
// The development mode has just been enabled/disabled, so update the
Expand Down Expand Up @@ -3392,12 +3372,15 @@ void SimulationExperimentViewSimulationWidget::simulationError(const QString &pM

void SimulationExperimentViewSimulationWidget::simulationDataModified(bool pIsModified)
{
// Update our modified state
// Update some of our actions based on whether we are modified

if (mDevelopmentModeAction->isChecked())
if (mDevelopmentModeAction->isChecked()) {
Core::FileManager::instance()->setModified(mSimulation->fileName(), pIsModified);
else
} else {
mResetModelParametersAction->setEnabled(pIsModified);

mResetStateModelParametersAction->setEnabled(mSimulation->data()->isStatesModified());
}
}

//==============================================================================
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -137,7 +137,6 @@ class SimulationExperimentViewSimulationWidget : public Core::Widget
bool save(const QString &pFileName);

void filePermissionsChanged();
void fileModified();
void fileReloaded();

void fileRenamed(const QString &pOldFileName, const QString &pNewFileName);
Expand Down Expand Up @@ -191,7 +190,7 @@ class SimulationExperimentViewSimulationWidget : public Core::Widget
QAction *mRunPauseResumeSimulationAction;
QAction *mStopSimulationAction;
QAction *mResetModelParametersAction;
QAction *mResetStateRateModelParametersAction;
QAction *mResetStateModelParametersAction;
QAction *mResetAllModelParametersAction;
QAction *mClearSimulationResultsAction;
QAction *mDevelopmentModeAction;
Expand Down Expand Up @@ -309,8 +308,6 @@ class SimulationExperimentViewSimulationWidget : public Core::Widget
void sedmlExportSedmlFile(const QString &pFileName);
void sedmlExportCombineArchive(const QString &pFileName);

void clearSimulationResults(bool pCheckSimulationResults);

signals:
void splitterMoved(const QIntList &pSizes);

Expand All @@ -326,7 +323,7 @@ private slots:
void removeCurrentGraphPanel();
void removeAllGraphPanels();
void resetModelParameters();
void resetStateRateModelParameters();
void resetStateModelParameters();
void resetAllModelParameters();
void clearSimulationResults();
void sedmlExportSedmlFile();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -324,19 +324,6 @@ void SimulationExperimentViewWidget::filePermissionsChanged(const QString &pFile

//==============================================================================

void SimulationExperimentViewWidget::fileModified(const QString &pFileName)
{
// Let the simulation widget, if any, associated with the given file name
// know that a file has been modified

SimulationExperimentViewSimulationWidget *simulationWidget = mSimulationWidgets.value(pFileName);

if (simulationWidget)
simulationWidget->fileModified();
}

//==============================================================================

void SimulationExperimentViewWidget::fileSaved(const QString &pFileName)
{
// The given file has been saved, so reload its simulation and consider the
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,6 @@ class SimulationExperimentViewWidget : public Core::ViewWidget

void fileOpened(const QString &pFileName);
void filePermissionsChanged(const QString &pFileName);
void fileModified(const QString &pFileName);
void fileSaved(const QString &pFileName);
void fileReloaded(const QString &pFileName);
void fileRenamed(const QString &pOldFileName, const QString &pNewFileName);
Expand Down
42 changes: 34 additions & 8 deletions src/plugins/support/SimulationSupport/src/simulation.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -392,6 +392,10 @@ void SimulationData::reset(bool pInitialize, bool pAll)
runtime->initializeConstants()(mConstants, mRates, mStates);
}

// Recompute our computed constants and variables

recomputeComputedConstantsAndVariables(mStartingPoint, pInitialize);

// Keep track of our various initial values

if (pInitialize) {
Expand All @@ -406,9 +410,11 @@ void SimulationData::reset(bool pInitialize, bool pAll)

delete[] currentConstants;

// Recompute our computed constants and variables
// Recompute our computed constants and variables, if we are using our
// "current" constants

recomputeComputedConstantsAndVariables(mStartingPoint, pInitialize);
if (!pAll)
recomputeComputedConstantsAndVariables(mStartingPoint, pInitialize);

// Delete our NLA solver, if any

Expand Down Expand Up @@ -459,10 +465,10 @@ void SimulationData::recomputeVariables(double pCurrentPoint)

//==============================================================================

bool SimulationData::isModified() const
bool SimulationData::doIsModified(bool pCheckConstants) const
{
// Check whether any of our constants or states has been modified, if
// possible
// Check whether any of our constants (if requested) or states has been
// modified, if possible
// Note: we start with our states since they are more likely to be modified
// than our constants...

Expand All @@ -474,9 +480,11 @@ bool SimulationData::isModified() const
return true;
}

for (int i = 0, iMax = runtime->constantsCount(); i < iMax; ++i) {
if (!qIsNull(mConstants[i]-mInitialConstants[i]))
return true;
if (pCheckConstants) {
for (int i = 0, iMax = runtime->constantsCount(); i < iMax; ++i) {
if (!qIsNull(mConstants[i]-mInitialConstants[i]))
return true;
}
}
}

Expand All @@ -485,6 +493,24 @@ bool SimulationData::isModified() const

//==============================================================================

bool SimulationData::isStatesModified() const
{
// Check whether any of our states has been modified

return doIsModified(false);
}

//==============================================================================

bool SimulationData::isModified() const
{
// Check whether any of our constants or states has been modified

return doIsModified(true);
}

//==============================================================================

void SimulationData::checkForModifications()
{
// Let people know whether any of our constants or states has been modified
Expand Down
3 changes: 3 additions & 0 deletions src/plugins/support/SimulationSupport/src/simulation.h
Original file line number Diff line number Diff line change
Expand Up @@ -119,6 +119,7 @@ class SIMULATIONSUPPORT_EXPORT SimulationData : public QObject
bool pInitialize);
void recomputeVariables(double pCurrentPoint);

bool isStatesModified() const;
bool isModified() const;
void checkForModifications();

Expand Down Expand Up @@ -154,6 +155,8 @@ class SIMULATIONSUPPORT_EXPORT SimulationData : public QObject

SolverInterface * solverInterface(const QString &pSolverName) const;

bool doIsModified(bool pCheckConstants) const;

signals:
void updated(double pCurrentPoint);
void modified(bool pIsModified);
Expand Down

0 comments on commit adbd5f6

Please sign in to comment.