From 020728adce2624842523dfd858e67f43460867d1 Mon Sep 17 00:00:00 2001 From: loko8002 <94833744+loko8002@users.noreply.github.com> Date: Thu, 31 Jul 2025 19:28:30 +0300 Subject: [PATCH] Update bios_settings_manager.py Updated for bulk selection --- bios_settings_manager.py | 45 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 44 insertions(+), 1 deletion(-) diff --git a/bios_settings_manager.py b/bios_settings_manager.py index c88c01c..597c96a 100644 --- a/bios_settings_manager.py +++ b/bios_settings_manager.py @@ -344,7 +344,7 @@ def _setup_gui(self): # LEFT FRAME: LIST OF SETTINGS list_frame = ttk.Frame(self.main_frame) self.main_frame.add(list_frame, weight=1) - self.settings_list = ttk.Treeview(list_frame, columns=('value',), show='tree') + self.settings_list = ttk.Treeview(list_frame, columns=('value',), show='tree', selectmode='extended') self.settings_list.heading('#0', text='Setting') self.settings_list.heading('value', text='Current Value') self.settings_list.pack(fill=tk.BOTH, expand=True, side=tk.LEFT) @@ -354,6 +354,12 @@ def _setup_gui(self): # RIGHT PANEL: DETAILS OF SELECTED SETTING details_frame = ttk.Frame(self.main_frame) + bulk_frame = ttk.LabelFrame(details_frame, text="Bulk Actions") + bulk_frame.pack(fill=tk.X, padx=5, pady=5) + self.bulk_var = tk.StringVar() + self.bulk_combo = ttk.Combobox(bulk_frame, textvariable=self.bulk_var) + self.bulk_combo.pack(side=tk.LEFT, padx=5) + ttk.Button(bulk_frame, text="Apply to Selected", command=self._apply_bulk_option).pack(side=tk.LEFT, padx=5) self.main_frame.add(details_frame, weight=2) self.details_text = tk.Text(details_frame, wrap=tk.WORD, height=10, state=tk.DISABLED) self.details_text.pack(fill=tk.X, padx=5, pady=5) @@ -606,6 +612,8 @@ def _on_setting_select(self, event): self.details_text.insert('1.0', final_details) self.details_text.config(state=tk.DISABLED) if setting.options: + clean_options = [re.sub(r'^\[[0-9A-Fa-f]{2}\]', '', opt).strip() for opt in setting.options] + self.bulk_combo['values'] = list(sorted(set(clean_options))) var = tk.StringVar(value="") for i, option in enumerate(setting.options): rb = ttk.Radiobutton( @@ -733,6 +741,41 @@ def _save_file(self): messagebox.showinfo("Success", f"File saved successfully to {save_path}") except Exception as e: messagebox.showerror("Error", f"Failed to save file: {str(e)}") + def _apply_bulk_option(self): + selected_ids = self.settings_list.selection() + if not selected_ids: + messagebox.showwarning("No Selection", "No settings selected.") + return + + selected_value = self.bulk_var.get().strip() + if not selected_value: + messagebox.showwarning("No Value", "Please enter or select a value to apply.") + return + + updated = 0 + for uid in selected_ids: + setting = next((s for s in self.settings if s.unique_id == uid), None) + if not setting: + continue + + if setting.options: + for i, opt in enumerate(setting.options): + clean_opt = re.sub(r'^\[[0-9A-Fa-f]{2}\]', '', opt).strip() + if clean_opt.lower() == selected_value.lower(): + setting.active_option = i + updated += 1 + break + elif setting.value is not None: + setting.value = selected_value + updated += 1 + + if updated > 0: + self._populate_settings_list(self.search_var.get()) + messagebox.showinfo("Bulk Update", f"Updated {updated} settings.") + else: + messagebox.showwarning("No Match", f"No settings matched or updated.") + + def run(self): self.root.mainloop()