diff --git a/dokogen/ui.py b/dokogen/ui.py index 8d9cd85..feea876 100644 --- a/dokogen/ui.py +++ b/dokogen/ui.py @@ -1935,9 +1935,9 @@ class DokoGenApp: # Текст показателя lbl_name = ttk.Label(row, text=name, wraplength=640, justify=tk.LEFT) lbl_name.pack(side=tk.LEFT) - # Выбор значения (категория) + вариант «не применим» + # Выбор значения: пусто / «—» (применим, без категории) / «не применим» / категории var = tk.StringVar(value='') - options = ['', 'не применим'] + options = ['', '—', 'не применим'] for cat in ('III', 'II', 'I'): v = values.get(cat, '') if v: @@ -2005,6 +2005,9 @@ class DokoGenApp: s = var.get().strip() if not s: continue + if s == '—': + out.append((num, name, '—', 'прочерк')) # применим, категория не присвоена + continue if s == 'не применим': out.append((num, name, '—', 'не применим')) continue @@ -2039,11 +2042,13 @@ class DokoGenApp: def _save(): selected = _selected() - # Заполняем список показателей (включая «не применим») + # Заполняем список показателей (включая «—» и «не применим») lines = [] for num, name, cat, val in selected: - if cat == '—': + if cat == '—' and val == 'не применим': lines.append(f"Показатель {num}. {name} — не применим") + elif cat == '—': + lines.append(f"Показатель {num}. {name} — применим, категория не присвоена (—)") else: lines.append(f"Показатель {num}. {name} — {cat} категория: {val}") if hasattr(self, 'is_criteria_values_listbox'): @@ -2067,13 +2072,17 @@ class DokoGenApp: f"Объект отнесён к {cat} категории значимости. Основания: " + "; ".join(f"показатель {num} ({c} категория)" for num, _, c, _ in chosen) + "." ) - for num, name, _, _ in not_applicable: - base = f"Показатель {num}. {name} — не применим" - jtxt = _just_text(num) - if jtxt: - auto_parts.append(base + ": " + jtxt) + for num, name, _, val in not_applicable: + if val == 'не применим': + base = f"Показатель {num}. {name} — не применим" + jtxt = _just_text(num) + if jtxt: + auto_parts.append(base + ": " + jtxt) + else: + auto_parts.append(base + ".") else: - auto_parts.append(base + ".") + auto_parts.append( + f"Показатель {num}. {name} — применим, категория значимости не присвоена.") if not_applicable and not chosen: auto_parts.insert(0, "Категория значимости: не присвоена (показатели критериев значимости неприменимы к объекту).") auto_just = "\n".join(auto_parts) if auto_parts else ""