DVEvent: press key escape, abort the curent action

git-svn-id: svn+ssh://svn.tuxfamily.org/svnroot/qet/qet/trunk@3369 bfdf4180-ca20-0410-9c96-a3a8aa849046
This commit is contained in:
blacksun
2014-10-10 18:16:02 +00:00
parent 743b6768eb
commit 1a842dc263
5 changed files with 46 additions and 3 deletions

View File

@@ -609,6 +609,15 @@ void DiagramView::focusInEvent(QFocusEvent *e) {
mode if needed. mode if needed.
*/ */
void DiagramView::keyPressEvent(QKeyEvent *e) { void DiagramView::keyPressEvent(QKeyEvent *e) {
if (m_event_interface) {
if (m_event_interface -> keyPressEvent(e)) {
if (m_event_interface->isFinish()) {
emit (itemAdded());
delete m_event_interface; m_event_interface = nullptr;
}
return;
}
}
switchToVisualisationModeIfNeeded(e); switchToVisualisationModeIfNeeded(e);
QGraphicsView::keyPressEvent(e); QGraphicsView::keyPressEvent(e);
} }
@@ -618,6 +627,15 @@ void DiagramView::keyPressEvent(QKeyEvent *e) {
mode if needed. mode if needed.
*/ */
void DiagramView::keyReleaseEvent(QKeyEvent *e) { void DiagramView::keyReleaseEvent(QKeyEvent *e) {
if (m_event_interface) {
if (m_event_interface -> KeyReleaseEvent(e)) {
if (m_event_interface->isFinish()) {
emit (itemAdded());
delete m_event_interface; m_event_interface = nullptr;
}
return;
}
}
switchToSelectionModeIfNeeded(e); switchToSelectionModeIfNeeded(e);
QGraphicsView::keyReleaseEvent(e); QGraphicsView::keyReleaseEvent(e);
} }

View File

@@ -39,7 +39,7 @@ DVEventAddImage::DVEventAddImage(DiagramView *dv) :
* @brief DVEventAddImage::~DVEventAddImage * @brief DVEventAddImage::~DVEventAddImage
*/ */
DVEventAddImage::~DVEventAddImage() { DVEventAddImage::~DVEventAddImage() {
if (m_running) { if (m_running || m_abort) {
if (m_is_added) m_diagram -> removeItem(m_image); if (m_is_added) m_diagram -> removeItem(m_image);
delete m_image; delete m_image;
} }

View File

@@ -40,7 +40,7 @@ DVEventAddShape::DVEventAddShape(DiagramView *dv, QetShapeItem::ShapeType shape_
* @brief DVEventAddShape::~DVEventAddShape * @brief DVEventAddShape::~DVEventAddShape
*/ */
DVEventAddShape::~DVEventAddShape() { DVEventAddShape::~DVEventAddShape() {
if (m_running) { if (m_running || m_abort) {
m_diagram -> removeItem(m_shape_item); m_diagram -> removeItem(m_shape_item);
delete m_shape_item; delete m_shape_item;
} }

View File

@@ -22,7 +22,8 @@
DVEventInterface::DVEventInterface(DiagramView *dv) : DVEventInterface::DVEventInterface(DiagramView *dv) :
m_dv(dv), m_dv(dv),
m_diagram(dv->diagram()), m_diagram(dv->diagram()),
m_running(false) m_running(false),
m_abort(false)
{ {
} }
@@ -53,6 +54,26 @@ bool DVEventInterface::wheelEvent(QWheelEvent *event) {
return false; return false;
} }
/**
* @brief DVEventInterface::keyPressEvent
* By default, press escape key abort the curent action
* @param event
* @return
*/
bool DVEventInterface::keyPressEvent(QKeyEvent *event) {
if (event->key() == Qt::Key_Escape) {
m_running = false;
m_abort = true;
return true;
}
return false;
}
bool DVEventInterface::KeyReleaseEvent(QKeyEvent *event) {
Q_UNUSED (event);
return false;
}
bool DVEventInterface::isRunning() const { bool DVEventInterface::isRunning() const {
return m_running; return m_running;
} }

View File

@@ -20,6 +20,7 @@
class QMouseEvent; class QMouseEvent;
class QWheelEvent; class QWheelEvent;
class QKeyEvent;
class DiagramView; class DiagramView;
class Diagram; class Diagram;
@@ -42,6 +43,8 @@ class DVEventInterface
virtual bool mouseMoveEvent (QMouseEvent *event); virtual bool mouseMoveEvent (QMouseEvent *event);
virtual bool mouseReleaseEvent (QMouseEvent *event); virtual bool mouseReleaseEvent (QMouseEvent *event);
virtual bool wheelEvent (QWheelEvent *event); virtual bool wheelEvent (QWheelEvent *event);
virtual bool keyPressEvent (QKeyEvent *event);
virtual bool KeyReleaseEvent (QKeyEvent *event);
virtual bool isRunning () const; virtual bool isRunning () const;
virtual bool isFinish () const; virtual bool isFinish () const;
@@ -49,6 +52,7 @@ class DVEventInterface
DiagramView *m_dv; DiagramView *m_dv;
Diagram *m_diagram; Diagram *m_diagram;
bool m_running; bool m_running;
bool m_abort;
}; };
#endif // DVEVENTINTERFACE_H #endif // DVEVENTINTERFACE_H