Skip to content

Commit

Permalink
ticket:3488
Browse files Browse the repository at this point in the history
Support ignoreSimulationFlagsAnnotation flag.
  • Loading branch information
adeas31 committed Jun 3, 2016
1 parent 06da538 commit 0868b1d
Show file tree
Hide file tree
Showing 4 changed files with 81 additions and 59 deletions.
3 changes: 3 additions & 0 deletions OMEdit/OMEditGUI/MainWindow.cpp
Expand Up @@ -256,6 +256,9 @@ MainWindow::MainWindow(QSplashScreen *pSplashScreen, bool debug, QWidget *parent
if (mpOptionsDialog->getSimulationPage()->getIgnoreCommandLineOptionsAnnotationCheckBox()->isChecked()) {
mpOMCProxy->setCommandLineOptions("+ignoreCommandLineOptionsAnnotation=true");
}
if (mpOptionsDialog->getSimulationPage()->getIgnoreSimulationFlagsAnnotationCheckBox()->isChecked()) {
mpOMCProxy->setCommandLineOptions("+ignoreSimulationFlagsAnnotation=true");
}
// restore OMEdit widgets state
QSettings *pSettings = OpenModelica::getApplicationSettings();
if (mpOptionsDialog->getGeneralSettingsPage()->getPreserveUserCustomizations())
Expand Down
18 changes: 16 additions & 2 deletions OMEdit/OMEditGUI/Options/OptionsDialog.cpp
Expand Up @@ -366,6 +366,9 @@ void OptionsDialog::readSimulationSettings()
if (mpSettings->contains("simulation/ignoreCommandLineOptionsAnnotation")) {
mpSimulationPage->getIgnoreCommandLineOptionsAnnotationCheckBox()->setChecked(mpSettings->value("simulation/ignoreCommandLineOptionsAnnotation").toBool());
}
if (mpSettings->contains("simulation/ignoreSimulationFlagsAnnotation")) {
mpSimulationPage->getIgnoreSimulationFlagsAnnotationCheckBox()->setChecked(mpSettings->value("simulation/ignoreSimulationFlagsAnnotation").toBool());
}
if (mpSettings->contains("simulation/saveClassBeforeSimulation")) {
mpSimulationPage->getSaveClassBeforeSimulationCheckBox()->setChecked(mpSettings->value("simulation/saveClassBeforeSimulation").toBool());
}
Expand Down Expand Up @@ -815,12 +818,20 @@ void OptionsDialog::saveSimulationSettings()
} else {
mpSimulationPage->getOMCFlagsTextBox()->setText(mpSettings->value("simulation/OMCFlags").toString());
}
// save ignore command line options
mpSettings->setValue("simulation/ignoreCommandLineOptionsAnnotation", mpSimulationPage->getIgnoreCommandLineOptionsAnnotationCheckBox()->isChecked());
if (mpSimulationPage->getIgnoreCommandLineOptionsAnnotationCheckBox()->isChecked()) {
mpMainWindow->getOMCProxy()->setCommandLineOptions("+ignoreCommandLineOptionsAnnotation=true");
} else {
mpMainWindow->getOMCProxy()->setCommandLineOptions("+ignoreCommandLineOptionsAnnotation=false");
}
// save ignore simulation flags
mpSettings->setValue("simulation/ignoreSimulationFlagsAnnotation", mpSimulationPage->getIgnoreSimulationFlagsAnnotationCheckBox()->isChecked());
if (mpSimulationPage->getIgnoreSimulationFlagsAnnotationCheckBox()->isChecked()) {
mpMainWindow->getOMCProxy()->setCommandLineOptions("+ignoreSimulationFlagsAnnotation=true");
} else {
mpMainWindow->getOMCProxy()->setCommandLineOptions("+ignoreSimulationFlagsAnnotation=false");
}
// save class before simulation.
mpSettings->setValue("simulation/saveClassBeforeSimulation", mpSimulationPage->getSaveClassBeforeSimulationCheckBox()->isChecked());
mpSettings->setValue("simulation/outputMode", mpSimulationPage->getOutputMode());
Expand Down Expand Up @@ -2787,6 +2798,8 @@ SimulationPage::SimulationPage(OptionsDialog *pOptionsDialog)
connect(mpOMCFlagsHelpButton, SIGNAL(clicked()), SLOT(showOMCFlagsHelp()));
// ignore command line options annotation checkbox
mpIgnoreCommandLineOptionsAnnotationCheckBox = new QCheckBox(tr("Ignore __OpenModelica_commandLineOptions annotation"));
// ignore simulation flags annotation checkbox
mpIgnoreSimulationFlagsAnnotationCheckBox = new QCheckBox(tr("Ignore __OpenModelica_simulationFlags annotation"));
/* save class before simulation checkbox */
mpSaveClassBeforeSimulationCheckBox = new QCheckBox(tr("Save class before simulation"));
mpSaveClassBeforeSimulationCheckBox->setToolTip(tr("Disabling this will effect the debugger functionality."));
Expand Down Expand Up @@ -2825,8 +2838,9 @@ SimulationPage::SimulationPage(OptionsDialog *pOptionsDialog)
pSimulationLayout->addWidget(mpOMCFlagsTextBox, 4, 1);
pSimulationLayout->addWidget(mpOMCFlagsHelpButton, 4, 2);
pSimulationLayout->addWidget(mpIgnoreCommandLineOptionsAnnotationCheckBox, 5, 0, 1, 3);
pSimulationLayout->addWidget(mpSaveClassBeforeSimulationCheckBox, 6, 0, 1, 3);
pSimulationLayout->addWidget(mpOutputGroupBox, 7, 0, 1, 3);
pSimulationLayout->addWidget(mpIgnoreSimulationFlagsAnnotationCheckBox, 6, 0, 1, 3);
pSimulationLayout->addWidget(mpSaveClassBeforeSimulationCheckBox, 7, 0, 1, 3);
pSimulationLayout->addWidget(mpOutputGroupBox, 8, 0, 1, 3);
mpSimulationGroupBox->setLayout(pSimulationLayout);
// set the layout
QVBoxLayout *pLayout = new QVBoxLayout;
Expand Down
2 changes: 2 additions & 0 deletions OMEdit/OMEditGUI/Options/OptionsDialog.h
Expand Up @@ -499,6 +499,7 @@ class SimulationPage : public QWidget
QComboBox* getTargetCompilerComboBox() {return mpTargetCompilerComboBox;}
QLineEdit* getOMCFlagsTextBox() {return mpOMCFlagsTextBox;}
QCheckBox* getIgnoreCommandLineOptionsAnnotationCheckBox() {return mpIgnoreCommandLineOptionsAnnotationCheckBox;}
QCheckBox* getIgnoreSimulationFlagsAnnotationCheckBox() {return mpIgnoreSimulationFlagsAnnotationCheckBox;}
QCheckBox* getSaveClassBeforeSimulationCheckBox() {return mpSaveClassBeforeSimulationCheckBox;}
void setOutputMode(QString value);
QString getOutputMode();
Expand All @@ -517,6 +518,7 @@ class SimulationPage : public QWidget
QLineEdit *mpOMCFlagsTextBox;
QToolButton *mpOMCFlagsHelpButton;
QCheckBox *mpIgnoreCommandLineOptionsAnnotationCheckBox;
QCheckBox *mpIgnoreSimulationFlagsAnnotationCheckBox;
QCheckBox *mpSaveClassBeforeSimulationCheckBox;
QGroupBox *mpOutputGroupBox;
QRadioButton *mpStructuredRadioButton;
Expand Down
117 changes: 60 additions & 57 deletions OMEdit/OMEditGUI/Simulation/SimulationDialog.cpp
Expand Up @@ -572,65 +572,68 @@ void SimulationDialog::initializeFields(bool isReSimulate, SimulationOptions sim
mpNumberofIntervalsSpinBox->setValue(simulationOptions.numberOfIntervals);
mpIntervalTextBox->setText(QString::number(simulationOptions.interval));
}
// if the class has __OpenModelica_simulationFlags annotation then use its values.
QList<QString> simulationFlags = mpMainWindow->getOMCProxy()->getAnnotationNamedModifiers(mClassName, "__OpenModelica_simulationFlags");
foreach (QString simulationFlag, simulationFlags) {
QString value = mpMainWindow->getOMCProxy()->getAnnotationModifierValue(mClassName, "__OpenModelica_simulationFlags", simulationFlag);
if (simulationFlag.compare("clock") == 0) {
mpClockComboBox->setCurrentIndex(mpClockComboBox->findText(value));
} else if (simulationFlag.compare("cpu") == 0) {
mpCPUTimeCheckBox->setChecked(true);
} else if (simulationFlag.compare("dasslnoRestart") == 0) {
mpDasslRestartCheckBox->setChecked(false);
} else if (simulationFlag.compare("dasslnoRootFinding") == 0) {
mpDasslRootFindingCheckBox->setChecked(false);
} else if (simulationFlag.compare("emit_protected") == 0) {
mpProtectedVariablesCheckBox->setChecked(true);
} else if (simulationFlag.compare("f") == 0) {
mpModelSetupFileTextBox->setText(value);
} else if (simulationFlag.compare("iif") == 0) {
mpEquationSystemInitializationFileTextBox->setText(value);
} else if (simulationFlag.compare("iim") == 0) {
mpInitializationMethodComboBox->setCurrentIndex(mpInitializationMethodComboBox->findText(value));
} else if (simulationFlag.compare("iit") == 0) {
mpEquationSystemInitializationTimeTextBox->setText(value);
} else if (simulationFlag.compare("initialStepSize") == 0) {
mpDasslInitialStepSizeTextBox->setText(value);
} else if (simulationFlag.compare("jacobian") == 0) {
mpJacobianComboBox->setCurrentIndex(mpJacobianComboBox->findText(value));
} else if (simulationFlag.compare("l") == 0) {
mpLinearizationTimeTextBox->setText(value);
} else if (simulationFlag.compare("ls") == 0) {
mpLinearSolverComboBox->setCurrentIndex(mpLinearSolverComboBox->findText(value));
} else if (simulationFlag.compare("maxIntegrationOrder") == 0) {
mpDasslMaxIntegrationOrderSpinBox->setValue(value.toInt());
} else if (simulationFlag.compare("maxStepSize") == 0) {
mpDasslMaxStepSizeTextBox->setText(value);
} else if (simulationFlag.compare("nls") == 0) {
mpNonLinearSolverComboBox->setCurrentIndex(mpNonLinearSolverComboBox->findText(value));
} else if (simulationFlag.compare("noEquidistantTimeGrid") == 0) {
mpEquidistantTimeGridCheckBox->setChecked(false);
} else if (simulationFlag.compare("noEventEmit") == 0) {
mpStoreVariablesAtEventsCheckBox->setChecked(false);
} else if (simulationFlag.compare("output") == 0) {
mpOutputVariablesTextBox->setText(value);
} else if (simulationFlag.compare("r") == 0) {
mpResultFileName->setText(value);
} else if (simulationFlag.compare("s") == 0) {
mpMethodComboBox->setCurrentIndex(mpMethodComboBox->findText(value));
} else if (simulationFlag.compare("w") == 0) {
mpEnableAllWarningsCheckBox->setChecked(true);
} else if (simulationFlag.compare("lv") == 0) {
QStringList logStreams = value.split(",", QString::SkipEmptyParts);
int i = 0;
while (QLayoutItem* pLayoutItem = mpLoggingGroupLayout->itemAt(i)) {
if (dynamic_cast<QCheckBox*>(pLayoutItem->widget())) {
QCheckBox *pLogStreamCheckBox = dynamic_cast<QCheckBox*>(pLayoutItem->widget());
if (logStreams.contains(pLogStreamCheckBox->text())) {
pLogStreamCheckBox->setChecked(true);
// if ignoreSimulationFlagsAnnotation flag is not set then read the __OpenModelica_simulationFlags annotation
if (!mpMainWindow->getOptionsDialog()->getSimulationPage()->getIgnoreSimulationFlagsAnnotationCheckBox()->isChecked()) {
// if the class has __OpenModelica_simulationFlags annotation then use its values.
QList<QString> simulationFlags = mpMainWindow->getOMCProxy()->getAnnotationNamedModifiers(mClassName, "__OpenModelica_simulationFlags");
foreach (QString simulationFlag, simulationFlags) {
QString value = mpMainWindow->getOMCProxy()->getAnnotationModifierValue(mClassName, "__OpenModelica_simulationFlags", simulationFlag);
if (simulationFlag.compare("clock") == 0) {
mpClockComboBox->setCurrentIndex(mpClockComboBox->findText(value));
} else if (simulationFlag.compare("cpu") == 0) {
mpCPUTimeCheckBox->setChecked(true);
} else if (simulationFlag.compare("dasslnoRestart") == 0) {
mpDasslRestartCheckBox->setChecked(false);
} else if (simulationFlag.compare("dasslnoRootFinding") == 0) {
mpDasslRootFindingCheckBox->setChecked(false);
} else if (simulationFlag.compare("emit_protected") == 0) {
mpProtectedVariablesCheckBox->setChecked(true);
} else if (simulationFlag.compare("f") == 0) {
mpModelSetupFileTextBox->setText(value);
} else if (simulationFlag.compare("iif") == 0) {
mpEquationSystemInitializationFileTextBox->setText(value);
} else if (simulationFlag.compare("iim") == 0) {
mpInitializationMethodComboBox->setCurrentIndex(mpInitializationMethodComboBox->findText(value));
} else if (simulationFlag.compare("iit") == 0) {
mpEquationSystemInitializationTimeTextBox->setText(value);
} else if (simulationFlag.compare("initialStepSize") == 0) {
mpDasslInitialStepSizeTextBox->setText(value);
} else if (simulationFlag.compare("jacobian") == 0) {
mpJacobianComboBox->setCurrentIndex(mpJacobianComboBox->findText(value));
} else if (simulationFlag.compare("l") == 0) {
mpLinearizationTimeTextBox->setText(value);
} else if (simulationFlag.compare("ls") == 0) {
mpLinearSolverComboBox->setCurrentIndex(mpLinearSolverComboBox->findText(value));
} else if (simulationFlag.compare("maxIntegrationOrder") == 0) {
mpDasslMaxIntegrationOrderSpinBox->setValue(value.toInt());
} else if (simulationFlag.compare("maxStepSize") == 0) {
mpDasslMaxStepSizeTextBox->setText(value);
} else if (simulationFlag.compare("nls") == 0) {
mpNonLinearSolverComboBox->setCurrentIndex(mpNonLinearSolverComboBox->findText(value));
} else if (simulationFlag.compare("noEquidistantTimeGrid") == 0) {
mpEquidistantTimeGridCheckBox->setChecked(false);
} else if (simulationFlag.compare("noEventEmit") == 0) {
mpStoreVariablesAtEventsCheckBox->setChecked(false);
} else if (simulationFlag.compare("output") == 0) {
mpOutputVariablesTextBox->setText(value);
} else if (simulationFlag.compare("r") == 0) {
mpResultFileName->setText(value);
} else if (simulationFlag.compare("s") == 0) {
mpMethodComboBox->setCurrentIndex(mpMethodComboBox->findText(value));
} else if (simulationFlag.compare("w") == 0) {
mpEnableAllWarningsCheckBox->setChecked(true);
} else if (simulationFlag.compare("lv") == 0) {
QStringList logStreams = value.split(",", QString::SkipEmptyParts);
int i = 0;
while (QLayoutItem* pLayoutItem = mpLoggingGroupLayout->itemAt(i)) {
if (dynamic_cast<QCheckBox*>(pLayoutItem->widget())) {
QCheckBox *pLogStreamCheckBox = dynamic_cast<QCheckBox*>(pLayoutItem->widget());
if (logStreams.contains(pLogStreamCheckBox->text())) {
pLogStreamCheckBox->setChecked(true);
}
}
i++;
}
i++;
}
}
}
Expand Down

0 comments on commit 0868b1d

Please sign in to comment.