diff --git a/sloth/gui/labeltool.py b/sloth/gui/labeltool.py
index 3fe386a..05db62b 100755
--- a/sloth/gui/labeltool.py
+++ b/sloth/gui/labeltool.py
@@ -3,7 +3,8 @@ import os
import functools
import fnmatch
from PyQt4.QtGui import QMainWindow, QSizePolicy, QWidget, QVBoxLayout, QAction,\
- QKeySequence, QLabel, QItemSelectionModel, QMessageBox, QFileDialog, QFrame
+ QKeySequence, QLabel, QItemSelectionModel, QMessageBox, QFileDialog, QFrame, \
+ QDockWidget
from PyQt4.QtCore import SIGNAL, QSettings, QSize, QPoint, QVariant, QFileInfo
import PyQt4.uic as uic
from sloth.gui import qrc_icons # needed for toolbar icons
@@ -117,7 +118,7 @@ class MainWindow(QMainWindow):
# Property Editor
self.property_editor = PropertyEditor(config.LABELS)
- self.ui.dockAnnotationButtons.setWidget(self.property_editor)
+ self.ui.dockProperties.setWidget(self.property_editor)
# Scene
self.scene = AnnotationScene(self.labeltool, items=items, inserters=inserters)
@@ -144,7 +145,7 @@ class MainWindow(QMainWindow):
self.treeview = AnnotationTreeView()
self.treeview.setSizePolicy(QSizePolicy.MinimumExpanding, QSizePolicy.Preferred)
- self.ui.dockInformation.setWidget(self.treeview)
+ self.ui.dockAnnotations.setWidget(self.treeview)
self.scene.selectionChanged.connect(self.scene.onSelectionChanged)
self.treeview.selectedItemsChanged.connect(self.scene.onSelectionChangedInTreeView)
@@ -164,6 +165,10 @@ class MainWindow(QMainWindow):
self.view.scaleChanged.connect(self.onScaleChanged)
self.onScaleChanged(self.view.getScale())
+ # View menu
+ self.ui.menu_Views.addAction(self.ui.dockProperties.toggleViewAction())
+ self.ui.menu_Views.addAction(self.ui.dockAnnotations.toggleViewAction())
+
# Show the UI. It is important that this comes *after* the above
# adding of custom widgets, especially the central widget. Otherwise the
# dock widgets would be far to large.
@@ -180,6 +185,9 @@ class MainWindow(QMainWindow):
self.connect(self.ui.actionSave_As, SIGNAL("triggered()"), self.fileSaveAs)
self.connect(self.ui.actionExit, SIGNAL("triggered()"), self.close)
+ ## View menu
+ self.ui.actionLocked.toggled.connect(self.onViewsLockedChanged)
+
## Help menu
self.ui.action_About.triggered.connect(self.about)
@@ -198,21 +206,25 @@ class MainWindow(QMainWindow):
def loadApplicationSettings(self):
settings = QSettings()
- size = settings.value("MainWindow/Size", QSize(800, 600))
- pos = settings.value("MainWindow/Position", QPoint(10, 10))
- state = settings.value("MainWindow/State")
- if isinstance(size, QVariant): size = size.toSize()
- if isinstance(pos, QVariant): pos = pos.toPoint()
- if isinstance(state, QVariant): state = state.toByteArray()
+ size = settings.value("MainWindow/Size", QSize(800, 600))
+ pos = settings.value("MainWindow/Position", QPoint(10, 10))
+ state = settings.value("MainWindow/State")
+ locked = settings.value("MainWindow/ViewsLocked", False)
+ if isinstance(size, QVariant): size = size.toSize()
+ if isinstance(pos, QVariant): pos = pos.toPoint()
+ if isinstance(state, QVariant): state = state.toByteArray()
+ if isinstance(locked, QVariant): locked = locked.toBool()
self.resize(size)
self.move(pos)
self.restoreState(state)
+ self.ui.actionLocked.setChecked(locked)
def saveApplicationSettings(self):
settings = QSettings()
- settings.setValue("MainWindow/Size", self.size())
- settings.setValue("MainWindow/Position", self.pos())
- settings.setValue("MainWindow/State", self.saveState())
+ settings.setValue("MainWindow/Size", self.size())
+ settings.setValue("MainWindow/Position", self.pos())
+ settings.setValue("MainWindow/State", self.saveState())
+ settings.setValue("MainWindow/ViewsLocked", self.ui.actionLocked.isChecked())
if self.labeltool.getCurrentFilename() is not None:
filename = self.labeltool.getCurrentFilename()
else:
@@ -289,6 +301,14 @@ class MainWindow(QMainWindow):
return self.labeltool.addVideoFile(fname)
+ def onViewsLockedChanged(self, checked):
+ features = QDockWidget.AllDockWidgetFeatures
+ if checked:
+ features = QDockWidget.NoDockWidgetFeatures
+
+ self.ui.dockProperties.setFeatures(features)
+ self.ui.dockAnnotations.setFeatures(features)
+
###
### global event handling
diff --git a/sloth/gui/labeltool.ui b/sloth/gui/labeltool.ui
index 98fb927..99a9789 100644
--- a/sloth/gui/labeltool.ui
+++ b/sloth/gui/labeltool.ui
@@ -40,10 +40,11 @@
-
@@ -85,7 +86,7 @@
-
+
true
@@ -95,19 +96,22 @@
44
+
+ Properties
+
+
+ 1
+
+
+
+
Annotations
1
-
-
-
-
- 1
-
-
+
@@ -272,6 +276,14 @@
P
+
+
+ true
+
+
+ &Locked
+
+