package main import ( //"fmt" "strconv" "fyne.io/fyne/v2" "fyne.io/fyne/v2/app" "fyne.io/fyne/v2/container" "fyne.io/fyne/v2/layout" "fyne.io/fyne/v2/widget" ) func tableView(w fyne.Window, category string) { items := loadCategory(category) table := widget.NewTableWithHeaders( func() (int, int) { return len(items), 4 }, func() fyne.CanvasObject { return widget.NewLabel("uhh, something went wrong") }, func(id widget.TableCellID, cell fyne.CanvasObject) { label := cell.(*widget.Label) switch id.Col { case 0: label.SetText(items[id.Row].name) case 1: label.SetText(strconv.FormatFloat(items[id.Row].price, 'f', 2, 64) + " " + items[id.Row].currency) case 2: label.SetText(items[id.Row].seller) case 3: label.SetText(items[id.Row].purchase_date) } }, ) table.SetColumnWidth(0, 100) table.SetColumnWidth(1, 100) table.SetColumnWidth(2, 100) table.SetColumnWidth(3, 100) /* headers := []string{"Name", "Price", "Seller", "Purchase Date"} for i, header := range headers { fmt.Printf("i: %d\nheader: %s", i, header) table.UpdateHeader(widget.TableCellID{Row: -1, Col: i}, widget.NewLabel(header)) } */ w.SetContent(table) } func mainMenu(w fyne.Window) { musicButton := widget.NewButton("Music", func() {tableView(w, "music")}) groceriesButton := widget.NewButton("Groceries", func() {tableView(w, "groceries")}) recurringButton := widget.NewButton("Recurring", func() {tableView(w, "recurring")}) otherButton := widget.NewButton("Other", func() {tableView(w, "other")}) content := container.New( layout.NewVBoxLayout(), layout.NewSpacer(), musicButton, groceriesButton, recurringButton, otherButton, layout.NewSpacer(), ) w.SetContent(container.New( layout.NewHBoxLayout(), layout.NewSpacer(), content, layout.NewSpacer(), )) } func main() { a := app.New() w := a.NewWindow("Hello World") mainMenu(w) w.ShowAndRun() }