S1005403_RisCC/target_simulator/gui/radar_config_window.py
2025-10-01 14:17:56 +02:00

68 lines
2.4 KiB
Python

# target_simulator/gui/radar_config_window.py
"""
Configuration window for radar settings.
"""
import tkinter as tk
from tkinter import ttk
class RadarConfigWindow(tk.Toplevel):
"""A Toplevel window for configuring radar parameters."""
def __init__(self, parent):
super().__init__(parent)
self.title("Radar Configuration")
self.geometry("300x200")
self.transient(parent)
self.grab_set()
self.protocol("WM_DELETE_WINDOW", self._on_cancel)
self.scan_limit = None
self.max_range = None
self._create_widgets()
self.wait_window(self)
def _create_widgets(self):
"""Create and layout the widgets in the window."""
main_frame = ttk.Frame(self, padding="10")
main_frame.pack(fill=tk.BOTH, expand=True)
# Scan Sector Limit
ttk.Label(main_frame, text="Scan Sector Limit (°): ±").grid(row=0, column=0, sticky=tk.W, pady=5)
self.scan_limit_var = tk.StringVar(value="60") # Default value
scan_limit_entry = ttk.Entry(main_frame, textvariable=self.scan_limit_var, width=10)
scan_limit_entry.grid(row=0, column=1, sticky=tk.E, pady=5)
# Max Range
ttk.Label(main_frame, text="Range max (NM):").grid(row=1, column=0, sticky=tk.W, pady=5)
self.max_range_var = tk.StringVar(value="100") # Default value
max_range_entry = ttk.Entry(main_frame, textvariable=self.max_range_var, width=10)
max_range_entry.grid(row=1, column=1, sticky=tk.E, pady=5)
# Button Frame
button_frame = ttk.Frame(main_frame)
button_frame.grid(row=2, column=0, columnspan=2, pady=(20, 0))
ok_button = ttk.Button(button_frame, text="OK", command=self._on_ok)
ok_button.pack(side=tk.LEFT, padx=5)
cancel_button = ttk.Button(button_frame, text="Cancel", command=self._on_cancel)
cancel_button.pack(side=tk.LEFT, padx=5)
def _on_ok(self):
"""Handle OK button click."""
try:
self.scan_limit = int(self.scan_limit_var.get())
self.max_range = int(self.max_range_var.get())
self.destroy()
except ValueError:
# You might want to show an error message to the user here
print("Invalid input. Please enter a number.")
def _on_cancel(self):
"""Handle Cancel button click or window close."""
self.scan_limit = None
self.max_range = None
self.destroy()