| 59 | } |
| 60 | |
| 61 | void AnnotationTool::keyPressEvent(QKeyEvent *event) { |
| 62 | if (event->key() == Qt::Key::Key_Escape) { |
| 63 | cancelAnnotation(); |
| 64 | event->accept(); |
| 65 | } |
| 66 | else if (event->key() == Qt::Key::Key_Delete && event->modifiers() == Qt::ShiftModifier) { |
| 67 | if (_generating) { |
| 68 | cancelAnnotation(); |
| 69 | } |
| 70 | else { |
| 71 | QSet<QtAnnotation*> selectedAnnotations = _annotationPlugin->getSelectedAnnotations(); |
| 72 | for (QSet<QtAnnotation*>::iterator it = selectedAnnotations.begin(); it != selectedAnnotations.end(); ++it) { |
| 73 | _annotationPlugin->deleteAnnotation(*it); |
| 74 | } |
| 75 | } |
| 76 | event->accept(); |
| 77 | } |
| 78 | else if (event->key() == Qt::Key::Key_Delete) { |
| 79 | if (_generating) { |
| 80 | if (_annotationPlugin->getGeneratedAnnotation()->getAnnotation()->getCoordinates().size() < 2) { |
| 81 | cancelAnnotation(); |
| 82 | } |
| 83 | else { |
| 84 | _annotationPlugin->getGeneratedAnnotation()->removeCoordinate(-1); |
| 85 | if (!_annotationPlugin->getGeneratedAnnotation()->getAnnotation()->getCoordinates().empty()) { |
| 86 | Point prev = _annotationPlugin->getGeneratedAnnotation()->getAnnotation()->getCoordinate(-1); |
| 87 | _last = Point(prev.getX() * _viewer->getSceneScale(), prev.getY() * _viewer->getSceneScale()); |
| 88 | } |
| 89 | } |
| 90 | event->accept(); |
| 91 | } |
| 92 | else if (_annotationPlugin->getActiveAnnotation()) { |
| 93 | if (_annotationPlugin->getActiveAnnotation()->getAnnotation()->getCoordinates().size() <= 1) { |
| 94 | _annotationPlugin->deleteAnnotation(_annotationPlugin->getActiveAnnotation()); |
| 95 | event->accept(); |
| 96 | } |
| 97 | else if (_annotationPlugin->getActiveAnnotation()->getActiveSeedPoint() > -1) { |
| 98 | int activeSeedPoint = _annotationPlugin->getActiveAnnotation()->getActiveSeedPoint(); |
| 99 | _annotationPlugin->getActiveAnnotation()->removeCoordinate(activeSeedPoint); |
| 100 | if (activeSeedPoint - 1 >= 0) { |
| 101 | _annotationPlugin->getActiveAnnotation()->setActiveSeedPoint(activeSeedPoint - 1); |
| 102 | } |
| 103 | else { |
| 104 | _annotationPlugin->getActiveAnnotation()->setActiveSeedPoint(_annotationPlugin->getActiveAnnotation()->getAnnotation()->getCoordinates().size() - 1); |
| 105 | } |
| 106 | event->accept(); |
| 107 | } |
| 108 | else if (_annotationPlugin->getActiveAnnotation()) { |
| 109 | _annotationPlugin->getActiveAnnotation()->removeCoordinate(-1); |
| 110 | event->accept(); |
| 111 | } |
| 112 | } |
| 113 | } |
| 114 | } |
| 115 | |
| 116 | void AnnotationTool::setActive(bool active) { |
| 117 | if (!active) { |
nothing calls this directly
no test coverage detected