...
1 package main
2
3 import (
4 "fmt"
5 "math"
6
7 "github.com/rivo/tview"
8 )
9
10 type TableData struct {
11 tview.TableContentReadOnly
12 }
13
14 func (d *TableData) GetCell(row, column int) *tview.TableCell {
15 letters := [...]byte{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 'A' + byte(row%26)}
16 start := len(letters) - 1
17 row /= 26
18 for row > 0 {
19 start--
20 row--
21 letters[start] = 'A' + byte(row%26)
22 row /= 26
23 }
24 return tview.NewTableCell(fmt.Sprintf("[red]%s[green]%d", letters[start:], column))
25 }
26
27 func (d *TableData) GetRowCount() int {
28 return math.MaxInt64
29 }
30
31 func (d *TableData) GetColumnCount() int {
32 return math.MaxInt64
33 }
34
35 func main() {
36 data := &TableData{}
37 table := tview.NewTable().
38 SetBorders(false).
39 SetSelectable(true, true).
40 SetContent(data)
41 if err := tview.NewApplication().SetRoot(table, true).EnableMouse(true).Run(); err != nil {
42 panic(err)
43 }
44 }
45
View as plain text