Skip to content

Commit

Permalink
When a new shape/component is added then update the connections assoc…
Browse files Browse the repository at this point in the history
…iated to them.
  • Loading branch information
adeas31 committed Nov 23, 2015
1 parent 36c5736 commit 9d4d80b
Show file tree
Hide file tree
Showing 3 changed files with 65 additions and 85 deletions.
120 changes: 59 additions & 61 deletions OMEdit/OMEditGUI/Component/Component.cpp
Expand Up @@ -349,7 +349,7 @@ Component::Component(Component *pComponent, Component *pParentComponent)
.arg(mpReferenceComponent->getGraphicsView()->getModelWidget()->getLibraryTreeItem()->getNameStructure()));
connect(mpReferenceComponent, SIGNAL(added()), SLOT(referenceComponentAdded()));
connect(mpReferenceComponent, SIGNAL(transformHasChanged()), SLOT(referenceComponentTransformHasChanged()));
connect(mpReferenceComponent, SIGNAL(displayTextChanged()), SIGNAL(displayTextChanged()));
connect(mpReferenceComponent, SIGNAL(displayTextChanged()), SLOT(componentNameHasChanged()));
connect(mpReferenceComponent, SIGNAL(deleted()), SLOT(referenceComponentDeleted()));
}

Expand Down Expand Up @@ -726,19 +726,6 @@ void Component::emitDeleted()
emit deleted();
}

void Component::componentNameHasChanged()
{
if (mIsInheritedComponent || mComponentType == Component::Port) {
setToolTip(tr("<b>%1</b> %2<br /><br />Component declared in %3").arg(mpComponentInfo->getClassName())
.arg(mpComponentInfo->getName())
.arg(mpReferenceComponent->getGraphicsView()->getModelWidget()->getLibraryTreeItem()->getNameStructure()));
} else {
setToolTip(tr("<b>%1</b> %2").arg(mpComponentInfo->getClassName()).arg(mpComponentInfo->getName()));
}
emit displayTextChanged();
update();
}

void Component::componentParameterHasChanged()
{
emit displayTextChanged();
Expand Down Expand Up @@ -924,7 +911,6 @@ void Component::showNonExistingOrDefaultComponentIfNeeded()
*/
void Component::createClassInheritedComponents()
{
removeClassInheritedComponents();
foreach (ModelWidget::InheritedClass *pInheritedClass, mpLibraryTreeItem->getModelWidget()->getInheritedClassesList()) {
mInheritedComponentsList.append(new Component(pInheritedClass->mpLibraryTreeItem, this));
}
Expand All @@ -936,7 +922,6 @@ void Component::createClassInheritedComponents()
*/
void Component::createClassShapes()
{
removeClassShapes();
if (!mpLibraryTreeItem->isNonExisting()) {
GraphicsView *pGraphicsView = mpLibraryTreeItem->getModelWidget()->getIconGraphicsView();
if (mpLibraryTreeItem->isConnector() && mpGraphicsView->getViewType() == StringHandler::Diagram &&
Expand Down Expand Up @@ -967,7 +952,6 @@ void Component::createClassShapes()
*/
void Component::createClassComponents()
{
removeClassComponents();
if (!mpLibraryTreeItem->isNonExisting()) {
foreach (Component *pComponent, mpLibraryTreeItem->getModelWidget()->getIconGraphicsView()->getComponentsList()) {
mComponentsList.append(new Component(pComponent, this));
Expand All @@ -984,47 +968,6 @@ void Component::createClassComponents()
}
}

/*!
* \brief Component::removeShapes
* Removes the class shapes.
*/
void Component::removeClassShapes()
{
foreach (ShapeAnnotation *pShapeAnnotation, mShapesList) {
delete pShapeAnnotation;
}
mShapesList.clear();
mpNonExistingComponentLine->setVisible(false);
if (mComponentType == Component::Root) {
mpDefaultComponentRectangle->setVisible(false);
mpDefaultComponentText->setVisible(false);
}
}

/*!
* \brief Component::removeClassInheritedComponents
* Removes the class inherited components.
*/
void Component::removeClassInheritedComponents()
{
foreach (Component *pComponent, mInheritedComponentsList) {
delete pComponent;
}
mInheritedComponentsList.clear();
}

/*!
* \brief Component::removeClassComponents
* Removes the class components.
*/
void Component::removeClassComponents()
{
foreach (Component *pComponent, mComponentsList) {
delete pComponent;
}
mComponentsList.clear();
}

/*!
* \brief Component::removeChildren
* Removes the complete hirerchy of the Component.
Expand All @@ -1033,15 +976,18 @@ void Component::removeChildren()
{
foreach (Component *pInheritedComponent, mInheritedComponentsList) {
pInheritedComponent->removeChildren();
pInheritedComponent = 0;
delete pInheritedComponent;
}
mInheritedComponentsList.clear();
foreach (Component *pComponent, mComponentsList) {
pComponent->removeChildren();
pComponent = 0;
delete pComponent;
}
mComponentsList.clear();
foreach (ShapeAnnotation *pShapeAnnotation, mShapesList) {
pShapeAnnotation = 0;
delete pShapeAnnotation;
}
mShapesList.clear();
Expand Down Expand Up @@ -1207,9 +1153,9 @@ void Component::setOriginAndExtents()
void Component::reloadComponent(bool loaded)
{
// clear all shapes & components
removeClassShapes();
removeClassInheritedComponents();
removeClassComponents();
// removeClassShapes();
// removeClassInheritedComponents();
// removeClassComponents();
if (loaded && mpLibraryTreeItem && !mpLibraryTreeItem->getModelWidget()) {
MainWindow *pMainWindow = mpGraphicsView->getModelWidget()->getModelWidgetContainer()->getMainWindow();
pMainWindow->getLibraryWidget()->getLibraryTreeModel()->showModelWidget(mpLibraryTreeItem, "", false);
Expand Down Expand Up @@ -1241,6 +1187,38 @@ void Component::reloadComponent(bool loaded)
}
}

/*!
* \brief Component::updateConnections
* Updates the Component's connections.
*/
void Component::updateConnections()
{
if (mpGraphicsView->getViewType() == StringHandler::Icon) {
return;
}
foreach (LineAnnotation *pConnectionLineAnnotation, mpGraphicsView->getConnectionsList()) {
// get start and end components
QStringList startComponentList = pConnectionLineAnnotation->getStartComponentName().split(".");
QStringList endComponentList = pConnectionLineAnnotation->getEndComponentName().split(".");
// set the start component
if ((startComponentList.size() > 1 && getName().compare(startComponentList.at(0)) == 0)) {
QString startComponentName = startComponentList.at(1);
if (startComponentName.contains("[")) {
startComponentName = startComponentName.mid(0, startComponentName.indexOf("["));
}
pConnectionLineAnnotation->setStartComponent(mpGraphicsView->getModelWidget()->getConnectorComponent(this, startComponentName));
}
// set the end component
if ((endComponentList.size() > 1 && getName().compare(endComponentList.at(0)) == 0)) {
QString endComponentName = endComponentList.at(1);
if (endComponentName.contains("[")) {
endComponentName = endComponentName.mid(0, endComponentName.indexOf("["));
}
pConnectionLineAnnotation->setEndComponent(mpGraphicsView->getModelWidget()->getConnectorComponent(this, endComponentName));
}
}
}

void Component::updatePlacementAnnotation()
{
// Add component annotation.
Expand Down Expand Up @@ -1292,6 +1270,7 @@ void Component::handleShapeAdded()
pComponent->removeChildren();
pComponent->drawComponent();
pComponent->emitChanged();
pComponent->updateConnections();
}

void Component::handleComponentAdded()
Expand All @@ -1300,6 +1279,7 @@ void Component::handleComponentAdded()
pComponent->removeChildren();
pComponent->drawComponent();
pComponent->emitChanged();
pComponent->updateConnections();
}

/*!
Expand Down Expand Up @@ -1344,6 +1324,7 @@ void Component::referenceComponentChanged()
removeChildren();
drawComponent();
emitChanged();
updateConnections();
}

/*!
Expand Down Expand Up @@ -1484,6 +1465,23 @@ void Component::resizedComponent()
mpGraphicsView->getModelWidget()->updateModelicaText();
}

/*!
* \brief Component::componentNameHasChanged
* Updates the Component's tooltip when the component name has changed. Emits displayTextChanged signal.
*/
void Component::componentNameHasChanged()
{
if (mIsInheritedComponent || mComponentType == Component::Port) {
setToolTip(tr("<b>%1</b> %2<br /><br />Component declared in %3").arg(mpComponentInfo->getClassName())
.arg(mpComponentInfo->getName())
.arg(mpReferenceComponent->getGraphicsView()->getModelWidget()->getLibraryTreeItem()->getNameStructure()));
} else {
setToolTip(tr("<b>%1</b> %2").arg(mpComponentInfo->getClassName()).arg(mpComponentInfo->getName()));
}
emit displayTextChanged();
update();
}

/*!
* \brief Component::deleteMe
* Deletes the Component from the current view.
Expand Down
6 changes: 2 additions & 4 deletions OMEdit/OMEditGUI/Component/Component.h
Expand Up @@ -179,7 +179,6 @@ class Component : public QObject, public QGraphicsItem
void emitTransformHasChanged();
void emitChanged();
void emitDeleted();
void componentNameHasChanged();
void componentParameterHasChanged();
QString getParameterDisplayString(QString parameterName);
void shapeAdded();
Expand Down Expand Up @@ -235,9 +234,6 @@ class Component : public QObject, public QGraphicsItem
void createClassInheritedComponents();
void createClassShapes();
void createClassComponents();
void removeClassShapes();
void removeClassInheritedComponents();
void removeClassComponents();
void removeChildren();
void createActions();
void createResizerItems();
Expand All @@ -247,6 +243,7 @@ class Component : public QObject, public QGraphicsItem
void getScale(qreal *sx, qreal *sy);
void setOriginAndExtents();
void reloadComponent(bool loaded);
void updateConnections();
signals:
void added();
void transformChange();
Expand All @@ -269,6 +266,7 @@ public slots:
void resizeComponent(QPointF newPosition);
void finishResizeComponent();
void resizedComponent();
void componentNameHasChanged();
void deleteMe();
void duplicate();
void rotateClockwise();
Expand Down
24 changes: 4 additions & 20 deletions OMEdit/OMEditGUI/Modeling/Commands.cpp
Expand Up @@ -720,18 +720,10 @@ void AddConnectionCommand::redo()
{
// Add the start component connection details.
Component *pStartComponent = mpConnectionLineAnnotation->getStartComponent();
if (pStartComponent->getRootParentComponent()) {
pStartComponent->getRootParentComponent()->addConnectionDetails(mpConnectionLineAnnotation);
} else {
pStartComponent->addConnectionDetails(mpConnectionLineAnnotation);
}
pStartComponent->getRootParentComponent()->addConnectionDetails(mpConnectionLineAnnotation);
// Add the end component connection details.
Component *pEndComponent = mpConnectionLineAnnotation->getEndComponent();
if (pEndComponent->getParentComponent()) {
pEndComponent->getParentComponent()->addConnectionDetails(mpConnectionLineAnnotation);
} else {
pEndComponent->addConnectionDetails(mpConnectionLineAnnotation);
}
pEndComponent->getRootParentComponent()->addConnectionDetails(mpConnectionLineAnnotation);
mpConnectionLineAnnotation->getGraphicsView()->addConnectionToList(mpConnectionLineAnnotation);
mpConnectionLineAnnotation->getGraphicsView()->addItem(mpConnectionLineAnnotation);
mpConnectionLineAnnotation->emitAdded();
Expand All @@ -748,18 +740,10 @@ void AddConnectionCommand::undo()
{
// Remove the start component connection details.
Component *pStartComponent = mpConnectionLineAnnotation->getStartComponent();
if (pStartComponent->getRootParentComponent()) {
pStartComponent->getRootParentComponent()->removeConnectionDetails(mpConnectionLineAnnotation);
} else {
pStartComponent->removeConnectionDetails(mpConnectionLineAnnotation);
}
pStartComponent->getRootParentComponent()->removeConnectionDetails(mpConnectionLineAnnotation);
// Remove the end component connection details.
Component *pEndComponent = mpConnectionLineAnnotation->getEndComponent();
if (pEndComponent->getParentComponent()) {
pEndComponent->getParentComponent()->removeConnectionDetails(mpConnectionLineAnnotation);
} else {
pEndComponent->removeConnectionDetails(mpConnectionLineAnnotation);
}
pEndComponent->getRootParentComponent()->removeConnectionDetails(mpConnectionLineAnnotation);
mpConnectionLineAnnotation->getGraphicsView()->deleteConnectionFromList(mpConnectionLineAnnotation);
mpConnectionLineAnnotation->getGraphicsView()->removeItem(mpConnectionLineAnnotation);
mpConnectionLineAnnotation->emitDeleted();
Expand Down

0 comments on commit 9d4d80b

Please sign in to comment.