commit 74

This commit is contained in:
2025-08-08 19:36:42 +02:00
parent 43ac132ec8
commit 482eaae591
5 changed files with 94 additions and 11 deletions

View File

@@ -251,10 +251,6 @@ class CustomFileDialog(tk.Toplevel):
self.widget_manager.path_entry.bind(
"<Return>", self.handle_path_entry_return)
# Bind focus events to show the static animation
self.widget_manager.path_entry.bind("<FocusIn>", self.show_search_ready)
self.widget_manager.filename_entry.bind("<FocusIn>", self.show_search_ready)
self.bind("<Key>", self.show_search_bar)
# Bind the delete key only in "save" mode
@@ -283,7 +279,7 @@ class CustomFileDialog(tk.Toplevel):
# If not animating, activate search entry
self.widget_manager.filename_entry.focus_set()
self.search_mode = True # Ensure search mode is active
self.widget_manager.search_animation.show_full_circle()
self.widget_manager.search_animation.start(pulse=True)
self.widget_manager.filename_entry.bind("<Return>", self.execute_search)
self.widget_manager.filename_entry.bind("<Escape>", self.hide_search_bar)
@@ -306,6 +302,8 @@ class CustomFileDialog(tk.Toplevel):
self.widget_manager.filename_entry.unbind("<Escape>")
if self.dialog_mode == "save":
self.widget_manager.filename_entry.bind("<Return>", lambda e: self.on_save())
else:
self.widget_manager.filename_entry.bind("<Return>", self.execute_search)
self.populate_files()
self.widget_manager.search_animation.hide()
@@ -317,7 +315,7 @@ class CustomFileDialog(tk.Toplevel):
self.hide_search_bar()
return
self.widget_manager.search_status_label.config(text=f"Suche nach '{search_term}'...")
self.widget_manager.search_animation.start()
self.widget_manager.search_animation.start(pulse=False)
self.update_idletasks()
self.search_thread = threading.Thread(target=self._perform_search_in_thread, args=(search_term,))
self.search_thread.start()
@@ -466,6 +464,8 @@ class CustomFileDialog(tk.Toplevel):
)
self.widget_manager.search_animation.grid(row=0, column=0, sticky='w', padx=(0, 5), pady=(4,0))
self.widget_manager.search_animation.bind("<Button-1>", lambda e: self.activate_search())
self.widget_manager.search_animation.bind("<Enter>", self._show_tooltip)
self.widget_manager.search_animation.bind("<Leave>", self._hide_tooltip)
if is_running:
self.widget_manager.search_animation.start()
@@ -1124,6 +1124,7 @@ class CustomFileDialog(tk.Toplevel):
self.selected_item_frame = item_frame
self.selected_file = path
self.update_status_bar(path) # Pass selected path
self.show_search_ready()
if not os.path.isdir(path):
self.widget_manager.filename_entry.delete(0, tk.END)
self.widget_manager.filename_entry.insert(0, os.path.basename(path))
@@ -1136,6 +1137,7 @@ class CustomFileDialog(tk.Toplevel):
path = os.path.join(self.current_dir, item_text)
self.selected_file = path
self.update_status_bar(path) # Pass selected path
self.show_search_ready()
if not os.path.isdir(self.selected_file):
self.widget_manager.filename_entry.delete(0, tk.END)
self.widget_manager.filename_entry.insert(0, item_text)
@@ -1417,6 +1419,22 @@ class CustomFileDialog(tk.Toplevel):
self.navigate_to(directory)
self.after(100, lambda: self._select_file_in_view(filename))
def _show_tooltip(self, event):
if hasattr(self, 'tooltip_window') and self.tooltip_window.winfo_exists():
return
x = self.widget_manager.search_animation.winfo_rootx() + 25
y = self.widget_manager.search_animation.winfo_rooty() + 25
self.tooltip_window = tk.Toplevel(self)
self.tooltip_window.wm_overrideredirect(True)
self.tooltip_window.wm_geometry(f"+{x}+{y}")
label = tk.Label(self.tooltip_window, text="Klicken, um die Suche zu aktivieren",
background="#333333", foreground="#FFFFFF", relief="solid", borderwidth=1)
label.pack()
def _hide_tooltip(self, event):
if hasattr(self, 'tooltip_window') and self.tooltip_window.winfo_exists():
self.tooltip_window.destroy()
def start_rename(self, item_widget, item_path):
if self.view_mode.get() == "icons":
self._start_rename_icon_view(item_widget, item_path)