aboutsummaryrefslogtreecommitdiff
path: root/go-src
diff options
context:
space:
mode:
Diffstat (limited to 'go-src')
-rw-r--r--go-src/main.go2
-rw-r--r--go-src/ui/ui.go9
-rw-r--r--go-src/windows/errorMessages.go6
-rw-r--r--go-src/windows/windows.go104
4 files changed, 110 insertions, 11 deletions
diff --git a/go-src/main.go b/go-src/main.go
index aad637a..5cb2c57 100644
--- a/go-src/main.go
+++ b/go-src/main.go
@@ -3,5 +3,5 @@ package main
import "gitlab.com/Syndamia/ctfc/go-src/windows"
func main() {
- windows.Test()
+ windows.StartupWindow()
}
diff --git a/go-src/ui/ui.go b/go-src/ui/ui.go
index b4ce7ff..2886fff 100644
--- a/go-src/ui/ui.go
+++ b/go-src/ui/ui.go
@@ -1,7 +1,9 @@
package ui
import (
+ "bufio"
"fmt"
+ "os"
"strings"
"gitlab.com/Syndamia/ctfc/go-src/utils"
@@ -34,6 +36,8 @@ const (
inputRune = '@'
)
+var scanner = bufio.NewScanner(os.Stdin)
+
// Returns an error box
func ErrorBox(message string) (box string) {
// 2+len because message length doesn't accomodate the spaces between the left and right border
@@ -111,3 +115,8 @@ func NumberedFields(messages ...string) (result string) {
result = result[:len(result)-1]
return
}
+
+func GetInput() string {
+ scanner.Scan()
+ return scanner.Text()
+}
diff --git a/go-src/windows/errorMessages.go b/go-src/windows/errorMessages.go
new file mode 100644
index 0000000..2dc364a
--- /dev/null
+++ b/go-src/windows/errorMessages.go
@@ -0,0 +1,6 @@
+package windows
+
+const (
+ invalidArgument = "Invalid argument!"
+ invalidCommand = "Invalid command!"
+)
diff --git a/go-src/windows/windows.go b/go-src/windows/windows.go
index b805a69..5076053 100644
--- a/go-src/windows/windows.go
+++ b/go-src/windows/windows.go
@@ -2,19 +2,103 @@ package windows
import (
"fmt"
+ "os"
+ "os/exec"
+ "runtime"
+ "strings"
"gitlab.com/Syndamia/ctfc/go-src/ui"
)
-func Test() {
- // Temporary values for testing purposes
- fmt.Println(ui.ErrorBox("Test error"))
- fmt.Println(ui.NormalBox(true, "Page 1"))
- fmt.Println(ui.NormalBox(false, "Page 1", "Page 2"))
- fmt.Println(ui.NormalBox(true, "af", "Page dfsdf", "fd ffdfs dfsdf sd Page 3", "A"))
+func StartupWindow() {
+ clearScreen()
+
+ fmt.Println(ui.NormalBox(true, "Login", "Register"))
+ fmt.Print(ui.InputField("[L/R]"))
+ command := strings.ToLower(ui.GetInput())
+
+ if command == "l" {
+ defer LoginWindow()
+ } else if command == "r" {
+ defer RegisterWindow()
+ } else {
+ ShowError(invalidCommand)
+ defer StartupWindow()
+ }
+}
+
+func LoginWindow(values ...string) {
+ clearScreen()
+
fmt.Println(ui.NormalBox(true, "Login"))
- fmt.Println(ui.TextField("Login to your account"))
- fmt.Println(ui.NumberedFields("Option 1", "Option 2", "Option 3"))
- fmt.Println(ui.InputFieldFilled("Username", "John"))
- fmt.Println(ui.InputField("Password"))
+
+ switch len(values) {
+ case 0:
+ fmt.Print(ui.InputField("Username"))
+ case 1:
+ fmt.Println(ui.InputFieldFilled("Username", values[0]))
+ fmt.Print(ui.InputField("Password"))
+ }
+
+ val := ui.GetInput()
+
+ switch len(values) {
+ case 0:
+ defer LoginWindow(val)
+ case 1:
+ fmt.Println(values[0], val)
+ }
+}
+
+func RegisterWindow(values ...string) {
+ clearScreen()
+
+ fmt.Println(ui.NormalBox(true, "Register"))
+
+ switch len(values) {
+ case 0:
+ fmt.Print(ui.InputField("Username"))
+ case 1:
+ fmt.Println(ui.InputFieldFilled("Username", values[0]))
+ fmt.Print(ui.InputField("Password"))
+ case 2:
+ fmt.Println(ui.InputFieldFilled("Username", values[0]))
+ fmt.Println(ui.InputFieldFilled("Password", values[1]))
+ fmt.Print(ui.InputField("Name"))
+ }
+
+ val := ui.GetInput()
+
+ switch len(values) {
+ case 0:
+ defer RegisterWindow(val)
+ case 1:
+ defer RegisterWindow(values[0], val)
+ case 2:
+ fmt.Println(values, val)
+ }
+}
+
+var clearNext = true
+
+func ShowError(message string) {
+ clearScreen()
+
+ fmt.Println(ui.ErrorBox(message))
+ clearNext = false
+}
+
+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")
+ }
}