Добавлена обработка сигнала выхода из программы
This commit is contained in:
@@ -2,8 +2,11 @@
|
|||||||
"""
|
"""
|
||||||
Главное меню программы.
|
Главное меню программы.
|
||||||
Загружает проект при старте и предоставляет доступ ко всем подменю.
|
Загружает проект при старте и предоставляет доступ ко всем подменю.
|
||||||
|
Обрабатывает прерывание Ctrl+C для корректного выхода.
|
||||||
"""
|
"""
|
||||||
from core.fs import load_project
|
|
||||||
|
import sys
|
||||||
|
from core.fs import load_project, save_project_partial
|
||||||
from editor import editor_menu
|
from editor import editor_menu
|
||||||
from plan import plan_menu
|
from plan import plan_menu
|
||||||
from response import response_menu
|
from response import response_menu
|
||||||
@@ -15,33 +18,45 @@ PROJECT_FILE = "project.json"
|
|||||||
def main():
|
def main():
|
||||||
mixture, design, responses = load_project(PROJECT_FILE)
|
mixture, design, responses = load_project(PROJECT_FILE)
|
||||||
|
|
||||||
while True:
|
try:
|
||||||
print("\n" + "=" * 50)
|
while True:
|
||||||
print("ГЛАВНОЕ МЕНЮ")
|
print("\n" + "=" * 50)
|
||||||
print("1. Редактор состава")
|
print("ГЛАВНОЕ МЕНЮ")
|
||||||
print("2. Планирование эксперимента")
|
print("1. Редактор состава")
|
||||||
print("3. Ввод значений отклика")
|
print("2. Планирование эксперимента")
|
||||||
print("4. Анализ значений")
|
print("3. Ввод значений отклика")
|
||||||
print("5. Крутое восхождение")
|
print("4. Анализ значений")
|
||||||
print("6. Выход")
|
print("5. Крутое восхождение")
|
||||||
print("=" * 50)
|
print("6. Выход")
|
||||||
choice = input("Выберите пункт: ").strip()
|
print("=" * 50)
|
||||||
|
choice = input("Выберите пункт: ").strip()
|
||||||
|
|
||||||
if choice == "6":
|
if choice == "6":
|
||||||
print("До свидания! (данные не сохранены автоматически)")
|
print("До свидания! (данные не сохранены автоматически)")
|
||||||
break
|
break
|
||||||
elif choice == "1":
|
elif choice == "1":
|
||||||
editor_menu(mixture)
|
editor_menu(mixture)
|
||||||
elif choice == "2":
|
elif choice == "2":
|
||||||
design = plan_menu(mixture, design)
|
design = plan_menu(mixture, design)
|
||||||
elif choice == "3":
|
elif choice == "3":
|
||||||
responses = response_menu(design, responses)
|
responses = response_menu(design, responses)
|
||||||
elif choice == "4":
|
elif choice == "4":
|
||||||
analysis_menu(mixture, design, responses)
|
analysis_menu(mixture, design, responses)
|
||||||
elif choice == "5":
|
elif choice == "5":
|
||||||
ascent_menu(mixture, design, responses)
|
ascent_menu(mixture, design, responses)
|
||||||
|
else:
|
||||||
|
print("Неверный пункт.")
|
||||||
|
except KeyboardInterrupt:
|
||||||
|
print("\n\nОбнаружено прерывание (Ctrl+C).")
|
||||||
|
# Спрашиваем, хочет ли пользователь сохранить текущий проект
|
||||||
|
save_choice = input("Сохранить текущий проект перед выходом? (y/n, Enter = нет): ").strip().lower()
|
||||||
|
if save_choice == 'y':
|
||||||
|
save_project_partial(PROJECT_FILE, mixture, design, responses)
|
||||||
|
print("Проект сохранён.")
|
||||||
else:
|
else:
|
||||||
print("Неверный пункт.")
|
print("Выход без сохранения.")
|
||||||
|
print("До свидания!")
|
||||||
|
sys.exit(0)
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
main()
|
main()
|
||||||
|
|||||||
Reference in New Issue
Block a user