Element editor : graphic part

Diagram editor : shape item
Gain a new way to be resized: mirror resizing. Click on the item for switch the resize mode


git-svn-id: svn+ssh://svn.tuxfamily.org/svnroot/qet/qet/trunk@4583 bfdf4180-ca20-0410-9c96-a3a8aa849046
This commit is contained in:
blacksun
2016-07-19 17:12:30 +00:00
parent d7a2350a0f
commit b71d3a4c7d
11 changed files with 201 additions and 26 deletions

View File

@@ -232,7 +232,11 @@ void PartArc::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
{
QPointF pos_ = event->modifiers() == Qt::ControlModifier ? event->pos() : mapFromScene(elementScene()->snapToGrid(event->scenePos()));
prepareGeometryChange();
setRect(m_handler.rectForPosAtIndex(m_rect, pos_, m_handler_index));
if (m_resize_mode == 1)
setRect(m_handler.rectForPosAtIndex(m_rect, pos_, m_handler_index));
else
setRect(m_handler.mirrorRectForPosAtIndex(m_rect, pos_, m_handler_index));
}
else
CustomElementGraphicPart::mouseMoveEvent(event);
@@ -245,8 +249,11 @@ void PartArc::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
*/
void PartArc::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
{
if (event->button() == Qt::LeftButton)
if (event->button() == Qt::LeftButton) {
setCursor(Qt::OpenHandCursor);
if (event->buttonDownPos(Qt::LeftButton) == event->pos())
switchResizeMode();
}
if (m_handler_index >= 0 && m_handler_index <= 7)
{
@@ -261,3 +268,16 @@ void PartArc::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
else
CustomElementGraphicPart::mouseReleaseEvent(event);
}
void PartArc::switchResizeMode()
{
if (m_resize_mode == 1) {
m_resize_mode = 2;
m_handler.setOuterColor(Qt::darkGreen);
}
else {
m_resize_mode = 1;
m_handler.setOuterColor(Qt::blue);
}
update();
}

View File

@@ -64,9 +64,13 @@ class PartArc : public AbstractPartEllipse
virtual void mouseMoveEvent(QGraphicsSceneMouseEvent *event);
virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent *event);
private:
void switchResizeMode();
private:
QetGraphicsHandlerUtility m_handler;
int m_handler_index;
QPropertyUndoCommand *m_undo_command;
int m_resize_mode = 1;
};
#endif

View File

@@ -227,7 +227,11 @@ void PartEllipse::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
{
QPointF pos_ = event->modifiers() == Qt::ControlModifier ? event->pos() : mapFromScene(elementScene()->snapToGrid(event->scenePos()));
prepareGeometryChange();
setRect(m_handler.rectForPosAtIndex(m_rect, pos_, m_handler_index));
if (m_resize_mode == 1)
setRect(m_handler.rectForPosAtIndex(m_rect, pos_, m_handler_index));
else
setRect(m_handler.mirrorRectForPosAtIndex(m_rect, pos_, m_handler_index));
}
else
CustomElementGraphicPart::mouseMoveEvent(event);
@@ -240,8 +244,11 @@ void PartEllipse::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
*/
void PartEllipse::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
{
if (event->button() == Qt::LeftButton)
if (event->button() == Qt::LeftButton) {
setCursor(Qt::OpenHandCursor);
if (event->buttonDownPos(Qt::LeftButton) == event->pos())
switchResizeMode();
}
if (m_handler_index >= 0 && m_handler_index <= 7)
{
@@ -256,3 +263,16 @@ void PartEllipse::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
else
CustomElementGraphicPart::mouseReleaseEvent(event);
}
void PartEllipse::switchResizeMode()
{
if (m_resize_mode == 1) {
m_resize_mode = 2;
m_handler.setOuterColor(Qt::darkGreen);
}
else {
m_resize_mode = 1;
m_handler.setOuterColor(Qt::blue);
}
update();
}

View File

@@ -66,9 +66,13 @@ class PartEllipse : public AbstractPartEllipse
virtual void mouseMoveEvent(QGraphicsSceneMouseEvent *event);
virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent *event);
private:
void switchResizeMode();
private:
QetGraphicsHandlerUtility m_handler;
int m_handler_index;
QPropertyUndoCommand *m_undo_command;
int m_resize_mode = 1;
};
#endif

View File

@@ -298,7 +298,11 @@ void PartRectangle::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
{
QPointF pos_ = event->modifiers() == Qt::ControlModifier ? event->pos() : mapFromScene(elementScene()->snapToGrid(event->scenePos()));
prepareGeometryChange();
setRect(m_handler.rectForPosAtIndex(m_rect, pos_, m_handler_index));
if (m_resize_mode == 1)
setRect(m_handler.rectForPosAtIndex(m_rect, pos_, m_handler_index));
else
setRect(m_handler.mirrorRectForPosAtIndex(m_rect, pos_, m_handler_index));
}
else
CustomElementGraphicPart::mouseMoveEvent(event);
@@ -311,8 +315,11 @@ void PartRectangle::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
*/
void PartRectangle::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
{
if (event->button() == Qt::LeftButton)
if (event->button() == Qt::LeftButton) {
setCursor(Qt::OpenHandCursor);
if (event->buttonDownPos(Qt::LeftButton) == event->pos())
switchResizeMode();
}
if (m_handler_index >= 0 && m_handler_index <= 7)
{
@@ -327,3 +334,16 @@ void PartRectangle::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
else
CustomElementGraphicPart::mouseReleaseEvent(event);
}
void PartRectangle::switchResizeMode()
{
if (m_resize_mode == 1) {
m_resize_mode = 2;
m_handler.setOuterColor(Qt::darkGreen);
}
else {
m_resize_mode = 1;
m_handler.setOuterColor(Qt::blue);
}
update();
}

View File

@@ -79,6 +79,9 @@ class PartRectangle : public CustomElementGraphicPart
virtual void mousePressEvent(QGraphicsSceneMouseEvent *event);
virtual void mouseMoveEvent(QGraphicsSceneMouseEvent *event);
virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent *event);
private:
void switchResizeMode();
private:
QRectF m_rect;
@@ -86,5 +89,6 @@ class PartRectangle : public CustomElementGraphicPart
QetGraphicsHandlerUtility m_handler;
int m_handler_index;
QPropertyUndoCommand *m_undo_command;
int m_resize_mode = 1;
};
#endif