aboutsummaryrefslogtreecommitdiff
path: root/go-src/windowsHelpers.go
diff options
context:
space:
mode:
Diffstat (limited to 'go-src/windowsHelpers.go')
-rw-r--r--go-src/windowsHelpers.go70
1 files changed, 70 insertions, 0 deletions
diff --git a/go-src/windowsHelpers.go b/go-src/windowsHelpers.go
new file mode 100644
index 0000000..13cb3c1
--- /dev/null
+++ b/go-src/windowsHelpers.go
@@ -0,0 +1,70 @@
+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)
+}