feat: Erweiterte Einstellungen in main SettingsFrame integrieren und Layoutprobleme beheben.
This commit is contained in:
@@ -10,11 +10,11 @@ from shared_libs.message import MessageDialog
|
||||
from pyimage_ui.password_dialog import PasswordDialog
|
||||
|
||||
|
||||
class AdvancedSettingsFrame(tk.Toplevel):
|
||||
def __init__(self, master, config_manager, app_instance, **kwargs):
|
||||
class AdvancedSettingsFrame(ttk.Frame):
|
||||
def __init__(self, master, config_manager, app_instance, show_main_settings_callback, **kwargs):
|
||||
super().__init__(master, **kwargs)
|
||||
|
||||
self.title(Msg.STR["advanced_settings_title"])
|
||||
self.show_main_settings_callback = show_main_settings_callback
|
||||
self.config_manager = config_manager
|
||||
self.app_instance = app_instance
|
||||
self.current_view_index = 0
|
||||
@@ -171,7 +171,7 @@ class AdvancedSettingsFrame(tk.Toplevel):
|
||||
|
||||
ttk.Button(button_frame, text=Msg.STR["apply"], command=self._apply_changes).pack(
|
||||
side=tk.LEFT, padx=5)
|
||||
ttk.Button(button_frame, text=Msg.STR["cancel"], command=self.destroy).pack(
|
||||
ttk.Button(button_frame, text=Msg.STR["cancel"], command=self._cancel_changes).pack(
|
||||
side=tk.LEFT, padx=5)
|
||||
|
||||
# Initial packing of frames (all hidden except the first one by _switch_view)
|
||||
@@ -472,7 +472,10 @@ class AdvancedSettingsFrame(tk.Toplevel):
|
||||
for item in self.manual_excludes_listbox.get(0, tk.END):
|
||||
f.write(f"{item}\n")
|
||||
|
||||
self.destroy()
|
||||
# Instead of destroying the Toplevel, hide this frame and show main settings
|
||||
self.pack_forget()
|
||||
if self.show_main_settings_callback:
|
||||
self.show_main_settings_callback()
|
||||
|
||||
if self.app_instance:
|
||||
current_source = self.app_instance.left_canvas_data.get('folder')
|
||||
@@ -480,6 +483,12 @@ class AdvancedSettingsFrame(tk.Toplevel):
|
||||
self.app_instance.actions.on_sidebar_button_click(
|
||||
current_source)
|
||||
|
||||
def _cancel_changes(self):
|
||||
# Hide this frame and show main settings without applying changes
|
||||
self.pack_forget()
|
||||
if self.show_main_settings_callback:
|
||||
self.show_main_settings_callback()
|
||||
|
||||
def _load_exclude_patterns(self):
|
||||
generated_patterns = []
|
||||
if AppConfig.GENERATED_EXCLUDE_LIST_PATH.exists():
|
||||
|
@@ -20,12 +20,12 @@ class SettingsFrame(ttk.Frame):
|
||||
self.user_exclude_patterns = []
|
||||
|
||||
# --- Container for Treeviews ---
|
||||
trees_container = ttk.Frame(self)
|
||||
trees_container.pack(fill=tk.BOTH, expand=True, padx=10, pady=10)
|
||||
self.trees_container = ttk.Frame(self)
|
||||
self.trees_container.pack(fill=tk.BOTH, expand=True, padx=10, pady=10)
|
||||
|
||||
# --- Treeview for file/folder exclusion ---
|
||||
self.tree_frame = ttk.LabelFrame(
|
||||
trees_container, text=Msg.STR["user_defined_folder_settings"], padding=10)
|
||||
self.trees_container, text=Msg.STR["user_defined_folder_settings"], padding=10)
|
||||
self.tree_frame.pack(fill=tk.BOTH, expand=True)
|
||||
|
||||
columns = ("included", "name", "path")
|
||||
@@ -45,7 +45,7 @@ class SettingsFrame(ttk.Frame):
|
||||
|
||||
# --- Treeview for hidden files (initially hidden) ---
|
||||
self.hidden_tree_frame = ttk.LabelFrame(
|
||||
trees_container, text=Msg.STR["hidden_files_and_folders"], padding=10)
|
||||
self.trees_container, text=Msg.STR["hidden_files_and_folders"], padding=10)
|
||||
self.hidden_tree = ttk.Treeview(
|
||||
self.hidden_tree_frame, columns=columns, show="headings")
|
||||
self.hidden_tree.heading("included", text=Msg.STR["in_backup"])
|
||||
@@ -62,11 +62,11 @@ class SettingsFrame(ttk.Frame):
|
||||
self.hidden_tree_frame.pack_forget() # Initially hidden
|
||||
|
||||
# --- Action Buttons ---
|
||||
button_frame = ttk.Frame(self)
|
||||
button_frame.pack(fill=tk.X, padx=10, pady=10)
|
||||
self.button_frame = ttk.Frame(self)
|
||||
self.button_frame.pack(fill=tk.X, padx=10, pady=10)
|
||||
|
||||
self.show_hidden_button = ttk.Button(
|
||||
button_frame, command=self._toggle_hidden_files_view, style="TButton.Borderless.Round")
|
||||
self.button_frame, command=self._toggle_hidden_files_view, style="TButton.Borderless.Round")
|
||||
self.show_hidden_button.pack(side=tk.LEFT)
|
||||
self.unhide_icon = self.master.master.master.image_manager.get_icon(
|
||||
'hide')
|
||||
@@ -75,26 +75,27 @@ class SettingsFrame(ttk.Frame):
|
||||
self.show_hidden_button.config(image=self.unhide_icon)
|
||||
|
||||
add_to_exclude_button = ttk.Button(
|
||||
button_frame, text=Msg.STR["add_to_exclude_list"], command=self._add_to_exclude_list)
|
||||
self.button_frame, text=Msg.STR["add_to_exclude_list"], command=self._add_to_exclude_list)
|
||||
add_to_exclude_button.pack(side=tk.LEFT, padx=5)
|
||||
|
||||
apply_button = ttk.Button(
|
||||
button_frame, text=Msg.STR["apply"], command=self._apply_changes)
|
||||
self.button_frame, text=Msg.STR["apply"], command=self._apply_changes)
|
||||
apply_button.pack(side=tk.LEFT, padx=5)
|
||||
|
||||
cancel_button = ttk.Button(button_frame, text=Msg.STR["cancel"],
|
||||
cancel_button = ttk.Button(self.button_frame, text=Msg.STR["cancel"],
|
||||
command=lambda: self.navigation.toggle_mode("backup", 0))
|
||||
cancel_button.pack(side=tk.LEFT, padx=5)
|
||||
|
||||
advanced_button = ttk.Button(
|
||||
button_frame, text=Msg.STR["advanced"], command=self._open_advanced_settings)
|
||||
self.button_frame, text=Msg.STR["advanced"], command=self._open_advanced_settings)
|
||||
advanced_button.pack(side=tk.LEFT, padx=5)
|
||||
|
||||
reset_button = ttk.Button(
|
||||
button_frame, text=Msg.STR["default_settings"], command=self.actions.reset_to_default_settings)
|
||||
self.button_frame, text=Msg.STR["default_settings"], command=self.actions.reset_to_default_settings)
|
||||
reset_button.pack(side=tk.RIGHT)
|
||||
|
||||
self.hidden_files_visible = False
|
||||
self.advanced_settings_frame_instance = None # To hold the instance of AdvancedSettingsFrame
|
||||
|
||||
def _add_to_exclude_list(self) -> bool:
|
||||
result = MessageDialog("ask", Msg.STR["exclude_dialog_text"], title=Msg.STR["add_to_exclude_list"], buttons=[
|
||||
@@ -244,12 +245,30 @@ class SettingsFrame(ttk.Frame):
|
||||
self._load_hidden_files()
|
||||
|
||||
def _open_advanced_settings(self):
|
||||
advanced_settings_window = AdvancedSettingsFrame(
|
||||
self.master,
|
||||
config_manager=self.master.master.master.config_manager,
|
||||
app_instance=self.master.master.master
|
||||
)
|
||||
advanced_settings_window.grab_set()
|
||||
# Hide main settings UI elements
|
||||
self.trees_container.pack_forget() # Hide the container for treeviews
|
||||
self.button_frame.pack_forget()
|
||||
|
||||
# Create AdvancedSettingsFrame if not already created
|
||||
if not self.advanced_settings_frame_instance:
|
||||
self.advanced_settings_frame_instance = AdvancedSettingsFrame(
|
||||
self, # Parent is now self (SettingsFrame)
|
||||
config_manager=self.master.master.master.config_manager,
|
||||
app_instance=self.master.master.master,
|
||||
show_main_settings_callback=self._show_main_settings
|
||||
)
|
||||
|
||||
# Pack the AdvancedSettingsFrame
|
||||
self.advanced_settings_frame_instance.pack(fill=tk.BOTH, expand=True)
|
||||
|
||||
def _show_main_settings(self):
|
||||
# Hide advanced settings frame
|
||||
if self.advanced_settings_frame_instance:
|
||||
self.advanced_settings_frame_instance.pack_forget()
|
||||
|
||||
# Show main settings UI elements
|
||||
self.trees_container.pack(fill=tk.BOTH, expand=True, padx=10, pady=10) # Re-pack the container for treeviews
|
||||
self.button_frame.pack(fill=tk.X, padx=10, pady=10) # Re-pack the button frame
|
||||
|
||||
def _toggle_hidden_files_view(self):
|
||||
self.hidden_files_visible = not self.hidden_files_visible
|
||||
|
Reference in New Issue
Block a user