rexforge/rex_client/main.go
2025-01-28 13:41:49 +01:00

86 lines
1.7 KiB
Go

package main
import (
_ "embed"
"fmt"
"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"
model "rex_model"
)
var rex_version = "UNDEFINED"
func main() {
a := app.New()
w := a.NewWindow(fmt.Sprintf("RexForge %s", rex_version))
w.Resize(fyne.NewSize(900, 600))
addons := model.AddonIndex
list := widget.NewList(
func() int {
return len(addons)
},
func() fyne.CanvasObject {
btn := widget.NewButton("", func() {})
label := widget.NewLabel("")
return container.NewBorder(nil, nil, label, btn)
},
func(i widget.ListItemID, o fyne.CanvasObject) {
o.(*fyne.Container).RemoveAll()
btn := widget.NewButtonWithIcon("Download", theme.DownloadIcon(), func() {
fmt.Println("Downloading: " + addons[i])
})
btn.Importance = widget.LowImportance
label := widget.NewLabel(addons[i])
row := container.NewBorder(nil, nil, label, btn)
o.(*fyne.Container).Add(row)
})
refresh_button := widget.NewButtonWithIcon("Refresh", theme.ViewRefreshIcon(), func() {
println("Refresh")
})
upall_button := widget.NewButtonWithIcon("Update All", theme.DownloadIcon(), func() {
println("Update All")
})
about_button := widget.NewButtonWithIcon("About", theme.InfoIcon(), func() {
println("About")
})
settings_button := widget.NewButtonWithIcon("Settings", theme.SettingsIcon(), func() {
println("Settings")
})
toprow := container.NewVBox(
container.NewHBox(
refresh_button,
upall_button,
layout.NewSpacer(),
about_button,
settings_button,
),
widget.NewSeparator(),
)
c := container.New(
layout.NewBorderLayout(toprow, nil, nil, nil),
toprow,
container.NewStack(list),
)
w.SetContent(c)
w.ShowAndRun()
}