48 lines
1.3 KiB
Python
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() |