diff --git a/dokogen/ui.py b/dokogen/ui.py index 957f9ee..10dd89f 100644 --- a/dokogen/ui.py +++ b/dokogen/ui.py @@ -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)