From ffc2c1273183b488de9cc4fc282379c2a042bd6d Mon Sep 17 00:00:00 2001 From: Syndamia Date: Thu, 22 Jul 2021 13:16:48 +0300 Subject: Improved printing multiple fields workflow, implemented routine pagination in chats window, implemented routine pagination supoprt for help line --- go-src/windowsHelpers.go | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) (limited to 'go-src/windowsHelpers.go') diff --git a/go-src/windowsHelpers.go b/go-src/windowsHelpers.go index 909a673..fb530c1 100644 --- a/go-src/windowsHelpers.go +++ b/go-src/windowsHelpers.go @@ -22,8 +22,8 @@ func paginate(page int, messages ...string) []string { // Must be run in a routine ( go routinePaginatedSubwindow(...) ) // There must be empty lines for the subwindow -func routinePaginatedSubwindow(messages *[]string, updateMessages func(*[]string), lastLine *int, page int) { - for *lastLine > -1 { +func routinePaginatedSubwindow(messages *[]string, updateMessages func(*[]string), lastLine *int, page int, customLinesBelow int, numbered bool) { + for *lastLine > -2 { // Update messages, if we've already shown the last message if *lastLine == len(*messages)-1 { updateMessages(messages) @@ -33,17 +33,21 @@ func routinePaginatedSubwindow(messages *[]string, updateMessages func(*[]string *lastLine = len(*messages) - 1 csi.SaveCursorPosition() - csi.MoveCursorUpN(pageSize + 2) // +2 because of the input and pagination lines + csi.MoveCursorUpN(pageSize + 1 + customLinesBelow) csi.MoveCursorToBeginningOfLine() pageMessages := paginate(page, *messages...) + // Leaves empty lines at the top, if there aren't enough messages to fill a full page + // Works on the assumption that there are ui.EmptyLine(), where messages would be printed for i := 0; i < pageSize-len(pageMessages); i++ { csi.MoveCursorDown() } - for _, v := range pageMessages { - csi.ClearLine() - ui.TextField(v) + + if numbered { + ui.NumberedFields(pageMessages...) + } else { + ui.TextFields(pageMessages...) } ui.PageField(page, totalPages(len(*messages))) -- cgit v1.2.3