Skip to content

Commit edecaa8

Browse files
authored
Merge branch 'main' into Pan
2 parents d38e6ca + b9c83ff commit edecaa8

File tree

3 files changed

+41
-53
lines changed

3 files changed

+41
-53
lines changed

labelme/app.py

Lines changed: 27 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -1093,17 +1093,6 @@ def _edit_label(self, value=None):
10931093
assert description is None
10941094
return
10951095

1096-
self.canvas.storeShapes()
1097-
for item in items:
1098-
self._update_item(
1099-
item=item,
1100-
text=text if edit_text else None,
1101-
flags=flags if edit_flags else None,
1102-
group_id=group_id if edit_group_id else None,
1103-
description=description if edit_description else None,
1104-
)
1105-
1106-
def _update_item(self, item, text, flags, group_id, description):
11071096
if not self.validateLabel(text):
11081097
self.errorMessage(
11091098
self.tr("Invalid label"),
@@ -1113,32 +1102,34 @@ def _update_item(self, item, text, flags, group_id, description):
11131102
)
11141103
return
11151104

1116-
shape = item.shape()
1117-
1118-
if text is not None:
1119-
shape.label = text
1120-
if flags is not None:
1121-
shape.flags = flags
1122-
if group_id is not None:
1123-
shape.group_id = group_id
1124-
if description is not None:
1125-
shape.description = description
1126-
1127-
self._update_shape_color(shape)
1128-
if shape.group_id is None:
1129-
item.setText(
1130-
'{} <font color="#{:02x}{:02x}{:02x}">●</font>'.format(
1131-
html.escape(shape.label), *shape.fill_color.getRgb()[:3]
1105+
self.canvas.storeShapes()
1106+
for item in items:
1107+
shape: Shape = item.shape()
1108+
1109+
if edit_text:
1110+
shape.label = text
1111+
if edit_flags:
1112+
shape.flags = flags
1113+
if edit_group_id:
1114+
shape.group_id = group_id
1115+
if edit_description:
1116+
shape.description = description
1117+
1118+
self._update_shape_color(shape)
1119+
if shape.group_id is None:
1120+
item.setText(
1121+
'{} <font color="#{:02x}{:02x}{:02x}">●</font>'.format(
1122+
html.escape(shape.label), *shape.fill_color.getRgb()[:3]
1123+
)
11321124
)
1133-
)
1134-
else:
1135-
item.setText("{} ({})".format(shape.label, shape.group_id))
1136-
self.setDirty()
1137-
if self.uniqLabelList.findItemByLabel(shape.label) is None:
1138-
item = self.uniqLabelList.createItemFromLabel(shape.label)
1139-
self.uniqLabelList.addItem(item)
1140-
rgb = self._get_rgb_by_label(shape.label)
1141-
self.uniqLabelList.setItemLabel(item, shape.label, rgb)
1125+
else:
1126+
item.setText("{} ({})".format(shape.label, shape.group_id))
1127+
self.setDirty()
1128+
if self.uniqLabelList.findItemByLabel(shape.label) is None:
1129+
item = self.uniqLabelList.createItemFromLabel(shape.label)
1130+
self.uniqLabelList.addItem(item)
1131+
rgb = self._get_rgb_by_label(shape.label)
1132+
self.uniqLabelList.setItemLabel(item, shape.label, rgb)
11421133

11431134
def fileSearchChanged(self):
11441135
self.importDirImages(

labelme/widgets/canvas.py

Lines changed: 10 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -332,7 +332,12 @@ def mouseMoveEvent(self, ev):
332332
self.hEdge = None
333333
shape.highlightVertex(index, shape.MOVE_VERTEX)
334334
self.overrideCursor(CURSOR_POINT)
335-
self.setToolTip(self.tr("Click & drag to move point"))
335+
self.setToolTip(
336+
self.tr(
337+
"Click & Drag to move point\n"
338+
"ALT + SHIFT + Click to delete point"
339+
)
340+
)
336341
self.setStatusTip(self.toolTip())
337342
self.update()
338343
break
@@ -344,7 +349,7 @@ def mouseMoveEvent(self, ev):
344349
self.prevhShape = self.hShape = shape
345350
self.prevhEdge = self.hEdge = index_edge
346351
self.overrideCursor(CURSOR_POINT)
347-
self.setToolTip(self.tr("Click to create point"))
352+
self.setToolTip(self.tr("ALT + Click to create point"))
348353
self.setStatusTip(self.toolTip())
349354
self.update()
350355
break
@@ -472,13 +477,11 @@ def mousePressEvent(self, ev):
472477
self.drawingPolygon.emit(True)
473478
self.update()
474479
elif self.editing():
475-
if self.selectedEdge():
480+
if self.selectedEdge() and ev.modifiers() == QtCore.Qt.AltModifier:
476481
self.addPointToEdge()
477-
elif (
478-
self.selectedVertex()
479-
and int(ev.modifiers()) == QtCore.Qt.ShiftModifier
482+
elif self.selectedVertex() and ev.modifiers() == (
483+
QtCore.Qt.AltModifier | QtCore.Qt.ShiftModifier
480484
):
481-
# Delete point if: left-click + SHIFT on a point
482485
self.removeSelectedPoint()
483486

484487
group_mode = int(ev.modifiers()) == QtCore.Qt.ControlModifier
@@ -687,16 +690,6 @@ def deleteShape(self, shape:Shape):
687690
self.storeShapes()
688691
self.update()
689692

690-
def boundedShiftShapes(self, shapes):
691-
# Try to move in one direction, and if it fails in another.
692-
# Give up if both fail.
693-
point = shapes[0][0]
694-
offset = QtCore.QPointF(2.0, 2.0)
695-
self.offsets = QtCore.QPoint(), QtCore.QPoint()
696-
self.prevPoint = point
697-
if not self.boundedMoveShapes(shapes, point - offset):
698-
self.boundedMoveShapes(shapes, point + offset)
699-
700693
def paintEvent(self, event):
701694
if not self.cropped_image:
702695
return super(Canvas, self).paintEvent(event)

labelme/widgets/label_dialog.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,10 @@ def labelSelected(self, item):
134134
self.edit.setText(item.text())
135135

136136
def validate(self):
137+
if not self.edit.isEnabled():
138+
self.accept()
139+
return
140+
137141
text = self.edit.text()
138142
if hasattr(text, "strip"):
139143
text = text.strip()

0 commit comments

Comments
 (0)