Skip to content

Commit

Permalink
OMSimulator settings page
Browse files Browse the repository at this point in the history
Allow setting the working directory and debug logging.
  • Loading branch information
adeas31 committed Feb 12, 2018
1 parent 9bfe511 commit 8f2cb04
Show file tree
Hide file tree
Showing 4 changed files with 134 additions and 3 deletions.
22 changes: 21 additions & 1 deletion OMEdit/OMEditGUI/OMS/OMSProxy.cpp
Expand Up @@ -96,9 +96,9 @@ void OMSProxy::destroy()
OMSProxy::OMSProxy()
{
// OMSimulator global settings
oms2_setLoggingCallback(loggingCallback);
setLogFile(QString(Utilities::tempDirectory() + "/omsllog.txt").toStdString().c_str());
setTempDirectory(Utilities::tempDirectory().toStdString().c_str());
oms2_setLoggingCallback(loggingCallback);
}

/*!
Expand Down Expand Up @@ -138,6 +138,16 @@ void OMSProxy::setTempDirectory(QString path)
oms_setTempDirectory(path.toStdString().c_str());
}

/*!
* \brief OMSProxy::setWorkingDirectory
* Sets the working directory.
* \param path
*/
void OMSProxy::setWorkingDirectory(QString path)
{
oms_setWorkingDirectory(path.toStdString().c_str());
}

/*!
* \brief OMSProxy::newFMIModel
* Creates a new FMI model.
Expand All @@ -150,6 +160,16 @@ bool OMSProxy::newFMIModel(QString ident)
return statusToBool(status);
}

/*!
* \brief OMSProxy::setDebugLogging
* Sets the debug logging.
* \param useDebugLogging
*/
void OMSProxy::setDebugLogging(bool useDebugLogging)
{
oms2_setDebugLogging(useDebugLogging);
}

/*!
* \brief OMSProxy::newTLMModel
* Creates a new TLM model.
Expand Down
2 changes: 2 additions & 0 deletions OMEdit/OMEditGUI/OMS/OMSProxy.h
Expand Up @@ -55,6 +55,8 @@ class OMSProxy : public QObject
bool statusToBool(oms_status_t status);
void setLogFile(QString filename);
void setTempDirectory(QString path);
void setWorkingDirectory(QString path);
void setDebugLogging(bool useDebugLogging);
bool newFMIModel(QString ident);
bool newTLMModel(QString ident);
bool unloadModel(QString ident);
Expand Down
89 changes: 87 additions & 2 deletions OMEdit/OMEditGUI/Options/OptionsDialog.cpp
Expand Up @@ -105,6 +105,7 @@ OptionsDialog::OptionsDialog(QWidget *pParent)
mpDebuggerPage = new DebuggerPage(this);
mpFMIPage = new FMIPage(this);
mpTLMPage = new TLMPage(this);
mpOMSimulatorPage = new OMSimulatorPage(this);
mpTraceabilityPage = new TraceabilityPage(this);
// get the settings
readSettings();
Expand Down Expand Up @@ -145,6 +146,7 @@ void OptionsDialog::readSettings()
readDebuggerSettings();
readFMISettings();
readTLMSettings();
readOMSimulatorSettings();
readTraceabilitySettings();
}

Expand All @@ -163,7 +165,6 @@ void OptionsDialog::readGeneralSettings()
// read the working directory
if (mpSettings->contains("workingDirectory")) {
MainWindow::instance()->getOMCProxy()->changeDirectory(mpSettings->value("workingDirectory").toString());
OMSProxy::instance()->setTempDirectory(mpSettings->value("workingDirectory").toString());
}
mpGeneralSettingsPage->setWorkingDirectory(MainWindow::instance()->getOMCProxy()->changeDirectory());
// read toolbar icon size
Expand Down Expand Up @@ -784,6 +785,24 @@ void OptionsDialog::readTLMSettings()
}
}

/*!
* \brief OptionsDialog::readOMSimulatorSettings
* Reads the OMSimulator settings from omedit.ini
*/
void OptionsDialog::readOMSimulatorSettings()
{
// read working directory
if (mpSettings->contains("OMSimulator/workingDirectory")) {
mpOMSimulatorPage->setWorkingDirectory(mpSettings->value("OMSimulator/workingDirectory").toString());
OMSProxy::instance()->setWorkingDirectory(mpSettings->value("OMSimulator/workingDirectory").toString());
}
// read debug logging
if (mpSettings->contains("OMSimulator/debugLogging")) {
mpOMSimulatorPage->getDebugLoggingCheckBox()->setChecked(mpSettings->value("OMSimulator/debugLogging").toBool());
OMSProxy::instance()->setDebugLogging(mpSettings->value("OMSimulator/debugLogging").toBool());
}
}

/*!
* \brief OptionsDialog::readTraceabilitySettings
* Reads the Traceability settings from omedit.ini
Expand Down Expand Up @@ -829,7 +848,6 @@ void OptionsDialog::saveGeneralSettings()
mpSettings->setValue("language", language);
// save working directory
MainWindow::instance()->getOMCProxy()->changeDirectory(mpGeneralSettingsPage->getWorkingDirectory());
OMSProxy::instance()->setTempDirectory(mpGeneralSettingsPage->getWorkingDirectory());
mpGeneralSettingsPage->setWorkingDirectory(MainWindow::instance()->getOMCProxy()->changeDirectory());
mpSettings->setValue("workingDirectory", mpGeneralSettingsPage->getWorkingDirectory());
// save toolbar icon size
Expand Down Expand Up @@ -1223,6 +1241,20 @@ void OptionsDialog::saveTLMSettings()
mpSettings->setValue("TLM/MonitorProcess", mpTLMPage->getTLMMonitorProcessTextBox()->text());
}

/*!
* \brief OptionsDialog::saveOMSimulatorSettings
* Saves the OMSimulator settings in omedit.ini
*/
void OptionsDialog::saveOMSimulatorSettings()
{
// set working directory
mpSettings->setValue("OMSimulator/workingDirectory", mpOMSimulatorPage->getWorkingDirectory());
OMSProxy::instance()->setWorkingDirectory(mpOMSimulatorPage->getWorkingDirectory());
// set debug logging
mpSettings->setValue("OMSimulator/debugLogging", mpOMSimulatorPage->getDebugLoggingCheckBox()->isChecked());
OMSProxy::instance()->setDebugLogging(mpOMSimulatorPage->getDebugLoggingCheckBox()->isChecked());
}

/*!
* \brief OptionsDialog::saveTraceabilitySettings
* Saves the traceability settings in omedit.ini
Expand Down Expand Up @@ -1369,6 +1401,10 @@ void OptionsDialog::addListItems()
QListWidgetItem *pTLMItem = new QListWidgetItem(mpOptionsList);
pTLMItem->setIcon(QIcon(":/Resources/icons/tlm-icon.svg"));
pTLMItem->setText(tr("OMTLMSimulator"));
// OMSimulator Item
QListWidgetItem *pOMSimulatorItem = new QListWidgetItem(mpOptionsList);
pOMSimulatorItem->setIcon(QIcon(":/Resources/icons/tlm-icon.svg"));
pOMSimulatorItem->setText(tr("OMSimulator"));
// Traceability Item
QListWidgetItem *pTraceabilityItem = new QListWidgetItem(mpOptionsList);
pTraceabilityItem->setIcon(QIcon(":/Resources/icons/traceability.svg"));
Expand Down Expand Up @@ -1399,6 +1435,7 @@ void OptionsDialog::createPages()
mpPagesWidget->addWidget(mpDebuggerPage);
mpPagesWidget->addWidget(mpFMIPage);
mpPagesWidget->addWidget(mpTLMPage);
mpPagesWidget->addWidget(mpOMSimulatorPage);
mpPagesWidget->addWidget(mpTraceabilityPage);
}

Expand Down Expand Up @@ -1493,6 +1530,7 @@ void OptionsDialog::saveSettings()
saveDebuggerSettings();
saveFMISettings();
saveTLMSettings();
saveOMSimulatorSettings();
saveTraceabilitySettings();
// emit the signal so that all text editors can set settings & line wrapping mode
emit textSettingsChanged();
Expand Down Expand Up @@ -4475,6 +4513,53 @@ void TLMPage::browseTLMMonitorProcess()
NULL, Helper::exeFileTypes, NULL));
}

/*!
* \class OMSimulatorPage
* Creates an interface for OMSimulator settings.
*/
/*!
* \brief OMSimulatorPage::OMSimulatorPage
* \param pOptionsDialog
*/
OMSimulatorPage::OMSimulatorPage(OptionsDialog *pOptionsDialog)
: QWidget(pOptionsDialog)
{
mpOptionsDialog = pOptionsDialog;
mpGeneralGroupBox = new QGroupBox(Helper::general);
// working directory
mpWorkingDirectoryLabel = new Label(Helper::workingDirectory);
mpWorkingDirectoryTextBox = new QLineEdit(Utilities::tempDirectory());
mpBrowseWorkingDirectoryButton = new QPushButton(Helper::browse);
mpBrowseWorkingDirectoryButton->setAutoDefault(false);
connect(mpBrowseWorkingDirectoryButton, SIGNAL(clicked()), SLOT(browseWorkingDirectory()));
// debug logging
mpDebugLoggingCheckBox = new QCheckBox(tr("Use Debug Logging"));
// set the layout
QGridLayout *pGeneralGroupBoxLayout = new QGridLayout;
pGeneralGroupBoxLayout->setAlignment(Qt::AlignTop | Qt::AlignLeft);
pGeneralGroupBoxLayout->addWidget(mpWorkingDirectoryLabel, 0, 0);
pGeneralGroupBoxLayout->addWidget(mpWorkingDirectoryTextBox, 0, 1);
pGeneralGroupBoxLayout->addWidget(mpBrowseWorkingDirectoryButton, 0, 2);
pGeneralGroupBoxLayout->addWidget(mpDebugLoggingCheckBox, 1, 0, 1, 3);
mpGeneralGroupBox->setLayout(pGeneralGroupBoxLayout);
QVBoxLayout *pMainLayout = new QVBoxLayout;
pMainLayout->setAlignment(Qt::AlignTop);
pMainLayout->setContentsMargins(0, 0, 0, 0);
pMainLayout->addWidget(mpGeneralGroupBox);
setLayout(pMainLayout);
}

/*!
* \brief OMSimulatorPage::browseWorkingDirectory
* Slot activated when mpBrowseWorkingDirectoryButton clicked signal is raised.
* Allows user to choose a new working directory.
*/
void OMSimulatorPage::browseWorkingDirectory()
{
mpWorkingDirectoryTextBox->setText(StringHandler::getExistingDirectory(this, QString("%1 - %2").arg(Helper::applicationName)
.arg(Helper::chooseDirectory), NULL));
}

/*!
* \class TraceabilityPage
* Creates an interface for Traceability settings.
Expand Down
24 changes: 24 additions & 0 deletions OMEdit/OMEditGUI/Options/OptionsDialog.h
Expand Up @@ -65,6 +65,7 @@ class FigaroPage;
class DebuggerPage;
class FMIPage;
class TLMPage;
class OMSimulatorPage;
class TraceabilityPage;
class TabSettings;
class StackFramesWidget;
Expand Down Expand Up @@ -103,6 +104,7 @@ class OptionsDialog : public QDialog
void readDebuggerSettings();
void readFMISettings();
void readTLMSettings();
void readOMSimulatorSettings();
void readTraceabilitySettings();
void saveGeneralSettings();
void saveLibrariesSettings();
Expand All @@ -113,6 +115,7 @@ class OptionsDialog : public QDialog
void saveCEditorSettings();
void saveHTMLEditorSettings();
void saveTLMSettings();
void saveOMSimulatorSettings();
void saveTraceabilitySettings();
void saveGraphicalViewsSettings();
void saveSimulationSettings();
Expand Down Expand Up @@ -146,6 +149,7 @@ class OptionsDialog : public QDialog
DebuggerPage* getDebuggerPage() {return mpDebuggerPage;}
FMIPage* getFMIPage() {return mpFMIPage;}
TLMPage* getTLMPage() {return mpTLMPage;}
OMSimulatorPage* getOMSimulatorPage() {return mpOMSimulatorPage;}
TraceabilityPage* getTraceabilityPage() {return mpTraceabilityPage;}
void emitModelicaEditorSettingsChanged() {emit modelicaEditorSettingsChanged();}
void saveDialogGeometry();
Expand Down Expand Up @@ -182,6 +186,7 @@ public slots:
DebuggerPage *mpDebuggerPage;
FMIPage *mpFMIPage;
TLMPage *mpTLMPage;
OMSimulatorPage *mpOMSimulatorPage;
TraceabilityPage *mpTraceabilityPage;
QSettings *mpSettings;
QListWidget *mpOptionsList;
Expand Down Expand Up @@ -888,6 +893,25 @@ private slots:
void browseTLMMonitorProcess();
};

class OMSimulatorPage : public QWidget
{
Q_OBJECT
public:
OMSimulatorPage(OptionsDialog *pOptionsDialog);
void setWorkingDirectory(QString value) {mpWorkingDirectoryTextBox->setText(value);}
QString getWorkingDirectory() {return mpWorkingDirectoryTextBox->text();}
QCheckBox* getDebugLoggingCheckBox() {return mpDebugLoggingCheckBox;}
private:
OptionsDialog *mpOptionsDialog;
QGroupBox *mpGeneralGroupBox;
Label *mpWorkingDirectoryLabel;
QLineEdit *mpWorkingDirectoryTextBox;
QPushButton *mpBrowseWorkingDirectoryButton;
QCheckBox *mpDebugLoggingCheckBox;
private slots:
void browseWorkingDirectory();
};

class TraceabilityPage : public QWidget
{
Q_OBJECT
Expand Down

0 comments on commit 8f2cb04

Please sign in to comment.