Skip to content

Commit

Permalink
- Interface for Importing FMU.
Browse files Browse the repository at this point in the history
- Better result checking for simulate command.


git-svn-id: https://openmodelica.org/svn/OpenModelica/trunk@10128 f25d12d1-65f4-0310-ae8a-bbce733d8d8e
  • Loading branch information
adeas31 committed Oct 14, 2011
1 parent ba49551 commit f25af76
Show file tree
Hide file tree
Showing 12 changed files with 66 additions and 37 deletions.
11 changes: 3 additions & 8 deletions OMEdit/OMEditGUI/Component.cpp
Expand Up @@ -42,9 +42,7 @@ Component::Component(QString value, QString name, QString className, QPointF pos
mpComponentProperties=0;
//QList<ComponentsProperties*> components = mpOMCProxy->getComponents(className);
mpParentComponent = pParent;
mIconParametersList.append(mpOMCProxy->getParameters(mpGraphicsView->mpParentProjectTab->mModelNameStructure,
mClassName, mName));

mIconParametersList.append(mpOMCProxy->getParameters(mpGraphicsView->mpParentProjectTab->mModelNameStructure, mClassName, mName));
mpTransformation = 0;
parseAnnotationString(this, value);
mpTransformation = new Transformation(this);
Expand Down Expand Up @@ -116,8 +114,7 @@ Component::Component(QString value, QString transformationString, ComponentsProp
mpParentComponent = pParent;
mpOMCProxy = pParent->mpOMCProxy;
mpGraphicsView = pParent->mpGraphicsView;
mIconParametersList.append(mpOMCProxy->getParameters(mpGraphicsView->mpParentProjectTab->mModelNameStructure,
mClassName, mName));
mIconParametersList.append(mpOMCProxy->getParameters(mpGraphicsView->mpParentProjectTab->mModelNameStructure, mClassName, mName));
mpTransformation = 0;
parseAnnotationString(this, mAnnotationString);
mpTransformation = new Transformation(this);
Expand Down Expand Up @@ -205,9 +202,7 @@ Component::Component(Component *pComponent, QString name, QPointF position, int
// Assing the Graphics View of this component to passed component. In order to avoid exceptions
pComponent->mpGraphicsView = mpGraphicsView;
// get the component parameters
mIconParametersList.append(mpOMCProxy->getParameters(mpGraphicsView->mpParentProjectTab->mModelNameStructure,
mClassName, mName));

mIconParametersList.append(mpOMCProxy->getParameters(mpGraphicsView->mpParentProjectTab->mModelNameStructure, mClassName, mName));
mpTransformation = 0;
parseAnnotationString(this, mAnnotationString);
mpTransformation = new Transformation(this);
Expand Down
6 changes: 6 additions & 0 deletions OMEdit/OMEditGUI/Helper.cpp
Expand Up @@ -140,6 +140,12 @@ QString Helper::right = QString("Right");

/* FMI Messages */
QString Helper::exportingModelFMU = QString("Exporting model as FMI");
QString Helper::import = QString("Import");
QString Helper::importFMI = QString("Import FMI");
QString Helper::fmuFileName = QString("FMU File:");
QString Helper::browse = QString("Browse...");
QString Helper::outputDirectory = QString("Output Directory (Optional):");
QString Helper::outputDirectoryNote = QString("* If no Output Directory specified then the FMU files are generated in the current working directory.");

QString Helper::librariesAddNote = QString("* The libraries changes will take effect after restart.");

Expand Down
6 changes: 6 additions & 0 deletions OMEdit/OMEditGUI/Helper.h
Expand Up @@ -142,6 +142,12 @@ class Helper
static QString center;
static QString right;
static QString exportingModelFMU;
static QString import;
static QString importFMI;
static QString fmuFileName;
static QString browse;
static QString outputDirectory;
static QString outputDirectoryNote;
static QString librariesAddNote;
};

Expand Down
24 changes: 14 additions & 10 deletions OMEdit/OMEditGUI/OMCProxy.cpp
Expand Up @@ -307,7 +307,8 @@ void OMCProxy::sendCommand(const QString expression)
try
{
setExpression(expression);
if (expression.startsWith("simulate") or expression.startsWith("buildModel") or expression.startsWith("translateModelFMU"))
if (expression.startsWith("OMEdit_simulate_result:=simulate") or expression.startsWith("buildModel")
or expression.startsWith("translateModelFMU") or expression.startsWith("importFMU"))
{
QFuture<void> future = QtConcurrent::run(this, &OMCProxy::sendCommand);
while (future.isRunning())
Expand Down Expand Up @@ -441,8 +442,6 @@ void OMCProxy::removeObjectRefFile()

void OMCProxy::restartApplication()
{
//QProcess *applicationProcess = new QProcess();
//applicationProcess->start(qApp->applicationFilePath());
qApp->exit();
}

Expand Down Expand Up @@ -1330,12 +1329,12 @@ bool OMCProxy::instantiateModelSucceeds(QString modelName)

bool OMCProxy::simulate(QString modelName, QString simualtionParameters)
{
sendCommand("simulate(" + modelName + "," + simualtionParameters + ")");
//! @todo Make it more stable. Checking res. as a string is not good here.
if (getResult().contains("res."))
return true;
else
sendCommand("OMEdit_simulate_result:=simulate(" + modelName + "," + simualtionParameters + ")");
sendCommand("OMEdit_simulate_result.resultFile");
if (getResult().isEmpty())
return false;
else
return true;
}

bool OMCProxy::buildModel(QString modelName, QString simualtionParameters)
Expand Down Expand Up @@ -1419,9 +1418,14 @@ bool OMCProxy::translateModelFMU(QString modelName)
return false;
}

bool OMCProxy::importFMU(QString fmuName)
bool OMCProxy::importFMU(QString fmuName, QString outputDirectory)
{
sendCommand("importFMU(\"" + fmuName + "\")");
if (outputDirectory.isEmpty())
sendCommand("importFMU(\"" + fmuName + "\")");
else
{
sendCommand("importFMU(\"" + fmuName + "\", \"" + outputDirectory.replace("\\", "/") + "\")");
}
return StringHandler::unparseBool(getResult());
}

Expand Down
2 changes: 1 addition & 1 deletion OMEdit/OMEditGUI/OMCProxy.h
Expand Up @@ -171,7 +171,7 @@ class OMCProxy : public QObject
QString checkModel(QString modelName);
QString getSimulationOptions(QString modelName);
bool translateModelFMU(QString modelName);
bool importFMU(QString fmuName);
bool importFMU(QString fmuName, QString outputDirectory);
public slots:
void sendCommand();
void openOMCLogger();
Expand Down
8 changes: 6 additions & 2 deletions OMEdit/OMEditGUI/OMEditGUI.pro
Expand Up @@ -41,7 +41,8 @@ SOURCES += main.cpp\
OptionsWidget.cpp \
BitmapAnnotation.cpp \
InteractiveSimulationTabWidget.cpp \
PlotWindowContainer.cpp
PlotWindowContainer.cpp \
FMIWidget.cpp

HEADERS += mainwindow.h \
ProjectTabWidget.h \
Expand Down Expand Up @@ -74,7 +75,8 @@ HEADERS += mainwindow.h \
OptionsWidget.h \
BitmapAnnotation.h \
InteractiveSimulationTabWidget.h \
PlotWindowContainer.h
PlotWindowContainer.h \
FMIWidget.h

# -------For OMNIorb
win32 {
Expand Down Expand Up @@ -129,3 +131,5 @@ MOC_DIR = ../generatedfiles/moc
RCC_DIR = ../generatedfiles/rcc

ICON = Resources/icons/omedit.icns


2 changes: 1 addition & 1 deletion OMEdit/OMEditGUI/ProjectTabWidget.cpp
Expand Up @@ -2714,7 +2714,7 @@ WelcomePageWidget::WelcomePageWidget(MainWindow *parent)
mpMainFrame->setLayout(verticalLayout);
QHBoxLayout *layout = new QHBoxLayout;
layout->addWidget(mpMainFrame);
layout->setContentsMargins(20, 20, 20, 20);
layout->setContentsMargins(15, 15, 15, 15);
setLayout(layout);
}

Expand Down
4 changes: 2 additions & 2 deletions OMEdit/OMEditGUI/SimulationWidget.cpp
Expand Up @@ -362,12 +362,12 @@ void SimulationWidget::simulateModel(QString simulationParameters)
.append(mpOutputFormatComboBox->currentText()),list);
mpParentMainWindow->plotdock->show();
mpParentMainWindow->mpMessageWidget->printGUIInfoMessage(QString("Simulated '").append(projectTab->mModelNameStructure)
.append("' successfully!").append(message));
.append(message));
}
else
{
mpParentMainWindow->mpMessageWidget->printGUIInfoMessage(QString("Simulated '").append(projectTab->mModelNameStructure)
.append("' successfully!").append(message));
.append(message));
}
}
}
Expand Down
22 changes: 22 additions & 0 deletions OMEdit/OMEditGUI/StringHandler.cpp
Expand Up @@ -497,6 +497,28 @@ QString StringHandler::getOpenFileName(QWidget* parent, const QString &caption,
return QString();
}

QString StringHandler::getExistingDirectory(QWidget *parent, const QString &caption, QString *dir)
{
QString dir_str;

if (dir)
{
dir_str = *dir;
}
else
{
dir_str = mLastOpenDir.isEmpty() ? QDir::homePath() : mLastOpenDir;
}

QString dirName = QFileDialog::getExistingDirectory(parent, caption, dir_str, QFileDialog::ShowDirsOnly);
if (!dirName.isEmpty())
{
mLastOpenDir = dirName;
return dirName;
}
return QString();
}

QString StringHandler::createTooltip(QStringList info, QString name, QString path)
{
if (info.size() < 3)
Expand Down
1 change: 1 addition & 0 deletions OMEdit/OMEditGUI/StringHandler.h
Expand Up @@ -69,6 +69,7 @@ class StringHandler
static bool unparseBool(QString value);
static QString getSaveFileName(QWidget* parent = 0, const QString &caption = QString(), QString * dir = 0, const QString & filter = QString(), QString * selectedFilter = 0, const QString &defaultSuffix = QString(), const QString *purposedName = 0);
static QString getOpenFileName(QWidget* parent = 0, const QString &caption = QString(), QString * dir = 0, const QString & filter = QString(), QString * selectedFilter = 0);
static QString getExistingDirectory(QWidget* parent = 0, const QString &caption = QString(), QString * dir = 0);
static QString createTooltip(QStringList info, QString name, QString path);
protected:
static QString mLastOpenDir;
Expand Down
15 changes: 2 additions & 13 deletions OMEdit/OMEditGUI/mainwindow.cpp
Expand Up @@ -1314,19 +1314,8 @@ void MainWindow::exportModelFMI()
//! Imports the model from FMI
void MainWindow::importModelFMI()
{
QString fileName = StringHandler::getOpenFileName(this, tr("Choose File"), NULL, Helper::fmuFileTypes, NULL);
if (fileName.isEmpty())
return;

if (mpOMCProxy->importFMU(fileName))
{
mpProjectTabs->openFile();
}
else
{
mpMessageWidget->printGUIErrorMessage(GUIMessages::getMessage(GUIMessages::ERROR_OCCURRED)
.arg("unknown error ").append("\nwhile importing " + fileName));
}
ImportFMIWidget *pImportFMIWidget = new ImportFMIWidget(this);
pImportFMIWidget->show();
}

//! shows the progress bar contained inside the status bar
Expand Down
2 changes: 2 additions & 0 deletions OMEdit/OMEditGUI/mainwindow.h
Expand Up @@ -65,6 +65,7 @@
#include "SplashScreen.h"
#include "DocumentationWidget.h"
#include "OptionsWidget.h"
#include "FMIWidget.h"

class QGridLayout;
class QHBoxLayout;
Expand All @@ -89,6 +90,7 @@ class InteractiveSimulationTabWidget;
class PlotWidget;
class DocumentationWidget;
class OptionsWidget;
class ImportFMIWidget;

class MainWindow : public QMainWindow
{
Expand Down

0 comments on commit f25af76

Please sign in to comment.