Skip to content

Commit

Permalink
Always load MSL on startup (#9419)
Browse files Browse the repository at this point in the history
* Always load MSL on startup

Added a setting to enable/disable auto load of latest MSL

* Update users guide
  • Loading branch information
adeas31 committed Sep 26, 2022
1 parent 5124dfb commit 086234d
Show file tree
Hide file tree
Showing 4 changed files with 32 additions and 12 deletions.
12 changes: 11 additions & 1 deletion OMEdit/OMEditLIB/OMC/OMCProxy.cpp
Expand Up @@ -757,13 +757,23 @@ void OMCProxy::loadSystemLibraries()
loadModel("Modelica", "default");
loadModel("ModelicaReference", "default");
} else {
const bool loadLatestModelica = OptionsDialog::instance()->getLibrariesPage()->getLoadLatestModelicaCheckbox()->isChecked();
if (loadLatestModelica) {
loadModel("Modelica", "default");
}
QSettings *pSettings = Utilities::getApplicationSettings();
pSettings->beginGroup("libraries");
QStringList libraries = pSettings->childKeys();
pSettings->endGroup();
foreach (QString lib, libraries) {
QString version = pSettings->value("libraries/" + lib).toString();
loadModel(lib, version);
if (loadLatestModelica && (lib.compare(QStringLiteral("Modelica")) == 0 || lib.compare(QStringLiteral("ModelicaServices")) == 0 || lib.compare(QStringLiteral("Complex")) == 0)) {
QString msg = tr("Skip loading <b>%1</b> version <b>%2</b> since latest version is already loaded because of the setting <b>Load latest Modelica version on startup</b>.").arg(lib, version);
MessageItem messageItem(MessageItem::Modelica, msg, Helper::scriptingKind, Helper::notificationLevel);
MessagesWidget::instance()->addGUIMessage(messageItem);
} else {
loadModel(lib, version);
}
}
OptionsDialog::instance()->readLibrariesSettings();
}
Expand Down
14 changes: 12 additions & 2 deletions OMEdit/OMEditLIB/Options/OptionsDialog.cpp
Expand Up @@ -280,6 +280,10 @@ void OptionsDialog::readLibrariesSettings()
mpLibrariesPage->getModelicaPathTextBox()->setText(modelicaPath);
}
}
// read load latest Modelica
if (mpSettings->contains("loadLatestModelica")) {
mpLibrariesPage->getLoadLatestModelicaCheckbox()->setChecked(mpSettings->value("loadLatestModelica").toBool());
}
// read the system libraries
int i = 0;
while(i < mpLibrariesPage->getSystemLibrariesTree()->topLevelItemCount()) {
Expand Down Expand Up @@ -1123,6 +1127,8 @@ void OptionsDialog::saveLibrariesSettings()
mpLibrariesPage->getModelicaPathTextBox()->setPlaceholderText(Helper::ModelicaPath);
mpSettings->setValue("modelicaPath-1", "");
}
// save load latest Modelica
mpSettings->setValue("loadLatestModelica", mpLibrariesPage->getLoadLatestModelicaCheckbox()->isChecked());
// read the settings and add system libraries
mpSettings->beginGroup("libraries");
foreach (QString lib, mpSettings->childKeys()) {
Expand Down Expand Up @@ -2239,6 +2245,9 @@ LibrariesPage::LibrariesPage(OptionsDialog *pOptionsDialog)
// system libraries note
mpSystemLibrariesNoteLabel = new Label(tr("The system libraries are read from the MODELICAPATH and are always read-only."));
mpSystemLibrariesNoteLabel->setElideMode(Qt::ElideMiddle);
// load latest Modeica checkbox
mpLoadLatestModelicaCheckbox = new QCheckBox(tr("Load latest Modelica version on startup"));
mpLoadLatestModelicaCheckbox->setChecked(true);
// system libraries tree
mpSystemLibrariesTree = new QTreeWidget;
mpSystemLibrariesTree->setItemDelegate(new ItemDelegate(mpSystemLibrariesTree));
Expand Down Expand Up @@ -2268,8 +2277,9 @@ LibrariesPage::LibrariesPage(OptionsDialog *pOptionsDialog)
QGridLayout *pSystemLibrariesLayout = new QGridLayout;
pSystemLibrariesLayout->setAlignment(Qt::AlignTop | Qt::AlignLeft);
pSystemLibrariesLayout->addWidget(mpSystemLibrariesNoteLabel, 0, 0, 1, 2);
pSystemLibrariesLayout->addWidget(mpSystemLibrariesTree, 1, 0);
pSystemLibrariesLayout->addWidget(mpSystemLibrariesButtonBox, 1, 1);
pSystemLibrariesLayout->addWidget(mpLoadLatestModelicaCheckbox, 1, 0, 1, 2);
pSystemLibrariesLayout->addWidget(mpSystemLibrariesTree, 2, 0);
pSystemLibrariesLayout->addWidget(mpSystemLibrariesButtonBox, 2, 1);
mpSystemLibrariesGroupBox->setLayout(pSystemLibrariesLayout);
// user libraries groupbox
mpUserLibrariesGroupBox = new QGroupBox(tr("User libraries loaded automatically on startup *"));
Expand Down
2 changes: 2 additions & 0 deletions OMEdit/OMEditLIB/Options/OptionsDialog.h
Expand Up @@ -308,6 +308,7 @@ class LibrariesPage : public QWidget
public:
LibrariesPage(OptionsDialog *pOptionsDialog);
QLineEdit *getModelicaPathTextBox() const {return mpModelicaPathTextBox;}
QCheckBox *getLoadLatestModelicaCheckbox() const {return mpLoadLatestModelicaCheckbox;}
QTreeWidget* getSystemLibrariesTree() {return mpSystemLibrariesTree;}
QTreeWidget* getUserLibrariesTree() {return mpUserLibrariesTree;}
OptionsDialog *mpOptionsDialog;
Expand All @@ -316,6 +317,7 @@ class LibrariesPage : public QWidget
Label *mpModelicaPathLabel;
QLineEdit *mpModelicaPathTextBox;
Label *mpSystemLibrariesNoteLabel;
QCheckBox *mpLoadLatestModelicaCheckbox;
QTreeWidget *mpSystemLibrariesTree;
QPushButton *mpAddSystemLibraryButton;
QPushButton *mpRemoveSystemLibraryButton;
Expand Down
16 changes: 7 additions & 9 deletions doc/UsersGuide/source/omedit.rst
Expand Up @@ -1159,18 +1159,16 @@ General
Libraries
~~~~~~~~~

- *System Libraries* – The list of system libraries that should be
loaded every time OMEdit starts.
- General

- *MODELICAPATH* – Sets the MODELICAPATH. MODELICAPATH is used to load libraries.

- *Force loading of Modelica Standard Library* – If true then Modelica
and ModelicaReference will always load even if user has removed
them from the list of system libraries.
- System libraries loaded automatically on startup - The list of system libraries that are loaded on startup.

- *Load OpenModelica library on startup* – If true then OpenModelica
package will be loaded when OMEdit is started.
- *Load latest Modelica version on startup* - Is true then the latest available version of the
Modelica Standard Library is always loaded alongwith its dependencies.

- *User Libraries* – The list of user libraries/files that should be
loaded every time OMEdit starts.
- User libraries loaded automatically on startup - The list of user libraries/files that are loaded on startup.

.. _omedit-options-text-editor :

Expand Down

0 comments on commit 086234d

Please sign in to comment.