import imgui from datatypes import * from main_menu import MainMenu from student_editor import StudentEditor from student_list import StudentList from student_info import StudentInfo from class_editor import ClassEditor from lecture_editor import LectureEditor from submission_editor import SubmissionEditor from student_graph import StudentGraph def set_layout(size: tuple, pos: tuple) -> None: io = imgui.get_io() imgui.set_next_window_size( io.display_size.x*size[0], io.display_size.y*size[1] ) imgui.set_next_window_position( io.display_size.x*pos[0], io.display_size.y*pos[1] ) class GrapherLayout: def __init__(self): super().__init__() self.student_graph = StudentGraph() def __call__(self): set_layout((1, 0.4), (0, 0.02)) self.student_graph() class EditorLayout: def __init__(self): super().__init__() self.io = imgui.get_io() self.student_editor = StudentEditor() self.student_list = StudentList() self.student_info = StudentInfo() self.class_editor = ClassEditor() self.lecture_editor = LectureEditor() self.submission_editor = SubmissionEditor() def __call__(self): set_layout((0.3, 0.3), (0.7, 0.4)) clas = self.class_editor() set_layout((0.5, 0.3), (0.2, 0.4)) self.student_editor() set_layout((0.2, 0.98), (0, 0.02)) student = self.student_list(clas) set_layout((0.3, 0.38), (0.7, 0.02)) self.student_info(student) set_layout((0.5, 0.3), (0.2, 0.7)) self.lecture_editor(clas) set_layout((0.5, 0.3), (0.2, 0.1)) self.submission_editor(clas) class View: def __init__(self): super().__init__() self.io = imgui.get_io() self.current = LayoutOptions.GRAPHER self.main_menu = MainMenu() self.editor = EditorLayout() self.grapher = GrapherLayout() def __call__(self): option = self.main_menu() if option: self.current = option if self.current == LayoutOptions.EDITOR: self.editor() if self.current == LayoutOptions.GRAPHER: self.grapher()