// Copyright 2017 Zack Guo . All rights reserved. // Use of this source code is governed by a MIT license that can // be found in the LICENSE file. // +build ignore package main import ( "log" ui "github.com/gizak/termui/v3" "github.com/gizak/termui/v3/widgets" ) func main() { if err := ui.Init(); err != nil { log.Fatalf("failed to initialize termui: %v", err) } defer ui.Close() l := widgets.NewList() l.Title = "List" l.Rows = []string{ "[0] github.com/gizak/termui/v3", "[1] [你好,世界](fg:blue)", "[2] [こんにちは世界](fg:red)", "[3] [color](fg:white,bg:green) output", "[4] output.go", "[5] random_out.go", "[6] dashboard.go", "[7] foo", "[8] bar", "[9] baz", } l.TextStyle = ui.NewStyle(ui.ColorYellow) l.WrapText = false l.SetRect(0, 0, 25, 8) ui.Render(l) previousKey := "" uiEvents := ui.PollEvents() for { e := <-uiEvents switch e.ID { case "q", "": return case "j", "": l.ScrollDown() case "k", "": l.ScrollUp() case "": l.ScrollHalfPageDown() case "": l.ScrollHalfPageUp() case "": l.ScrollPageDown() case "": l.ScrollPageUp() case "g": if previousKey == "g" { l.ScrollTop() } case "": l.ScrollTop() case "G", "": l.ScrollBottom() } if previousKey == "g" { previousKey = "" } else { previousKey = e.ID } ui.Render(l) } }