from imgui_bundle import imgui, ImVec2

from datatypes import *

from main_menu import MainMenu

from database_editor import DatabaseEditor

from student_info import StudentInfo

def set_layout(size: tuple, pos: tuple) -> None:
    io = imgui.get_io()
    size = imgui.ImVec2(*size)
    pos = imgui.ImVec2(*pos)
    imgui.set_next_window_size(size)
    imgui.set_next_window_pos(pos)

class GrapherLayout:
    def __init__(self):
        super().__init__()

        self.student_info = StudentInfo()

    def set_layout(self):
        pass

    def __call__(self):
        self.student_info()

class EditorLayout:
    def __init__(self):
        super().__init__()
        self.database_editor = DatabaseEditor()

    def set_layout(self):
        pass

    def __call__(self):
        self.database_editor()
        
class View:
    def __init__(self):
        super().__init__()
        self.current = LayoutOptions.GRAPHER
        self.main_menu = MainMenu()
        self.editor = EditorLayout()
        self.grapher = GrapherLayout()

    def switch_context(self, ctx: LayoutOptions) -> None:
        match ctx:
            case LayoutOptions.EDITOR:
                self.editor.set_layout()
            case LayoutOptions.GRAPHER:
                self.grapher.set_layout()

    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()
