Initial Commit
This commit is contained in:
commit
ff9239c34a
112
viewhelper.go
Normal file
112
viewhelper.go
Normal file
@ -0,0 +1,112 @@
|
|||||||
|
package goback
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"github.com/jroimartin/gocui"
|
||||||
|
"strings"
|
||||||
|
)
|
||||||
|
|
||||||
|
/* Returns s centered across w characters */
|
||||||
|
func CenterText(s string, w int, p string) string {
|
||||||
|
s_w := len(s)
|
||||||
|
repeated := ""
|
||||||
|
if (w-s_w)/2 > 0 {
|
||||||
|
repeated = strings.Repeat(p, (w-s_w)/2)
|
||||||
|
}
|
||||||
|
return repeated + s + repeated
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Print a Label
|
||||||
|
* s - contents
|
||||||
|
* x - x position
|
||||||
|
* y - y position
|
||||||
|
* w - width
|
||||||
|
* h - height
|
||||||
|
*/
|
||||||
|
func PrintLabel(s string, x int, y int, w int, h int, g *gocui.Gui, name string) error {
|
||||||
|
v, err := g.SetView(name, x, y, x+w, y+h)
|
||||||
|
if err != nil {
|
||||||
|
if err != gocui.ErrorUnkView {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
v.Frame = false
|
||||||
|
fmt.Fprintln(v, s)
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Print a Framed Label
|
||||||
|
* s - contents
|
||||||
|
* x - x position
|
||||||
|
* y - y position
|
||||||
|
* w - width
|
||||||
|
* h - height
|
||||||
|
*/
|
||||||
|
func PrintFramedLabel(s string, x int, y int, w int, h int, g *gocui.Gui, name string) error {
|
||||||
|
if v, err := g.SetView(name, x, y, x+w, y+h); err != nil {
|
||||||
|
if err != gocui.ErrorUnkView {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
fmt.Fprintln(v, s)
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func PrintButton(title string, x int, y int, w int, h int, g *gocui.Gui, name string) error {
|
||||||
|
if v, err := g.SetView(name, x, y, x+w, y+h); err != nil {
|
||||||
|
if err != gocui.ErrorUnkView {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
v.Highlight = true
|
||||||
|
fmt.Fprintln(v, " "+CenterText(title, (w-2), " ")+" ")
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func PrintMenu(title string, x int, y int, w int, h int, options []string, g *gocui.Gui, name string) error {
|
||||||
|
if title != "" {
|
||||||
|
if v_title, err := g.SetView(name+"-menu-title", x, y, x+w, y+2); err != nil {
|
||||||
|
if err != gocui.ErrorUnkView {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
fmt.Fprintln(v_title, title)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if v_menu, err := g.SetView(name, x, y+2, x+w, y+h-2); err != nil {
|
||||||
|
if err != gocui.ErrorUnkView {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
v_menu.Highlight = true
|
||||||
|
for _, m_opt := range options {
|
||||||
|
fmt.Fprintln(v_menu, CenterText(m_opt, w, " "))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func GetLine(g *gocui.Gui, v *gocui.View) (string, error) {
|
||||||
|
var l string
|
||||||
|
var err error
|
||||||
|
_, cy := v.Cursor()
|
||||||
|
if l, err = v.Line(cy); err != nil {
|
||||||
|
l = ""
|
||||||
|
}
|
||||||
|
return l, err
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Modal Types */
|
||||||
|
/*
|
||||||
|
const (
|
||||||
|
ModalAlert = iota // Just a popup
|
||||||
|
ModalConfirm // Ok/Cancel Popup
|
||||||
|
ModalPrompt // Prompt for Text Popup
|
||||||
|
)
|
||||||
|
|
||||||
|
type ModalButton struct {
|
||||||
|
label string // What is displayed on this button
|
||||||
|
action func() // The function that gets called when 'enter' is pressed
|
||||||
|
}
|
||||||
|
|
||||||
|
func PrintModal(title string, contents string, x int, y int, w int, h int, modalType int, g *gocui.Gui, name string) error {
|
||||||
|
}
|
||||||
|
*/
|
Loading…
Reference in New Issue
Block a user