fix: кнопка «✏️ Уточнить модель/кол-во» только для ПО/оборудования
- в окнах выбора из словаря инцидентов, угроз, критериев, мер, пользователей, СЗИ и ОКВЭД кнопка больше не показывается - параметр allow_refine: включается только у hw_sw/os_sw/app_sw (там «уточнить модель» и количество действительно нужны)
This commit is contained in:
+16
-8
@@ -937,7 +937,7 @@ class DokoGenApp:
|
||||
ttk.Button(btn, text="✏️ Редактировать",
|
||||
command=lambda a=attr: self._edit_sw_item(getattr(self, a))).pack(fill=tk.X, pady=1)
|
||||
ttk.Button(btn, text="📚 Из словаря",
|
||||
command=lambda a=attr, d=dict_name: self._select_sw_from_dict(getattr(self, a), d)).pack(fill=tk.X, pady=1)
|
||||
command=lambda a=attr, d=dict_name: self._select_sw_from_dict(getattr(self, a), d, allow_refine=True)).pack(fill=tk.X, pady=1)
|
||||
setattr(self, attr, box)
|
||||
sw_frame.columnconfigure(0, weight=1)
|
||||
|
||||
@@ -1639,15 +1639,19 @@ class DokoGenApp:
|
||||
if item:
|
||||
self.defense_tools_listbox.insert(tk.END, item)
|
||||
|
||||
def _select_sw_from_dict(self, listbox, dict_name):
|
||||
"""Выбор позиций из словаря (JSON) — можно несколько."""
|
||||
def _select_sw_from_dict(self, listbox, dict_name, allow_refine=False):
|
||||
"""Выбор позиций из словаря (JSON) — можно несколько.
|
||||
|
||||
allow_refine=True — показывать кнопку «✏️ Уточнить модель/кол-во»
|
||||
(только для ПО/оборудования, где это имеет смысл).
|
||||
"""
|
||||
import json
|
||||
dict_path = os.path.join(os.path.dirname(__file__), 'dictionaries', dict_name)
|
||||
try:
|
||||
with open(dict_path, 'r', encoding='utf-8') as f:
|
||||
items = json.load(f)
|
||||
title = "Выбор из словаря"
|
||||
self._select_from_dialog(title, items, listbox)
|
||||
self._select_from_dialog(title, items, listbox, allow_refine=allow_refine)
|
||||
except Exception as e:
|
||||
messagebox.showerror("Ошибка", f"Не удалось загрузить словарь: {e}")
|
||||
|
||||
@@ -2168,8 +2172,11 @@ class DokoGenApp:
|
||||
listbox.delete(sel[0])
|
||||
|
||||
# ==================== ВЫБОР ИЗ СПИСКА (словари) ====================
|
||||
def _select_from_dialog(self, title: str, items: list, listbox):
|
||||
"""Открывает окно с чекбоксами для выбора элементов из списка."""
|
||||
def _select_from_dialog(self, title: str, items: list, listbox, allow_refine=False):
|
||||
"""Открывает окно с чекбоксами для выбора элементов из списка.
|
||||
|
||||
allow_refine=True — показывать кнопку «✏️ Уточнить модель/кол-во».
|
||||
"""
|
||||
dialog = tk.Toplevel(self.root)
|
||||
dialog.title(title)
|
||||
dialog.geometry("720x680")
|
||||
@@ -2253,8 +2260,9 @@ class DokoGenApp:
|
||||
vars[new_text] = var
|
||||
items_map[new_text] = (var, cb)
|
||||
|
||||
ttk.Button(btn_frame, text="✏️ Уточнить модель/кол-во",
|
||||
command=_refine_selected).pack(side=tk.LEFT, padx=2)
|
||||
if allow_refine:
|
||||
ttk.Button(btn_frame, text="✏️ Уточнить модель/кол-во",
|
||||
command=_refine_selected).pack(side=tk.LEFT, padx=2)
|
||||
ttk.Button(btn_frame, text="Выбрать всё", command=_select_all).pack(side=tk.LEFT, padx=2)
|
||||
ttk.Button(btn_frame, text="Снять всё", command=_clear_all).pack(side=tk.LEFT, padx=2)
|
||||
ttk.Button(btn_frame, text="✅ Применить", command=_apply).pack(side=tk.RIGHT, padx=2)
|
||||
|
||||
Reference in New Issue
Block a user