mirror of
https://github.com/br0xen/termbox-util.git
synced 2025-08-18 11:44:06 -05:00
Syncing Repos
This commit is contained in:
1
termbox-test/.gitignore
vendored
Normal file
1
termbox-test/.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
||||
termbox-test
|
@@ -1,17 +1,21 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"github.com/nsf/termbox-go"
|
||||
"gogs.bullercodeworks.com/brian/termbox-util"
|
||||
"os"
|
||||
"strconv"
|
||||
"syscall"
|
||||
|
||||
"gogs.bullercodeworks.com/brian/termbox-util"
|
||||
|
||||
"github.com/nsf/termbox-go"
|
||||
)
|
||||
|
||||
var keep_running bool
|
||||
var keepRunning bool
|
||||
var initialized bool
|
||||
var frame *termboxUtil.Frame
|
||||
|
||||
func main() {
|
||||
keep_running = true
|
||||
keepRunning = true
|
||||
err := termbox.Init()
|
||||
if err != nil {
|
||||
panic(err)
|
||||
@@ -21,82 +25,7 @@ func main() {
|
||||
mainLoop()
|
||||
}
|
||||
|
||||
//var input *termbox_util.InputField
|
||||
var input *termbox_util.InputModal
|
||||
var new_key, new_val string
|
||||
var mode string
|
||||
var drawY int
|
||||
var added_stuff []string
|
||||
|
||||
func layoutAndDrawScreen() {
|
||||
termbox.Clear(0, termbox.ColorBlack)
|
||||
drawScreen()
|
||||
termbox.Flush()
|
||||
}
|
||||
|
||||
func drawScreen() {
|
||||
w, h := termbox.Size()
|
||||
termbox_util.DrawStringAtPoint(termbox_util.AlignText("Termbox Utility Test", w, termbox_util.ALIGN_CENTER), 0, 0, termbox.ColorWhite, termbox.ColorRed)
|
||||
if input == nil {
|
||||
mw, mh := w/4, h/4
|
||||
mx, my := (w/2)-(mw/2), (h/2)-(mh/2)
|
||||
input = termbox_util.CreateInputModal("", mx, my, mw, mh, termbox.ColorWhite, termbox.ColorBlack)
|
||||
input.Clear()
|
||||
}
|
||||
if mode == "bucket" {
|
||||
if input.IsDone() {
|
||||
added_stuff = append(added_stuff, fmt.Sprintf("New Bucket %s", input.GetValue()))
|
||||
input.Clear()
|
||||
mode = ""
|
||||
} else {
|
||||
input.Draw()
|
||||
}
|
||||
} else if mode == "pair" {
|
||||
if input.IsDone() {
|
||||
if new_key == "" {
|
||||
new_key = input.GetValue()
|
||||
input.Clear()
|
||||
input.SetTitle("Pair Value")
|
||||
} else {
|
||||
added_stuff = append(added_stuff, fmt.Sprintf("New Pair %s => %s", new_key, input.GetValue()))
|
||||
mode = ""
|
||||
input.Clear()
|
||||
}
|
||||
}
|
||||
if mode == "pair" && !input.IsDone() {
|
||||
input.Draw()
|
||||
}
|
||||
}
|
||||
if mode == "" {
|
||||
for i := range added_stuff {
|
||||
termbox_util.DrawStringAtPoint(added_stuff[i], 1, 3+i, termbox.ColorWhite, termbox.ColorRed)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func handleKeyEvent(event termbox.Event) bool {
|
||||
if event.Key == termbox.KeyEsc {
|
||||
return false
|
||||
} else if event.Key == termbox.KeyCtrlB {
|
||||
mode = "bucket"
|
||||
new_key = ""
|
||||
new_val = ""
|
||||
input.Clear()
|
||||
input.SetTitle("Bucket Name")
|
||||
} else if event.Key == termbox.KeyCtrlP {
|
||||
mode = "pair"
|
||||
new_key = ""
|
||||
new_val = ""
|
||||
input.Clear()
|
||||
input.SetTitle("Pair Key")
|
||||
} else {
|
||||
input.HandleKeyPress(event)
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
func mainLoop() {
|
||||
added_stuff = append(added_stuff, "Ctrl+B = Add Bucket; Ctrl+P = Add Pair")
|
||||
layoutAndDrawScreen()
|
||||
for {
|
||||
event := termbox.PollEvent()
|
||||
@@ -106,9 +35,12 @@ func mainLoop() {
|
||||
termbox.Close()
|
||||
process.Signal(syscall.SIGSTOP)
|
||||
termbox.Init()
|
||||
} else if event.Key == termbox.KeyCtrlC {
|
||||
termbox.Close()
|
||||
os.Exit(0)
|
||||
}
|
||||
keep_running = handleKeyEvent(event)
|
||||
if !keep_running {
|
||||
keepRunning = handleEvent(event)
|
||||
if !keepRunning {
|
||||
break
|
||||
}
|
||||
layoutAndDrawScreen()
|
||||
@@ -117,4 +49,70 @@ func mainLoop() {
|
||||
layoutAndDrawScreen()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func layoutAndDrawScreen() {
|
||||
w, h := termbox.Size()
|
||||
if !initialized {
|
||||
fg, bg := termbox.ColorWhite, termbox.ColorBlack
|
||||
frame = termboxUtil.CreateFrame(1, 1, w-3, h-3, termbox.ColorWhite, termbox.ColorBlack)
|
||||
/*
|
||||
frame.AddControl(termboxUtil.CreateASCIIArt([]string{
|
||||
"/" + strings.Repeat("=====", 5) + "\\",
|
||||
"|" + strings.Repeat(".oOo.", 5) + "|",
|
||||
"\\" + strings.Repeat("=====", 5) + "/",
|
||||
}, 1, frame.GetBottomY()+1, fg, bg))
|
||||
frame.AddControl(termboxUtil.CreateAlertModal("AlertModal", 1, 1, w-5, 6, termbox.ColorGreen, bg))
|
||||
frame.AddControl(termboxUtil.CreateConfirmModal("ConfirmModal", 1, frame.GetBottomY()+1, w-5, 7, fg, bg))
|
||||
frame.AddControl(termboxUtil.CreateInputModal("InputModal", 1, frame.GetBottomY()+1, w-5, 7, fg, bg))
|
||||
*/
|
||||
frame.AddControl(termboxUtil.CreateDropMenu("Add Control", []string{
|
||||
"AlertModal",
|
||||
"ASCIIArt",
|
||||
"ConfirmModal",
|
||||
"DropMenu",
|
||||
"Frame",
|
||||
"InputField",
|
||||
"InputModal",
|
||||
"Label",
|
||||
"Menu",
|
||||
"ProgressBar",
|
||||
"ScrollFrame",
|
||||
},
|
||||
1, frame.GetBottomY()+1, w-5, 7, fg, bg, termbox.ColorBlack, termbox.ColorGreen))
|
||||
frame.GetLastControl().SetBordered(true)
|
||||
frame.SetActiveFlag(true)
|
||||
|
||||
initialized = true
|
||||
}
|
||||
termbox.Clear(0, termbox.ColorBlack)
|
||||
drawScreen()
|
||||
termboxUtil.DrawStringAtPoint(strconv.Itoa(frame.GetBottomY()), 0, h-1, termbox.ColorWhite, termbox.ColorBlack)
|
||||
termbox.Flush()
|
||||
}
|
||||
|
||||
func drawScreen() {
|
||||
frame.Draw()
|
||||
}
|
||||
|
||||
func handleEvent(event termbox.Event) bool {
|
||||
frame.HandleEvent(event)
|
||||
for _, k := range frame.GetControls() {
|
||||
switch v := k.(type) {
|
||||
case *termboxUtil.DropMenu:
|
||||
if v.IsDone() {
|
||||
}
|
||||
case *termboxUtil.AlertModal:
|
||||
if v.IsDone() {
|
||||
v.SetText("Finished")
|
||||
}
|
||||
case *termboxUtil.ConfirmModal:
|
||||
if v.IsDone() {
|
||||
v.SetText("Finished")
|
||||
}
|
||||
}
|
||||
k.SetFgColor(termbox.ColorWhite)
|
||||
}
|
||||
frame.GetActiveControl().SetFgColor(termbox.ColorGreen)
|
||||
return true
|
||||
}
|
Reference in New Issue
Block a user