Skip to content

Commit 36a2419

Browse files
committed
Handle the case when extends classes are unloaded/loaded.
1 parent e87b1f3 commit 36a2419

File tree

5 files changed

+78
-83
lines changed

5 files changed

+78
-83
lines changed

OMEdit/OMEditGUI/Component/Component.cpp

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -298,6 +298,8 @@ Component::Component(Component *pComponent, GraphicsView *pGraphicsView)
298298
} else {
299299
if (mpLibraryTreeItem->isNonExisting()) {
300300
createNonExistingComponent();
301+
// transformation
302+
mpCoOrdinateSystem = new CoOrdinateSystem;
301303
} else {
302304
createClassInheritedShapes();
303305
createClassShapes(mpLibraryTreeItem);
@@ -306,14 +308,14 @@ Component::Component(Component *pComponent, GraphicsView *pGraphicsView)
306308
if (!mpLibraryTreeItem->getModelWidget()->getIconGraphicsView()->hasAnnotation()) {
307309
createDefaultComponent();
308310
}
311+
// transformation
312+
if (mpGraphicsView->getViewType() == StringHandler::Icon) {
313+
mpCoOrdinateSystem = mpLibraryTreeItem->getModelWidget()->getIconGraphicsView()->getCoOrdinateSystem();
314+
} else {
315+
mpCoOrdinateSystem = mpLibraryTreeItem->getModelWidget()->getDiagramGraphicsView()->getCoOrdinateSystem();
316+
}
309317
}
310318
}
311-
// transformation
312-
if (mpGraphicsView->getViewType() == StringHandler::Icon) {
313-
mpCoOrdinateSystem = mpLibraryTreeItem->getModelWidget()->getIconGraphicsView()->getCoOrdinateSystem();
314-
} else {
315-
mpCoOrdinateSystem = mpLibraryTreeItem->getModelWidget()->getDiagramGraphicsView()->getCoOrdinateSystem();
316-
}
317319
mpTransformation = new Transformation(mpReferenceComponent->getTransformation());
318320
setTransform(mpTransformation->getTransformationMatrix());
319321
createActions();

OMEdit/OMEditGUI/Component/CornerItem.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -267,6 +267,9 @@ void ResizerItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *optio
267267
{
268268
Q_UNUSED(option);
269269
Q_UNUSED(widget);
270+
if (mpComponent->getGraphicsView()->isRenderingLibraryPixmap()) {
271+
return;
272+
}
270273
painter->setPen(mPen);
271274
painter->setBrush(mPen.color());
272275
painter->drawRect(mRectangle);

OMEdit/OMEditGUI/Modeling/LibraryTreeWidget.cpp

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -973,7 +973,7 @@ void LibraryTreeModel::addModelicaLibraries(QSplashScreen *pSplashScreen)
973973
OMCProxy *pOMCProxy = mpLibraryWidget->getMainWindow()->getOMCProxy();
974974
pOMCProxy->loadSystemLibraries();
975975
QStringList systemLibs = pOMCProxy->getClassNames();
976-
systemLibs.prepend("OpenModelica");
976+
// systemLibs.prepend("OpenModelica");
977977
foreach (QString lib, systemLibs) {
978978
pSplashScreen->showMessage(QString(Helper::loading).append(" ").append(lib), Qt::AlignRight, Qt::white);
979979
bool wasNonExisting = false;
@@ -1674,11 +1674,17 @@ LibraryTreeItem* LibraryTreeModel::getLibraryTreeItemFromFileHelper(LibraryTreeI
16741674
*/
16751675
void LibraryTreeModel::unloadClassHelper(LibraryTreeItem *pLibraryTreeItem, LibraryTreeItem *pParentLibraryTreeItem)
16761676
{
1677-
// remove all cached OMC commands for LibraryTreeItem
1678-
mpLibraryWidget->getMainWindow()->getOMCProxy()->removeCachedOMCCommand(pLibraryTreeItem->getNameStructure());
1677+
MainWindow *pMainWindow = mpLibraryWidget->getMainWindow();
1678+
// make the class non existing
1679+
pLibraryTreeItem->setNonExisting(true);
1680+
// notify the inherits classes
1681+
pLibraryTreeItem->emitUnLoaded();
1682+
// make the class non expanded
1683+
pLibraryTreeItem->setExpanded(false);
1684+
addNonExistingLibraryTreeItem(pLibraryTreeItem);
16791685
/* remove the ModelWidget of LibraryTreeItem and remove the QMdiSubWindow from MdiArea and delete it. */
16801686
if (pLibraryTreeItem->getModelWidget()) {
1681-
QMdiSubWindow *pMdiSubWindow = mpLibraryWidget->getMainWindow()->getModelWidgetContainer()->getMdiSubWindow(pLibraryTreeItem->getModelWidget());
1687+
QMdiSubWindow *pMdiSubWindow = pMainWindow->getModelWidgetContainer()->getMdiSubWindow(pLibraryTreeItem->getModelWidget());
16821688
if (pMdiSubWindow) {
16831689
pMdiSubWindow->close();
16841690
pMdiSubWindow->deleteLater();
@@ -1690,11 +1696,8 @@ void LibraryTreeModel::unloadClassHelper(LibraryTreeItem *pLibraryTreeItem, Libr
16901696
int row = pLibraryTreeItem->row();
16911697
beginRemoveRows(libraryTreeItemIndex(pLibraryTreeItem), row, row);
16921698
pParentLibraryTreeItem->removeChild(pLibraryTreeItem);
1699+
// remove all cached OMC commands for LibraryTreeItem
16931700
mpLibraryWidget->getMainWindow()->getOMCProxy()->removeCachedOMCCommand(pLibraryTreeItem->getNameStructure());
1694-
pLibraryTreeItem->setNonExisting(true);
1695-
pLibraryTreeItem->emitUnLoaded();
1696-
pLibraryTreeItem->setExpanded(false);
1697-
addNonExistingLibraryTreeItem(pLibraryTreeItem);
16981701
endRemoveRows();
16991702
}
17001703

OMEdit/OMEditGUI/Modeling/ModelWidgetContainer.cpp

Lines changed: 44 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -47,47 +47,12 @@
4747

4848
CoOrdinateSystem::CoOrdinateSystem()
4949
{
50-
51-
}
52-
53-
void CoOrdinateSystem::setExtent(QList<QPointF> extent)
54-
{
55-
mExtent = extent;
56-
}
57-
58-
QList<QPointF> CoOrdinateSystem::getExtent()
59-
{
60-
return mExtent;
61-
}
62-
63-
void CoOrdinateSystem::setPreserveAspectRatio(bool PreserveAspectRatio)
64-
{
65-
mPreserveAspectRatio = PreserveAspectRatio;
66-
}
67-
68-
bool CoOrdinateSystem::getPreserveAspectRatio()
69-
{
70-
return mPreserveAspectRatio;
71-
}
72-
73-
void CoOrdinateSystem::setInitialScale(qreal initialScale)
74-
{
75-
mInitialScale = initialScale;
76-
}
77-
78-
qreal CoOrdinateSystem::getInitialScale()
79-
{
80-
return mInitialScale;
81-
}
82-
83-
void CoOrdinateSystem::setGrid(QPointF grid)
84-
{
85-
mGrid = grid;
86-
}
87-
88-
QPointF CoOrdinateSystem::getGrid()
89-
{
90-
return mGrid;
50+
QList<QPointF> extents;
51+
extents << QPointF(-100, -100) << QPointF(100, 100);
52+
setExtent(extents);
53+
setPreserveAspectRatio(true);
54+
setInitialScale(0.1);
55+
setGrid(QPointF(2, 2));
9156
}
9257

9358
qreal CoOrdinateSystem::getHorizontalGridStep()
@@ -2287,6 +2252,7 @@ ModelWidget::ModelWidget(LibraryTreeItem* pLibraryTreeItem, ModelWidgetContainer
22872252
getModelInheritedClasses(getLibraryTreeItem());
22882253
drawModelInheritedClasses();
22892254
getModelIconDiagramShapes(getLibraryTreeItem()->getNameStructure());
2255+
drawModelInheritedComponents();
22902256
getModelComponents();
22912257
//getModelConnections(getLibraryTreeItem()->getNameStructure());
22922258
mpUndoStack->clear();
@@ -2394,8 +2360,9 @@ void ModelWidget::modelInheritedClassLoaded(InheritedClass *pInheritedClass)
23942360
if (!pInheritedClass->mpLibraryTreeItem->getModelWidget()) {
23952361
pMainWindow->getLibraryWidget()->getLibraryTreeModel()->showModelWidget(pInheritedClass->mpLibraryTreeItem, "", false);
23962362
}
2397-
parseModelInheritedClass(pInheritedClass, StringHandler::Icon);
2398-
parseModelInheritedClass(pInheritedClass, StringHandler::Diagram);
2363+
drawModelInheritedClassShapes(pInheritedClass, StringHandler::Icon);
2364+
drawModelInheritedClassShapes(pInheritedClass, StringHandler::Diagram);
2365+
drawModelInheritedClassComponents(pInheritedClass);
23992366
mpIconGraphicsView->reOrderItems();
24002367
mpDiagramGraphicsView->reOrderItems();
24012368
}
@@ -2407,8 +2374,9 @@ void ModelWidget::modelInheritedClassLoaded(InheritedClass *pInheritedClass)
24072374
*/
24082375
void ModelWidget::modelInheritedClassUnLoaded(InheritedClass *pInheritedClass)
24092376
{
2410-
parseModelInheritedClass(pInheritedClass, StringHandler::Icon);
2411-
parseModelInheritedClass(pInheritedClass, StringHandler::Diagram);
2377+
drawModelInheritedClassShapes(pInheritedClass, StringHandler::Icon);
2378+
drawModelInheritedClassShapes(pInheritedClass, StringHandler::Diagram);
2379+
removeInheritedClassComponents(pInheritedClass);
24122380
//! @note Do we really need to call GraphicsView::reOrderItems() here?
24132381
}
24142382

@@ -2878,8 +2846,8 @@ void ModelWidget::getModelInheritedClasses(LibraryTreeItem *pLibraryTreeItem)
28782846
void ModelWidget::drawModelInheritedClasses()
28792847
{
28802848
foreach (InheritedClass *pInheritedClass, mInheritedClassesList) {
2881-
parseModelInheritedClass(pInheritedClass, StringHandler::Icon);
2882-
parseModelInheritedClass(pInheritedClass, StringHandler::Diagram);
2849+
drawModelInheritedClassShapes(pInheritedClass, StringHandler::Icon);
2850+
drawModelInheritedClassShapes(pInheritedClass, StringHandler::Diagram);
28832851
}
28842852
}
28852853

@@ -2909,7 +2877,7 @@ void ModelWidget::removeInheritedClassShapes(InheritedClass *pInheritedClass, St
29092877
* \param pLibraryTreeItem
29102878
* \param viewType
29112879
*/
2912-
void ModelWidget::parseModelInheritedClass(InheritedClass *pInheritedClass, StringHandler::ViewType viewType)
2880+
void ModelWidget::drawModelInheritedClassShapes(InheritedClass *pInheritedClass, StringHandler::ViewType viewType)
29132881
{
29142882
removeInheritedClassShapes(pInheritedClass, viewType);
29152883
LibraryTreeItem *pLibraryTreeItem = pInheritedClass->mpLibraryTreeItem;
@@ -3067,25 +3035,41 @@ void ModelWidget::parseModelIconDiagramShapes(QString className, QString annotat
30673035
}
30683036
}
30693037

3038+
void ModelWidget::drawModelInheritedComponents()
3039+
{
3040+
foreach (InheritedClass *pInheritedClass, mInheritedClassesList) {
3041+
drawModelInheritedClassComponents(pInheritedClass);
3042+
}
3043+
}
3044+
3045+
void ModelWidget::removeInheritedClassComponents(InheritedClass *pInheritedClass)
3046+
{
3047+
foreach (Component *pComponent, pInheritedClass->mDiagramComponentsList) {
3048+
mpDiagramGraphicsView->scene()->removeItem(pComponent);
3049+
}
3050+
pInheritedClass->mDiagramComponentsList.clear();
3051+
}
3052+
3053+
void ModelWidget::drawModelInheritedClassComponents(InheritedClass *pInheritedClass)
3054+
{
3055+
removeInheritedClassComponents(pInheritedClass);
3056+
LibraryTreeItem *pInheritedLibraryTreeItem = pInheritedClass->mpLibraryTreeItem;
3057+
foreach (Component *pInheritedComponent, pInheritedLibraryTreeItem->getModelWidget()->getDiagramGraphicsView()->getComponentsList()) {
3058+
if (pInheritedComponent->getLibraryTreeItem()->getRestriction() == StringHandler::Connector &&
3059+
!pInheritedComponent->getComponentInfo()->getProtected()) {
3060+
pInheritedClass->mIconComponentsList.append(new Component(pInheritedComponent, mpIconGraphicsView));
3061+
}
3062+
pInheritedClass->mDiagramComponentsList.append(new Component(pInheritedComponent, mpDiagramGraphicsView));
3063+
}
3064+
}
3065+
30703066
/*!
30713067
* \brief ModelWidget::getModelComponents
30723068
* Gets the components of the model and place them in the diagram and icon GraphicsView.
30733069
*/
30743070
void ModelWidget::getModelComponents()
30753071
{
30763072
MainWindow *pMainWindow = mpModelWidgetContainer->getMainWindow();
3077-
// get the inherited components of the class
3078-
foreach (InheritedClass *pInheritedClass, mInheritedClassesList) {
3079-
LibraryTreeItem *pInheritedLibraryTreeItem = pInheritedClass->mpLibraryTreeItem;
3080-
if (pInheritedLibraryTreeItem) {
3081-
if (!pInheritedLibraryTreeItem->getModelWidget()) {
3082-
pMainWindow->getLibraryWidget()->getLibraryTreeModel()->showModelWidget(pInheritedLibraryTreeItem, "", false);
3083-
}
3084-
foreach (Component *pInheritedComponent, pInheritedLibraryTreeItem->getModelWidget()->getDiagramGraphicsView()->getComponentsList()) {
3085-
pInheritedClass->mDiagramComponentsList.append(new Component(pInheritedComponent, mpDiagramGraphicsView));
3086-
}
3087-
}
3088-
}
30893073
// get the components
30903074
QList<ComponentInfo*> componentsList = pMainWindow->getOMCProxy()->getComponents(mpLibraryTreeItem->getNameStructure());
30913075
// get the components annotations

OMEdit/OMEditGUI/Modeling/ModelWidgetContainer.h

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -70,14 +70,14 @@ class CoOrdinateSystem
7070
{
7171
public:
7272
CoOrdinateSystem();
73-
void setExtent(QList<QPointF> extent);
74-
QList<QPointF> getExtent();
75-
void setPreserveAspectRatio(bool PreserveAspectRatio);
76-
bool getPreserveAspectRatio();
77-
void setInitialScale(qreal initialScale);
78-
qreal getInitialScale();
79-
void setGrid(QPointF grid);
80-
QPointF getGrid();
73+
void setExtent(QList<QPointF> extent) {mExtent = extent;}
74+
QList<QPointF> getExtent() {return mExtent;}
75+
void setPreserveAspectRatio(bool PreserveAspectRatio) {mPreserveAspectRatio = PreserveAspectRatio;}
76+
bool getPreserveAspectRatio() {return mPreserveAspectRatio;}
77+
void setInitialScale(qreal initialScale) {mInitialScale = initialScale;}
78+
qreal getInitialScale() {return mInitialScale;}
79+
void setGrid(QPointF grid) {mGrid = grid;}
80+
QPointF getGrid() {return mGrid;}
8181
qreal getHorizontalGridStep();
8282
qreal getVerticalGridStep();
8383
private:
@@ -401,9 +401,12 @@ class ModelWidget : public QWidget
401401
void getModelInheritedClasses(LibraryTreeItem *pLibraryTreeItem);
402402
void drawModelInheritedClasses();
403403
void removeInheritedClassShapes(InheritedClass *pInheritedClass, StringHandler::ViewType viewType);
404-
void parseModelInheritedClass(InheritedClass *pInheritedClass, StringHandler::ViewType viewType);
404+
void drawModelInheritedClassShapes(InheritedClass *pInheritedClass, StringHandler::ViewType viewType);
405405
void getModelIconDiagramShapes(QString className);
406406
void parseModelIconDiagramShapes(QString className, QString annotationString, StringHandler::ViewType viewType);
407+
void drawModelInheritedComponents();
408+
void removeInheritedClassComponents(InheritedClass *pInheritedClass);
409+
void drawModelInheritedClassComponents(InheritedClass *pInheritedClass);
407410
void getModelComponents();
408411
void getModelConnections(QString className, bool inheritedCycle = false);
409412
void getTLMComponents();

0 commit comments

Comments
 (0)