Skip to content

Commit b4d8ad0

Browse files
committed
Always draw the connectors on top.
1 parent 5148385 commit b4d8ad0

File tree

2 files changed

+58
-35
lines changed

2 files changed

+58
-35
lines changed

OMEdit/OMEditGUI/Component/Component.cpp

Lines changed: 55 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -333,7 +333,7 @@ Component::Component(QString name, LibraryTreeItem *pLibraryTreeItem, QString tr
333333
mTransformationString = transformation;
334334
// Construct the temporary polygon that is used when scaling
335335
mpResizerRectangle = new QGraphicsRectItem;
336-
mpResizerRectangle->setZValue(5000); // set to a very high value
336+
mpResizerRectangle->setZValue(-5000); // set to a very low value
337337
mpGraphicsView->addItem(mpResizerRectangle);
338338
QPen pen;
339339
pen.setStyle(Qt::DotLine);
@@ -391,7 +391,7 @@ Component::Component(LibraryTreeItem *pLibraryTreeItem, Component *pParentCompon
391391
createNonExistingComponent();
392392
mpDefaultComponentRectangle = 0;
393393
mpDefaultComponentText = 0;
394-
drawComponent();
394+
drawInheritedComponentsAndShapes();
395395
setDialogAnnotation(QStringList());
396396
mpOriginItem = 0;
397397
if (mpLibraryTreeItem) {
@@ -402,8 +402,8 @@ Component::Component(LibraryTreeItem *pLibraryTreeItem, Component *pParentCompon
402402
}
403403
}
404404

405-
Component::Component(Component *pComponent, Component *pParentComponent)
406-
: QGraphicsItem(pParentComponent), mpReferenceComponent(pComponent), mpParentComponent(pParentComponent)
405+
Component::Component(Component *pComponent, Component *pParentComponent, Component *pRootParentComponent)
406+
: QGraphicsItem(pRootParentComponent), mpReferenceComponent(pComponent), mpParentComponent(pParentComponent)
407407
{
408408
mpLibraryTreeItem = mpReferenceComponent->getLibraryTreeItem();
409409
mpComponentInfo = mpReferenceComponent->getComponentInfo();
@@ -415,7 +415,7 @@ Component::Component(Component *pComponent, Component *pParentComponent)
415415
createNonExistingComponent();
416416
mpDefaultComponentRectangle = 0;
417417
mpDefaultComponentText = 0;
418-
drawComponent();
418+
drawInheritedComponentsAndShapes();
419419
mTransformation = Transformation(mpReferenceComponent->mTransformation);
420420
setTransform(mTransformation.getTransformationMatrix());
421421
mpOriginItem = 0;
@@ -764,6 +764,37 @@ QString Component::getTransformationExtent()
764764
return transformationExtent;
765765
}
766766

767+
/*!
768+
* \brief Component::createClassComponents
769+
* Creates a class components.
770+
*/
771+
void Component::createClassComponents()
772+
{
773+
foreach (Component *pInheritedComponent, mInheritedComponentsList) {
774+
pInheritedComponent->createClassComponents();
775+
}
776+
if (!mpLibraryTreeItem->isNonExisting()) {
777+
if (!mpLibraryTreeItem->getModelWidget()) {
778+
MainWindow *pMainWindow = mpGraphicsView->getModelWidget()->getModelWidgetContainer()->getMainWindow();
779+
pMainWindow->getLibraryWidget()->getLibraryTreeModel()->showModelWidget(mpLibraryTreeItem, "", false);
780+
}
781+
foreach (Component *pComponent, mpLibraryTreeItem->getModelWidget()->getIconGraphicsView()->getComponentsList()) {
782+
mComponentsList.append(new Component(pComponent, this, getRootParentComponent()));
783+
}
784+
mpLibraryTreeItem->getModelWidget()->loadDiagramView();
785+
foreach (Component *pComponent, mpLibraryTreeItem->getModelWidget()->getDiagramGraphicsView()->getComponentsList()) {
786+
if (pComponent->getLibraryTreeItem() && pComponent->getLibraryTreeItem()->isConnector()) {
787+
continue;
788+
}
789+
Component *pNewComponent = new Component(pComponent, this, getRootParentComponent());
790+
// Set the Parent Item to 0 beacause we don't want to render Diagram components. We just want to store them for Parameters Dialog.
791+
pNewComponent->setParentItem(0);
792+
mpGraphicsView->removeItem(pNewComponent);
793+
mComponentsList.append(pNewComponent);
794+
}
795+
}
796+
}
797+
767798
void Component::applyRotation(qreal angle)
768799
{
769800
Transformation oldTransformation = mTransformation;
@@ -978,6 +1009,25 @@ void Component::drawComponent()
9781009
}
9791010
}
9801011

1012+
/*!
1013+
* \brief Component::drawInheritedComponentsAndShapes
1014+
* Draws the inherited components and their shapes.
1015+
*/
1016+
void Component::drawInheritedComponentsAndShapes()
1017+
{
1018+
if (!mpLibraryTreeItem) { // if built in type e.g Real, Boolean etc.
1019+
if (mComponentType == Component::Root) {
1020+
mpDefaultComponentRectangle->setVisible(true);
1021+
mpDefaultComponentText->setVisible(true);
1022+
}
1023+
} else if (mpLibraryTreeItem->isNonExisting()) { // if class is non existing
1024+
mpNonExistingComponentLine->setVisible(true);
1025+
} else {
1026+
createClassInheritedComponents();
1027+
createClassShapes();
1028+
}
1029+
}
1030+
9811031
/*!
9821032
* \brief Component::showNonExistingOrDefaultComponentIfNeeded
9831033
* Show non-existing or default Component if needed.
@@ -1054,34 +1104,6 @@ void Component::createClassShapes()
10541104
}
10551105
}
10561106

1057-
/*!
1058-
* \brief Component::createClassComponents
1059-
* Creates a class components.
1060-
*/
1061-
void Component::createClassComponents()
1062-
{
1063-
if (!mpLibraryTreeItem->isNonExisting()) {
1064-
if (!mpLibraryTreeItem->getModelWidget()) {
1065-
MainWindow *pMainWindow = mpGraphicsView->getModelWidget()->getModelWidgetContainer()->getMainWindow();
1066-
pMainWindow->getLibraryWidget()->getLibraryTreeModel()->showModelWidget(mpLibraryTreeItem, "", false);
1067-
}
1068-
foreach (Component *pComponent, mpLibraryTreeItem->getModelWidget()->getIconGraphicsView()->getComponentsList()) {
1069-
mComponentsList.append(new Component(pComponent, this));
1070-
}
1071-
mpLibraryTreeItem->getModelWidget()->loadDiagramView();
1072-
foreach (Component *pComponent, mpLibraryTreeItem->getModelWidget()->getDiagramGraphicsView()->getComponentsList()) {
1073-
if (pComponent->getLibraryTreeItem() && pComponent->getLibraryTreeItem()->isConnector()) {
1074-
continue;
1075-
}
1076-
Component *pNewComponent = new Component(pComponent, this);
1077-
// Set the Parent Item to 0 beacause we don't want to render Diagram components. We just want to store them for Parameters Dialog.
1078-
pNewComponent->setParentItem(0);
1079-
mpGraphicsView->removeItem(pNewComponent);
1080-
mComponentsList.append(pNewComponent);
1081-
}
1082-
}
1083-
}
1084-
10851107
/*!
10861108
* \brief Component::removeChildren
10871109
* Removes the complete hirerchy of the Component.

OMEdit/OMEditGUI/Component/Component.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,7 @@ class Component : public QObject, public QGraphicsItem
145145
Component(QString name, LibraryTreeItem *pLibraryTreeItem, QString transformation, QPointF position, QStringList dialogAnnotation,
146146
ComponentInfo *pComponentInfo, GraphicsView *pGraphicsView);
147147
Component(LibraryTreeItem *pLibraryTreeItem, Component *pParentComponent);
148-
Component(Component *pComponent, Component *pParentComponent);
148+
Component(Component *pComponent, Component *pParentComponent, Component *pRootParentComponent);
149149
Component(Component *pComponent, GraphicsView *pGraphicsView);
150150
bool isInheritedComponent() {return mIsInheritedComponent;}
151151
bool hasShapeAnnotation(Component *pComponent);
@@ -185,6 +185,7 @@ class Component : public QObject, public QGraphicsItem
185185
QString getOMCPlacementAnnotation(QPointF position);
186186
QString getTransformationOrigin();
187187
QString getTransformationExtent();
188+
void createClassComponents();
188189
void applyRotation(qreal angle);
189190
void addConnectionDetails(LineAnnotation *pConnectorLineAnnotation);
190191
void removeConnectionDetails(LineAnnotation *pConnectorLineAnnotation);
@@ -245,10 +246,10 @@ class Component : public QObject, public QGraphicsItem
245246
void createNonExistingComponent();
246247
void createDefaultComponent();
247248
void drawComponent();
249+
void drawInheritedComponentsAndShapes();
248250
void showNonExistingOrDefaultComponentIfNeeded();
249251
void createClassInheritedComponents();
250252
void createClassShapes();
251-
void createClassComponents();
252253
void removeChildren();
253254
void createActions();
254255
void createResizerItems();

0 commit comments

Comments
 (0)