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), 5 }, func() fyne.CanvasObject { return widget.NewLabel("uhh, something went wrong") }, func(id widget.TableCellID, cell fyne.CanvasObject) { label := cell.(*widget.Label) label.Truncation = fyne.TextTruncateEllipsis switch id.Col { case 0: label.SetText(items[id.Row].name.String) case 1: label.SetText(items[id.Row].artist.String) case 2: label.SetText(strconv.FormatFloat(items[id.Row].price, 'f', 2, 64) + " " + items[id.Row].currency.String) case 3: label.SetText(items[id.Row].seller.String) case 4: label.SetText(items[id.Row].purchase_date.String) } }, ) /* 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)) } */ maxContainer := container.NewMax(table) split := container.NewHSplit(maxContainer, widget.NewLabel("Select a column to edit")) /* table.OnSelected = func(id widget.TableCellID) { editForm := widget.NewForm() for colIndex := 0; colIndex < 4; colIndex++ { entry := widget.NewEntry() entry.SetText(table.Cel) } } */ w.SetContent(split) } 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() }