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.
*/
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);
QGraphicsView::keyPressEvent(e);
}
@@ -618,6 +627,15 @@ void DiagramView::keyPressEvent(QKeyEvent *e) {
mode if needed.
*/
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);
QGraphicsView::keyReleaseEvent(e);
}

View File

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

View File

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

View File

@@ -22,7 +22,8 @@
DVEventInterface::DVEventInterface(DiagramView *dv) :
m_dv(dv),
m_diagram(dv->diagram()),
m_running(false)
m_running(false),
m_abort(false)
{
}
@@ -53,6 +54,26 @@ bool DVEventInterface::wheelEvent(QWheelEvent *event) {
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 {
return m_running;
}

View File

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