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