Skip to content

Commit

Permalink
Allow setting OMSimulator flags
Browse files Browse the repository at this point in the history
Removed the oms2 references
  • Loading branch information
adeas31 committed Jan 17, 2019
1 parent b3b2c54 commit 6bcab54
Show file tree
Hide file tree
Showing 7 changed files with 100 additions and 223 deletions.
117 changes: 61 additions & 56 deletions OMEdit/OMEditGUI/Modeling/Commands.cpp
Expand Up @@ -1942,17 +1942,18 @@ void AddSubModelCommand::redoInternal()
*/
void AddSubModelCommand::undo()
{
// delete the submodel
mpGraphicsView->deleteSubModel(mName);
// delete the LibraryTreeItem
MainWindow::instance()->getLibraryWidget()->getLibraryTreeModel()->unloadOMSModel(mpLibraryTreeItem, false);
mpLibraryTreeItem = 0;
// delete the Component
mpGraphicsView->removeItem(mpComponent);
mpGraphicsView->removeItem(mpComponent->getOriginItem());
mpGraphicsView->deleteComponentFromList(mpComponent);
mpComponent->deleteLater();
mpComponent = 0;
qDebug() << "AddSubModelCommand::undo() not implemented.";
// // delete the submodel
// mpGraphicsView->deleteSubModel(mName);
// // delete the LibraryTreeItem
// MainWindow::instance()->getLibraryWidget()->getLibraryTreeModel()->unloadOMSModel(mpLibraryTreeItem, false);
// mpLibraryTreeItem = 0;
// // delete the Component
// mpGraphicsView->removeItem(mpComponent);
// mpGraphicsView->removeItem(mpComponent->getOriginItem());
// mpGraphicsView->deleteComponentFromList(mpComponent);
// mpComponent->deleteLater();
// mpComponent = 0;
}

/*!
Expand All @@ -1978,17 +1979,18 @@ DeleteSubModelCommand::DeleteSubModelCommand(Component *pComponent, GraphicsView
*/
void DeleteSubModelCommand::redoInternal()
{
// delete the submodel
mpGraphicsView->deleteSubModel(mpComponent->getName());
// delete the LibraryTreeItem
MainWindow::instance()->getLibraryWidget()->getLibraryTreeModel()->unloadOMSModel(mpComponent->getLibraryTreeItem(), false);
// delete the Component
mpGraphicsView->removeItem(mpComponent);
mpGraphicsView->removeItem(mpComponent->getOriginItem());
mpGraphicsView->deleteComponentFromList(mpComponent);
mpComponent->deleteLater();
mpComponent = 0;
mpGraphicsView->deleteComponentFromClass(mpComponent);
qDebug() << "DeleteSubModelCommand::redoInternal() not implemented.";
// // delete the submodel
// mpGraphicsView->deleteSubModel(mpComponent->getName());
// // delete the LibraryTreeItem
// MainWindow::instance()->getLibraryWidget()->getLibraryTreeModel()->unloadOMSModel(mpComponent->getLibraryTreeItem(), false);
// // delete the Component
// mpGraphicsView->removeItem(mpComponent);
// mpGraphicsView->removeItem(mpComponent->getOriginItem());
// mpGraphicsView->deleteComponentFromList(mpComponent);
// mpComponent->deleteLater();
// mpComponent = 0;
// mpGraphicsView->deleteComponentFromClass(mpComponent);
}

/*!
Expand All @@ -1997,24 +1999,25 @@ void DeleteSubModelCommand::redoInternal()
*/
void DeleteSubModelCommand::undo()
{
// add submodel
mpGraphicsView->addSubModel(mName, mPath);
// Create a LibraryTreeItem for FMU
LibraryTreeModel *pLibraryTreeModel = MainWindow::instance()->getLibraryWidget()->getLibraryTreeModel();
LibraryTreeItem *pParentLibraryTreeItem = mpGraphicsView->getModelWidget()->getLibraryTreeItem();
LibraryTreeItem *pLibraryTreeItem;
pLibraryTreeItem = pLibraryTreeModel->createLibraryTreeItem(mName, QString("%1.%2").arg(pParentLibraryTreeItem->getNameStructure())
.arg(mName), mPath, true, pParentLibraryTreeItem);
// Create ModelWidget for FMU so that its input/output signals are fetched
pLibraryTreeModel->loadLibraryTreeItemPixmap(pLibraryTreeItem);
// add the FMU to view
ComponentInfo *pComponentInfo = new ComponentInfo;
pComponentInfo->setName(pLibraryTreeItem->getName());
pComponentInfo->setClassName(pLibraryTreeItem->getNameStructure());
mpComponent = new Component(mName, pLibraryTreeItem, mAnnotation, QPointF(0, 0), pComponentInfo, mpGraphicsView);
mpGraphicsView->addItem(mpComponent);
mpGraphicsView->addItem(mpComponent->getOriginItem());
mpGraphicsView->addComponentToList(mpComponent);
qDebug() << "DeleteSubModelCommand::undo() not implemented.";
// // add submodel
// mpGraphicsView->addSubModel(mName, mPath);
// // Create a LibraryTreeItem for FMU
// LibraryTreeModel *pLibraryTreeModel = MainWindow::instance()->getLibraryWidget()->getLibraryTreeModel();
// LibraryTreeItem *pParentLibraryTreeItem = mpGraphicsView->getModelWidget()->getLibraryTreeItem();
// LibraryTreeItem *pLibraryTreeItem;
// pLibraryTreeItem = pLibraryTreeModel->createLibraryTreeItem(mName, QString("%1.%2").arg(pParentLibraryTreeItem->getNameStructure())
// .arg(mName), mPath, true, pParentLibraryTreeItem);
// // Create ModelWidget for FMU so that its input/output signals are fetched
// pLibraryTreeModel->loadLibraryTreeItemPixmap(pLibraryTreeItem);
// // add the FMU to view
// ComponentInfo *pComponentInfo = new ComponentInfo;
// pComponentInfo->setName(pLibraryTreeItem->getName());
// pComponentInfo->setClassName(pLibraryTreeItem->getNameStructure());
// mpComponent = new Component(mName, pLibraryTreeItem, mAnnotation, QPointF(0, 0), pComponentInfo, mpGraphicsView);
// mpGraphicsView->addItem(mpComponent);
// mpGraphicsView->addItem(mpComponent->getOriginItem());
// mpGraphicsView->addComponentToList(mpComponent);
}

/*!
Expand Down Expand Up @@ -2451,14 +2454,15 @@ OMSRenameCommand::OMSRenameCommand(LibraryTreeItem *pLibraryTreeItem, QString na
*/
void OMSRenameCommand::redoInternal()
{
QString identOld = mpLibraryTreeItem->getNameStructure();
QString identNew = mpLibraryTreeItem->parent()->getNameStructure().isEmpty() ? mNewName : mpLibraryTreeItem->parent()->getNameStructure() + "." + mNewName;
OMSProxy::instance()->rename(identOld, identNew);
mpLibraryTreeItem->setName(mNewName);
mpLibraryTreeItem->setNameStructure(identNew);
MainWindow::instance()->getLibraryWidget()->getLibraryTreeModel()->updateLibraryTreeItem(mpLibraryTreeItem);
mpLibraryTreeItem->emitNameChanged();
mpLibraryTreeItem->updateChildrenNameStructure();
qDebug() << "OMSRenameCommand::redoInternal() not implemented.";
// QString identOld = mpLibraryTreeItem->getNameStructure();
// QString identNew = mpLibraryTreeItem->parent()->getNameStructure().isEmpty() ? mNewName : mpLibraryTreeItem->parent()->getNameStructure() + "." + mNewName;
// OMSProxy::instance()->rename(identOld, identNew);
// mpLibraryTreeItem->setName(mNewName);
// mpLibraryTreeItem->setNameStructure(identNew);
// MainWindow::instance()->getLibraryWidget()->getLibraryTreeModel()->updateLibraryTreeItem(mpLibraryTreeItem);
// mpLibraryTreeItem->emitNameChanged();
// mpLibraryTreeItem->updateChildrenNameStructure();
}

/*!
Expand All @@ -2467,14 +2471,15 @@ void OMSRenameCommand::redoInternal()
*/
void OMSRenameCommand::undo()
{
QString identOld = mpLibraryTreeItem->getNameStructure();
QString identNew = mpLibraryTreeItem->parent()->getNameStructure().isEmpty() ? mOldName : mpLibraryTreeItem->parent()->getNameStructure() + "." + mOldName;
OMSProxy::instance()->rename(identOld, identNew);
mpLibraryTreeItem->setName(mOldName);
mpLibraryTreeItem->setNameStructure(identNew);
MainWindow::instance()->getLibraryWidget()->getLibraryTreeModel()->updateLibraryTreeItem(mpLibraryTreeItem);
mpLibraryTreeItem->emitNameChanged();
mpLibraryTreeItem->updateChildrenNameStructure();
qDebug() << "OMSRenameCommand::undo() not implemented.";
// QString identOld = mpLibraryTreeItem->getNameStructure();
// QString identNew = mpLibraryTreeItem->parent()->getNameStructure().isEmpty() ? mOldName : mpLibraryTreeItem->parent()->getNameStructure() + "." + mOldName;
// OMSProxy::instance()->rename(identOld, identNew);
// mpLibraryTreeItem->setName(mOldName);
// mpLibraryTreeItem->setNameStructure(identNew);
// MainWindow::instance()->getLibraryWidget()->getLibraryTreeModel()->updateLibraryTreeItem(mpLibraryTreeItem);
// mpLibraryTreeItem->emitNameChanged();
// mpLibraryTreeItem->updateChildrenNameStructure();
}

/*!
Expand Down
39 changes: 0 additions & 39 deletions OMEdit/OMEditGUI/Modeling/ModelWidgetContainer.cpp
Expand Up @@ -1222,45 +1222,6 @@ void GraphicsView::fitInViewInternal()
}
}

/*!
* \brief GraphicsView::addSystem
* Adds a system to a model.
* \param name
* \param type
*/
void GraphicsView::addSystem(QString name, oms_system_enu_t type)
{

}

/*!
* \brief GraphicsView::addSubModel
* Adds the submodel to the OMS model.
* \param name
* \param path
*/
void GraphicsView::addSubModel(QString name, QString path)
{
QFileInfo fileInfo(path);
OMSProxy::instance()->setWorkingDirectory(fileInfo.absoluteDir().absolutePath());
if (fileInfo.suffix().compare("fmu") == 0) {
OMSProxy::instance()->addFMU(mpModelWidget->getLibraryTreeItem()->getNameStructure(), fileInfo.absoluteFilePath(), name);
} else {
OMSProxy::instance()->addTable(mpModelWidget->getLibraryTreeItem()->getNameStructure(), fileInfo.absoluteFilePath(), name);
}
OMSProxy::instance()->setWorkingDirectory(OptionsDialog::instance()->getOMSimulatorPage()->getWorkingDirectory());
}

/*!
* \brief GraphicsView::deleteSubModel
* Deletes the submodel from OMS model.
* \param name
*/
void GraphicsView::deleteSubModel(QString name)
{
OMSProxy::instance()->deleteSubModel(mpModelWidget->getLibraryTreeItem()->getNameStructure(), name);
}

/*!
* \brief GraphicsView::createActions
* Creates the actions for the GraphicsView.
Expand Down
3 changes: 0 additions & 3 deletions OMEdit/OMEditGUI/Modeling/ModelWidgetContainer.h
Expand Up @@ -252,9 +252,6 @@ class GraphicsView : public QGraphicsView
void addItem(QGraphicsItem *pGraphicsItem);
void removeItem(QGraphicsItem *pGraphicsItem);
void fitInViewInternal();
void addSystem(QString name, oms_system_enu_t type);
void addSubModel(QString name, QString path);
void deleteSubModel(QString name);
private:
void createActions();
bool isClassDroppedOnItself(LibraryTreeItem *pLibraryTreeItem);
Expand Down
126 changes: 14 additions & 112 deletions OMEdit/OMEditGUI/OMS/OMSProxy.cpp
Expand Up @@ -123,7 +123,7 @@ OMSProxy::OMSProxy()
mpCommunicationLogFile = fopen(communicationLogFilePath.toStdString().c_str(), "w");
mTotalOMSCallsTime = 0.0;
// OMSimulator global settings
setCommandLineOption("--suppressPath=true");
//setCommandLineOption("--suppressPath=true");
setLogFile(QString(Utilities::tempDirectory() + "/omslog.txt").toStdString().c_str());
setTempDirectory(Utilities::tempDirectory().toStdString().c_str());
setLoggingCallback();
Expand Down Expand Up @@ -1427,63 +1427,6 @@ bool OMSProxy::terminate(QString cref)
return statusToBool(status);
}




/*!
* \brief OMSProxy::addFMU
* Adds the FMU to the model
* \param modelIdent
* \param fmuPath
* \param fmuIdent
* \return
*/
bool OMSProxy::addFMU(QString modelIdent, QString fmuPath, QString fmuIdent)
{
oms_status_enu_t status = oms2_addFMU(modelIdent.toStdString().c_str(), fmuPath.toStdString().c_str(), fmuIdent.toStdString().c_str());
return statusToBool(status);
}

/*!
* \brief OMSProxy::addTable
* Adds the table to the model
* \param modelIdent
* \param fmuPath
* \param fmuIdent
* \return
*/
bool OMSProxy::addTable(QString modelIdent, QString tablePath, QString tableIdent)
{
oms_status_enu_t status = oms2_addTable(modelIdent.toStdString().c_str(), tablePath.toStdString().c_str(), tableIdent.toStdString().c_str());
return statusToBool(status);
}

/*!
* \brief OMSProxy::deleteSubModel
* Deletes the submodel from the model
* \param modelIdent
* \param subModelIdent
* \return
*/
bool OMSProxy::deleteSubModel(QString modelIdent, QString subModelIdent)
{
oms_status_enu_t status = oms2_deleteSubModel(modelIdent.toStdString().c_str(), subModelIdent.toStdString().c_str());
return statusToBool(status);
}

/*!
* \brief OMSProxy::renameModel
* Renames a model or a FMU.
* \param identOld
* \param identNew
* \return
*/
bool OMSProxy::rename(QString identOld, QString identNew)
{
oms_status_enu_t status = oms2_rename(identOld.toStdString().c_str(), identNew.toStdString().c_str());
return statusToBool(status);
}

/*!
* \brief OMSProxy::parseString
* Parses a model string and returns a model name.
Expand All @@ -1493,13 +1436,14 @@ bool OMSProxy::rename(QString identOld, QString identNew)
*/
bool OMSProxy::parseString(QString contents, QString *pModelName)
{
char* ident = NULL;
oms_status_enu_t status = oms2_parseString(contents.toStdString().c_str(), &ident);
if (ident) {
*pModelName = QString(ident);
free(ident);
}
return statusToBool(status);
// char* ident = NULL;
// oms_status_enu_t status = oms2_parseString(contents.toStdString().c_str(), &ident);
// if (ident) {
// *pModelName = QString(ident);
// free(ident);
// }
// return statusToBool(status);
return false;
}

/*!
Expand All @@ -1511,51 +1455,9 @@ bool OMSProxy::parseString(QString contents, QString *pModelName)
*/
bool OMSProxy::loadString(QString contents, QString* pModelName)
{
char* ident = NULL;
oms_status_enu_t status = oms2_loadString(contents.toStdString().c_str(), &ident);
*pModelName = QString(ident);
return statusToBool(status);
}

/*!
* \brief OMSProxy::setMasterAlgorithm
* Set master algorithm variant that shall be used (default: "standard").
*
* Supported master algorithms: "standard"
*
* Experimental master algorithms (no stable API!): "pctpl", "pmrchannela", "pmrchannelcv", "pmrchannelm"
*
* \param cref
* \param masterAlgorithm
* \return
*/
bool OMSProxy::setMasterAlgorithm(QString cref, QString masterAlgorithm)
{
oms_status_enu_t status = oms2_setMasterAlgorithm(cref.toStdString().c_str(), masterAlgorithm.toStdString().c_str());
return statusToBool(status);
}

/*!
* \brief OMSProxy::exists
* This function returns 1 if a given cref exists in the scope,
* otherwise 0. It can be used to check for models, sub-models such
* as FMUs, and solver instances.
* \param cref
* \return
*/
bool OMSProxy::exists(QString cref)
{
return oms2_exists(cref.toStdString().c_str());
}

/*!
* \brief OMSProxy::reset
* Reset the model after a simulation run.
* \param ident
* \return
*/
bool OMSProxy::reset(QString ident)
{
oms_status_enu_t status = oms2_reset(ident.toStdString().c_str());
return statusToBool(status);
// char* ident = NULL;
// oms_status_enu_t status = oms2_loadString(contents.toStdString().c_str(), &ident);
// *pModelName = QString(ident);
// return statusToBool(status);
return false;
}
8 changes: 0 additions & 8 deletions OMEdit/OMEditGUI/OMS/OMSProxy.h
Expand Up @@ -135,16 +135,8 @@ class OMSProxy : public QObject
bool simulate_asynchronous(QString cref);
bool terminate(QString cref);


bool addFMU(QString modelIdent, QString fmuPath, QString fmuIdent);
bool addTable(QString modelIdent, QString tablePath, QString tableIdent);
bool deleteSubModel(QString modelIdent, QString subModelIdent);
bool rename(QString identOld, QString identNew);
bool parseString(QString contents, QString* pModelName);
bool loadString(QString contents, QString* pModelName);
bool setMasterAlgorithm(QString cref, QString masterAlgorithm);
bool exists(QString cref);
bool reset(QString ident);
signals:
void logGUIMessage(MessageItem messageItem);
};
Expand Down

0 comments on commit 6bcab54

Please sign in to comment.