Skip to content

Commit ee63271

Browse files
committed
Handle nested groups when parsing visibility presets
1 parent 85ec1d3 commit ee63271

File tree

1 file changed

+13
-7
lines changed

1 file changed

+13
-7
lines changed

src/config_generator/qgs_reader.py

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -247,13 +247,19 @@ def __visibility_presets(self, root):
247247
layerMap[layerId.text] = mapLayer.find('shortname').text
248248
elif mapLayer.find('layername') is not None:
249249
layerMap[layerId.text] = mapLayer.find('layername').text
250-
for group in root.findall('.//layer-tree-group'):
251-
if group.get('name'):
252-
shortname = group.find('./shortname')
253-
if shortname is not None:
254-
layerMap[group.get('name')] = shortname.text
255-
else:
256-
layerMap[group.get('name')] = group.get('name')
250+
251+
def map_tree_groups(parent, parent_path =[]):
252+
for group in parent.findall('.//layer-tree-group'):
253+
if group.get('name'):
254+
path = list(parent_path) + [group.get('name')]
255+
shortname = group.find('./shortname')
256+
if shortname is not None:
257+
layerMap["/".join(path)] = shortname.text
258+
else:
259+
layerMap["/".join(path)] = group.get('name')
260+
map_tree_groups(group, path)
261+
262+
map_tree_groups(root)
257263

258264
result = {}
259265
for visibilityPreset in visibilityPresets.findall('./visibility-preset'):

0 commit comments

Comments
 (0)