Skip to content

Commit db6a334

Browse files
committed
Improve dock feature configuration
* Don't leak `features` in loop * Don't crash if configuration is missing
1 parent 235374e commit db6a334

File tree

1 file changed

+22
-11
lines changed

1 file changed

+22
-11
lines changed

labelme/app.py

Lines changed: 22 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -194,17 +194,10 @@ def __init__(
194194

195195
self.setCentralWidget(scrollArea)
196196

197-
features = QtWidgets.QDockWidget.DockWidgetFeatures()
198-
for dock in ["flag_dock", "label_dock", "shape_dock", "file_dock"]:
199-
if self._config[dock]["closable"]:
200-
features = features | QtWidgets.QDockWidget.DockWidgetClosable
201-
if self._config[dock]["floatable"]:
202-
features = features | QtWidgets.QDockWidget.DockWidgetFloatable
203-
if self._config[dock]["movable"]:
204-
features = features | QtWidgets.QDockWidget.DockWidgetMovable
205-
getattr(self, dock).setFeatures(features)
206-
if self._config[dock]["show"] is False:
207-
getattr(self, dock).setVisible(False)
197+
self._configure_dock("flag_dock", self.flag_dock)
198+
self._configure_dock("label_dock", self.label_dock)
199+
self._configure_dock("shape_dock", self.shape_dock)
200+
self._configure_dock("file_dock", self.file_dock)
208201

209202
self.addDockWidget(Qt.RightDockWidgetArea, self.flag_dock)
210203
self.addDockWidget(Qt.RightDockWidgetArea, self.label_dock)
@@ -902,6 +895,24 @@ def __init__(
902895
# if self.firstStart:
903896
# QWhatsThis.enterWhatsThisMode()
904897

898+
def _configure_dock(self, dock_name: str, dock_obj: QtWidgets.QDockWidget) -> None:
899+
dock_config = self._config.get(dock_name, None)
900+
if dock_config is None:
901+
# Missing configuration? Never mind then...
902+
return
903+
904+
features = QtWidgets.QDockWidget.DockWidgetFeatures()
905+
906+
if dock_config.get("closable"):
907+
features = features | QtWidgets.QDockWidget.DockWidgetClosable
908+
if dock_config.get("floatable"):
909+
features = features | QtWidgets.QDockWidget.DockWidgetFloatable
910+
if dock_config.get("movable"):
911+
features = features | QtWidgets.QDockWidget.DockWidgetMovable
912+
dock_obj.setFeatures(features)
913+
if dock_config.get("show") is False:
914+
dock_obj.setVisible(False)
915+
905916
def menu(self, title, actions=None):
906917
menu = self.menuBar().addMenu(title)
907918
if actions:

0 commit comments

Comments
 (0)