diff options
| author | Syndamia <kamen.d.mladenov@protonmail.com> | 2021-07-05 10:06:33 +0300 |
|---|---|---|
| committer | Syndamia <kamen.d.mladenov@protonmail.com> | 2021-07-05 10:06:33 +0300 |
| commit | 2255a314aaa19948f42c19c1d459c9838fce6c23 (patch) | |
| tree | 57fd05ee3a5cd500ec7d1a2dfb5834116a6390d7 | |
| parent | 0611d5408e750de12e0092f414ce2b26b3d0423b (diff) | |
| download | ctfc-2255a314aaa19948f42c19c1d459c9838fce6c23.tar ctfc-2255a314aaa19948f42c19c1d459c9838fce6c23.tar.gz ctfc-2255a314aaa19948f42c19c1d459c9838fce6c23.zip | |
Implemented go startup, login and register windows, as well as "error" handling
| -rw-r--r-- | go-src/main.go | 2 | ||||
| -rw-r--r-- | go-src/ui/ui.go | 9 | ||||
| -rw-r--r-- | go-src/windows/errorMessages.go | 6 | ||||
| -rw-r--r-- | go-src/windows/windows.go | 104 |
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") + } } |
