From 8536e2c46300ccece770ded486f7d5d3faa6d27e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?D=C3=A9sir=C3=A9=20Werner=20Menrath?= Date: Thu, 31 Jul 2025 11:01:22 +0200 Subject: [PATCH] commit 33 --- .../custom_file_dialog.cpython-312.pyc | Bin 54212 -> 56922 bytes custom_file_dialog.py | 48 ++++++++++++++++-- mainwindow.py | 2 +- 3 files changed, 45 insertions(+), 5 deletions(-) diff --git a/__pycache__/custom_file_dialog.cpython-312.pyc b/__pycache__/custom_file_dialog.cpython-312.pyc index 110370f0033486774977d4a0f450213c9ebbe29c..93f80c2c6b1985b313d9ab83dd51e80083393274 100644 GIT binary patch delta 9033 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 Z!bcw}&R7b|-oYQZYv)~mmk1ZU{||!&7$pDz diff --git a/custom_file_dialog.py b/custom_file_dialog.py index 83a8b5c..d2ef961 100644 --- a/custom_file_dialog.py +++ b/custom_file_dialog.py @@ -238,6 +238,7 @@ class CustomFileDialog(tk.Toplevel): ('selected', "black" if not self.is_dark else "white")]) style.configure("TButton.Borderless.Round", anchor="w") + style.configure("Small.Horizontal.TProgressbar", thickness=8) def create_widgets(self): # Main container @@ -341,12 +342,44 @@ class CustomFileDialog(tk.Toplevel): row=1, column=0, sticky="ew", padx=20, pady=15) # Mounted devices - mounted_devices_frame = ttk.Frame( - sidebar_frame, style="Sidebar.TFrame") - mounted_devices_frame.grid(row=2, column=0, sticky="nsew", padx=10) + devices_outer_frame = ttk.Frame(sidebar_frame, style="Sidebar.TFrame") + devices_outer_frame.grid(row=2, column=0, sticky="nsw", padx=10) + devices_outer_frame.grid_rowconfigure(0, weight=1) + devices_outer_frame.grid_columnconfigure(0, weight=1) + + devices_canvas = tk.Canvas(devices_outer_frame, highlightthickness=0, bg=self.sidebar_color) + devices_scrollbar = ttk.Scrollbar(devices_outer_frame, orient="vertical", command=devices_canvas.yview) + devices_canvas.configure(yscrollcommand=devices_scrollbar.set) + + mounted_devices_frame = ttk.Frame(devices_canvas, style="Sidebar.TFrame") + canvas_window = devices_canvas.create_window((0, 0), window=mounted_devices_frame, anchor="nw") + + def on_devices_configure(event): + devices_canvas.configure(scrollregion=devices_canvas.bbox("all")) + devices_canvas.itemconfig(canvas_window, width=event.width) + + mounted_devices_frame.bind("", on_devices_configure) + + def _on_devices_mouse_wheel(event): + if event.num == 4: delta = -1 + elif event.num == 5: delta = 1 + else: delta = -1 * int(event.delta / 120) + devices_canvas.yview_scroll(delta, "units") + + def show_scrollbar(event): + devices_scrollbar.place(relx=1.0, rely=0, relheight=1.0, anchor='ne') + + def hide_scrollbar(event): + devices_scrollbar.place_forget() + + devices_canvas.grid(row=0, column=0, sticky='nsew') + devices_outer_frame.bind("", show_scrollbar) + devices_outer_frame.bind("", hide_scrollbar) + ttk.Label(mounted_devices_frame, text="Geräte:", background=self.sidebar_color, foreground=self.color_foreground).pack(fill="x", padx=10, pady=(5, 0)) + device_widgets = [] for device_name, mount_point, removable in self._get_mounted_devices(): icon = self.icons['usb_small'] if removable else self.icons['device_small'] button_text = f" {device_name}" @@ -356,16 +389,23 @@ class CustomFileDialog(tk.Toplevel): btn = ttk.Button(mounted_devices_frame, text=button_text, image=icon, compound="left", command=lambda p=mount_point: self.navigate_to(p), style="Dark.TButton.Borderless") btn.pack(fill="x", pady=1) + device_widgets.append(btn) try: total, used, _ = shutil.disk_usage(mount_point) progress_bar = ttk.Progressbar( mounted_devices_frame, orient="horizontal", length=100, mode="determinate", style='Small.Horizontal.TProgressbar') progress_bar.pack(fill="x", pady=(2, 8), padx=25) progress_bar['value'] = (used / total) * 100 + device_widgets.append(progress_bar) except (FileNotFoundError, PermissionError): - # In case of errors (e.g., unreadable drive), just skip the progress bar pass + all_widgets_to_bind = [devices_canvas, mounted_devices_frame] + device_widgets + for widget in all_widgets_to_bind: + widget.bind("", _on_devices_mouse_wheel) + widget.bind("", _on_devices_mouse_wheel) + widget.bind("", _on_devices_mouse_wheel) + tk.Frame(sidebar_frame, height=1, bg=separator_color).grid( row=3, column=0, sticky="ew", padx=20, pady=15) diff --git a/mainwindow.py b/mainwindow.py index 0610908..1bd756d 100644 --- a/mainwindow.py +++ b/mainwindow.py @@ -58,7 +58,7 @@ if __name__ == "__main__": style = ttk.Style(root) root.tk.call('source', f"{theme_path}/water.tcl") try: - root.tk.call('set_theme', 'light') + root.tk.call('set_theme', 'dark') except tk.TclError: pass root.mainloop()