KNEO-Academy/main.py

75 lines
2.4 KiB
Python

import sys
from PyQt5.QtWidgets import QApplication, QStackedWidget
from src.views.mainWindows import MainWindow
from src.views.selection_screen import SelectionScreen
from src.views.login_screen import LoginScreen
from src.views.utilities_screen import UtilitiesScreen
from src.config import APP_NAME, WINDOW_SIZE
class AppController:
def __init__(self):
self.app = QApplication(sys.argv)
self.stack = QStackedWidget()
self.stack.setGeometry(100, 100, *WINDOW_SIZE)
self.stack.setWindowTitle(APP_NAME)
# Initialize screens
self.init_screens()
# Configure navigation signals
self.connect_signals()
# Start with selection screen
self.show_selection_screen()
def init_screens(self):
# Selection screen
self.selection_screen = SelectionScreen()
self.stack.addWidget(self.selection_screen)
# Login screen
self.login_screen = LoginScreen()
self.stack.addWidget(self.login_screen)
# Utilities screen
self.utilities_screen = UtilitiesScreen()
self.stack.addWidget(self.utilities_screen)
# Demo app (main window)
self.main_window = MainWindow()
self.stack.addWidget(self.main_window)
def connect_signals(self):
# Selection screen signals
self.selection_screen.open_utilities.connect(self.show_login_screen)
self.selection_screen.open_demo_app.connect(self.show_demo_app)
# Login screen signals
self.login_screen.login_success.connect(self.show_utilities_screen)
self.login_screen.back_to_selection.connect(self.show_selection_screen)
# Utilities screen signals
self.utilities_screen.back_to_selection.connect(self.show_selection_screen)
def show_selection_screen(self):
self.stack.setCurrentWidget(self.selection_screen)
def show_login_screen(self):
self.stack.setCurrentWidget(self.login_screen)
def show_utilities_screen(self):
self.stack.setCurrentWidget(self.utilities_screen)
def show_demo_app(self):
self.stack.setCurrentWidget(self.main_window)
def run(self):
self.stack.show()
return self.app.exec_()
def main():
controller = AppController()
return controller.run()
if __name__ == "__main__":
main()