@@ -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+
767798void 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.
0 commit comments