void TLMCoSimulationDialog::simulationProcessFinished(TLMCoSimulationOptions tlmCoSimulationOptions, QDateTime resultFileLastModifiedDateTime) { mpTLMCoSimulationOutputWidget->clear(); // read the result file QFileInfo fileInfo(tlmCoSimulationOptions.getFileName()); QFileInfo resultFileInfo(fileInfo.absoluteDir().absolutePath() + "/" + fileInfo.completeBaseName() + ".csv"); if (resultFileInfo.exists() && resultFileLastModifiedDateTime <= resultFileInfo.lastModified()) { VariablesWidget *pVariablesWidget = mpMainWindow->getVariablesWidget(); OMCProxy *pOMCProxy = mpMainWindow->getOMCProxy(); QStringList list = pOMCProxy->readSimulationResultVars(resultFileInfo.absoluteFilePath()); // close the simulation result file. pOMCProxy->closeSimulationResultFile(); if (list.size() > 0) { #if !defined(WITHOUT_OSG) // only show the AnimationWindow if we have a visual xml file. QFileInfo visualFileInfo(fileInfo.absoluteDir().absolutePath() + "/" + fileInfo.completeBaseName() + "_visual.xml"); if (visualFileInfo.exists()) { mpMainWindow->getPlotWindowContainer()->addAnimationWindow(mpMainWindow->getPlotWindowContainer()->subWindowList().isEmpty()); AnimationWindow *pAnimationWindow = mpMainWindow->getPlotWindowContainer()->getCurrentAnimationWindow(); if (pAnimationWindow) { pAnimationWindow->openAnimationFile(resultFileInfo.absoluteFilePath()); } } #endif mpMainWindow->getPerspectiveTabBar()->setCurrentIndex(2); pVariablesWidget->insertVariablesItemsToTree(resultFileInfo.fileName(), fileInfo.absoluteDir().absolutePath(), list, SimulationOptions()); mpMainWindow->getVariablesDockWidget()->show(); } } }
void TLMCoSimulationDialog::simulationProcessFinished(TLMCoSimulationOptions tlmCoSimulationOptions, QDateTime resultFileLastModifiedDateTime) { mpTLMCoSimulationOutputWidget->clear(); // read the result file QFileInfo fileInfo(tlmCoSimulationOptions.getFileName()); QFileInfo resultFileInfo(fileInfo.absoluteDir().absolutePath() + "/" + fileInfo.completeBaseName() + ".csv"); if (resultFileInfo.exists() && resultFileLastModifiedDateTime <= resultFileInfo.lastModified()) { VariablesWidget *pVariablesWidget = mpMainWindow->getVariablesWidget(); OMCProxy *pOMCProxy = mpMainWindow->getOMCProxy(); QStringList list = pOMCProxy->readSimulationResultVars(resultFileInfo.absoluteFilePath()); // close the simulation result file. pOMCProxy->closeSimulationResultFile(); if (list.size() > 0) { mpMainWindow->getPerspectiveTabBar()->setCurrentIndex(2); pVariablesWidget->insertVariablesItemsToTree(resultFileInfo.fileName(), fileInfo.absoluteDir().absolutePath(), list, SimulationOptions()); mpMainWindow->getVariablesDockWidget()->show(); } } }
/*! * \brief ModelicaEditor::getClassNames * Uses the OMC parseString API to check the class names inside the Modelica Text * \param errorString * \return QStringList a list of class names * \sa ModelWidget::modelicaEditorTextChanged() */ QStringList ModelicaEditor::getClassNames(QString *errorString) { OMCProxy *pOMCProxy = mpMainWindow->getOMCProxy(); QStringList classNames; LibraryTreeItem *pLibraryTreeItem = mpModelWidget->getLibraryTreeItem(); if (mpPlainTextEdit->toPlainText().isEmpty()) { *errorString = tr("Start and End modifiers are different"); return QStringList(); } else { QString modelicaText = mpPlainTextEdit->toPlainText(); QString stringToParse = modelicaText; if (!modelicaText.startsWith("within")) { stringToParse = QString("within %1;%2").arg(pLibraryTreeItem->parent()->getNameStructure()).arg(modelicaText); } classNames = pOMCProxy->parseString(stringToParse, pLibraryTreeItem->getFileName()); } // if user is defining multiple top level classes. if (classNames.size() > 1) { *errorString = QString(GUIMessages::getMessage(GUIMessages::MULTIPLE_TOP_LEVEL_CLASSES)).arg(pLibraryTreeItem->getNameStructure()) .arg(classNames.join(",")); return QStringList(); } bool existModel = false; QStringList existingmodelsList; // check if the class already exists foreach(QString className, classNames) { if (pLibraryTreeItem->getNameStructure().compare(className) != 0) { if (mpMainWindow->getLibraryWidget()->getLibraryTreeModel()->findLibraryTreeItem(className)) { existingmodelsList.append(className); existModel = true; } } } // check if existModel is true if (existModel) { *errorString = QString(GUIMessages::getMessage(GUIMessages::REDEFINING_EXISTING_CLASSES)).arg(existingmodelsList.join(",")).append("\n") .append(GUIMessages::getMessage(GUIMessages::DELETE_AND_LOAD).arg("")); return QStringList(); } return classNames; }
//! Uses the OMC parseString API to check the model names inside the Modelica Text //! @return QStringList a list of model names QStringList ModelicaEditor::getModelsNames() { OMCProxy *pOMCProxy = mpParentProjectTab->mpParentProjectTabWidget->mpParentMainWindow->mpOMCProxy; QStringList models; if (toPlainText().isEmpty()) { mErrorString = tr("Start and End modifiers are different"); } else { if (mpParentProjectTab->isChild()) { models = pOMCProxy->parseString("within " + StringHandler::removeLastWordAfterDot(mpParentProjectTab->mModelNameStructure) + ";" + toPlainText()); } else { models = pOMCProxy->parseString(toPlainText()); } } bool existModel = false; QStringList existingmodelsList; // check if the model already exists foreach(QString model, models) { if (mpParentProjectTab->mModelNameStructure.compare(model) != 0) { if (pOMCProxy->existClass(model)) { existingmodelsList.append(model); existModel = true; } } } // check if existModel is true if (existModel) { mErrorString = QString(GUIMessages::getMessage(GUIMessages::REDEFINING_EXISTING_MODELS)).arg(existingmodelsList.join(",")).append("\n") .append(GUIMessages::getMessage(GUIMessages::DELETE_AND_LOAD)); return QStringList(); } return models; }