From 0d390f79b462889e2a7d0c985030b65b70693aee Mon Sep 17 00:00:00 2001 From: trnq1ll0 Date: Wed, 10 Jun 2026 16:05:19 +0200 Subject: [PATCH] add: open generated files an folder on click --- app.py | 45 ++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 42 insertions(+), 3 deletions(-) diff --git a/app.py b/app.py index c73f0a3..5d82610 100644 --- a/app.py +++ b/app.py @@ -1,5 +1,7 @@ """Tätigkeitsnachweis-Generator – Streamlit App.""" +import os +import subprocess import sys from pathlib import Path @@ -237,6 +239,18 @@ else: if not st.session_state.input_validated: st.info("Bitte zuerst eine gültige Input-Datei auswählen.") +# --- Hilfsfunktion zum Öffnen von Dateien/Ordnern --- +def open_path(path_str: str): + """Öffnet eine Datei mit dem Standardprogramm oder einen Ordner im Dateimanager. + Funktioniert plattformübergreifend: macOS, Windows, Linux.""" + if sys.platform == "win32": + os.startfile(path_str) + elif sys.platform == "darwin": + subprocess.run(["open", path_str]) + else: + subprocess.run(["xdg-open", path_str]) + + # --- Generate Button --- st.divider() gen_col1, gen_col2, gen_col3 = st.columns([1, 1, 2]) @@ -267,8 +281,33 @@ if generate_clicked: output_dir=output_dir, filename_pattern=app_config.filename_pattern, ) - st.success(f"✅ {len(generated)} Tätigkeitsnachweise erstellt:") - for fpath in generated: - st.text(f"📄 {fpath.name}") + st.session_state.generated_files = generated except Exception as e: st.error(f"Fehler bei der Generierung: {e}") + +# --- Generierte Dateien anzeigen (aus Session State, übersteht Reruns) --- +if "generated_files" in st.session_state and st.session_state.generated_files: + generated = st.session_state.generated_files + st.success(f"✅ {len(generated)} Tätigkeitsnachweise erstellt:") + for i, fpath in enumerate(generated): + col_file, col_open, col_folder = st.columns([0.78, 0.11, 0.11]) + with col_file: + st.markdown(f"📄 `{fpath.name}`") + with col_open: + st.button( + "🔗 Öffnen", + key=f"open_file_{i}", + on_click=open_path, + args=(str(fpath),), + help="Datei mit Standardprogramm öffnen", + use_container_width=True, + ) + with col_folder: + st.button( + "📂", + key=f"open_folder_{i}", + on_click=open_path, + args=(str(fpath.parent),), + help="Ordner im Finder öffnen", + use_container_width=True, + )