Skip to content

Commit b85baf1

Browse files
Marilythjoernu76
andauthored
Don't reset layer selection on get_capabilities (#1167)
* Don't switch layer selection if already selected * Reselect after deleted server Co-authored-by: J. Ungermann <j.ungermann@fz-juelich.de>
1 parent 4f426a9 commit b85baf1

File tree

3 files changed

+19
-4
lines changed

3 files changed

+19
-4
lines changed

mslib/msui/_tests/test_wms_control.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,12 @@ def _setup(self, widget_type):
8181
self.window = wc.VSecWMSControlWidget(
8282
view=self.view, wms_cache=self.tempdir, waypoints_model=waypoints_model)
8383
self.window.show()
84+
85+
# Remove all previous cached URLs
86+
for url in self.window.multilayers.layers.copy():
87+
server = self.window.multilayers.listLayers.findItems(url, QtCore.Qt.MatchFixedString)[0]
88+
self.window.multilayers.delete_server(server)
89+
8490
QtWidgets.QApplication.processEvents()
8591
QtTest.QTest.qWait(2000)
8692
QtTest.QTest.qWaitForWindowExposed(self.window)
@@ -566,6 +572,12 @@ def setup(self):
566572
self.view = HSecViewMockup()
567573
self.window = wc.HSecWMSControlWidget(view=self.view)
568574
self.window.show()
575+
576+
# Remove all previous cached URLs
577+
for url in self.window.multilayers.layers.copy():
578+
server = self.window.multilayers.listLayers.findItems(url, QtCore.Qt.MatchFixedString)[0]
579+
self.window.multilayers.delete_server(server)
580+
569581
QtWidgets.QApplication.processEvents()
570582

571583
def teardown(self):

mslib/msui/multilayers.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -315,7 +315,7 @@ def add_wms(self, wms):
315315
icon = QtGui.QIcon(icons("64x64", "bin.png"))
316316
header.setIcon(0, icon)
317317

318-
def add_multilayer(self, name, wms):
318+
def add_multilayer(self, name, wms, auto_select=False):
319319
"""
320320
Adds a layer to the multilayer list, with the wms url as a parent
321321
"""
@@ -369,8 +369,10 @@ def style_changed(layer):
369369
if widget.is_invalid:
370370
widget.setDisabled(True)
371371
return
372-
self.current_layer = widget
373-
self.listLayers.setCurrentItem(widget)
372+
373+
if not self.current_layer or auto_select:
374+
self.current_layer = widget
375+
self.listLayers.setCurrentItem(widget)
374376

375377
def multilayer_clicked(self, item):
376378
"""

mslib/msui/wms_control.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -745,13 +745,14 @@ def activate_wms(self, wms, cache=False):
745745
logging.debug("discovered %i layers that can be used in this view",
746746
len(filtered_layers))
747747
filtered_layers = sorted(filtered_layers)
748+
selected = self.multilayers.current_layer.text(0) if self.multilayers.current_layer else None
748749
if not cache and wms.url in self.multilayers.layers and \
749750
wms.capabilities_document.decode("utf-8") != \
750751
self.multilayers.layers[wms.url]["wms"].capabilities_document.decode("utf-8"):
751752
self.multilayers.delete_server(self.multilayers.layers[wms.url]["header"])
752753
self.multilayers.add_wms(wms)
753754
for layer in filtered_layers:
754-
self.multilayers.add_multilayer(layer, wms)
755+
self.multilayers.add_multilayer(layer, wms, layer == selected)
755756
self.multilayers.filter_multilayers()
756757
self.multilayers.update_checkboxes()
757758
self.multilayers.pbViewCapabilities.setEnabled(True)

0 commit comments

Comments
 (0)