88 lines
3.5 KiB
Python
88 lines
3.5 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() |