Ver Fonte

Add config for canvas: double_click

Kentaro Wada há 5 anos atrás
pai
commit
21813d2857
3 ficheiros alterados com 14 adições e 1 exclusões
  1. 1 0
      labelme/app.py
  2. 5 0
      labelme/config/default_config.yaml
  3. 8 1
      labelme/widgets/canvas.py

+ 1 - 0
labelme/app.py

@@ -145,6 +145,7 @@ class MainWindow(QtWidgets.QMainWindow):
 
         self.canvas = self.labelList.canvas = Canvas(
             epsilon=self._config['epsilon'],
+            double_click=self._config['canvas']['double_click'],
         )
         self.canvas.zoomRequest.connect(self.zoomRequest)
 

+ 5 - 0
labelme/config/default_config.yaml

@@ -41,7 +41,12 @@ fit_to_content:
   column: true
   row: false
 
+# canvas
 epsilon: 10.0
+canvas:
+  # None: do nothing
+  # close: close polygon
+  double_click: close
 
 shortcuts:
   close: Ctrl+W

+ 8 - 1
labelme/widgets/canvas.py

@@ -38,6 +38,12 @@ class Canvas(QtWidgets.QWidget):
 
     def __init__(self, *args, **kwargs):
         self.epsilon = kwargs.pop('epsilon', 10.0)
+        self.double_click = kwargs.pop('double_click', 'close')
+        if self.double_click not in [None, 'close']:
+            raise ValueError(
+                'Unexpected value for double_click event: {}'
+                .format(self.double_click)
+            )
         super(Canvas, self).__init__(*args, **kwargs)
         # Initialise local state.
         self.mode = self.EDIT
@@ -400,7 +406,8 @@ class Canvas(QtWidgets.QWidget):
     def mouseDoubleClickEvent(self, ev):
         # We need at least 4 points here, since the mousePress handler
         # adds an extra one before this handler is called.
-        if self.canCloseShape() and len(self.current) > 3:
+        if (self.double_click == 'close' and self.canCloseShape() and
+                len(self.current) > 3):
             self.current.popPoint()
             self.finalise()