소스 검색

Check label file exists

なるみ 6 년 전
부모
커밋
eb2e55a11e
1개의 변경된 파일22개의 추가작업 그리고 6개의 파일을 삭제
  1. 22 6
      labelme/app.py

+ 22 - 6
labelme/app.py

@@ -649,7 +649,6 @@ class MainWindow(QtWidgets.QMainWindow, WindowMixin):
             return
         self.dirty = True
         self.actions.save.setEnabled(True)
-        self.actions.deleteFile.setEnabled(True)
         self.actions.undo.setEnabled(self.canvas.isShapeRestorable)
         title = __appname__
         if self.filename is not None:
@@ -659,7 +658,6 @@ class MainWindow(QtWidgets.QMainWindow, WindowMixin):
     def setClean(self):
         self.dirty = False
         self.actions.save.setEnabled(False)
-        self.actions.deleteFile.setEnabled(False)
         self.actions.createMode.setEnabled(True)
         self.actions.createRectangleMode.setEnabled(True)
         self.actions.createCircleMode.setEnabled(True)
@@ -671,6 +669,11 @@ class MainWindow(QtWidgets.QMainWindow, WindowMixin):
             title = '{} - {}'.format(title, self.filename)
         self.setWindowTitle(title)
 
+        if self.hasLabelFile():
+            self.actions.deleteFile.setEnabled(True)
+        else:
+            self.actions.deleteFile.setEnabled(False)
+
     def toggleActions(self, value=True):
         """Enable/Disable widgets which depend on an opened image."""
         for z in self.actions.zoomActions:
@@ -1417,13 +1420,19 @@ class MainWindow(QtWidgets.QMainWindow, WindowMixin):
         self.canvas.setEnabled(False)
         self.actions.saveAs.setEnabled(False)
 
-    def deleteFile(self):
+    def getLabelFile(self):
         if self.filename.lower().endswith('.json'):
-            os.remove(self.filename)
+            label_file = self.filename
         else:
             label_file = osp.splitext(self.filename)[0] + '.json'
-            if osp.exists(label_file):
-                os.remove(label_file)
+
+        return label_file
+
+    def deleteFile(self):
+        label_file = self.getLabelFile()        
+        if osp.exists(label_file):
+            os.remove(label_file)
+            logger.info('%s removed', label_file)
 
         self.importDirImages(self.lastOpenDir)
 
@@ -1436,6 +1445,13 @@ class MainWindow(QtWidgets.QMainWindow, WindowMixin):
             return False
         return True
 
+    def hasLabelFile(self):
+        if self.filename is None:
+            return False
+
+        label_file = self.getLabelFile()
+        return osp.exists(label_file)
+
     def mayContinue(self):
         if not self.dirty:
             return True