Skip to content

Commit 4ea24eb

Browse files
committed
Allow holding shift to delete polys without confirmation
1 parent da44445 commit 4ea24eb

File tree

2 files changed

+25
-11
lines changed

2 files changed

+25
-11
lines changed

labelme/app.py

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,15 @@
1919
from labelme import PY2
2020
from labelme import __appname__
2121
from labelme import ai
22+
from labelme import utils
2223
from labelme.ai import MODELS
2324
from labelme.config import get_config
2425
from labelme.label_file import LabelFile
2526
from labelme.label_file import LabelFileError
2627
from labelme.logger import logger
2728
from labelme.shape import Shape
29+
from labelme.utils.qt import shift_and_ctrl_pressed
30+
from labelme.utils.qt import shift_pressed
2831
from labelme.widgets import AiPromptWidget
2932
from labelme.widgets import BrightnessContrastDialog
3033
from labelme.widgets import Canvas
@@ -36,8 +39,6 @@
3639
from labelme.widgets import UniqueLabelQListWidget
3740
from labelme.widgets import ZoomWidget
3841

39-
from . import utils
40-
4142
# FIXME
4243
# - [medium] Set max zoom value to something big enough for FitWidth/Window
4344

@@ -410,7 +411,10 @@ def __init__(
410411
self.deleteSelectedShape,
411412
shortcuts["delete_polygon"],
412413
"cancel",
413-
self.tr("Delete the selected polygons"),
414+
"{} {}".format(
415+
self.tr("Delete the selected polygons"),
416+
self.tr("(Hold Shift to skip confirmation)"),
417+
),
414418
enabled=False,
415419
)
416420
duplicate = action(
@@ -1857,9 +1861,7 @@ def loadRecent(self, filename):
18571861

18581862
def openPrevImg(self, _value=False):
18591863
keep_prev = self._config["keep_prev"]
1860-
if QtWidgets.QApplication.keyboardModifiers() == (
1861-
Qt.ControlModifier | Qt.ShiftModifier
1862-
):
1864+
if shift_and_ctrl_pressed():
18631865
self._config["keep_prev"] = True
18641866

18651867
if not self.mayContinue():
@@ -1881,9 +1883,7 @@ def openPrevImg(self, _value=False):
18811883

18821884
def openNextImg(self, _value=False, load=True):
18831885
keep_prev = self._config["keep_prev"]
1884-
if QtWidgets.QApplication.keyboardModifiers() == (
1885-
Qt.ControlModifier | Qt.ShiftModifier
1886-
):
1886+
if shift_and_ctrl_pressed():
18871887
self._config["keep_prev"] = True
18881888

18891889
if not self.mayContinue():
@@ -2117,8 +2117,12 @@ def deleteSelectedShape(self):
21172117
msg = self.tr(
21182118
"You are about to permanently delete {} polygons, " "proceed anyway?"
21192119
).format(len(self.canvas.selectedShapes))
2120-
if yes == QtWidgets.QMessageBox.warning(
2121-
self, self.tr("Attention"), msg, yes | no, yes
2120+
2121+
if shift_pressed() or (
2122+
yes
2123+
== QtWidgets.QMessageBox.warning(
2124+
self, self.tr("Attention"), msg, yes | no, yes
2125+
)
21222126
):
21232127
self.remLabels(self.canvas.deleteSelected())
21242128
self.setDirty()

labelme/utils/qt.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,3 +96,13 @@ def distancetoline(point, line):
9696
def fmtShortcut(text):
9797
mod, key = text.split("+", 1)
9898
return "<b>%s</b>+<b>%s</b>" % (mod, key)
99+
100+
101+
def shift_and_ctrl_pressed() -> bool:
102+
return QtWidgets.QApplication.keyboardModifiers() == (
103+
QtCore.Qt.ControlModifier | QtCore.Qt.ShiftModifier
104+
)
105+
106+
107+
def shift_pressed() -> bool:
108+
return bool(QtWidgets.QApplication.keyboardModifiers() & QtCore.Qt.ShiftModifier)

0 commit comments

Comments
 (0)