Source code for frontend.ui_dialogs.save_data_dialog

"""Save data dialog for the data view window."""

from pathlib import Path
from typing import Callable

import pandas as pd
from tkinter import Toplevel, filedialog, messagebox

from i18n import t
from loaders import get_default_save_directory, save_dataframe


[docs] def open_save_dialog( parent: Toplevel, data: pd.DataFrame, on_focus_data: Callable[[], None], ) -> None: """Open save file dialog for the current data.""" initial_dir = get_default_save_directory() path = filedialog.asksaveasfilename( parent=parent, initialdir=initial_dir, defaultextension=".csv", filetypes=[ (t("data_analysis.filetype_csv"), "*.csv"), (t("data_analysis.filetype_txt"), "*.txt"), (t("data_analysis.filetype_xlsx"), "*.xlsx"), ], ) if not path: on_focus_data() return try: ext = Path(path).suffix.lower().lstrip(".") save_dataframe(data, path, ext if ext in ("csv", "txt", "xlsx") else "csv") messagebox.showinfo(t("dialog.data"), t("data_analysis.saved_ok", path=path)) except Exception as e: messagebox.showerror(t("dialog.data"), str(e)) on_focus_data()