97 lines
3.3 KiB
Python
97 lines
3.3 KiB
Python
# Custom
|
|
from model import *
|
|
from appstate import AppState
|
|
|
|
# Layouts
|
|
from analyzer import analyzer_layout
|
|
from database import database_editor_layout
|
|
|
|
# External
|
|
from imgui_bundle import imgui, immapp, hello_imgui, ImVec2
|
|
|
|
# Built In
|
|
import shelve
|
|
from typing import List
|
|
|
|
def menu_bar(runner_params: hello_imgui.RunnerParams) -> None:
|
|
hello_imgui.show_app_menu(runner_params)
|
|
hello_imgui.show_view_menu(runner_params)
|
|
if imgui.begin_menu("File"):
|
|
clicked, _ = imgui.menu_item("Open", "", False)
|
|
if clicked:
|
|
pass
|
|
imgui.end_menu()
|
|
|
|
def status_bar(app_state: AppState) -> None:
|
|
imgui.text("Student Analyzer by @DerGrumpf")
|
|
|
|
def main() -> None:
|
|
app_state = AppState()
|
|
|
|
# Load Database
|
|
with shelve.open("state") as state:
|
|
v = state.get("DB")
|
|
if v:
|
|
db.init(v)
|
|
db.connect()
|
|
db.create_tables([Class, Student, Lecture, Submission])
|
|
app_state.update()
|
|
|
|
# Set Asset Folder
|
|
#hello_imgui.set_assets_folder()
|
|
|
|
# Set Theme
|
|
|
|
# Set Window Params
|
|
runner_params = hello_imgui.RunnerParams()
|
|
runner_params.app_window_params.window_title = "Analyzer"
|
|
runner_params.imgui_window_params.menu_app_title = "Analyzer"
|
|
runner_params.app_window_params.window_geometry.size = (1000, 900)
|
|
runner_params.app_window_params.restore_previous_geometry = True
|
|
runner_params.app_window_params.borderless = True
|
|
runner_params.app_window_params.borderless_movable = True
|
|
runner_params.app_window_params.borderless_resizable = True
|
|
runner_params.app_window_params.borderless_closable = True
|
|
|
|
# Load Fonts
|
|
#runner_params.callbacks.load_additional_fonts = lambda: f()
|
|
|
|
# Status Bar & Main Menu
|
|
runner_params.imgui_window_params.show_menu_bar = True
|
|
runner_params.imgui_window_params.show_menu_app = False
|
|
runner_params.imgui_window_params.show_menu_view = False
|
|
runner_params.imgui_window_params.show_status_bar = True
|
|
# Inside `show_menus`, we can call `hello_imgui.show_view_menu` and `hello_imgui.show_app_menu` if desired
|
|
runner_params.callbacks.show_menus = lambda: menu_bar(runner_params)
|
|
# Optional: add items to Hello ImGui default App menu
|
|
#runner_params.callbacks.show_app_menu_items = show_app_menu_items
|
|
runner_params.callbacks.show_status = lambda: status_bar(app_state)
|
|
|
|
# Application layout
|
|
runner_params.imgui_window_params.default_imgui_window_type = (
|
|
hello_imgui.DefaultImGuiWindowType.provide_full_screen_dock_space
|
|
)
|
|
runner_params.imgui_window_params.enable_viewports = True
|
|
|
|
runner_params.docking_params = analyzer_layout(app_state)
|
|
runner_params.alternative_docking_layouts = [
|
|
database_editor_layout(app_state)
|
|
]
|
|
|
|
# Save App Settings
|
|
runner_params.ini_folder_type = hello_imgui.IniFolderType.app_user_config_folder
|
|
runner_params.ini_filename = "Analyzer/Analyzer.ini"
|
|
|
|
# Uncomment if layout will stay the same at start
|
|
runner_params.docking_params.layout_condition = hello_imgui.DockingLayoutCondition.application_start
|
|
|
|
# Run it
|
|
add_ons_params = immapp.AddOnsParams()
|
|
add_ons_params.with_markdown = True
|
|
add_ons_params.with_implot = True
|
|
add_ons_params.with_implot3d = True
|
|
immapp.run(runner_params, add_ons_params)
|
|
|
|
if __name__ == "__main__":
|
|
main()
|