SXXXXXXX_RadarDataReader/radar_data_reader/gui/export_config_window.py
VALLONGOL d1b9838555 update readme, manual
add segment definition
2025-07-14 15:10:14 +02:00

112 lines
3.7 KiB
Python

# radar_data_reader/gui/export_config_window.py
"""
GUI Window for editing the configuration for segment exporting.
"""
import tkinter as tk
from tkinter import ttk
from typing import Dict, Any
from .gui_utils import center_window
class ExportConfigWindow(tk.Toplevel):
"""A Toplevel window for managing segment export parameters."""
def __init__(self, master, controller, current_config: Dict[str, Any]):
super().__init__(master)
self.controller = controller
self.config_data = current_config.copy()
self.withdraw()
self._init_window()
self._init_vars()
self._populate_vars_from_config()
self._create_widgets()
center_window(self, self.master)
self.protocol("WM_DELETE_WINDOW", self._on_cancel)
def _init_window(self):
self.title("Segment Export Configuration")
self.geometry("600x400")
self.transient(self.master)
self.resizable(False, False)
def _init_vars(self):
"""Initializes all Tkinter variables for the parameters."""
self.vars = {
"folder_name_template": tk.StringVar(),
"export_video": tk.BooleanVar(),
"export_gps_track": tk.BooleanVar(),
"export_no_signal": tk.BooleanVar(),
}
def _populate_vars_from_config(self):
for key, var in self.vars.items():
if key in self.config_data:
var.set(self.config_data.get(key, ""))
def _create_widgets(self):
main_frame = ttk.Frame(self, padding="10")
main_frame.pack(fill=tk.BOTH, expand=True)
# --- Folder Name Template Frame ---
template_frame = ttk.LabelFrame(main_frame, text="Segment Folder Name Template")
template_frame.pack(fill=tk.X, pady=(0, 10))
template_frame.columnconfigure(0, weight=1)
template_entry = ttk.Entry(
template_frame, textvariable=self.vars["folder_name_template"]
)
template_entry.grid(row=0, column=0, sticky="ew", padx=5, pady=5)
# Help text for placeholders
placeholders = "{Segment}, {StartBatch}, {EndBatch}, {BatchCount}, {StartDate}, {StartTime}"
help_text = f"Available placeholders: {placeholders}"
ttk.Label(template_frame, text=help_text, wraplength=550, justify=tk.LEFT).grid(
row=1, column=0, sticky="w", padx=5, pady=(0, 5)
)
# --- g_reconverter Options Frame ---
options_frame = ttk.LabelFrame(
main_frame, text="g_reconverter Options for Segment"
)
options_frame.pack(fill=tk.X, pady=10)
ttk.Checkbutton(
options_frame,
text="Save Video (/vsave)",
variable=self.vars["export_video"],
).pack(anchor="w", padx=5, pady=2)
ttk.Checkbutton(
options_frame,
text="Save GPS Track (/gps)",
variable=self.vars["export_gps_track"],
).pack(anchor="w", padx=5, pady=2)
ttk.Checkbutton(
options_frame,
text="Export Metadata Only (no signal data, /nosign)",
variable=self.vars["export_no_signal"],
).pack(anchor="w", padx=5, pady=2)
# --- Action Buttons ---
button_frame = ttk.Frame(main_frame)
button_frame.pack(fill=tk.X, pady=(20, 0), side=tk.BOTTOM)
ttk.Button(button_frame, text="Save & Close", command=self._on_save).pack(
side=tk.RIGHT, padx=5
)
ttk.Button(button_frame, text="Cancel", command=self._on_cancel).pack(
side=tk.RIGHT
)
def _on_save(self):
new_config = {key: var.get() for key, var in self.vars.items()}
self.controller.save_export_config(new_config)
self.destroy()
def _on_cancel(self):
self.destroy()