Checkboxes on main window works now correct

This commit is contained in:
2025-09-12 01:08:55 +02:00
parent eff7569d71
commit 4a96fd1547

View File

@@ -68,36 +68,33 @@ class Actions:
self._set_backup_type("full") self._set_backup_type("full")
def _refresh_backup_options_ui(self): def _refresh_backup_options_ui(self):
# Reset all to normal state first # Reset enabled/disabled state first, but respect forced states from config
self.app.full_backup_cb.config(state="normal") if self.app.full_backup_cb.cget('state') != 'disabled':
self.app.incremental_cb.config(state="normal") self.app.full_backup_cb.config(state="normal")
if self.app.incremental_cb.cget('state') != 'disabled':
self.app.incremental_cb.config(state="normal")
self.app.compressed_cb.config(state="normal") self.app.compressed_cb.config(state="normal")
self.app.encrypted_cb.config(state="normal") self.app.encrypted_cb.config(state="normal")
self.app.test_run_cb.config(state="normal") self.app.test_run_cb.config(state="normal")
self.app.incremental_size_btn.config(state="normal")
# Apply mutual exclusion rules for Option A
# Apply specific logic based on current states
if self.app.compressed_var.get(): if self.app.compressed_var.get():
# If compressed, cannot be incremental
self.app.incremental_var.set(False) self.app.incremental_var.set(False)
self.app.full_backup_var.set(True) # Force full if compressed self.app.full_backup_var.set(True)
self.app.incremental_cb.config(state="disabled") self.app.incremental_cb.config(state="disabled")
# If compressed, cannot be encrypted
self.app.encrypted_var.set(False) self.app.encrypted_var.set(False)
self.app.encrypted_cb.config(state="disabled") self.app.encrypted_cb.config(state="disabled")
# Incremental size not applicable for compressed
self.app.incremental_size_btn.config(state="disabled") if self.app.incremental_var.get() or self.app.encrypted_var.get():
elif self.app.encrypted_var.get():
# If encrypted, cannot be compressed
self.app.compressed_var.set(False)
self.app.compressed_cb.config(state="disabled")
elif self.app.incremental_var.get():
# If incremental, cannot be compressed
self.app.compressed_var.set(False) self.app.compressed_var.set(False)
self.app.compressed_cb.config(state="disabled") self.app.compressed_cb.config(state="disabled")
# Update backup type controls (full/incremental) based on current state # Set incremental_size_btn state
self._update_backup_type_controls() if self.app.mode == "backup" and self.app.incremental_var.get():
self.app.incremental_size_btn.config(state="normal")
else:
self.app.incremental_size_btn.config(state="disabled")
def handle_backup_type_change(self, changed_var_name): def handle_backup_type_change(self, changed_var_name):
if changed_var_name == 'full': if changed_var_name == 'full':
@@ -106,6 +103,7 @@ class Actions:
elif changed_var_name == 'incremental': elif changed_var_name == 'incremental':
if self.app.incremental_var.get(): if self.app.incremental_var.get():
self._set_backup_type("incremental") self._set_backup_type("incremental")
self._refresh_backup_options_ui()
def handle_compression_change(self): def handle_compression_change(self):
self._refresh_backup_options_ui() self._refresh_backup_options_ui()
@@ -311,6 +309,7 @@ class Actions:
if self.app.mode == 'backup': if self.app.mode == 'backup':
self._update_backup_type_controls() self._update_backup_type_controls()
self._refresh_backup_options_ui()
else: else:
self.app.config_manager.set_setting( self.app.config_manager.set_setting(
"restore_destination_path", folder_path) "restore_destination_path", folder_path)
@@ -494,6 +493,7 @@ class Actions:
self.app.right_canvas.config(cursor="") self.app.right_canvas.config(cursor="")
if enable: if enable:
self._update_backup_type_controls()
self.app.update_backup_options_from_config() self.app.update_backup_options_from_config()
else: else:
checkboxes = [ checkboxes = [