// Copyright (c) 2025 Nikolai Papin // // This file is part of the Auto Attendance app that looks for // self-attend QR-codes during lectures and opens their URLs in your // browser. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See // the GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program. If not, see . package ui import ( "git.weirdcat.su/weirdcat/auto-attendance/internal/ui/resources" "github.com/gotk3/gotk3/gtk" ) type MainWindow struct { builder *gtk.Builder window *gtk.Window } func (m *MainWindow) Start() { m.window.ShowAll() go func() { gtk.Main() }() } func NewMainWindow(builder *gtk.Builder) (*MainWindow, error) { err := builder.AddFromString(string(resources.GladeMainWindow)) if err != nil { return nil, err } windowObj, err := builder.GetObject("window_main") if err != nil { return nil, err } window := windowObj.(*gtk.Window) window.Connect("destroy", func() { gtk.MainQuit() }) notebookObj, err := builder.GetObject("notebook_main") if err != nil { return nil, err } notebook := notebookObj.(*gtk.Notebook) mainPageObj, err := builder.GetObject("page_main") if err != nil { return nil, err } mainPage := mainPageObj.(*gtk.Grid) settingsPageObj, err := builder.GetObject("page_settings") if err != nil { return nil, err } settingsPage := settingsPageObj.(*gtk.Box) notebook.SetTabLabelText(mainPage, "Overview") notebook.SetTabLabelText(settingsPage, "Settings") return &MainWindow{builder: builder, window: window}, nil }