фикс мелочей в таблицах выбора
+exe +3.13 python installer заменен на 3.9 (3.13 не имеет PySide2)
This commit is contained in:
Binary file not shown.
@@ -567,20 +567,53 @@ def split_vars_by_show_flag(expanded_vars):
|
||||
for child in var.get('children', []):
|
||||
nodes.extend(collect_selected_nodes(child))
|
||||
return nodes
|
||||
|
||||
def exists_by_path(tree, full_name):
|
||||
"""
|
||||
Проверяет, существует ли переменная в дереве, следуя по частям пути (например: project → adc → status).
|
||||
Каждая часть ('project', 'project.adc', ...) должна иметь точное совпадение с 'name' в узле.
|
||||
"""
|
||||
path_parts = split_path(full_name)
|
||||
full_names = build_full_names(path_parts, full_name)
|
||||
|
||||
current_level = tree
|
||||
for name in full_names:
|
||||
found = False
|
||||
for var in current_level:
|
||||
if var.get('name') == name:
|
||||
current_level = var.get('children', [])
|
||||
found = True
|
||||
break
|
||||
if not found:
|
||||
return False
|
||||
return True
|
||||
|
||||
selected_nodes = []
|
||||
for var in expanded_vars:
|
||||
full_name = var['name']
|
||||
# Проверка: если имя содержит вложенность, но целиком есть в корне — пропускаем
|
||||
if ('.' in full_name or '[' in full_name or '->' in full_name):
|
||||
path_parts = split_path(full_name)
|
||||
if exists_by_path(expanded_vars, full_name):
|
||||
# Удалим лишнюю копию из корня unselected_vars
|
||||
find_and_remove(unselected_vars, full_name)
|
||||
else:
|
||||
add_to_nested_tree(unselected_vars, var, path_parts, source_tree=expanded_vars)
|
||||
find_and_remove(unselected_vars, full_name)
|
||||
selected_nodes.extend(collect_selected_nodes(var))
|
||||
|
||||
for node in selected_nodes:
|
||||
path_parts = split_path(node['name'])
|
||||
full_name = node['name']
|
||||
|
||||
|
||||
path_parts = split_path(full_name)
|
||||
|
||||
# Вырезать из unselected_vars
|
||||
removed = find_and_remove(unselected_vars, node['name'])
|
||||
removed = find_and_remove(unselected_vars, full_name)
|
||||
if removed:
|
||||
add_to_nested_tree(selected_vars, removed, path_parts)
|
||||
add_to_nested_tree(selected_vars, removed, path_parts, source_tree=expanded_vars)
|
||||
else:
|
||||
# вдруг удалённый родитель — создаём вручную
|
||||
add_to_nested_tree(selected_vars, node, path_parts)
|
||||
add_to_nested_tree(selected_vars, node, path_parts, source_tree=expanded_vars)
|
||||
|
||||
return selected_vars, unselected_vars
|
||||
return selected_vars, unselected_vars
|
||||
Reference in New Issue
Block a user