package ctfc import ( "fmt" "os" "os/exec" "runtime" "time" "gitlab.com/Syndamia/ctfc/go-src/ui" "gitlab.com/Syndamia/ctfc/go-src/utils" ) func routinePaginatedSubwindow(messages *[]string, updateMessages func(*[]string), lastLine *int, page int) { for *lastLine > -1 { if *lastLine == len(*messages)-1 { updateMessages(messages) continue } *lastLine = len(*messages) - 1 fmt.Print("\033[s") moveCursorUp(utils.PageSize + 2) pageMessages := utils.Paginate(page, *messages...) for i := 0; i < utils.PageSize-len(pageMessages); i++ { ui.EmptyLine() } for _, v := range pageMessages { fmt.Print("\033[K") ui.TextField(v) } ui.PageField(page, utils.TotalPages(len(*messages))) fmt.Print("\033[u") time.Sleep(500 * time.Millisecond) } } var clearNext = true func clearScreen() { if !clearNext { clearNext = true return } if runtime.GOOS == "windows" { cmd := exec.Command("cmd", "/c", "cls") cmd.Stdout = os.Stdout cmd.Run() } else { fmt.Println("\033[2J") } } func moveCursorUp(times int) { fmt.Printf("\033[%vA", times) fmt.Print("\033[E") } func moveCursorDown(times int) { fmt.Printf("\033[%vB", times) } func moveCursorRight(times int) { fmt.Printf("\033[%vC", times) }