Bottom Buttons UI ok
This commit is contained in:
Binary file not shown.
Binary file not shown.
@@ -402,12 +402,12 @@ class WidgetManager:
|
||||
self.settings_button = ttk.Button(bottom_controls_frame, image=self.dialog.icon_manager.get_icon(
|
||||
'settings-2_small'), command=self.dialog.open_settings_dialog, style="Bottom.TButton.Borderless.Round")
|
||||
self.settings_button.grid(
|
||||
row=0, column=3, sticky="ne", padx=(0, 10), pady=(5, 0))
|
||||
row=0, column=3, sticky="ne", padx=(0, 5), pady=(2, 0))
|
||||
Tooltip(self.settings_button, "Einstellungen")
|
||||
|
||||
if self.dialog.dialog_mode == "save":
|
||||
action_buttons_frame.grid_columnconfigure(0, weight=1)
|
||||
self.filename_entry = ttk.Entry(action_buttons_frame)
|
||||
self.filename_entry = ttk.Entry(action_buttons_frame, width=75)
|
||||
save_button = ttk.Button(
|
||||
action_buttons_frame, text="Speichern", command=self.dialog.on_save)
|
||||
cancel_button = ttk.Button(
|
||||
@@ -417,21 +417,21 @@ class WidgetManager:
|
||||
|
||||
if button_box_pos == 'left':
|
||||
self.filename_entry.grid(
|
||||
row=0, column=0, sticky="ew", padx=(10, 5))
|
||||
save_button.grid(row=0, column=1, sticky="e", padx=(0, 10))
|
||||
row=0, column=1, sticky="ew", padx=(10, 0))
|
||||
save_button.grid(row=0, column=0, sticky="e", padx=(10, 5))
|
||||
cancel_button.grid(row=1, column=0, sticky="w",
|
||||
padx=(10, 5), pady=(5, 0))
|
||||
padx=(10, 0), pady=(10, 0))
|
||||
self.filter_combobox.grid(
|
||||
row=1, column=1, sticky="w", padx=(0, 10), pady=(5, 0))
|
||||
row=1, column=1, sticky="w", padx=(10, 0), pady=(10, 0))
|
||||
else: # right
|
||||
action_buttons_frame.grid_columnconfigure(1, weight=1)
|
||||
save_button.grid(row=0, column=0, sticky="w", padx=(10, 5))
|
||||
save_button.grid(row=0, column=1, sticky="w", padx=(5, 5))
|
||||
self.filename_entry.grid(
|
||||
row=0, column=1, sticky="ew", padx=(0, 10))
|
||||
row=0, column=0, sticky="ew", padx=(0, 10))
|
||||
self.filter_combobox.grid(
|
||||
row=1, column=0, sticky="e", padx=(10, 5), pady=(5, 0))
|
||||
row=1, column=0, sticky="e", padx=(0, 10), pady=(10, 0))
|
||||
cancel_button.grid(row=1, column=1, sticky="e",
|
||||
padx=(0, 10), pady=(5, 0))
|
||||
padx=(0, 5), pady=(10, 0))
|
||||
|
||||
self.filter_combobox.bind(
|
||||
"<<ComboboxSelected>>", self.dialog.on_filter_change)
|
||||
@@ -446,17 +446,17 @@ class WidgetManager:
|
||||
ft[0] for ft in self.dialog.filetypes], state="readonly")
|
||||
|
||||
if button_box_pos == 'left':
|
||||
open_button.grid(row=0, column=0, sticky="w", padx=(10, 5))
|
||||
open_button.grid(row=0, column=0, sticky="e", padx=(10, 5))
|
||||
cancel_button.grid(row=1, column=0, sticky="w",
|
||||
padx=(10, 5), pady=(5, 0))
|
||||
padx=(10, 0), pady=(10, 0))
|
||||
self.filter_combobox.grid(
|
||||
row=1, column=1, sticky="w", padx=(0, 10), pady=(5, 0))
|
||||
row=1, column=1, sticky="w", padx=(10, 0), pady=(10, 0))
|
||||
else: # right
|
||||
open_button.grid(row=0, column=1, sticky="e", padx=(10, 5))
|
||||
open_button.grid(row=0, column=1, sticky="w", padx=(5, 5))
|
||||
cancel_button.grid(row=1, column=1, sticky="e",
|
||||
padx=(10, 5), pady=(5, 0))
|
||||
padx=(0, 5), pady=(10, 0))
|
||||
self.filter_combobox.grid(
|
||||
row=1, column=0, sticky="w", padx=(0, 0), pady=(5, 0))
|
||||
row=1, column=0, sticky="e", padx=(0, 5), pady=(10, 0))
|
||||
|
||||
self.filter_combobox.bind(
|
||||
"<<ComboboxSelected>>", self.dialog.on_filter_change)
|
||||
|
@@ -21,47 +21,65 @@ class SettingsDialog(tk.Toplevel):
|
||||
self.settings = CfdConfigManager.load()
|
||||
|
||||
# Variables
|
||||
self.search_icon_pos = tk.StringVar(value=self.settings.get("search_icon_pos", "right"))
|
||||
self.button_box_pos = tk.StringVar(value=self.settings.get("button_box_pos", "left"))
|
||||
self.window_size_preset = tk.StringVar(value=self.settings.get("window_size_preset", "1050x850"))
|
||||
self.default_view_mode = tk.StringVar(value=self.settings.get("default_view_mode", "icons"))
|
||||
self.search_icon_pos = tk.StringVar(
|
||||
value=self.settings.get("search_icon_pos", "right"))
|
||||
self.button_box_pos = tk.StringVar(
|
||||
value=self.settings.get("button_box_pos", "left"))
|
||||
self.window_size_preset = tk.StringVar(
|
||||
value=self.settings.get("window_size_preset", "1050x850"))
|
||||
self.default_view_mode = tk.StringVar(
|
||||
value=self.settings.get("default_view_mode", "icons"))
|
||||
|
||||
# --- UI Elements ---
|
||||
main_frame = ttk.Frame(self, padding=10)
|
||||
main_frame.pack(fill="both", expand=True)
|
||||
|
||||
# Search Icon Position
|
||||
search_frame = ttk.LabelFrame(main_frame, text="Position der Such-Lupe", padding=10)
|
||||
search_frame = ttk.LabelFrame(
|
||||
main_frame, text="Position der Such-Lupe", padding=10)
|
||||
search_frame.pack(fill="x", pady=5)
|
||||
ttk.Radiobutton(search_frame, text="Links", variable=self.search_icon_pos, value="left").pack(side="left", padx=5)
|
||||
ttk.Radiobutton(search_frame, text="Rechts", variable=self.search_icon_pos, value="right").pack(side="left", padx=5)
|
||||
ttk.Radiobutton(search_frame, text="Links", variable=self.search_icon_pos,
|
||||
value="left").pack(side="left", padx=5)
|
||||
ttk.Radiobutton(search_frame, text="Rechts", variable=self.search_icon_pos,
|
||||
value="right").pack(side="left", padx=5)
|
||||
|
||||
# Button Box Position
|
||||
button_box_frame = ttk.LabelFrame(main_frame, text="Position der Dialog-Buttons", padding=10)
|
||||
button_box_frame = ttk.LabelFrame(
|
||||
main_frame, text="Position der Dialog-Buttons", padding=10)
|
||||
button_box_frame.pack(fill="x", pady=5)
|
||||
ttk.Radiobutton(button_box_frame, text="Links", variable=self.button_box_pos, value="left").pack(side="left", padx=5)
|
||||
ttk.Radiobutton(button_box_frame, text="Rechts", variable=self.button_box_pos, value="right").pack(side="left", padx=5)
|
||||
ttk.Radiobutton(button_box_frame, text="Links",
|
||||
variable=self.button_box_pos, value="left").pack(side="left", padx=5)
|
||||
ttk.Radiobutton(button_box_frame, text="Rechts",
|
||||
variable=self.button_box_pos, value="right").pack(side="left", padx=5)
|
||||
|
||||
# Window Size
|
||||
size_frame = ttk.LabelFrame(main_frame, text="Fenstergröße", padding=10)
|
||||
size_frame = ttk.LabelFrame(
|
||||
main_frame, text="Fenstergröße", padding=10)
|
||||
size_frame.pack(fill="x", pady=5)
|
||||
sizes = ["1050x850", "850x650", "650x450"]
|
||||
size_combo = ttk.Combobox(size_frame, textvariable=self.window_size_preset, values=sizes, state="readonly")
|
||||
size_combo = ttk.Combobox(
|
||||
size_frame, textvariable=self.window_size_preset, values=sizes, state="readonly")
|
||||
size_combo.pack(fill="x")
|
||||
|
||||
# Default View Mode
|
||||
view_mode_frame = ttk.LabelFrame(main_frame, text="Standardansicht", padding=10)
|
||||
view_mode_frame = ttk.LabelFrame(
|
||||
main_frame, text="Standardansicht", padding=10)
|
||||
view_mode_frame.pack(fill="x", pady=5)
|
||||
ttk.Radiobutton(view_mode_frame, text="Kacheln", variable=self.default_view_mode, value="icons").pack(side="left", padx=5)
|
||||
ttk.Radiobutton(view_mode_frame, text="Liste", variable=self.default_view_mode, value="list").pack(side="left", padx=5)
|
||||
ttk.Radiobutton(view_mode_frame, text="Kacheln",
|
||||
variable=self.default_view_mode, value="icons").pack(side="left", padx=5)
|
||||
ttk.Radiobutton(view_mode_frame, text="Liste",
|
||||
variable=self.default_view_mode, value="list").pack(side="left", padx=5)
|
||||
|
||||
# --- Action Buttons ---
|
||||
button_frame = ttk.Frame(main_frame)
|
||||
button_frame.pack(fill="x", pady=(10, 0))
|
||||
|
||||
ttk.Button(button_frame, text="Auf Standard zurücksetzen", command=self.reset_to_defaults).pack(side="left")
|
||||
ttk.Button(button_frame, text="Speichern", command=self.save_settings).pack(side="right", padx=5)
|
||||
ttk.Button(button_frame, text="Abbrechen", command=self.destroy).pack(side="right")
|
||||
|
||||
ttk.Button(button_frame, text="Auf Standard zurücksetzen",
|
||||
command=self.reset_to_defaults).pack(side="left", padx=5)
|
||||
ttk.Button(button_frame, text="Speichern",
|
||||
command=self.save_settings).pack(side="right", padx=5)
|
||||
ttk.Button(button_frame, text="Abbrechen",
|
||||
command=self.destroy).pack(side="right")
|
||||
|
||||
def save_settings(self):
|
||||
new_settings = {
|
||||
@@ -88,17 +106,19 @@ class CustomFileDialog(tk.Toplevel):
|
||||
|
||||
self.my_tool_tip = None
|
||||
self.dialog_mode = dialog_mode
|
||||
|
||||
|
||||
self.load_settings()
|
||||
|
||||
# Set the window size
|
||||
self.geometry(self.settings["window_size_preset"])
|
||||
min_width, min_height = self.get_min_size_from_preset(self.settings["window_size_preset"])
|
||||
min_width, min_height = self.get_min_size_from_preset(
|
||||
self.settings["window_size_preset"])
|
||||
self.minsize(min_width, min_height)
|
||||
|
||||
|
||||
self.title(title)
|
||||
self.image = IconManager()
|
||||
width, height = map(int, self.settings["window_size_preset"].split('x'))
|
||||
width, height = map(
|
||||
int, self.settings["window_size_preset"].split('x'))
|
||||
LxTools.center_window_cross_platform(self, width, height)
|
||||
self.parent = parent
|
||||
self.transient(parent)
|
||||
@@ -111,7 +131,8 @@ class CustomFileDialog(tk.Toplevel):
|
||||
self.current_filter_pattern = self.filetypes[0][1]
|
||||
self.history = []
|
||||
self.history_pos = -1
|
||||
self.view_mode = tk.StringVar(value=self.settings.get("default_view_mode", "icons"))
|
||||
self.view_mode = tk.StringVar(
|
||||
value=self.settings.get("default_view_mode", "icons"))
|
||||
self.show_hidden_files = tk.BooleanVar(value=False)
|
||||
self.resize_job = None
|
||||
self.last_width = 0
|
||||
@@ -141,18 +162,20 @@ class CustomFileDialog(tk.Toplevel):
|
||||
|
||||
def reload_config_and_rebuild_ui(self):
|
||||
self.load_settings()
|
||||
|
||||
|
||||
# Update geometry and minsize
|
||||
self.geometry(self.settings["window_size_preset"])
|
||||
min_width, min_height = self.get_min_size_from_preset(self.settings["window_size_preset"])
|
||||
min_width, min_height = self.get_min_size_from_preset(
|
||||
self.settings["window_size_preset"])
|
||||
self.minsize(min_width, min_height)
|
||||
width, height = map(int, self.settings["window_size_preset"].split('x'))
|
||||
width, height = map(
|
||||
int, self.settings["window_size_preset"].split('x'))
|
||||
LxTools.center_window_cross_platform(self, width, height)
|
||||
|
||||
# Re-create widgets
|
||||
for widget in self.winfo_children():
|
||||
widget.destroy()
|
||||
|
||||
|
||||
self.style_manager = StyleManager(self)
|
||||
self.widget_manager = WidgetManager(self, self.settings)
|
||||
self._update_view_mode_buttons()
|
||||
@@ -180,7 +203,6 @@ class CustomFileDialog(tk.Toplevel):
|
||||
return self.icon_manager.get_icon(f'iso_{size}')
|
||||
return self.icon_manager.get_icon(f'file_{size}')
|
||||
|
||||
|
||||
def toggle_hidden_files(self):
|
||||
self.show_hidden_files.set(not self.show_hidden_files.get())
|
||||
if self.show_hidden_files.get():
|
||||
@@ -250,7 +272,8 @@ class CustomFileDialog(tk.Toplevel):
|
||||
self.widget_manager.path_entry.delete(0, tk.END)
|
||||
self.widget_manager.path_entry.insert(0, "Suchbegriff eingeben...")
|
||||
self.widget_manager.path_entry.select_range(0, tk.END)
|
||||
self.after(50, lambda: self.widget_manager.path_entry.focus_set()) # Set focus reliably
|
||||
# Set focus reliably
|
||||
self.after(50, lambda: self.widget_manager.path_entry.focus_set())
|
||||
self.widget_manager.path_entry.bind(
|
||||
"<Return>", self.execute_search)
|
||||
self.widget_manager.path_entry.bind(
|
||||
@@ -287,11 +310,15 @@ class CustomFileDialog(tk.Toplevel):
|
||||
def _update_view_mode_buttons(self):
|
||||
"""Set the visual state of the view mode buttons."""
|
||||
if self.view_mode.get() == "icons":
|
||||
self.widget_manager.icon_view_button.configure(style="Header.TButton.Active.Round")
|
||||
self.widget_manager.list_view_button.configure(style="Header.TButton.Borderless.Round")
|
||||
self.widget_manager.icon_view_button.configure(
|
||||
style="Header.TButton.Active.Round")
|
||||
self.widget_manager.list_view_button.configure(
|
||||
style="Header.TButton.Borderless.Round")
|
||||
else:
|
||||
self.widget_manager.list_view_button.configure(style="Header.TButton.Active.Round")
|
||||
self.widget_manager.icon_view_button.configure(style="Header.TButton.Borderless.Round")
|
||||
self.widget_manager.list_view_button.configure(
|
||||
style="Header.TButton.Active.Round")
|
||||
self.widget_manager.icon_view_button.configure(
|
||||
style="Header.TButton.Borderless.Round")
|
||||
|
||||
def set_icon_view(self):
|
||||
"""Set icon view and update button styles"""
|
||||
|
@@ -55,7 +55,7 @@ if __name__ == "__main__":
|
||||
style = ttk.Style(root)
|
||||
root.tk.call('source', f"{theme_path}/water.tcl")
|
||||
try:
|
||||
root.tk.call('set_theme', 'dark')
|
||||
root.tk.call('set_theme', 'light')
|
||||
except tk.TclError:
|
||||
pass
|
||||
root.mainloop()
|
||||
|
Reference in New Issue
Block a user