package io.gitlab.jfronny.inceptum.gtk import io.gitlab.jfronny.inceptum.common.BuildMetadata import io.gitlab.jfronny.inceptum.common.MetaHolder import io.gitlab.jfronny.inceptum.common.Utils import io.gitlab.jfronny.inceptum.gtk.window.MainWindow import io.gitlab.jfronny.inceptum.launcher.LauncherEnv import io.gitlab.jfronny.inceptum.launcher.api.account.AccountManager import org.gnome.gio.ApplicationFlags import org.gnome.glib.GLib import org.gnome.gtk.* import java.io.IOException import java.util.* import kotlin.system.exitProcess object GtkMain { const val ID = "io.gitlab.jfronny.inceptum" @Throws(IOException::class) @JvmStatic fun main(args: Array) { LauncherEnv.initialize(GtkEnvBackend) Utils.LOGGER.info("Launching Inceptum v" + BuildMetadata.VERSION) Utils.LOGGER.info("Loading from " + MetaHolder.BASE_PATH) exitProcess(try { showGui(args) } catch (_: Throwable) { -1 } finally { LauncherEnv.terminate() }) } @JvmStatic fun showGui(args: Array): Int = setupApplication(args) { //TODO update check AccountManager.loadAccounts() GtkMenubar.create(this) val window = MainWindow(this) window.visible = true GtkEnvBackend.dialogParent = window window.onCloseRequest { GtkEnvBackend.dialogParent = null this.quit() false } } @JvmStatic fun setupApplication(args: Array, onActivate: Application.() -> Unit): Int { val app = Application(ID, ApplicationFlags.FLAGS_NONE) app.onActivate { GLib.idleAdd { runScheduledTasks() true } onActivate(app) } return app.run(args) } }