//! 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; }
/*! * \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; }