Skip to content

Commit

Permalink
Undo for component rotation.
Browse files Browse the repository at this point in the history
  • Loading branch information
adeas31 committed Oct 14, 2015
1 parent f91caee commit b037ac0
Show file tree
Hide file tree
Showing 13 changed files with 398 additions and 350 deletions.
6 changes: 4 additions & 2 deletions OMEdit/OMEditGUI/Annotations/LineAnnotation.cpp
Expand Up @@ -677,7 +677,7 @@ void LineAnnotation::handleComponentRotation()
* \brief LineAnnotation::updateConnectionAnnotation
* Updates the connection annotation.
*/
void LineAnnotation::updateConnectionAnnotation()
void LineAnnotation::updateConnectionAnnotation(bool updateModelicaText)
{
if (mpGraphicsView->getModelWidget()->getLibraryTreeItem()->getLibraryType()== LibraryTreeItem::TLM) {
TLMEditor *pTLMEditor = dynamic_cast<TLMEditor*>(mpGraphicsView->getModelWidget()->getEditor());
Expand All @@ -690,9 +690,11 @@ void LineAnnotation::updateConnectionAnnotation()
OMCProxy *pOMCProxy = mpGraphicsView->getModelWidget()->getModelWidgetContainer()->getMainWindow()->getOMCProxy();
pOMCProxy->updateConnection(getStartComponentName(), getEndComponentName(),
mpGraphicsView->getModelWidget()->getLibraryTreeItem()->getNameStructure(), annotationString);
if (updateModelicaText) {
mpGraphicsView->getModelWidget()->updateModelicaText();
}
}
// make the model modified
mpGraphicsView->getModelWidget()->updateModelicaText();
mpGraphicsView->getModelWidget()->setModelModified();
}

Expand Down
2 changes: 1 addition & 1 deletion OMEdit/OMEditGUI/Annotations/LineAnnotation.h
Expand Up @@ -103,7 +103,7 @@ class LineAnnotation : public ShapeAnnotation
public slots:
void handleComponentMoved();
void handleComponentRotation();
void updateConnectionAnnotation();
void updateConnectionAnnotation(bool updateModelicaText = true);
void duplicate();
};

Expand Down
104 changes: 48 additions & 56 deletions OMEdit/OMEditGUI/Annotations/ShapeAnnotation.cpp
Expand Up @@ -360,7 +360,7 @@ ShapeAnnotation::ShapeAnnotation(QGraphicsItem *pParent)
{
mpGraphicsView = 0;
mpParentComponent = dynamic_cast<Component*>(pParent);
mpTransformation = 0;
//mTransformation = 0;
mIsCustomShape = false;
mIsInheritedShape = false;
setOldPosition(QPointF(0, 0));
Expand All @@ -375,22 +375,14 @@ ShapeAnnotation::ShapeAnnotation(bool inheritedShape, GraphicsView *pGraphicsVie
: QGraphicsItem(pParent)
{
mpGraphicsView = pGraphicsView;
mpTransformation = new Transformation(StringHandler::Diagram);
mTransformation = Transformation(StringHandler::Diagram);
mIsCustomShape = true;
mIsInheritedShape = inheritedShape;
setOldPosition(QPointF(0, 0));
mIsCornerItemClicked = false;
createActions();
}

/*!
Deletes the Transformation object.
*/
ShapeAnnotation::~ShapeAnnotation()
{
if (mpTransformation) delete mpTransformation;
}

/*!
* \brief ShapeAnnotation::setDefaults
* Sets the default values for the shape annotations. Defaults valued as defined in Modelica specification 3.2 are used.
Expand Down Expand Up @@ -633,11 +625,11 @@ QString ShapeAnnotation::getShapeAnnotation()
*/
void ShapeAnnotation::initializeTransformation()
{
mpTransformation->setOrigin(mOrigin);
mpTransformation->setExtent1(QPointF(-100.0, -100.0));
mpTransformation->setExtent2(QPointF(100.0, 100.0));
mpTransformation->setRotateAngle(mRotation);
setTransform(mpTransformation->getTransformationMatrix());
mTransformation.setOrigin(mOrigin);
mTransformation.setExtent1(QPointF(-100.0, -100.0));
mTransformation.setExtent2(QPointF(100.0, 100.0));
mTransformation.setRotateAngle(mRotation);
setTransform(mTransformation.getTransformationMatrix());
}

/*!
Expand Down Expand Up @@ -1116,7 +1108,7 @@ QImage ShapeAnnotation::getImage()
*/
void ShapeAnnotation::rotateClockwise()
{
qreal oldRotation = StringHandler::getNormalizedAngle(mpTransformation->getRotateAngle());
qreal oldRotation = StringHandler::getNormalizedAngle(mTransformation.getRotateAngle());
qreal rotateIncrement = -90;
qreal angle = 0;
if (oldRotation == -270)
Expand All @@ -1141,7 +1133,7 @@ void ShapeAnnotation::rotateClockwise()
*/
void ShapeAnnotation::rotateAntiClockwise()
{
qreal oldRotation = StringHandler::getNormalizedAngle(mpTransformation->getRotateAngle());
qreal oldRotation = StringHandler::getNormalizedAngle(mTransformation.getRotateAngle());
qreal rotateIncrement = 90;
qreal angle = 0;
if (oldRotation == 270)
Expand All @@ -1167,8 +1159,8 @@ void ShapeAnnotation::rotateAntiClockwise()
*/
void ShapeAnnotation::applyRotation(qreal angle)
{
mpTransformation->setRotateAngle(angle);
setTransform(mpTransformation->getTransformationMatrix());
mTransformation.setRotateAngle(angle);
setTransform(mTransformation.getTransformationMatrix());
mRotation = angle;
}

Expand Down Expand Up @@ -1416,7 +1408,7 @@ void ShapeAnnotation::referenceShapeChanged()
if (pShapeAnnotation) {
if (mpGraphicsView) {
updateShape(pShapeAnnotation);
setTransform(pShapeAnnotation->getTransformation()->getTransformationMatrix());
setTransform(pShapeAnnotation->mTransformation.getTransformationMatrix());
} else if (mpParentComponent) {
updateShape(pShapeAnnotation);
setPos(mOrigin);
Expand Down Expand Up @@ -1591,9 +1583,9 @@ void ShapeAnnotation::rotateAntiClockwiseMouseRightClick()
*/
void ShapeAnnotation::moveUp()
{
mpTransformation->adjustPosition(0, mpGraphicsView->getCoOrdinateSystem()->getVerticalGridStep());
setTransform(mpTransformation->getTransformationMatrix());
mOrigin = mpTransformation->getPosition();
mTransformation.adjustPosition(0, mpGraphicsView->getCoOrdinateSystem()->getVerticalGridStep());
setTransform(mTransformation.getTransformationMatrix());
mOrigin = mTransformation.getPosition();
}

/*!
Expand All @@ -1612,9 +1604,9 @@ void ShapeAnnotation::moveUp()
*/
void ShapeAnnotation::moveShiftUp()
{
mpTransformation->adjustPosition(0, mpGraphicsView->getCoOrdinateSystem()->getVerticalGridStep() * 5);
setTransform(mpTransformation->getTransformationMatrix());
mOrigin = mpTransformation->getPosition();
mTransformation.adjustPosition(0, mpGraphicsView->getCoOrdinateSystem()->getVerticalGridStep() * 5);
setTransform(mTransformation.getTransformationMatrix());
mOrigin = mTransformation.getPosition();
}

/*!
Expand All @@ -1633,9 +1625,9 @@ void ShapeAnnotation::moveShiftUp()
*/
void ShapeAnnotation::moveCtrlUp()
{
mpTransformation->adjustPosition(0, 1);
setTransform(mpTransformation->getTransformationMatrix());
mOrigin = mpTransformation->getPosition();
mTransformation.adjustPosition(0, 1);
setTransform(mTransformation.getTransformationMatrix());
mOrigin = mTransformation.getPosition();
}

/*!
Expand All @@ -1654,9 +1646,9 @@ void ShapeAnnotation::moveCtrlUp()
*/
void ShapeAnnotation::moveDown()
{
mpTransformation->adjustPosition(0, -mpGraphicsView->getCoOrdinateSystem()->getVerticalGridStep());
setTransform(mpTransformation->getTransformationMatrix());
mOrigin = mpTransformation->getPosition();
mTransformation.adjustPosition(0, -mpGraphicsView->getCoOrdinateSystem()->getVerticalGridStep());
setTransform(mTransformation.getTransformationMatrix());
mOrigin = mTransformation.getPosition();
}


Expand All @@ -1676,9 +1668,9 @@ void ShapeAnnotation::moveDown()
*/
void ShapeAnnotation::moveShiftDown()
{
mpTransformation->adjustPosition(0, -(mpGraphicsView->getCoOrdinateSystem()->getVerticalGridStep() * 5));
setTransform(mpTransformation->getTransformationMatrix());
mOrigin = mpTransformation->getPosition();
mTransformation.adjustPosition(0, -(mpGraphicsView->getCoOrdinateSystem()->getVerticalGridStep() * 5));
setTransform(mTransformation.getTransformationMatrix());
mOrigin = mTransformation.getPosition();
}

/*!
Expand All @@ -1697,9 +1689,9 @@ void ShapeAnnotation::moveShiftDown()
*/
void ShapeAnnotation::moveCtrlDown()
{
mpTransformation->adjustPosition(0, -1);
setTransform(mpTransformation->getTransformationMatrix());
mOrigin = mpTransformation->getPosition();
mTransformation.adjustPosition(0, -1);
setTransform(mTransformation.getTransformationMatrix());
mOrigin = mTransformation.getPosition();
}

/*!
Expand All @@ -1718,9 +1710,9 @@ void ShapeAnnotation::moveCtrlDown()
*/
void ShapeAnnotation::moveLeft()
{
mpTransformation->adjustPosition(-mpGraphicsView->getCoOrdinateSystem()->getHorizontalGridStep(), 0);
setTransform(mpTransformation->getTransformationMatrix());
mOrigin = mpTransformation->getPosition();
mTransformation.adjustPosition(-mpGraphicsView->getCoOrdinateSystem()->getHorizontalGridStep(), 0);
setTransform(mTransformation.getTransformationMatrix());
mOrigin = mTransformation.getPosition();
}

/*!
Expand All @@ -1739,9 +1731,9 @@ void ShapeAnnotation::moveLeft()
*/
void ShapeAnnotation::moveShiftLeft()
{
mpTransformation->adjustPosition(-(mpGraphicsView->getCoOrdinateSystem()->getHorizontalGridStep() * 5), 0);
setTransform(mpTransformation->getTransformationMatrix());
mOrigin = mpTransformation->getPosition();
mTransformation.adjustPosition(-(mpGraphicsView->getCoOrdinateSystem()->getHorizontalGridStep() * 5), 0);
setTransform(mTransformation.getTransformationMatrix());
mOrigin = mTransformation.getPosition();
}

/*!
Expand All @@ -1760,9 +1752,9 @@ void ShapeAnnotation::moveShiftLeft()
*/
void ShapeAnnotation::moveCtrlLeft()
{
mpTransformation->setOrigin(QPointF(mpTransformation->getPosition().x() - 1, mpTransformation->getPosition().y()));
setTransform(mpTransformation->getTransformationMatrix());
mOrigin = mpTransformation->getPosition();
mTransformation.setOrigin(QPointF(mTransformation.getPosition().x() - 1, mTransformation.getPosition().y()));
setTransform(mTransformation.getTransformationMatrix());
mOrigin = mTransformation.getPosition();
}

/*!
Expand All @@ -1781,9 +1773,9 @@ void ShapeAnnotation::moveCtrlLeft()
*/
void ShapeAnnotation::moveRight()
{
mpTransformation->adjustPosition(mpGraphicsView->getCoOrdinateSystem()->getHorizontalGridStep(), 0);
setTransform(mpTransformation->getTransformationMatrix());
mOrigin = mpTransformation->getPosition();
mTransformation.adjustPosition(mpGraphicsView->getCoOrdinateSystem()->getHorizontalGridStep(), 0);
setTransform(mTransformation.getTransformationMatrix());
mOrigin = mTransformation.getPosition();
}

/*!
Expand All @@ -1802,9 +1794,9 @@ void ShapeAnnotation::moveRight()
*/
void ShapeAnnotation::moveShiftRight()
{
mpTransformation->adjustPosition(mpGraphicsView->getCoOrdinateSystem()->getHorizontalGridStep() * 5, 0);
setTransform(mpTransformation->getTransformationMatrix());
mOrigin = mpTransformation->getPosition();
mTransformation.adjustPosition(mpGraphicsView->getCoOrdinateSystem()->getHorizontalGridStep() * 5, 0);
setTransform(mTransformation.getTransformationMatrix());
mOrigin = mTransformation.getPosition();
}

/*!
Expand All @@ -1823,9 +1815,9 @@ void ShapeAnnotation::moveShiftRight()
*/
void ShapeAnnotation::moveCtrlRight()
{
mpTransformation->setOrigin(QPointF(mpTransformation->getPosition().x() + 1, mpTransformation->getPosition().y()));
setTransform(mpTransformation->getTransformationMatrix());
mOrigin = mpTransformation->getPosition();
mTransformation.setOrigin(QPointF(mTransformation.getPosition().x() + 1, mTransformation.getPosition().y()));
setTransform(mTransformation.getTransformationMatrix());
mOrigin = mTransformation.getPosition();
}

/*!
Expand Down
4 changes: 1 addition & 3 deletions OMEdit/OMEditGUI/Annotations/ShapeAnnotation.h
Expand Up @@ -115,9 +115,9 @@ class ShapeAnnotation : public QObject, public QGraphicsItem, public GraphicItem
QAction *mpManhattanizeShapeAction;
public:
enum LineGeometryType {VerticalLine, HorizontalLine};
Transformation mTransformation;
ShapeAnnotation(QGraphicsItem *pParent);
ShapeAnnotation(bool inheritedShape, GraphicsView *pGraphicsView, QGraphicsItem *pParent = 0);
~ShapeAnnotation();
void setDefaults();
void setDefaults(ShapeAnnotation *pShapeAnnotation);
void setUserDefaults();
Expand All @@ -140,7 +140,6 @@ class ShapeAnnotation : public QObject, public QGraphicsItem, public GraphicItem
virtual void replaceExtent(int index, QPointF point);
virtual void updateEndExtent(QPointF point);
GraphicsView* getGraphicsView() {return mpGraphicsView;}
Transformation* getTransformation() {return mpTransformation;}
void setPoints(QList<QPointF> points) {mPoints = points;}
QList<QPointF> getPoints() {return mPoints;}
void setStartArrow(StringHandler::Arrow startArrow);
Expand Down Expand Up @@ -236,7 +235,6 @@ public slots:
protected:
GraphicsView *mpGraphicsView;
Component *mpParentComponent;
Transformation *mpTransformation;
QList<QPointF> mPoints;
QList<LineGeometryType> mGeometries;
QList<StringHandler::Arrow> mArrow;
Expand Down
10 changes: 5 additions & 5 deletions OMEdit/OMEditGUI/Annotations/TextAnnotation.cpp
Expand Up @@ -260,9 +260,9 @@ void TextAnnotation::drawTextAnnotaion(QPainter *painter)
}
if (mpComponent) {
Component *pComponent = mpComponent->getRootParentComponent();
if (pComponent && pComponent->getTransformation()) {
QPointF extent1 = pComponent->getTransformation()->getExtent1();
QPointF extent2 = pComponent->getTransformation()->getExtent2();
if (pComponent && pComponent->mTransformation.isValid()) {
QPointF extent1 = pComponent->mTransformation.getExtent1();
QPointF extent2 = pComponent->mTransformation.getExtent2();
qreal dy = ((-boundingRect().top()) - boundingRect().bottom());
// if horizontal flip
if (extent2.x() < extent1.x()) {
Expand All @@ -273,14 +273,14 @@ void TextAnnotation::drawTextAnnotaion(QPainter *painter)
painter->scale(1.0, -1.0);
painter->translate(0, dy);
}
qreal angle = StringHandler::getNormalizedAngle(pComponent->getTransformation()->getRotateAngle());
qreal angle = StringHandler::getNormalizedAngle(pComponent->mTransformation.getRotateAngle());
if (angle == 180) {
painter->scale(-1.0, -1.0);
painter->translate(0, dy);
}
}
} else {
qreal angle = StringHandler::getNormalizedAngle(mpTransformation->getRotateAngle());
qreal angle = StringHandler::getNormalizedAngle(mTransformation.getRotateAngle());
if (angle == 180) {
painter->scale(-1.0, -1.0);
painter->translate(((-boundingRect().left()) - boundingRect().right()), ((-boundingRect().top()) - boundingRect().bottom()));
Expand Down

0 comments on commit b037ac0

Please sign in to comment.