Address PR review comments: rename to __main__.py, improve config examples, document save freeze

This commit is contained in:
2026-06-02 11:51:37 +02:00
parent 69eab7514f
commit dc7bb8e7eb
4 changed files with 29 additions and 19 deletions

View File

@@ -159,7 +159,7 @@ class Annotator(QMainWindow):
self.btn_prev = QPushButton("Previous")
self.btn_prev.setEnabled(False)
btn_next = QPushButton("Next")
self.btn_next = QPushButton("Next")
btn_skip = QPushButton("Skip")
btn_clear = QPushButton("Clear")
btn_undo = QPushButton("Undo")
@@ -172,7 +172,7 @@ class Annotator(QMainWindow):
row1 = QHBoxLayout()
for b in [
self.btn_prev,
btn_next,
self.btn_next,
btn_skip,
btn_load_prev_mask,
btn_auto_segment,
@@ -251,7 +251,7 @@ class Annotator(QMainWindow):
self.setCentralWidget(container)
self.btn_prev.clicked.connect(self.prev_clip)
btn_next.clicked.connect(self.next_clip)
self.btn_next.clicked.connect(self.next_clip)
btn_skip.clicked.connect(self.skip_clip)
btn_clear.clicked.connect(self.mc.clear)
btn_undo.clicked.connect(self.mc.undo)
@@ -350,6 +350,16 @@ class Annotator(QMainWindow):
self.fs.pipe(out_path, buf.getvalue())
# ── actions ────────────────────────────────────────────────────
def _save_locked(self):
self.btn_next.setEnabled(False)
self.btn_prev.setEnabled(False)
QApplication.processEvents()
try:
self.save()
finally:
self.btn_next.setEnabled(True)
self.btn_prev.setEnabled(self.history_pos > 0)
def save(self):
out = fsjoin(self.out_dir, fsstem(self.filename))
self._fs_makedirs(out)
@@ -421,7 +431,7 @@ class Annotator(QMainWindow):
def prev_clip(self):
if self.history_pos <= 0:
return
self.save()
self._save_locked()
self.history_pos -= 1
self._load_clip(path=self.history[self.history_pos])
self._switch_ui_to_clip()
@@ -446,13 +456,13 @@ class Annotator(QMainWindow):
msg.exec()
clicked = msg.clickedButton()
if clicked == btn_replace:
self.save()
self._save_locked()
self._advance_clip()
elif clicked == btn_keep:
self._advance_clip()
# Cancel: do nothing
else:
self.save()
self._save_locked()
self._advance_clip()
def skip_clip(self):