aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--go-src/ui/ui.go41
-rw-r--r--go-src/windows.go64
2 files changed, 52 insertions, 53 deletions
diff --git a/go-src/ui/ui.go b/go-src/ui/ui.go
index a35eac0..1a362e6 100644
--- a/go-src/ui/ui.go
+++ b/go-src/ui/ui.go
@@ -39,16 +39,19 @@ const (
var scanner = bufio.NewScanner(os.Stdin)
// Returns an error box
-func ErrorBox(message string) (box string) {
+func ErrorBox(message string) {
+ var box string
// 2+len because message length doesn't accomodate the spaces between the left and right border
box += fmt.Sprintf("%c%v%c\n", boxErrTopLeftCorner, utils.RepeatRune(boxErrHorLine, 2+len(message)), boxErrTopRightCorner)
box += fmt.Sprintf("%c %v %c\n", boxErrVertLine, message, boxErrVertLine)
box += fmt.Sprintf("%c%v%c", boxErrBottomLeftCorner, utils.RepeatRune(boxErrHorLine, 2+len(message)), boxErrBottomRightCorner)
- return
+ fmt.Println(box)
}
// Returns a normal box, most commonly used for the menu items
-func NormalBox(railed bool, messages ...string) (box string) {
+func NormalBox(railed bool, messages ...string) {
+ var box string
+
message := strings.Join(messages, " │ ")
var messagesLengths []int
@@ -93,38 +96,36 @@ func NormalBox(railed bool, messages ...string) (box string) {
// Replaces the border character on the bottom with one that connects to the middle broder: └───────────┴───────────┘
box = utils.ReplaceAtIndex(box, boxHorUpLine, indBot)
}
- return
+ fmt.Println(box)
}
-func TextField(message string) string {
- return fmt.Sprintf("%c%c %v", boxVertRightLine, textRune, message)
+func TextField(message string) {
+ fmt.Printf("%c%c %v\n", boxVertRightLine, textRune, message)
}
func InputField(specification string) string {
- return fmt.Sprintf("%c%c %v : ", boxBottomLeftCorner, inputRune, specification)
+ fmt.Printf("%c%c %v : ", boxBottomLeftCorner, inputRune, specification)
+ scanner.Scan()
+ return scanner.Text()
}
-func InputFieldFilled(specification string, input string) string {
- return utils.ReplaceAtIndex(InputField(specification), boxVertRightLine, 0) + input
+func InputFieldFilled(specification string, input string) {
+ fmt.Printf("%c%c %v : %v\n", boxVertRightLine, inputRune, specification, input)
}
-func NumberedFields(messages ...string) (result string) {
+func NumberedFields(messages ...string) {
+ var result string
for i, v := range messages {
result += fmt.Sprintf("%c%v %v\n", boxVertRightLine, i+1, v)
}
result = result[:len(result)-1]
- return
-}
-
-func GetInput() string {
- scanner.Scan()
- return scanner.Text()
+ fmt.Println(result)
}
-func PageField(current int, max int) string {
- return fmt.Sprintf("├─Page %v/%v─┘", current, max)
+func PageField(current int, max int) {
+ fmt.Printf("├─Page %v/%v─┘\n", current, max)
}
-func EmptyLine() string {
- return string(boxVertLine)
+func EmptyLine() {
+ fmt.Println(string(boxVertLine))
}
diff --git a/go-src/windows.go b/go-src/windows.go
index a92d239..148ee96 100644
--- a/go-src/windows.go
+++ b/go-src/windows.go
@@ -13,9 +13,9 @@ import (
func StartupWindow(...string) {
clearScreen()
- fmt.Println(ui.NormalBox(true, "Login", "Register"))
- fmt.Print(ui.InputField("[L/R]"))
- command := strings.ToLower(ui.GetInput())
+ ui.NormalBox(true, "Login", "Register")
+ input := ui.InputField("[L/R]")
+ command := strings.ToLower(input)
if command == "l" {
defer loginWindow()
@@ -29,21 +29,21 @@ func StartupWindow(...string) {
func loginWindow(values ...string) {
clearScreen()
- fmt.Println(ui.NormalBox(true, "Login"))
+ ui.NormalBox(true, "Login")
+
+ var input string
switch len(values) {
case 0:
- fmt.Print(ui.InputField("Username"))
+ input = ui.InputField("Username")
case 1:
- fmt.Println(ui.InputFieldFilled("Username", values[0]))
- fmt.Print(ui.InputField("Password"))
+ ui.InputFieldFilled("Username", values[0])
+ input = ui.InputField("Password")
}
- val := ui.GetInput()
-
if len(values) == 0 {
- defer loginWindow(val)
- } else if logInUser(values[0], val) {
+ defer loginWindow(input)
+ } else if logInUser(values[0], input) {
defer chatsWindow()
} else {
defer showError(invalidCredentials, loginWindow, values...)
@@ -53,28 +53,27 @@ func loginWindow(values ...string) {
func registerWindow(values ...string) {
clearScreen()
- fmt.Println(ui.NormalBox(true, "Register"))
+ ui.NormalBox(true, "Register")
- var validationF func(string) bool
+ var inputidationF func(string) bool
var fieldName, specification string
switch len(values) {
case 0:
- validationF, fieldName, specification = stringValidUsername, "Username", "[A-z, 0-9, *, ., _, -; at least 1 letter]"
+ inputidationF, fieldName, specification = stringValidUsername, "Username", "[A-z, 0-9, *, ., _, -; at least 1 letter]"
case 1:
- fmt.Println(ui.InputFieldFilled("Username", values[0]))
- validationF, fieldName, specification = stringValidPassword, "Password", "[5-40 characters; at least 1 number]"
+ ui.InputFieldFilled("Username", values[0])
+ inputidationF, fieldName, specification = stringValidPassword, "Password", "[5-40 characters; at least 1 number]"
case 2:
- fmt.Println(ui.InputFieldFilled("Username", values[0]))
- fmt.Println(ui.InputFieldFilled("Password", values[1]))
- validationF, fieldName, specification = stringValidName, "Name", "[2-60 characters]"
+ ui.InputFieldFilled("Username", values[0])
+ ui.InputFieldFilled("Password", values[1])
+ inputidationF, fieldName, specification = stringValidName, "Name", "[2-60 characters]"
}
- fmt.Print(ui.InputField(fieldName + " " + specification))
- val := ui.GetInput()
+ input := ui.InputField(fieldName + " " + specification)
- if validationF(val) {
- values = append(values, val)
+ if inputidationF(input) {
+ values = append(values, input)
// When user has entered all required values
if len(values) == 3 {
@@ -92,20 +91,19 @@ func registerWindow(values ...string) {
func chatsWindow(values ...string) {
clearScreen()
- fmt.Println(ui.NormalBox(true, "Direct Messages", "Account", "Logout"))
- fmt.Println(ui.PageField(0, 0))
- fmt.Println(ui.EmptyLine())
+ ui.NormalBox(true, "Direct Messages", "Account", "Logout")
+ ui.PageField(0, 0)
+ ui.EmptyLine()
if len(values) > 0 {
if values[len(values)-1] == "ShowHelp" {
- fmt.Println(ui.TextField("Chats page options: [(D)irect messages/(A)ccount/(L)ogout/(<) for previous page/(>) for next page/(C) for create chat/(name) for go to chat room by name/(number) for go to chat room by number/(H)elp]"))
+ ui.TextField("Chats page options: [(D)irect messages/(A)ccount/(L)ogout/(<) for previous page/(>) for next page/(C) for create chat/(name) for go to chat room by name/(number) for go to chat room by number/(H)elp]")
}
}
- fmt.Print(ui.InputField("[D/A/L/</>/C/E/name/number/H]"))
- val := ui.GetInput()
+ input := ui.InputField("[D/A/L/</>/C/E/name/number/H]")
- handled := handleInputActions(val, true,
+ handled := handleInputActions(input, true,
inputAction{"H", chatsWindow, []string{"ShowHelp"}},
)
if !handled {
@@ -114,7 +112,7 @@ func chatsWindow(values ...string) {
}
type inputAction struct {
- value string
+ inputue string
execute func(...string)
args []string
}
@@ -129,7 +127,7 @@ func handleInputActions(input string, handleNav bool, ia ...inputAction) bool {
)
}
for _, v := range ia {
- if input == v.value {
+ if input == v.inputue {
defer v.execute(v.args...)
return true
}
@@ -142,7 +140,7 @@ var clearNext = true
func showError(message string, callback func(...string), callbackData ...string) {
clearScreen()
- fmt.Println(ui.ErrorBox(message))
+ ui.ErrorBox(message)
clearNext = false
defer callback(callbackData...)