package main import ( "citrons.xyz/talk/client/buffer" "citrons.xyz/talk/tui" "fmt" ) type cmdBuffer struct { buffer.Buffer } type logMsg struct { index int text string logType logType } var lastIndex = 0 type logType int const ( logInfo = iota logErr logCmd ) func (m logMsg) Id() string { return fmt.Sprintf("log.%d", m.index) } func (m logMsg) Show(odd bool) { var style *tui.Style switch m.logType { case logErr: var bg int32 = tui.Red if odd { bg = tui.BrightRed } style = &tui.Style {Bg: bg, Fg: tui.Black} case logCmd: var bg int32 = tui.Blue if odd { bg = tui.BrightBlue } style = &tui.Style {Bg: bg, Fg: tui.Black} default: } tui.Push("", tui.Box { Width: tui.Fill, Height: tui.Children, Style: style, Dir: tui.Right, }) tui.Push("", tui.Box {Width: tui.TextSize, Height: tui.TextSize}) tui.Text("* ", nil) tui.Pop() tui.Push("", tui.Box {Width: tui.Fill, Height: tui.TextSize}) tui.Text(m.text, nil) tui.Pop() tui.Pop() } func (b *cmdBuffer) info(f string, a ...any) { lastIndex++ b.Add(logMsg {lastIndex, fmt.Sprintf(f, a...), logInfo}) } func (b *cmdBuffer) err(f string, a ...any) { lastIndex++ b.Add(logMsg {lastIndex, fmt.Sprintf(f, a...), logErr}) } func (b *cmdBuffer) cmd(f string, a ...any) { lastIndex++ b.Add(logMsg {lastIndex, fmt.Sprintf(f, a...), logCmd}) }