Save the last open dir and target dir

This commit is contained in:
TzuTa Lin 2015-11-17 13:00:37 +08:00
parent 87dab57ec9
commit ef61f0d827

View File

@ -60,6 +60,7 @@ class MainWindow(QMainWindow, WindowMixin):
self.mImgList = []
self.dirname = None
self.labelHist = []
self.lastOpenDir = None
# Whether we need to save or not.
self.dirty = False
@ -133,8 +134,8 @@ class MainWindow(QMainWindow, WindowMixin):
opendir = action('&Open Dir', self.openDir,
'Ctrl+u', 'open', u'Open Dir')
changeSavedir = action('&Change default save dir', self.changeSavedir,
'Ctrl+r', 'open', u'Change default save dir')
changeSavedir = action('&Change default saved Annotation dir', self.changeSavedir,
'Ctrl+r', 'open', u'Change default saved Annotation dir')
openNextImg = action('&Next Image', self.openNextImg,
'n', 'next', u'Open Next')
@ -307,6 +308,7 @@ class MainWindow(QMainWindow, WindowMixin):
# Docks and toolbars:
'window/state': QByteArray,
'savedir': QString,
'lastOpenDir': QString,
}
self.settings = settings = Settings(types)
self.recentFiles = list(settings['recentFiles'])
@ -315,6 +317,7 @@ class MainWindow(QMainWindow, WindowMixin):
self.resize(size)
self.move(position)
saveDir = settings.get('savedir', None)
self.lastOpenDir = settings.get('lastOpenDir', None)
if os.path.exists(unicode(saveDir)):
self.defaultSaveDir = unicode(saveDir)
self.statusBar().showMessage('%s started. Annotation will be saved to %s' %(__appname__, self.defaultSaveDir))
@ -746,10 +749,16 @@ class MainWindow(QMainWindow, WindowMixin):
s['fill/color'] = self.fillColor
s['recentFiles'] = self.recentFiles
s['advanced'] = not self._beginner
if self.defaultSaveDir is not None:
if self.defaultSaveDir is not None and len(self.defaultSaveDir) > 1:
s['savedir'] = str(self.defaultSaveDir)
else:
s['savedir'] = ""
if self.lastOpenDir is not None and len(self.lastOpenDir) > 1:
s['lastOpenDir'] = str(self.lastOpenDir)
else:
s['lastOpenDir'] = ""
#ask the use for where to save the labels
#s['window/geometry'] = self.saveGeometry()
@ -771,29 +780,38 @@ class MainWindow(QMainWindow, WindowMixin):
return images
def changeSavedir(self, _value=False):
path = os.path.dirname(unicode(self.filename))\
if self.filename else '.'
if self.defaultSaveDir is not None and len(str(self.defaultSaveDir)) > 0:
if self.defaultSaveDir is not None:
path = unicode(self.defaultSaveDir)
else:
path = '.'
dirpath = unicode(QFileDialog.getExistingDirectory(self,
'%s - Save to the directory' % __appname__, path, QFileDialog.ShowDirsOnly
| QFileDialog.DontResolveSymlinks))
self.defaultSaveDir = str(dirpath)
if dirpath is not None and len(dirpath) > 1:
self.defaultSaveDir = dirpath
self.statusBar().showMessage('%s . Annotation will be saved to %s' %('Change saved folder', self.defaultSaveDir))
self.statusBar().show()
def openDir(self, _value=False):
if not self.mayContinue():
return
path = os.path.dirname(unicode(self.filename))\
if self.filename else '.'
if self.lastOpenDir is not None and len(self.lastOpenDir) > 1:
path = self.lastOpenDir
dirpath = unicode(QFileDialog.getExistingDirectory(self,
'%s - Open Directory' % __appname__, path, QFileDialog.ShowDirsOnly
| QFileDialog.DontResolveSymlinks))
if dirpath is not None and len(dirpath) > 1:
self.lastOpenDir = dirpath
self.dirname = dirpath
self.mImgList = self.scanAllImages(dirpath)
self.openNextImg()