Просмотр исходного кода

Fix save file bugs and switch to different dialogs

The labelfile object was not stored when saving.

The dialog switch enables adding an extension automatically.
Michael Pitidis 13 лет назад
Родитель
Сommit
160ff05c5d
2 измененных файлов с 18 добавлено и 5 удалено
  1. 17 5
      labelme.py
  2. 1 0
      resources.qrc

+ 17 - 5
labelme.py

@@ -158,7 +158,7 @@ class MainWindow(QMainWindow, WindowMixin):
                 'Ctrl+J', 'edit', u'Move and edit polygons', enabled=False)
                 'Ctrl+J', 'edit', u'Move and edit polygons', enabled=False)
 
 
         create = action('Create\nPolygo&n', self.createShape,
         create = action('Create\nPolygo&n', self.createShape,
-                'Ctrl+N', 'new', u'Draw a new polygon')
+                'Ctrl+N', 'new', u'Draw a new polygon', enabled=False)
         delete = action('Delete\nPolygon', self.deleteSelectedShape,
         delete = action('Delete\nPolygon', self.deleteSelectedShape,
                 'Delete', 'delete', u'Delete', enabled=False)
                 'Delete', 'delete', u'Delete', enabled=False)
         copy = action('&Duplicate\nPolygon', self.copySelectedShape,
         copy = action('&Duplicate\nPolygon', self.copySelectedShape,
@@ -546,6 +546,8 @@ class MainWindow(QMainWindow, WindowMixin):
         try:
         try:
             lf.save(filename, shapes, unicode(self.filename), self.imageData,
             lf.save(filename, shapes, unicode(self.filename), self.imageData,
                 self.lineColor.getRgb(), self.fillColor.getRgb())
                 self.lineColor.getRgb(), self.fillColor.getRgb())
+            self.labelFile = lf
+            self.filename = filename
             return True
             return True
         except LabelFileError, e:
         except LabelFileError, e:
             self.errorMessage(u'Error saving label data',
             self.errorMessage(u'Error saving label data',
@@ -732,7 +734,7 @@ class MainWindow(QMainWindow, WindowMixin):
         filters = "Image & Label files (%s)" % \
         filters = "Image & Label files (%s)" % \
                 ' '.join(formats + ['*%s' % LabelFile.suffix])
                 ' '.join(formats + ['*%s' % LabelFile.suffix])
         filename = unicode(QFileDialog.getOpenFileName(self,
         filename = unicode(QFileDialog.getOpenFileName(self,
-            '%s - Choose Image or Label file', path, filters))
+            '%s - Choose Image or Label file' % __appname__, path, filters))
         if filename:
         if filename:
             self.loadFile(filename)
             self.loadFile(filename)
 
 
@@ -748,9 +750,19 @@ class MainWindow(QMainWindow, WindowMixin):
             self._saveFile(self.saveFileDialog())
             self._saveFile(self.saveFileDialog())
 
 
     def saveFileDialog(self):
     def saveFileDialog(self):
-        return unicode(QFileDialog.getSaveFileName(self,
-            '%s - Choose File', self.currentPath(),
-            'Label files (*%s)' % LabelFile.suffix))
+        caption = '%s - Choose File' % __appname__
+        filters = 'Label files (*%s)' % LabelFile.suffix
+        dlg = QFileDialog(self, caption, self.currentPath(), filters)
+        dlg.setDefaultSuffix(LabelFile.suffix[1:])
+        dlg.setAcceptMode(QFileDialog.AcceptSave)
+        dlg.setConfirmOverwrite(True)
+        dlg.setOption(QFileDialog.DontUseNativeDialog, False)
+        if dlg.exec_():
+            return dlg.selectedFiles()[0]
+        return ''
+        #return unicode(QFileDialog.getSaveFileName(self,
+        #    '%s - Choose File', self.currentPath(),
+        #    'Label files (*%s)' % LabelFile.suffix))
 
 
     def _saveFile(self, filename):
     def _saveFile(self, filename):
         if filename and self.saveLabels(filename):
         if filename and self.saveLabels(filename):

+ 1 - 0
resources.qrc

@@ -1,6 +1,7 @@
 <!DOCTYPE RCC><RCC version="1.0">
 <!DOCTYPE RCC><RCC version="1.0">
 <qresource>
 <qresource>
 
 
+<file alias="help">icons/help.png</file>
 <file alias="app">icons/expert2.png</file>
 <file alias="app">icons/expert2.png</file>
 <file alias="expert">icons/expert2.png</file>
 <file alias="expert">icons/expert2.png</file>
 <file alias="done">icons/done.svg</file>
 <file alias="done">icons/done.svg</file>