diff --git a/icons/resetall.png b/icons/resetall.png
new file mode 100644
index 00000000..acc12c33
Binary files /dev/null and b/icons/resetall.png differ
diff --git a/labelImg.py b/labelImg.py
index 2361810b..fff214c9 100755
--- a/labelImg.py
+++ b/labelImg.py
@@ -44,12 +44,10 @@ __appname__ = 'labelImg'
# Utility functions and classes.
-
def have_qstring():
'''p3/qt5 get rid of QString wrapper as py3 has native unicode str type'''
return not (sys.version_info.major >= 3 or QT_VERSION_STR.startswith('5.'))
-
def util_qt_strlistclass():
return QStringList if have_qstring() else list
@@ -225,11 +223,14 @@ class MainWindow(QMainWindow, WindowMixin):
save = action('&Save', self.saveFile,
'Ctrl+S', 'save', u'Save labels to file', enabled=False)
+
saveAs = action('&Save As', self.saveFileAs,
- 'Ctrl+Shift+S', 'save-as', u'Save labels to a different file',
- enabled=False)
- close = action('&Close', self.closeFile,
- 'Ctrl+W', 'close', u'Close current file')
+ 'Ctrl+Shift+S', 'save-as', u'Save labels to a different file', enabled=False)
+
+ close = action('&Close', self.closeFile, 'Ctrl+W', 'close', u'Close current file')
+
+ resetAll = action('&ResetAll', self.resetAll, None, 'resetall', u'Reset all')
+
color1 = action('Box &Line Color', self.chooseColor1,
'Ctrl+L', 'color_line', u'Choose Box line color')
color2 = action('Box &Fill Color', self.chooseColor2,
@@ -317,7 +318,7 @@ class MainWindow(QMainWindow, WindowMixin):
self.popLabelListMenu)
# Store actions for further handling.
- self.actions = struct(save=save, saveAs=saveAs, open=open, close=close,
+ self.actions = struct(save=save, saveAs=saveAs, open=open, close=close, resetAll = resetAll,
lineColor=color1, fillColor=color2,
create=create, delete=delete, edit=edit, copy=copy,
createMode=createMode, editMode=editMode, advancedMode=advancedMode,
@@ -326,7 +327,7 @@ class MainWindow(QMainWindow, WindowMixin):
fitWindow=fitWindow, fitWidth=fitWidth,
zoomActions=zoomActions,
fileMenuActions=(
- open, opendir, save, saveAs, close, quit),
+ open, opendir, save, saveAs, close, resetAll, quit),
beginner=(), advanced=(),
editMenu=(edit, copy, delete,
None, color1, color2),
@@ -356,7 +357,7 @@ class MainWindow(QMainWindow, WindowMixin):
self.lastLabel = None
addActions(self.menus.file,
- (open, opendir, changeSavedir, openAnnotation, self.menus.recentFiles, save, saveAs, close, None, quit))
+ (open, opendir, changeSavedir, openAnnotation, self.menus.recentFiles, save, saveAs, close, resetAll, quit))
addActions(self.menus.help, (help,))
addActions(self.menus.view, (
self.autoSaving,
@@ -1208,6 +1209,12 @@ class MainWindow(QMainWindow, WindowMixin):
self.canvas.setEnabled(False)
self.actions.saveAs.setEnabled(False)
+ def resetAll(self):
+ self.settings.reset()
+ self.close()
+ proc = QProcess()
+ proc.startDetached(os.path.abspath(__file__))
+
def mayContinue(self):
return not (self.dirty and not self.discardChangesDialog())
diff --git a/libs/settings.py b/libs/settings.py
index 3b5e86f8..1ee27b76 100644
--- a/libs/settings.py
+++ b/libs/settings.py
@@ -21,9 +21,10 @@ class Settings(object):
return default
def save(self):
- with open(self.path, 'wb') as f:
- pickle.dump(self.data, f, pickle.HIGHEST_PROTOCOL)
- return True
+ if self.path:
+ with open(self.path, 'wb') as f:
+ pickle.dump(self.data, f, pickle.HIGHEST_PROTOCOL)
+ return True
return False
def load(self):
@@ -33,3 +34,9 @@ class Settings(object):
return True
return False
+ def reset(self):
+ if os.path.exists(self.path):
+ os.remove(self.path)
+ print ('Remove setting pkl file ${0}'.format(self.path))
+ self.data = {}
+ self.path = None
\ No newline at end of file
diff --git a/resources.qrc b/resources.qrc
index 9ae18234..b33fe32b 100644
--- a/resources.qrc
+++ b/resources.qrc
@@ -27,6 +27,7 @@
icons/cancel.png
icons/next.png
icons/prev.png
+icons/resetall.png