// Copyright 2022 wanderer // SPDX-License-Identifier: GPL-3.0-or-later package xkcdreader import ( "log" "fyne.io/fyne/v2" "fyne.io/fyne/v2/app" "fyne.io/fyne/v2/container" "fyne.io/fyne/v2/layout" "fyne.io/fyne/v2/theme" "fyne.io/fyne/v2/widget" "git.dotya.ml/wanderer/go-xkcdreader/cmd" ) const appGreeting = "welcome to go-xkcdreader" // RunApp performs sets up and runs the main application func RunApp() { a := app.New() w := a.NewWindow(cmd.GetAppName()) centered := container.New(layout.NewHBoxLayout(), layout.NewSpacer(), makeGreeting(), layout.NewSpacer()) w.SetContent(container.New(layout.NewVBoxLayout(), makeToolbar(), centered, makeTabs())) w.Resize(fyne.NewSize(400, 400)) w.ShowAndRun() } // makeGreeting creates a greeting label func makeGreeting() *widget.Label { w := widget.NewLabel(appGreeting) w.TextStyle.Monospace = true return w } func makeToolbar() *widget.Toolbar { toolbar := widget.NewToolbar( widget.NewToolbarAction(theme.SearchIcon(), func() { log.Println("Search") }), widget.NewToolbarSpacer(), widget.NewToolbarAction(theme.HelpIcon(), func() { log.Println("Display help") }), widget.NewToolbarAction(theme.SettingsIcon(), func() { log.Println("Display settings") }), ) return toolbar } func makeTabs() *container.AppTabs { tabs := container.NewAppTabs( container.NewTabItem("xkcd comic", widget.NewLabel("Latest comic...")), container.NewTabItem("what if?", widget.NewLabel("serious answers to absurd questions and absurd advice for common concerns from xkcd's Randall Munroe")), ) return tabs }