1
0
mirror of https://github.com/gizak/termui.git synced 2025-04-24 13:48:50 +08:00

Merge e2f763c193b4e4d9af3e51b6637d4acca8132fe3 into 2b8f0c7960e9553acea6d579a740713066da5e13

This commit is contained in:
Igor Pidik 2024-01-30 02:58:06 -08:00 committed by GitHub
commit 6619b760f5
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 32 additions and 12 deletions

View File

@ -2,6 +2,7 @@
// Use of this source code is governed by a MIT license that can
// be found in the LICENSE file.
//go:build ignore
// +build ignore
package main
@ -61,6 +62,21 @@ func main() {
ui.Render(table3)
borderlessTable := widgets.NewTable()
borderlessTable.Rows = [][]string{
[]string{"header1", "header2", "header3"},
[]string{"Foundations", "Go-lang is so cool", "Im working on Ruby"},
[]string{"2016", "11", "11"},
}
borderlessTable.TextStyle = ui.NewStyle(ui.ColorWhite)
borderlessTable.TextAlignment = ui.AlignCenter
borderlessTable.SetRect(0, 30, 60, 35)
borderlessTable.Border = false
borderlessTable.RowSeparator = false
borderlessTable.ColSeparator = false
ui.Render(borderlessTable)
uiEvents := ui.PollEvents()
for {
e := <-uiEvents

View File

@ -25,6 +25,7 @@ type Table struct {
ColumnWidths []int
TextStyle Style
RowSeparator bool
ColSeparator bool
TextAlignment Alignment
RowStyles map[int]Style
FillRow bool
@ -38,6 +39,7 @@ func NewTable() *Table {
Block: *NewBlock(),
TextStyle: Theme.Table.Text,
RowSeparator: true,
ColSeparator: true,
RowStyles: make(map[int]Style),
ColumnResizer: func() {},
}
@ -107,21 +109,23 @@ func (self *Table) Draw(buf *Buffer) {
colXCoordinate += columnWidths[j] + 1
}
// draw vertical separators
separatorStyle := self.Block.BorderStyle
separatorXCoordinate := self.Inner.Min.X
verticalCell := NewCell(VERTICAL_LINE, separatorStyle)
for i, width := range columnWidths {
if self.FillRow && i < len(columnWidths)-1 {
verticalCell.Style.Bg = rowStyle.Bg
} else {
verticalCell.Style.Bg = self.Block.BorderStyle.Bg
}
if self.ColSeparator {
// draw vertical separators
separatorXCoordinate := self.Inner.Min.X
verticalCell := NewCell(VERTICAL_LINE, separatorStyle)
for i, width := range columnWidths {
if self.FillRow && i < len(columnWidths)-1 {
verticalCell.Style.Bg = rowStyle.Bg
} else {
verticalCell.Style.Bg = self.Block.BorderStyle.Bg
}
separatorXCoordinate += width
buf.SetCell(verticalCell, image.Pt(separatorXCoordinate, yCoordinate))
separatorXCoordinate++
separatorXCoordinate += width
buf.SetCell(verticalCell, image.Pt(separatorXCoordinate, yCoordinate))
separatorXCoordinate++
}
}
yCoordinate++