File indexing completed on 2024-04-28 05:49:10

0001 /* This file is part of the KDE project
0002    SPDX-FileCopyrightText: 2014 Martin Sandsmark <martin.sandsmark@kde.org>
0003 
0004    SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 #include "replicodeconfig.h"
0008 #include "replicodesettings.h"
0009 #include "ui_config.h"
0010 
0011 enum TraceLevels {
0012     CompositeInputs = 1 << 0,
0013     CompositeOutputs = 1 << 1,
0014     ModelInputs = 1 << 2,
0015     ModelOutputs = 1 << 3,
0016     PredictionMonitoring = 1 << 4,
0017     GoalMonitoring = 1 << 5,
0018     ModelRevision = 1 << 6,
0019     ModelCompositeInjection = 1 << 7
0020 };
0021 
0022 ReplicodeConfig::ReplicodeConfig(QWidget *parent)
0023     : QTabWidget(parent)
0024     , m_ui(new Ui_tabWidget)
0025     , m_settings(new ReplicodeSettings(this))
0026 {
0027     m_ui->setupUi(this);
0028     load();
0029 }
0030 
0031 ReplicodeConfig::~ReplicodeConfig()
0032 {
0033     delete m_ui;
0034 }
0035 
0036 void ReplicodeConfig::load()
0037 {
0038     m_ui->basePeriod->setValue(m_settings->basePeriod);
0039     m_ui->debug->setChecked(m_settings->debug);
0040     m_ui->debugWindows->setValue(m_settings->debugWindows);
0041     m_ui->decObjFile->setText(m_settings->decompilationFilePath);
0042     m_ui->decompileModels->setChecked(m_settings->decompileModels);
0043     m_ui->decompileObjects->setChecked(m_settings->decompileObjects);
0044     m_ui->dumpModelsFile->setText(m_settings->modelsPath);
0045     m_ui->dumpObjFile->setText(m_settings->objectsPath);
0046     m_ui->floatTolerance->setValue(m_settings->floatTolerance);
0047     m_ui->goalPredSuccessRes->setValue(m_settings->goalPredictionSuccessResilience);
0048     m_ui->ignoreNamedModels->setChecked(m_settings->ignoreNamedModels);
0049     m_ui->maxSimTimeHoriz->setValue(m_settings->maximumSimulationTimeHorizon);
0050     m_ui->minSimTimeHoriz->setValue(m_settings->minimumSimulationTimeHorizon);
0051     m_ui->modelInertiacount->setValue(m_settings->mdlInertiaCountThreshold);
0052     m_ui->modelInertiaSuccessRate->setValue(m_settings->mdlInertiaSuccessRateThreshold);
0053     m_ui->notifMarkerRes->setValue(m_settings->notificationMarkerResilience);
0054     m_ui->perfSamplePeriod->setValue(m_settings->perfSamplingPeriod);
0055     m_ui->primaryTimeHoriz->setValue(m_settings->primaryTimeHorizon);
0056     m_ui->probeLevel->setValue(m_settings->probeLevel);
0057     m_ui->reductionCoreCount->setValue(m_settings->reductionCoreCount);
0058     m_ui->runTime->setValue(m_settings->runTime);
0059     m_ui->secondaryTimeHoriz->setValue(m_settings->secondaryTimeHorizon);
0060     m_ui->simTimeHoriz->setValue(m_settings->simulationTimeHorizon);
0061     m_ui->testModels->setChecked(m_settings->testModels);
0062     m_ui->testObj->setChecked(m_settings->testObjects);
0063     m_ui->timeCoreCount->setValue(m_settings->timeCoreCount);
0064     m_ui->timerTolerance->setValue(m_settings->timeTolerance);
0065     m_ui->tpxDeltaSuccessRate->setValue(m_settings->tpxDeltaSuccessRateThreshold);
0066     m_ui->tpxTimeHoriz->setValue(m_settings->tpxTimehorizon);
0067     m_ui->userClassPath->setText(m_settings->userClassPath);
0068     m_ui->userModulePath->setText(m_settings->userOperatorPath);
0069 
0070     m_ui->traceCompInputs->setChecked(m_settings->traceLevels & CompositeInputs);
0071     m_ui->traceCompOutputs->setChecked(m_settings->traceLevels & CompositeOutputs);
0072     m_ui->traceModelIn->setChecked(m_settings->traceLevels & ModelInputs);
0073     m_ui->traceModelOut->setChecked(m_settings->traceLevels & ModelOutputs);
0074     m_ui->tracePredMon->setChecked(m_settings->traceLevels & PredictionMonitoring);
0075     m_ui->traceGoalMon->setChecked(m_settings->traceLevels & GoalMonitoring);
0076     m_ui->traceModelRev->setChecked(m_settings->traceLevels & ModelRevision);
0077     m_ui->traceModComInj->setChecked(m_settings->traceLevels & ModelCompositeInjection);
0078 }
0079 
0080 void ReplicodeConfig::save()
0081 {
0082     m_settings->basePeriod = m_ui->basePeriod->value();
0083     m_settings->debug = m_ui->debug->isChecked();
0084     m_settings->debugWindows = m_ui->debugWindows->value();
0085     m_settings->decompilationFilePath = m_ui->decObjFile->text();
0086     m_settings->decompileModels = m_ui->decompileModels->isChecked();
0087     m_settings->decompileObjects = m_ui->decompileObjects->isChecked();
0088     m_settings->modelsPath = m_ui->dumpModelsFile->text();
0089     m_settings->objectsPath = m_ui->dumpObjFile->text();
0090     m_settings->floatTolerance = m_ui->floatTolerance->value();
0091     m_settings->goalPredictionSuccessResilience = m_ui->goalPredSuccessRes->value();
0092     m_settings->ignoreNamedModels = m_ui->ignoreNamedModels->isChecked();
0093     m_settings->maximumSimulationTimeHorizon = m_ui->maxSimTimeHoriz->value();
0094     m_settings->minimumSimulationTimeHorizon = m_ui->minSimTimeHoriz->value();
0095     m_settings->mdlInertiaCountThreshold = m_ui->modelInertiacount->value();
0096     m_settings->mdlInertiaSuccessRateThreshold = m_ui->modelInertiaSuccessRate->value();
0097     m_settings->notificationMarkerResilience = m_ui->notifMarkerRes->value();
0098     m_settings->perfSamplingPeriod = m_ui->perfSamplePeriod->value();
0099     m_settings->primaryTimeHorizon = m_ui->primaryTimeHoriz->value();
0100     m_settings->probeLevel = m_ui->probeLevel->value();
0101     m_settings->reductionCoreCount = m_ui->reductionCoreCount->value();
0102     m_settings->runTime = m_ui->runTime->value();
0103     m_settings->secondaryTimeHorizon = m_ui->secondaryTimeHoriz->value();
0104     m_settings->simulationTimeHorizon = m_ui->simTimeHoriz->value();
0105     m_settings->testModels = m_ui->testModels->isChecked();
0106     m_settings->testObjects = m_ui->testObj->isChecked();
0107     m_settings->timeCoreCount = m_ui->timeCoreCount->value();
0108     m_settings->timeTolerance = m_ui->timerTolerance->value();
0109     m_settings->tpxDeltaSuccessRateThreshold = m_ui->tpxDeltaSuccessRate->value();
0110     m_settings->tpxTimehorizon = m_ui->tpxTimeHoriz->value();
0111     m_settings->userClassPath = m_ui->userClassPath->text();
0112     m_settings->userOperatorPath = m_ui->userModulePath->text();
0113 
0114     int trace = 0;
0115     if (m_ui->traceCompInputs->isChecked()) {
0116         trace |= CompositeInputs;
0117     }
0118     if (m_ui->traceCompOutputs->isChecked()) {
0119         trace |= CompositeOutputs;
0120     }
0121     if (m_ui->traceModelIn->isChecked()) {
0122         trace |= ModelInputs;
0123     }
0124     if (m_ui->traceModelOut->isChecked()) {
0125         trace |= ModelOutputs;
0126     }
0127     if (m_ui->tracePredMon->isChecked()) {
0128         trace |= PredictionMonitoring;
0129     }
0130     if (m_ui->traceGoalMon->isChecked()) {
0131         trace |= GoalMonitoring;
0132     }
0133     if (m_ui->traceModelRev->isChecked()) {
0134         trace |= ModelRevision;
0135     }
0136     if (m_ui->traceModComInj->isChecked()) {
0137         trace |= ModelCompositeInjection;
0138     }
0139     m_settings->traceLevels = trace;
0140     m_settings->save();
0141 }
0142 
0143 void ReplicodeConfig::reset()
0144 {
0145     m_settings->setDefaults();
0146     load();
0147 }
0148 
0149 #include "moc_replicodeconfig.cpp"