SXXXXXXX_PyMsc/pymsc/gui/pages/control_page.py

86 lines
3.5 KiB
Python

# -*- coding: utf-8 -*-
import tkinter as tk
from tkinter import ttk
from pymsc.utils.gui_helpers import ScrollableFrame, add_title_to_frame
from pymsc.gui.components.widget_factory import create_widget_by_id
class ControlPage(ScrollableFrame):
"""
Primary control page for Radar Modes, Functions and Parameters.
"""
def __init__(self, parent, controller):
super().__init__(parent, controller)
self.grid_columnconfigure(0, weight=1)
self.grid_columnconfigure(1, weight=1)
self.grid_columnconfigure(2, weight=1)
self._build_page()
def _build_page(self):
# --- COLUMN 0: Modal Commands ---
self.frame_cmds = ttk.LabelFrame(self.scrollable_content, text="Modal Commands")
self.frame_cmds.grid(row=0, column=0, padx=10, pady=10, sticky="nsew")
commands = [
"stand_by", "silence", "mode", "rws_submode",
"acm_submode", "gm_submode", "des_ctrl", "sar",
"freeze", "ibit", "ale_blanking", "deg_perf",
"last_acquisition_fail", "transition", "emergency"
]
for cmd in commands:
w = create_widget_by_id(self.frame_cmds, cmd)
if w:
w.pack(fill=tk.X, padx=5, pady=2)
# --- COLUMN 1: Modal Functions ---
self.frame_funcs = ttk.LabelFrame(self.scrollable_content, text="Modal Functions")
self.frame_funcs.grid(row=0, column=1, padx=10, pady=10, sticky="nsew")
functions = [
"range_scale", "velocity_scale", "scan_width", "bars",
"expand", "zoom", "sar_map_orientation", "ground_tgt_reject",
"min_det_ground_tgt", "power_up_stop", "spot",
"sar_enabled", "ghost_enabled", "dtt_enabled","sar_crs_feas", "sar_spoi_feas"
]
for func in functions:
w = create_widget_by_id(self.frame_funcs, func)
if w:
w.pack(fill=tk.X, padx=5, pady=2)
# --- COLUMN 1 (Lower): Parameters ---
self.frame_params = ttk.LabelFrame(self.scrollable_content, text="Parameters")
self.frame_params.grid(row=1, column=1, padx=10, pady=10, sticky="nsew")
params = [
"alt_block", "tgt_history", "video_intensity",
"if_gain", "mov_tgt_gain", "beacon_delay", "beacon_code"
]
for p in params:
w = create_widget_by_id(self.frame_params, p)
if w:
w.pack(fill=tk.X, padx=5, pady=2)
# --- COLUMN 0 (Lower): Frequency ---
self.frame_freq = ttk.LabelFrame(self.scrollable_content, text="Channels & Frequency")
self.frame_freq.grid(row=1, column=0, padx=10, pady=10, sticky="nsew")
freq_list = [
"channel", "frequency_agility", "freq_grouping_selection",
"waveform", "lprf_threshold", "prf_lookup"
]
for f in freq_list:
w = create_widget_by_id(self.frame_freq, f)
if w:
w.pack(fill=tk.X, padx=5, pady=2)
# --- COLUMN 2: Quick Controls ---
self.frame_quick = ttk.LabelFrame(self.scrollable_content, text="Quick Navigation")
self.frame_quick.grid(row=0, column=2, rowspan=2, padx=10, pady=10, sticky="nsew")
quicks = [
"ptaz", "speed", "altitude", "pitch", "roll",
"crs_slave", "crs_az", "crs_rng"
]
for q in quicks:
w = create_widget_by_id(self.frame_quick, q)
if w:
w.pack(fill=tk.X, padx=5, pady=2)