package main import ( _ "embed" "fmt" "strings" "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", strings.ToUpper(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() }