Browse Source

Don't select shapes from label list when editing

Michael Pitidis 13 years ago
parent
commit
b02a28f324
1 changed files with 10 additions and 14 deletions
  1. 10 14
      labelme.py

+ 10 - 14
labelme.py

@@ -27,7 +27,6 @@ from toolBar import ToolBar
 __appname__ = 'labelme'
 
 # FIXME
-# - [high] Do not select shapes when clicking the label list in edit mode.
 # - [medium] Set max zoom value to something big enough for FitWidth/Window
 # - [medium] Disabling the save button prevents the user from saving to
 #   alternate files. Either keep enabled, or add "Save As" button.
@@ -85,10 +84,15 @@ class MainWindow(QMainWindow, WindowMixin):
         self.labelDialog = LabelDialog(parent=self)
 
         self.labelList = QListWidget()
-        self.highlighted = None
         self.itemsToShapes = {}
         self.shapesToItems = {}
 
+        self.labelList.itemActivated.connect(self.labelSelectionChanged)
+        self.labelList.itemSelectionChanged.connect(self.labelSelectionChanged)
+        self.labelList.itemDoubleClicked.connect(self.editLabel)
+        # Connect to itemChanged to detect checkbox changes.
+        self.labelList.itemChanged.connect(self.labelItemChanged)
+
         self.dock = QDockWidget(u'Polygon Labels', self)
         self.dock.setObjectName(u'Labels')
         self.dock.setWidget(self.labelList)
@@ -97,12 +101,6 @@ class MainWindow(QMainWindow, WindowMixin):
         self.colorDialog = ColorDialog(parent=self)
         self.simpleLabelDialog = SimpleLabelDialog(parent=self)
 
-        self.labelList.itemActivated.connect(self.labelSelectionChanged)
-        self.labelList.itemDoubleClicked.connect(self.editLabel)
-        # Connect to itemChanged to detect checkbox changes.
-        self.labelList.itemChanged.connect(self.labelItemChanged)
-        self.labelList.itemSelectionChanged.connect(self.labelSelectionChanged)
-
         self.canvas = Canvas()
         self.canvas.zoomRequest.connect(self.zoomRequest)
 
@@ -429,12 +427,10 @@ class MainWindow(QMainWindow, WindowMixin):
         self.shapeSelectionChanged(True)
 
     def labelSelectionChanged(self):
-        items = self.labelList.selectedItems()
-        if not items:
-            return
-        shape = self.itemsToShapes[items[0]]
-        self._noSelectionSlot = True
-        self.canvas.selectShape(shape)
+        item = self.currentItem()
+        if item and not self.canvas.editing():
+            self._noSelectionSlot = True
+            self.canvas.selectShape(self.itemsToShapes[item])
 
     def labelItemChanged(self, item):
         shape = self.itemsToShapes[item]