add: open generated files an folder on click
This commit is contained in:
1 parent
f4afd4b2e5
commit
0d390f79b4
1 file changed
+42
-3
@@ -1,5 +1,7 @@
|
|||||||
"""Tätigkeitsnachweis-Generator – Streamlit App."""
|
"""Tätigkeitsnachweis-Generator – Streamlit App."""
|
||||||
|
|
||||||
|
import os
|
||||||
|
import subprocess
|
||||||
import sys
|
import sys
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
@@ -237,6 +239,18 @@ else:
|
|||||||
if not st.session_state.input_validated:
|
if not st.session_state.input_validated:
|
||||||
st.info("Bitte zuerst eine gültige Input-Datei auswählen.")
|
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 ---
|
# --- Generate Button ---
|
||||||
st.divider()
|
st.divider()
|
||||||
gen_col1, gen_col2, gen_col3 = st.columns([1, 1, 2])
|
gen_col1, gen_col2, gen_col3 = st.columns([1, 1, 2])
|
||||||
@@ -267,8 +281,33 @@ if generate_clicked:
|
|||||||
output_dir=output_dir,
|
output_dir=output_dir,
|
||||||
filename_pattern=app_config.filename_pattern,
|
filename_pattern=app_config.filename_pattern,
|
||||||
)
|
)
|
||||||
st.success(f"✅ {len(generated)} Tätigkeitsnachweise erstellt:")
|
st.session_state.generated_files = generated
|
||||||
for fpath in generated:
|
|
||||||
st.text(f"📄 {fpath.name}")
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
st.error(f"Fehler bei der Generierung: {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,
|
||||||
|
)
|
||||||
Reference in new issue
Block a user