Skip to content

Commit

Permalink
Handle the case when extends classes are unloaded/loaded.
Browse files Browse the repository at this point in the history
  • Loading branch information
adeas31 committed Oct 1, 2015
1 parent e87b1f3 commit 36a2419
Show file tree
Hide file tree
Showing 5 changed files with 78 additions and 83 deletions.
14 changes: 8 additions & 6 deletions OMEdit/OMEditGUI/Component/Component.cpp
Expand Up @@ -298,6 +298,8 @@ Component::Component(Component *pComponent, GraphicsView *pGraphicsView)
} else {
if (mpLibraryTreeItem->isNonExisting()) {
createNonExistingComponent();
// transformation
mpCoOrdinateSystem = new CoOrdinateSystem;
} else {
createClassInheritedShapes();
createClassShapes(mpLibraryTreeItem);
Expand All @@ -306,14 +308,14 @@ Component::Component(Component *pComponent, GraphicsView *pGraphicsView)
if (!mpLibraryTreeItem->getModelWidget()->getIconGraphicsView()->hasAnnotation()) {
createDefaultComponent();
}
// transformation
if (mpGraphicsView->getViewType() == StringHandler::Icon) {
mpCoOrdinateSystem = mpLibraryTreeItem->getModelWidget()->getIconGraphicsView()->getCoOrdinateSystem();
} else {
mpCoOrdinateSystem = mpLibraryTreeItem->getModelWidget()->getDiagramGraphicsView()->getCoOrdinateSystem();
}
}
}
// transformation
if (mpGraphicsView->getViewType() == StringHandler::Icon) {
mpCoOrdinateSystem = mpLibraryTreeItem->getModelWidget()->getIconGraphicsView()->getCoOrdinateSystem();
} else {
mpCoOrdinateSystem = mpLibraryTreeItem->getModelWidget()->getDiagramGraphicsView()->getCoOrdinateSystem();
}
mpTransformation = new Transformation(mpReferenceComponent->getTransformation());
setTransform(mpTransformation->getTransformationMatrix());
createActions();
Expand Down
3 changes: 3 additions & 0 deletions OMEdit/OMEditGUI/Component/CornerItem.cpp
Expand Up @@ -267,6 +267,9 @@ void ResizerItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *optio
{
Q_UNUSED(option);
Q_UNUSED(widget);
if (mpComponent->getGraphicsView()->isRenderingLibraryPixmap()) {
return;
}
painter->setPen(mPen);
painter->setBrush(mPen.color());
painter->drawRect(mRectangle);
Expand Down
19 changes: 11 additions & 8 deletions OMEdit/OMEditGUI/Modeling/LibraryTreeWidget.cpp
Expand Up @@ -973,7 +973,7 @@ void LibraryTreeModel::addModelicaLibraries(QSplashScreen *pSplashScreen)
OMCProxy *pOMCProxy = mpLibraryWidget->getMainWindow()->getOMCProxy();
pOMCProxy->loadSystemLibraries();
QStringList systemLibs = pOMCProxy->getClassNames();
systemLibs.prepend("OpenModelica");
// systemLibs.prepend("OpenModelica");
foreach (QString lib, systemLibs) {
pSplashScreen->showMessage(QString(Helper::loading).append(" ").append(lib), Qt::AlignRight, Qt::white);
bool wasNonExisting = false;
Expand Down Expand Up @@ -1674,11 +1674,17 @@ LibraryTreeItem* LibraryTreeModel::getLibraryTreeItemFromFileHelper(LibraryTreeI
*/
void LibraryTreeModel::unloadClassHelper(LibraryTreeItem *pLibraryTreeItem, LibraryTreeItem *pParentLibraryTreeItem)
{
// remove all cached OMC commands for LibraryTreeItem
mpLibraryWidget->getMainWindow()->getOMCProxy()->removeCachedOMCCommand(pLibraryTreeItem->getNameStructure());
MainWindow *pMainWindow = mpLibraryWidget->getMainWindow();
// make the class non existing
pLibraryTreeItem->setNonExisting(true);
// notify the inherits classes
pLibraryTreeItem->emitUnLoaded();
// make the class non expanded
pLibraryTreeItem->setExpanded(false);
addNonExistingLibraryTreeItem(pLibraryTreeItem);
/* remove the ModelWidget of LibraryTreeItem and remove the QMdiSubWindow from MdiArea and delete it. */
if (pLibraryTreeItem->getModelWidget()) {
QMdiSubWindow *pMdiSubWindow = mpLibraryWidget->getMainWindow()->getModelWidgetContainer()->getMdiSubWindow(pLibraryTreeItem->getModelWidget());
QMdiSubWindow *pMdiSubWindow = pMainWindow->getModelWidgetContainer()->getMdiSubWindow(pLibraryTreeItem->getModelWidget());
if (pMdiSubWindow) {
pMdiSubWindow->close();
pMdiSubWindow->deleteLater();
Expand All @@ -1690,11 +1696,8 @@ void LibraryTreeModel::unloadClassHelper(LibraryTreeItem *pLibraryTreeItem, Libr
int row = pLibraryTreeItem->row();
beginRemoveRows(libraryTreeItemIndex(pLibraryTreeItem), row, row);
pParentLibraryTreeItem->removeChild(pLibraryTreeItem);
// remove all cached OMC commands for LibraryTreeItem
mpLibraryWidget->getMainWindow()->getOMCProxy()->removeCachedOMCCommand(pLibraryTreeItem->getNameStructure());
pLibraryTreeItem->setNonExisting(true);
pLibraryTreeItem->emitUnLoaded();
pLibraryTreeItem->setExpanded(false);
addNonExistingLibraryTreeItem(pLibraryTreeItem);
endRemoveRows();
}

Expand Down
104 changes: 44 additions & 60 deletions OMEdit/OMEditGUI/Modeling/ModelWidgetContainer.cpp
Expand Up @@ -47,47 +47,12 @@

CoOrdinateSystem::CoOrdinateSystem()
{

}

void CoOrdinateSystem::setExtent(QList<QPointF> extent)
{
mExtent = extent;
}

QList<QPointF> CoOrdinateSystem::getExtent()
{
return mExtent;
}

void CoOrdinateSystem::setPreserveAspectRatio(bool PreserveAspectRatio)
{
mPreserveAspectRatio = PreserveAspectRatio;
}

bool CoOrdinateSystem::getPreserveAspectRatio()
{
return mPreserveAspectRatio;
}

void CoOrdinateSystem::setInitialScale(qreal initialScale)
{
mInitialScale = initialScale;
}

qreal CoOrdinateSystem::getInitialScale()
{
return mInitialScale;
}

void CoOrdinateSystem::setGrid(QPointF grid)
{
mGrid = grid;
}

QPointF CoOrdinateSystem::getGrid()
{
return mGrid;
QList<QPointF> extents;
extents << QPointF(-100, -100) << QPointF(100, 100);
setExtent(extents);
setPreserveAspectRatio(true);
setInitialScale(0.1);
setGrid(QPointF(2, 2));
}

qreal CoOrdinateSystem::getHorizontalGridStep()
Expand Down Expand Up @@ -2287,6 +2252,7 @@ ModelWidget::ModelWidget(LibraryTreeItem* pLibraryTreeItem, ModelWidgetContainer
getModelInheritedClasses(getLibraryTreeItem());
drawModelInheritedClasses();
getModelIconDiagramShapes(getLibraryTreeItem()->getNameStructure());
drawModelInheritedComponents();
getModelComponents();
//getModelConnections(getLibraryTreeItem()->getNameStructure());
mpUndoStack->clear();
Expand Down Expand Up @@ -2394,8 +2360,9 @@ void ModelWidget::modelInheritedClassLoaded(InheritedClass *pInheritedClass)
if (!pInheritedClass->mpLibraryTreeItem->getModelWidget()) {
pMainWindow->getLibraryWidget()->getLibraryTreeModel()->showModelWidget(pInheritedClass->mpLibraryTreeItem, "", false);
}
parseModelInheritedClass(pInheritedClass, StringHandler::Icon);
parseModelInheritedClass(pInheritedClass, StringHandler::Diagram);
drawModelInheritedClassShapes(pInheritedClass, StringHandler::Icon);
drawModelInheritedClassShapes(pInheritedClass, StringHandler::Diagram);
drawModelInheritedClassComponents(pInheritedClass);
mpIconGraphicsView->reOrderItems();
mpDiagramGraphicsView->reOrderItems();
}
Expand All @@ -2407,8 +2374,9 @@ void ModelWidget::modelInheritedClassLoaded(InheritedClass *pInheritedClass)
*/
void ModelWidget::modelInheritedClassUnLoaded(InheritedClass *pInheritedClass)
{
parseModelInheritedClass(pInheritedClass, StringHandler::Icon);
parseModelInheritedClass(pInheritedClass, StringHandler::Diagram);
drawModelInheritedClassShapes(pInheritedClass, StringHandler::Icon);
drawModelInheritedClassShapes(pInheritedClass, StringHandler::Diagram);
removeInheritedClassComponents(pInheritedClass);
//! @note Do we really need to call GraphicsView::reOrderItems() here?
}

Expand Down Expand Up @@ -2878,8 +2846,8 @@ void ModelWidget::getModelInheritedClasses(LibraryTreeItem *pLibraryTreeItem)
void ModelWidget::drawModelInheritedClasses()
{
foreach (InheritedClass *pInheritedClass, mInheritedClassesList) {
parseModelInheritedClass(pInheritedClass, StringHandler::Icon);
parseModelInheritedClass(pInheritedClass, StringHandler::Diagram);
drawModelInheritedClassShapes(pInheritedClass, StringHandler::Icon);
drawModelInheritedClassShapes(pInheritedClass, StringHandler::Diagram);
}
}

Expand Down Expand Up @@ -2909,7 +2877,7 @@ void ModelWidget::removeInheritedClassShapes(InheritedClass *pInheritedClass, St
* \param pLibraryTreeItem
* \param viewType
*/
void ModelWidget::parseModelInheritedClass(InheritedClass *pInheritedClass, StringHandler::ViewType viewType)
void ModelWidget::drawModelInheritedClassShapes(InheritedClass *pInheritedClass, StringHandler::ViewType viewType)
{
removeInheritedClassShapes(pInheritedClass, viewType);
LibraryTreeItem *pLibraryTreeItem = pInheritedClass->mpLibraryTreeItem;
Expand Down Expand Up @@ -3067,25 +3035,41 @@ void ModelWidget::parseModelIconDiagramShapes(QString className, QString annotat
}
}

void ModelWidget::drawModelInheritedComponents()
{
foreach (InheritedClass *pInheritedClass, mInheritedClassesList) {
drawModelInheritedClassComponents(pInheritedClass);
}
}

void ModelWidget::removeInheritedClassComponents(InheritedClass *pInheritedClass)
{
foreach (Component *pComponent, pInheritedClass->mDiagramComponentsList) {
mpDiagramGraphicsView->scene()->removeItem(pComponent);
}
pInheritedClass->mDiagramComponentsList.clear();
}

void ModelWidget::drawModelInheritedClassComponents(InheritedClass *pInheritedClass)
{
removeInheritedClassComponents(pInheritedClass);
LibraryTreeItem *pInheritedLibraryTreeItem = pInheritedClass->mpLibraryTreeItem;
foreach (Component *pInheritedComponent, pInheritedLibraryTreeItem->getModelWidget()->getDiagramGraphicsView()->getComponentsList()) {
if (pInheritedComponent->getLibraryTreeItem()->getRestriction() == StringHandler::Connector &&
!pInheritedComponent->getComponentInfo()->getProtected()) {
pInheritedClass->mIconComponentsList.append(new Component(pInheritedComponent, mpIconGraphicsView));
}
pInheritedClass->mDiagramComponentsList.append(new Component(pInheritedComponent, mpDiagramGraphicsView));
}
}

/*!
* \brief ModelWidget::getModelComponents
* Gets the components of the model and place them in the diagram and icon GraphicsView.
*/
void ModelWidget::getModelComponents()
{
MainWindow *pMainWindow = mpModelWidgetContainer->getMainWindow();
// get the inherited components of the class
foreach (InheritedClass *pInheritedClass, mInheritedClassesList) {
LibraryTreeItem *pInheritedLibraryTreeItem = pInheritedClass->mpLibraryTreeItem;
if (pInheritedLibraryTreeItem) {
if (!pInheritedLibraryTreeItem->getModelWidget()) {
pMainWindow->getLibraryWidget()->getLibraryTreeModel()->showModelWidget(pInheritedLibraryTreeItem, "", false);
}
foreach (Component *pInheritedComponent, pInheritedLibraryTreeItem->getModelWidget()->getDiagramGraphicsView()->getComponentsList()) {
pInheritedClass->mDiagramComponentsList.append(new Component(pInheritedComponent, mpDiagramGraphicsView));
}
}
}
// get the components
QList<ComponentInfo*> componentsList = pMainWindow->getOMCProxy()->getComponents(mpLibraryTreeItem->getNameStructure());
// get the components annotations
Expand Down
21 changes: 12 additions & 9 deletions OMEdit/OMEditGUI/Modeling/ModelWidgetContainer.h
Expand Up @@ -70,14 +70,14 @@ class CoOrdinateSystem
{
public:
CoOrdinateSystem();
void setExtent(QList<QPointF> extent);
QList<QPointF> getExtent();
void setPreserveAspectRatio(bool PreserveAspectRatio);
bool getPreserveAspectRatio();
void setInitialScale(qreal initialScale);
qreal getInitialScale();
void setGrid(QPointF grid);
QPointF getGrid();
void setExtent(QList<QPointF> extent) {mExtent = extent;}
QList<QPointF> getExtent() {return mExtent;}
void setPreserveAspectRatio(bool PreserveAspectRatio) {mPreserveAspectRatio = PreserveAspectRatio;}
bool getPreserveAspectRatio() {return mPreserveAspectRatio;}
void setInitialScale(qreal initialScale) {mInitialScale = initialScale;}
qreal getInitialScale() {return mInitialScale;}
void setGrid(QPointF grid) {mGrid = grid;}
QPointF getGrid() {return mGrid;}
qreal getHorizontalGridStep();
qreal getVerticalGridStep();
private:
Expand Down Expand Up @@ -401,9 +401,12 @@ class ModelWidget : public QWidget
void getModelInheritedClasses(LibraryTreeItem *pLibraryTreeItem);
void drawModelInheritedClasses();
void removeInheritedClassShapes(InheritedClass *pInheritedClass, StringHandler::ViewType viewType);
void parseModelInheritedClass(InheritedClass *pInheritedClass, StringHandler::ViewType viewType);
void drawModelInheritedClassShapes(InheritedClass *pInheritedClass, StringHandler::ViewType viewType);
void getModelIconDiagramShapes(QString className);
void parseModelIconDiagramShapes(QString className, QString annotationString, StringHandler::ViewType viewType);
void drawModelInheritedComponents();
void removeInheritedClassComponents(InheritedClass *pInheritedClass);
void drawModelInheritedClassComponents(InheritedClass *pInheritedClass);
void getModelComponents();
void getModelConnections(QString className, bool inheritedCycle = false);
void getTLMComponents();
Expand Down

0 comments on commit 36a2419

Please sign in to comment.