Added: Lecture Editor
This commit is contained in:
parent
f16f3e4558
commit
59e00cb812
89
main.py
89
main.py
@ -76,16 +76,22 @@ class GUI(object):
|
||||
self.impl = GlfwRenderer(self.window)
|
||||
|
||||
# App states
|
||||
self.select = 0
|
||||
|
||||
self.select_student: int = 0
|
||||
self.select_lecture: int = 0
|
||||
self.lectures: list = list()
|
||||
self.add_lecture_text = str()
|
||||
self.add_lecture_points = 0
|
||||
self.edit_lecture_title = str()
|
||||
self.edit_lecture_points = 0
|
||||
|
||||
# Global GUI Setting
|
||||
'''win_w, win_h = glfw.get_window_size(self.window)
|
||||
win_w, win_h = glfw.get_window_size(self.window)
|
||||
fb_w, fb_h = glfw.get_framebuffer_size(self.window)
|
||||
font_scaling_factor = max(float(fb_w) / win_w, float(fb_h) / win_h)
|
||||
font_size_in_pixels = 30
|
||||
io = imgui.get_io()
|
||||
io.fonts.add_font_from_file_ttf("assets/MPLUSRounded1c-Regular.ttf", font_size_in_pixels * font_scaling_factor)
|
||||
io.font_global_scale /= font_scaling_factor'''
|
||||
io.font_global_scale /= font_scaling_factor
|
||||
|
||||
self.loop()
|
||||
|
||||
@ -136,9 +142,9 @@ class GUI(object):
|
||||
return
|
||||
|
||||
for n, student in enumerate(students):
|
||||
opened, _ = imgui.selectable(student.name, self.select == n)
|
||||
opened, _ = imgui.selectable(student.name, self.select_student == n)
|
||||
if opened:
|
||||
self.select = n
|
||||
self.select_student = n
|
||||
|
||||
|
||||
def student_graph(self, student: Student):
|
||||
@ -165,27 +171,86 @@ class GUI(object):
|
||||
|
||||
# Window Position and Sizing
|
||||
io = imgui.get_io()
|
||||
imgui.set_next_window_size(io.display_size.x, io.display_size.y*0.05)
|
||||
imgui.set_next_window_position(0, 0)
|
||||
imgui.set_next_window_size(io.display_size.x, io.display_size.y*0.03)
|
||||
imgui.set_next_window_position(0, io.display_size.y*0.02)
|
||||
|
||||
with imgui.begin("HEADER", False, imgui.WINDOW_NO_MOVE | imgui.WINDOW_NO_RESIZE | imgui.WINDOW_NO_COLLAPSE | imgui.WINDOW_NO_TITLE_BAR):
|
||||
imgui.set_window_font_scale(1.5)
|
||||
imgui.set_window_font_scale(1.3)
|
||||
text = "Student Analyzer"
|
||||
ww = imgui.get_window_size().x
|
||||
tw = imgui.calc_text_size(text).x
|
||||
imgui.set_cursor_pos_x((ww - tw) * 0.5)
|
||||
imgui.text("Student Analyzer")
|
||||
|
||||
def editor(self):
|
||||
|
||||
# Window Position and Sizing
|
||||
io = imgui.get_io()
|
||||
imgui.set_next_window_size(io.display_size.x*0.3, io.display_size.y*0.3)
|
||||
imgui.set_next_window_position(io.display_size.x*0.7, io.display_size.y*0.45)
|
||||
lecture = None
|
||||
|
||||
with imgui.begin("Lecture Editor", False, imgui.WINDOW_NO_MOVE | imgui.WINDOW_NO_RESIZE | imgui.WINDOW_NO_COLLAPSE):
|
||||
with imgui.begin_group():
|
||||
if not self.lectures:
|
||||
imgui.text("No Lecture Added")
|
||||
else:
|
||||
for n, lecture in enumerate(self.lectures):
|
||||
opened, _ = imgui.selectable(lecture.name, self.select_lecture == n, width=imgui.get_window_size().x*0.3)
|
||||
if opened:
|
||||
self.select_lecture = n
|
||||
lecture = self.lectures[self.select_lecture]
|
||||
self.edit_lecture_title = lecture.name
|
||||
self.edit_lecture_points = lecture.max_points
|
||||
|
||||
imgui.same_line(spacing=int(imgui.get_window_size().x * 0.05))
|
||||
|
||||
with imgui.begin_group():
|
||||
imgui.push_item_width(imgui.get_window_size().x * 0.2)
|
||||
imgui.text("Add Lecture")
|
||||
_, self.add_lecture_text = imgui.input_text(" ", self.add_lecture_text)
|
||||
_, self.add_lecture_points = imgui.input_int("", self.add_lecture_points)
|
||||
|
||||
if self.add_lecture_points < 0:
|
||||
self.add_lecture_points = 0
|
||||
|
||||
clicked = imgui.button("Confirm")
|
||||
if clicked:
|
||||
self.lectures.append(Lecture(self.add_lecture_text, 0, self.add_lecture_points))
|
||||
self.add_lecture_points = 0
|
||||
self.add_lecture_text = str()
|
||||
imgui.pop_item_width()
|
||||
|
||||
if lecture:
|
||||
imgui.same_line(spacing=int(imgui.get_window_size().x * 0.05))
|
||||
with imgui.begin_group():
|
||||
_, self.edit_lecture_title = imgui.input_text(" ", self.edit_lecture_title)
|
||||
_, self.edit_lecture_points = imgui.input_int("", self.edit_lecture_points)
|
||||
if self.edit_lecture_points < 0:
|
||||
self.edit_lecture_points = 0
|
||||
|
||||
def main_menu(self):
|
||||
with imgui.begin_main_menu_bar() as main_menu_bar:
|
||||
if main_menu_bar:
|
||||
with imgui.begin_menu("File", True) as file_menu:
|
||||
if file_menu.opened:
|
||||
imgui.menu_item("New", " ", False, True)
|
||||
imgui.menu_item("Open", " ", False, True)
|
||||
imgui.menu_item("Save", " ", False, True)
|
||||
imgui.menu_item("Save as", " ", False, True)
|
||||
|
||||
def loop(self):
|
||||
while not glfw.window_should_close(self.window):
|
||||
glfw.poll_events()
|
||||
self.impl.process_inputs()
|
||||
imgui.new_frame()
|
||||
|
||||
|
||||
self.main_menu()
|
||||
self.header()
|
||||
self.table(students)
|
||||
self.student_info(students[self.select])
|
||||
self.student_graph(students[self.select])
|
||||
self.student_info(students[self.select_student])
|
||||
self.student_graph(students[self.select_student])
|
||||
self.editor()
|
||||
#imgui.show_test_window()
|
||||
|
||||
imgui.render()
|
||||
|
6
requirements.txt
Normal file
6
requirements.txt
Normal file
@ -0,0 +1,6 @@
|
||||
glfw==2.8.0
|
||||
imgui==2.0.0
|
||||
numpy==2.2.1
|
||||
pillow==11.0.0
|
||||
PyOpenGL==3.1.7
|
||||
PySDL2==0.9.17
|
Loading…
Reference in New Issue
Block a user