SXXXXXXX_PyMsc/pymsc/__main__.py

48 lines
1.3 KiB
Python

# -*- coding: utf-8 -*-
import tkinter as tk
import sys
import os
# Ensure local imports work correctly
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
from pymsc.gui.main_window import MainWindow
from pymsc.gui.pages.control_page import ControlPage
from pymsc.gui.pages.mission_page import MissionPage
from pymsc.utils.logger import CustomLogger
from pymsc.utils.profiler import print_stats, save_stats_to_csv
def main():
"""
Application Entry Point.
Sets up the environment, GUI pages, and starts the main loop.
"""
# Initialize Logger
custom_logger = CustomLogger(log_file="pymsc.log", use_console=True)
logger = custom_logger.get_logger()
logger.info("Starting PyMsc System...")
# Main Window Setup
root = tk.Tk()
app = MainWindow(root)
# Register Pages as real Tabs
app.add_page("Control", ControlPage)
app.add_page("Mission", MissionPage)
def shutdown():
"""Graceful cleanup."""
logger.info("Shutting down. Exporting metrics...")
save_stats_to_csv("performance_report.csv")
print_stats()
app.on_close()
root.protocol("WM_DELETE_WINDOW", shutdown)
# Auto-start hardware communication
app.start_mission()
root.mainloop()
if __name__ == "__main__":
main()