diff --git a/swiss_locator/gui/config_dialog.py b/swiss_locator/gui/config_dialog.py
index 6243a07..20ea1ed 100644
--- a/swiss_locator/gui/config_dialog.py
+++ b/swiss_locator/gui/config_dialog.py
@@ -22,7 +22,7 @@
"""
import os
-from PyQt5.QtCore import Qt
+from PyQt5.QtCore import Qt, pyqtSlot
from PyQt5.QtWidgets import QDialog, QTableWidgetItem, QAbstractItemView
from PyQt5.uic import loadUiType
@@ -49,7 +49,9 @@ def __init__(self, parent=None):
self.crs.addItem('CH 1903+ (EPSG:2056)', '2056')
self.crs.addItem('CH 1903 (EPSG:21781)', '21781')
+ self.search_line_edit.textChanged.connect(self.filter_rows)
self.feature_search_restrict.toggled.connect(self.feature_search_layers_list.setEnabled)
+ self.feature_search_restrict.toggled.connect(self.search_line_edit.setEnabled)
self.feature_search_restrict.toggled.connect(self.select_all_button.setEnabled)
self.feature_search_restrict.toggled.connect(self.unselect_all_button.setEnabled)
self.select_all_button.pressed.connect(self.select_all)
@@ -59,6 +61,7 @@ def __init__(self, parent=None):
layers = searchable_layers(lang)
self.feature_search_layers_list.setRowCount(len(layers))
self.feature_search_layers_list.setColumnCount(2)
+ self.feature_search_layers_list.setHorizontalHeaderLabels((self.tr('Layer'), self.tr('Description')))
self.feature_search_layers_list.setSelectionBehavior(QAbstractItemView.SelectRows)
self.feature_search_layers_list.setSelectionMode(QAbstractItemView.SingleSelection)
r = 0
@@ -69,6 +72,7 @@ def __init__(self, parent=None):
self.feature_search_layers_list.setItem(r, 0, item)
self.feature_search_layers_list.setItem(r, 1, QTableWidgetItem(description))
r += 1
+ self.feature_search_layers_list.horizontalHeader().setStretchLastSection(True)
self.settings = settings
self.init_widgets()
@@ -76,4 +80,20 @@ def __init__(self, parent=None):
def select_all(self, select:bool =True):
for r in range(self.feature_search_layers_list.rowCount()):
item = self.feature_search_layers_list.item(r, 0)
- item.setCheckState(Qt.Checked if select else Qt.Unchecked)
\ No newline at end of file
+ item.setCheckState(Qt.Checked if select else Qt.Unchecked)
+
+ @pyqtSlot(str)
+ def filter_rows(self, text: str):
+ if text:
+ items = self.feature_search_layers_list.findItems(text, Qt.MatchContains)
+ print(text)
+ print(len(items))
+ shown_rows = []
+ for item in items:
+ shown_rows.append(item.row())
+ shown_rows = list(set(shown_rows))
+ for r in range(self.feature_search_layers_list.rowCount()):
+ self.feature_search_layers_list.setRowHidden(r, r not in shown_rows)
+ else:
+ for r in range(self.feature_search_layers_list.rowCount()):
+ self.feature_search_layers_list.setRowHidden(r, False)
\ No newline at end of file
diff --git a/swiss_locator/ui/config.ui b/swiss_locator/ui/config.ui
index 9b03a25..e2dcc2b 100644
--- a/swiss_locator/ui/config.ui
+++ b/swiss_locator/ui/config.ui
@@ -91,16 +91,6 @@
- -
-
-
- false
-
-
- unselect all
-
-
-
-
@@ -114,14 +104,37 @@
- -
+
-
+
+
+ false
+
+
+ unselect all
+
+
+
+ -
+
+
+ false
+
+
+ true
+
+
+
+
+
+
+ -
false
- -
+
-
Restrict feature search to specific layers
@@ -134,6 +147,13 @@
+
+
+ QgsFilterLineEdit
+ QLineEdit
+
+
+
@@ -143,8 +163,8 @@
accept()
- 248
- 254
+ 254
+ 419
157
@@ -159,8 +179,8 @@
reject()
- 316
- 260
+ 322
+ 419
286