Ver código fonte

Add label_completion config key

Kentaro Wada 6 anos atrás
pai
commit
06f52e0a73

+ 1 - 0
labelme/app.py

@@ -84,6 +84,7 @@ class MainWindow(QtWidgets.QMainWindow, WindowMixin):
             labels=self._config['labels'],
             sort_labels=self._config['sort_labels'],
             show_text_field=self._config['show_label_text_field'],
+            completion=self._config['label_completion'],
         )
 
         self.labelList = LabelQListWidget()

+ 3 - 0
labelme/config/default_config.yaml

@@ -7,7 +7,10 @@ labels: null
 file_search: null
 sort_labels: true
 validate_label: null
+
+# label_dialog
 show_label_text_field: true
+label_completion: startswith
 
 epsilon: 11.0
 

+ 10 - 3
labelme/widgets/label_dialog.py

@@ -27,7 +27,8 @@ class LabelQLineEdit(QtWidgets.QLineEdit):
 class LabelDialog(QtWidgets.QDialog):
 
     def __init__(self, text="Enter object label", parent=None, labels=None,
-                 sort_labels=True, show_text_field=True):
+                 sort_labels=True, show_text_field=True,
+                 completion='startswith'):
         super(LabelDialog, self).__init__(parent)
         self.edit = LabelQLineEdit()
         self.edit.setPlaceholderText(text)
@@ -64,8 +65,14 @@ class LabelDialog(QtWidgets.QDialog):
         self.setLayout(layout)
         # completion
         completer = QtWidgets.QCompleter()
-        completer.setFilterMode(QtCore.Qt.MatchContains)
-        completer.setCompletionMode(QtWidgets.QCompleter.PopupCompletion)
+        if completion == 'startswith':
+            completer.setFilterMode(QtCore.Qt.MatchStartsWith)
+            completer.setCompletionMode(QtWidgets.QCompleter.InlineCompletion)
+        elif completion == 'contains':
+            completer.setFilterMode(QtCore.Qt.MatchContains)
+            completer.setCompletionMode(QtWidgets.QCompleter.PopupCompletion)
+        else:
+            raise ValueError('Unsupported completion: {}'.format(completion))
         completer.setModel(self.labelList.model())
         self.edit.setCompleter(completer)