From 3344d0e27d878de32b458ba1ae38030f46fc645c Mon Sep 17 00:00:00 2001 From: Adeel Asghar Date: Fri, 28 Sep 2018 15:00:16 +0200 Subject: [PATCH] Set the TLM bus geometry Added new OMSimulator tags for syntax highlighting --- OMEdit/OMEditGUI/Component/Component.cpp | 22 ++++++++++++++----- OMEdit/OMEditGUI/Component/Component.h | 2 ++ .../OMEditGUI/Editors/OMSimulatorEditor.cpp | 9 ++++++++ .../OMEditGUI/Modeling/LibraryTreeWidget.cpp | 5 ++++- .../Modeling/ModelWidgetContainer.cpp | 12 ++++------ OMEdit/OMEditGUI/OMS/OMSProxy.cpp | 13 +++++++++++ OMEdit/OMEditGUI/OMS/OMSProxy.h | 1 + 7 files changed, 49 insertions(+), 15 deletions(-) diff --git a/OMEdit/OMEditGUI/Component/Component.cpp b/OMEdit/OMEditGUI/Component/Component.cpp index 98e8fc9b94e..b2419f5116e 100644 --- a/OMEdit/OMEditGUI/Component/Component.cpp +++ b/OMEdit/OMEditGUI/Component/Component.cpp @@ -576,7 +576,13 @@ Component::Component(Component *pComponent, Component *pParentComponent, Compone mHasTransition = false; mIsInitialState = false; if (mpLibraryTreeItem && mpLibraryTreeItem->getLibraryType() == LibraryTreeItem::OMS) { - mShapesList.append(new PolygonAnnotation(mpReferenceComponent->getInputOutputComponentPolygon(), this)); + if (mpLibraryTreeItem->getOMSConnector() && mpReferenceComponent->getInputOutputComponentPolygon()) { + mShapesList.append(new PolygonAnnotation(mpReferenceComponent->getInputOutputComponentPolygon(), this)); + } else if (mpLibraryTreeItem->getOMSBusConnector() && mpReferenceComponent->getBusComponentRectangle()) { + mShapesList.append(new RectangleAnnotation(mpReferenceComponent->getBusComponentRectangle(), this)); + } else if (mpLibraryTreeItem->getOMSTLMBusConnector() && mpReferenceComponent->getTLMBusComponentPolygon()) { + mShapesList.append(new PolygonAnnotation(mpReferenceComponent->getTLMBusComponentPolygon(), this)); + } } else { drawInheritedComponentsAndShapes(); } @@ -1532,10 +1538,10 @@ void Component::drawOMSComponent() // draw shapes first drawOMSComponentShapes(); // draw connectors now -// foreach (Component *pComponent, mpLibraryTreeItem->getModelWidget()->getDiagramGraphicsView()->getComponentsList()) { -// Component *pNewComponent = new Component(pComponent, this, getRootParentComponent()); -// mComponentsList.append(pNewComponent); -// } + foreach (Component *pComponent, mpLibraryTreeItem->getModelWidget()->getIconGraphicsView()->getComponentsList()) { + Component *pNewComponent = new Component(pComponent, this, getRootParentComponent()); + mComponentsList.append(pNewComponent); + } } else if (mpLibraryTreeItem->getOMSConnector()) { // if component is a signal i.e., input/output if (mpLibraryTreeItem->getOMSConnector()->causality == oms_causality_input) { mpInputOutputComponentPolygon = new PolygonAnnotation(this); @@ -2210,7 +2216,9 @@ void Component::updatePlacementAnnotation() elementGeometry.y2 = extent2.y(); elementGeometry.rotation = mTransformation.getRotateAngle(); OMSProxy::instance()->setElementGeometry(mpLibraryTreeItem->getNameStructure(), &elementGeometry); - } else if (mpLibraryTreeItem && (mpLibraryTreeItem->getOMSConnector() || mpLibraryTreeItem->getOMSBusConnector())) { + } else if (mpLibraryTreeItem && (mpLibraryTreeItem->getOMSConnector() + || mpLibraryTreeItem->getOMSBusConnector() + || mpLibraryTreeItem->getOMSTLMBusConnector())) { ssd_connector_geometry_t connectorGeometry; connectorGeometry.x = Utilities::mapToCoOrdinateSystem(mTransformation.getOrigin().x(), -100, 100, 0, 1); connectorGeometry.y = Utilities::mapToCoOrdinateSystem(mTransformation.getOrigin().y(), -100, 100, 0, 1); @@ -2218,6 +2226,8 @@ void Component::updatePlacementAnnotation() OMSProxy::instance()->setConnectorGeometry(mpLibraryTreeItem->getNameStructure(), &connectorGeometry); } else if (mpLibraryTreeItem->getOMSBusConnector()) { OMSProxy::instance()->setBusGeometry(mpLibraryTreeItem->getNameStructure(), &connectorGeometry); + } else if (mpLibraryTreeItem->getOMSTLMBusConnector()) { + OMSProxy::instance()->setTLMBusGeometry(mpLibraryTreeItem->getNameStructure(), &connectorGeometry); } /* We have connector both on icon and diagram layer. * If one connector is updated then update the other connector automatically. diff --git a/OMEdit/OMEditGUI/Component/Component.h b/OMEdit/OMEditGUI/Component/Component.h index 3315689b552..88343d83c8f 100644 --- a/OMEdit/OMEditGUI/Component/Component.h +++ b/OMEdit/OMEditGUI/Component/Component.h @@ -198,6 +198,8 @@ class Component : public QObject, public QGraphicsItem void setChoicesAnnotation(QStringList choicesAnnotation) {mChoicesAnnotation = choicesAnnotation;} QStringList getChoicesAnnotation() {return mChoicesAnnotation;} PolygonAnnotation* getInputOutputComponentPolygon() {return mpInputOutputComponentPolygon;} + RectangleAnnotation* getBusComponentRectangle() {return mpBusComponentRectangle;} + PolygonAnnotation* getTLMBusComponentPolygon() {return mpTLMBusComponentPolygon;} CoOrdinateSystem getCoOrdinateSystem() const; OriginItem* getOriginItem() {return mpOriginItem;} QAction* getParametersAction() {return mpParametersAction;} diff --git a/OMEdit/OMEditGUI/Editors/OMSimulatorEditor.cpp b/OMEdit/OMEditGUI/Editors/OMSimulatorEditor.cpp index 0c8d9201dcf..f0bf3a11d26 100644 --- a/OMEdit/OMEditGUI/Editors/OMSimulatorEditor.cpp +++ b/OMEdit/OMEditGUI/Editors/OMSimulatorEditor.cpp @@ -236,6 +236,15 @@ void OMSimulatorHighlighter::initializeSettings() elementPatterns << "\\bxml\\b" << "\\bssd:SystemStructureDescription\\b" << "\\bssd:System\\b" + << "\\bssd:SimulationInformation\\b" + << "\\bssd:Annotations\\b" + << "\\bssd:Annotation\\b" + << "\\btlm:Master\\b" + << "\\bssd:Elements\\b" + << "\\bOMSimulator:Bus\\b" + << "\\bSignals\\b" + << "\\bSignal\\b" + << "\\bSignal\\b" << "\\bssd:Component\\b" << "\\bssd:ElementGeometry\\b" << "\\bssd:Connectors\\b" diff --git a/OMEdit/OMEditGUI/Modeling/LibraryTreeWidget.cpp b/OMEdit/OMEditGUI/Modeling/LibraryTreeWidget.cpp index 585fe6e2c18..fe3c02e7e31 100644 --- a/OMEdit/OMEditGUI/Modeling/LibraryTreeWidget.cpp +++ b/OMEdit/OMEditGUI/Modeling/LibraryTreeWidget.cpp @@ -3794,7 +3794,10 @@ void LibraryTreeView::mouseDoubleClickEvent(QMouseEvent *event) setExpandsOnDoubleClick(false); return; } - } else if (pLibraryTreeItem->getLibraryType() == LibraryTreeItem::OMS && pLibraryTreeItem->getOMSConnector()) { + } else if (pLibraryTreeItem->getLibraryType() == LibraryTreeItem::OMS + && (pLibraryTreeItem->getOMSConnector() + || pLibraryTreeItem->getOMSBusConnector() + || pLibraryTreeItem->getOMSTLMBusConnector())) { return; } mpLibraryWidget->getLibraryTreeModel()->showModelWidget(pLibraryTreeItem); diff --git a/OMEdit/OMEditGUI/Modeling/ModelWidgetContainer.cpp b/OMEdit/OMEditGUI/Modeling/ModelWidgetContainer.cpp index d4b4b2b4b2b..af8b59b0fea 100644 --- a/OMEdit/OMEditGUI/Modeling/ModelWidgetContainer.cpp +++ b/OMEdit/OMEditGUI/Modeling/ModelWidgetContainer.cpp @@ -3763,6 +3763,8 @@ void ModelWidget::createModelWidgetComponents() if (mpLibraryTreeItem->isSystemElement() || mpLibraryTreeItem->isComponentElement()) { pMainLayout->addWidget(mpIconGraphicsView, 1); } + // show the diagram view + mpDiagramViewToolButton->setChecked(true); } if (mpEditor) { connect(mpEditor->getPlainTextEdit()->document(), SIGNAL(undoAvailable(bool)), SLOT(handleCanUndoChanged(bool))); @@ -6346,17 +6348,12 @@ void ModelWidgetContainer::addModelWidget(ModelWidget *pModelWidget, bool checkP pModelWidget->getEditor()->show(); } pModelWidget->getEditor()->getPlainTextEdit()->setFocus(Qt::ActiveWindowFocusReason); - } else if (pModelWidget->getLibraryTreeItem()->getLibraryType() == LibraryTreeItem::CompositeModel - || (pModelWidget->getLibraryTreeItem()->getLibraryType() == LibraryTreeItem::OMS - && pModelWidget->getLibraryTreeItem()->isTopLevel())) { + } else if (pModelWidget->getLibraryTreeItem()->getLibraryType() == LibraryTreeItem::CompositeModel) { if (pModelWidget->getModelWidgetContainer()->getPreviousViewType() != StringHandler::NoView) { loadPreviousViewType(pModelWidget); } else { pModelWidget->getDiagramViewToolButton()->setChecked(true); } - } else if (pModelWidget->getLibraryTreeItem()->getLibraryType() == LibraryTreeItem::OMS - && !pModelWidget->getLibraryTreeItem()->isTopLevel()) { - pModelWidget->getDiagramViewToolButton()->setChecked(true); } pModelWidget->updateViewButtonsBasedOnAccess(); if (!checkPreferedView || pModelWidget->getLibraryTreeItem()->getLibraryType() != LibraryTreeItem::Modelica) { @@ -6665,8 +6662,7 @@ void ModelWidgetContainer::loadPreviousViewType(ModelWidget *pModelWidget) pModelWidget->getDiagramViewToolButton()->setChecked(true); break; } - } else if (pModelWidget->getLibraryTreeItem()->getLibraryType() == LibraryTreeItem::CompositeModel - || pModelWidget->getLibraryTreeItem()->getLibraryType() == LibraryTreeItem::OMS) { + } else if (pModelWidget->getLibraryTreeItem()->getLibraryType() == LibraryTreeItem::CompositeModel) { switch (pModelWidget->getModelWidgetContainer()->getPreviousViewType()) { case StringHandler::ModelicaText: pModelWidget->getTextViewToolButton()->setChecked(true); diff --git a/OMEdit/OMEditGUI/OMS/OMSProxy.cpp b/OMEdit/OMEditGUI/OMS/OMSProxy.cpp index 6a7edb7ed4a..5b207b445c7 100644 --- a/OMEdit/OMEditGUI/OMS/OMSProxy.cpp +++ b/OMEdit/OMEditGUI/OMS/OMSProxy.cpp @@ -648,6 +648,19 @@ bool OMSProxy::setBusGeometry(QString cref, const ssd_connector_geometry_t* pGeo return statusToBool(status); } +/*! + * \brief OMSProxy::setTLMBusGeometry + * Sets the tlm bus geometry. + * \param cref + * \param pGeometry + * \return + */ +bool OMSProxy::setTLMBusGeometry(QString cref, const ssd_connector_geometry_t* pGeometry) +{ + oms_status_enu_t status = oms3_setTLMBusGeometry(cref.toStdString().c_str(), pGeometry); + return statusToBool(status); +} + /*! * \brief OMSProxy::getConnections * Get the model connections diff --git a/OMEdit/OMEditGUI/OMS/OMSProxy.h b/OMEdit/OMEditGUI/OMS/OMSProxy.h index b50cb64134b..53c19ab9484 100644 --- a/OMEdit/OMEditGUI/OMS/OMSProxy.h +++ b/OMEdit/OMEditGUI/OMS/OMSProxy.h @@ -92,6 +92,7 @@ class OMSProxy : public QObject bool getFMUInfo(QString cref, const oms_fmu_info_t** pFmuInfo); bool setConnectorGeometry(QString cref, const ssd_connector_geometry_t* pGeometry); bool setBusGeometry(QString cref, const ssd_connector_geometry_t* pGeometry); + bool setTLMBusGeometry(QString cref, const ssd_connector_geometry_t* pGeometry); bool getConnections(QString cref, oms_connection_t*** pConnections); bool addConnection(QString cref, QString conA, QString conB); bool deleteConnection(QString cref, QString conA, QString conB);