uiterm: split Ui.SetView into Ui.Add, Ui.SetBounds
This commit is contained in:
28
ui.go
28
ui.go
@@ -109,13 +109,13 @@ func (b *Barnard) OnTextInput(ui *uiterm.Ui, textbox *uiterm.Textbox, text strin
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (b *Barnard) OnUiInitialize(ui *uiterm.Ui) {
|
func (b *Barnard) OnUiInitialize(ui *uiterm.Ui) {
|
||||||
ui.SetView(uiViewLogo, 0, 0, 0, 0, &uiterm.Label{
|
ui.Add(uiViewLogo, &uiterm.Label{
|
||||||
Text: " barnard ",
|
Text: " barnard ",
|
||||||
Fg: uiterm.ColorWhite | uiterm.AttrBold,
|
Fg: uiterm.ColorWhite | uiterm.AttrBold,
|
||||||
Bg: uiterm.ColorMagenta,
|
Bg: uiterm.ColorMagenta,
|
||||||
})
|
})
|
||||||
|
|
||||||
ui.SetView(uiViewTop, 0, 0, 0, 0, &uiterm.Label{
|
ui.Add(uiViewTop, &uiterm.Label{
|
||||||
Fg: uiterm.ColorWhite,
|
Fg: uiterm.ColorWhite,
|
||||||
Bg: uiterm.ColorBlue,
|
Bg: uiterm.ColorBlue,
|
||||||
})
|
})
|
||||||
@@ -125,26 +125,26 @@ func (b *Barnard) OnUiInitialize(ui *uiterm.Ui) {
|
|||||||
Fg: uiterm.ColorBlack,
|
Fg: uiterm.ColorBlack,
|
||||||
Bg: uiterm.ColorWhite,
|
Bg: uiterm.ColorWhite,
|
||||||
}
|
}
|
||||||
ui.SetView(uiViewStatus, 0, 0, 0, 0, &b.UiStatus)
|
ui.Add(uiViewStatus, &b.UiStatus)
|
||||||
|
|
||||||
b.UiInput = uiterm.Textbox{
|
b.UiInput = uiterm.Textbox{
|
||||||
Fg: uiterm.ColorWhite,
|
Fg: uiterm.ColorWhite,
|
||||||
Bg: uiterm.ColorBlack,
|
Bg: uiterm.ColorBlack,
|
||||||
Input: b.OnTextInput,
|
Input: b.OnTextInput,
|
||||||
}
|
}
|
||||||
ui.SetView(uiViewInput, 0, 0, 0, 0, &b.UiInput)
|
ui.Add(uiViewInput, &b.UiInput)
|
||||||
|
|
||||||
b.UiInputStatus = uiterm.Label{
|
b.UiInputStatus = uiterm.Label{
|
||||||
Fg: uiterm.ColorBlack,
|
Fg: uiterm.ColorBlack,
|
||||||
Bg: uiterm.ColorWhite,
|
Bg: uiterm.ColorWhite,
|
||||||
}
|
}
|
||||||
ui.SetView(uiViewInputStatus, 0, 0, 0, 0, &b.UiInputStatus)
|
ui.Add(uiViewInputStatus, &b.UiInputStatus)
|
||||||
|
|
||||||
b.UiOutput = uiterm.Textview{
|
b.UiOutput = uiterm.Textview{
|
||||||
Fg: uiterm.ColorWhite,
|
Fg: uiterm.ColorWhite,
|
||||||
Bg: uiterm.ColorBlack,
|
Bg: uiterm.ColorBlack,
|
||||||
}
|
}
|
||||||
ui.SetView(uiViewOutput, 0, 0, 0, 0, &b.UiOutput)
|
ui.Add(uiViewOutput, &b.UiOutput)
|
||||||
|
|
||||||
b.UiTree = uiterm.Tree{
|
b.UiTree = uiterm.Tree{
|
||||||
Generator: b.TreeItem,
|
Generator: b.TreeItem,
|
||||||
@@ -152,7 +152,7 @@ func (b *Barnard) OnUiInitialize(ui *uiterm.Ui) {
|
|||||||
Fg: uiterm.ColorWhite,
|
Fg: uiterm.ColorWhite,
|
||||||
Bg: uiterm.ColorBlack,
|
Bg: uiterm.ColorBlack,
|
||||||
}
|
}
|
||||||
ui.SetView(uiViewTree, 0, 0, 0, 0, &b.UiTree)
|
ui.Add(uiViewTree, &b.UiTree)
|
||||||
|
|
||||||
b.Ui.AddKeyListener(b.OnFocusPress, uiterm.KeyTab)
|
b.Ui.AddKeyListener(b.OnFocusPress, uiterm.KeyTab)
|
||||||
b.Ui.AddKeyListener(b.OnVoiceToggle, uiterm.KeyF1)
|
b.Ui.AddKeyListener(b.OnVoiceToggle, uiterm.KeyF1)
|
||||||
@@ -165,11 +165,11 @@ func (b *Barnard) OnUiInitialize(ui *uiterm.Ui) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (b *Barnard) OnUiResize(ui *uiterm.Ui, width, height int) {
|
func (b *Barnard) OnUiResize(ui *uiterm.Ui, width, height int) {
|
||||||
ui.SetView(uiViewLogo, 0, 0, 9, 1, nil)
|
ui.SetBounds(uiViewLogo, 0, 0, 9, 1)
|
||||||
ui.SetView(uiViewTop, 9, 0, width-6, 1, nil)
|
ui.SetBounds(uiViewTop, 9, 0, width-6, 1)
|
||||||
ui.SetView(uiViewStatus, width-6, 0, width, 1, nil)
|
ui.SetBounds(uiViewStatus, width-6, 0, width, 1)
|
||||||
ui.SetView(uiViewInput, 0, height-1, width, height, nil)
|
ui.SetBounds(uiViewInput, 0, height-1, width, height)
|
||||||
ui.SetView(uiViewInputStatus, 0, height-2, width, height-1, nil)
|
ui.SetBounds(uiViewInputStatus, 0, height-2, width, height-1)
|
||||||
ui.SetView(uiViewOutput, 0, 1, width-20, height-2, nil)
|
ui.SetBounds(uiViewOutput, 0, 1, width-20, height-2)
|
||||||
ui.SetView(uiViewTree, width-20, 1, width, height-2, nil)
|
ui.SetBounds(uiViewTree, width-20, 1, width, height-2)
|
||||||
}
|
}
|
||||||
|
|||||||
55
uiterm/ui.go
55
uiterm/ui.go
@@ -1,6 +1,8 @@
|
|||||||
package uiterm
|
package uiterm
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"errors"
|
||||||
|
|
||||||
"github.com/nsf/termbox-go"
|
"github.com/nsf/termbox-go"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -14,6 +16,9 @@ type UiManager interface {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type Ui struct {
|
type Ui struct {
|
||||||
|
Fg Attribute
|
||||||
|
Bg Attribute
|
||||||
|
|
||||||
close chan bool
|
close chan bool
|
||||||
manager UiManager
|
manager UiManager
|
||||||
|
|
||||||
@@ -21,9 +26,6 @@ type Ui struct {
|
|||||||
activeElement *uiElement
|
activeElement *uiElement
|
||||||
|
|
||||||
keyListeners map[Key][]KeyListener
|
keyListeners map[Key][]KeyListener
|
||||||
|
|
||||||
fg Attribute
|
|
||||||
bg Attribute
|
|
||||||
}
|
}
|
||||||
|
|
||||||
type uiElement struct {
|
type uiElement struct {
|
||||||
@@ -49,7 +51,7 @@ func (ui *Ui) Close() {
|
|||||||
|
|
||||||
func (ui *Ui) Refresh() {
|
func (ui *Ui) Refresh() {
|
||||||
if termbox.IsInit {
|
if termbox.IsInit {
|
||||||
termbox.Clear(termbox.Attribute(ui.fg), termbox.Attribute(ui.bg))
|
termbox.Clear(termbox.Attribute(ui.Fg), termbox.Attribute(ui.Bg))
|
||||||
termbox.HideCursor()
|
termbox.HideCursor()
|
||||||
for _, element := range ui.elements {
|
for _, element := range ui.elements {
|
||||||
element.View.draw()
|
element.View.draw()
|
||||||
@@ -74,11 +76,6 @@ func (ui *Ui) SetActive(name string) {
|
|||||||
ui.Refresh()
|
ui.Refresh()
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ui *Ui) SetClear(fg, bg Attribute) {
|
|
||||||
ui.fg = fg
|
|
||||||
ui.bg = bg
|
|
||||||
}
|
|
||||||
|
|
||||||
func (ui *Ui) Run() error {
|
func (ui *Ui) Run() error {
|
||||||
if termbox.IsInit {
|
if termbox.IsInit {
|
||||||
return nil
|
return nil
|
||||||
@@ -138,32 +135,28 @@ func (ui *Ui) onKeyEvent(mod Modifier, key Key) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ui *Ui) SetView(name string, x0, y0, x1, y1 int, view View) {
|
func (ui *Ui) Add(name string, view View) error {
|
||||||
if element, ok := ui.elements[name]; ok {
|
if _, ok := ui.elements[name]; ok {
|
||||||
element.X0 = x0
|
return errors.New("view already exists")
|
||||||
element.Y0 = y0
|
|
||||||
element.X1 = x1
|
|
||||||
element.Y1 = y1
|
|
||||||
view = element.View
|
|
||||||
} else {
|
|
||||||
ui.elements[name] = &uiElement{
|
|
||||||
X0: x0,
|
|
||||||
Y0: y0,
|
|
||||||
X1: x1,
|
|
||||||
Y1: y1,
|
|
||||||
View: view,
|
|
||||||
}
|
|
||||||
view.uiInitialize(ui)
|
|
||||||
}
|
}
|
||||||
view.setBounds(x0, y0, x1, y1)
|
ui.elements[name] = &uiElement{
|
||||||
|
View: view,
|
||||||
|
}
|
||||||
|
view.uiInitialize(ui)
|
||||||
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ui *Ui) View(name string) View {
|
func (ui *Ui) SetBounds(name string, x0, y0, x1, y1 int) error {
|
||||||
if element, ok := ui.elements[name]; !ok {
|
element, ok := ui.elements[name]
|
||||||
return nil
|
if !ok {
|
||||||
} else {
|
return errors.New("view cannot be found")
|
||||||
return element.View
|
|
||||||
}
|
}
|
||||||
|
element.X0 = x0
|
||||||
|
element.Y0 = y0
|
||||||
|
element.X1 = x1
|
||||||
|
element.Y1 = y1
|
||||||
|
element.View.setBounds(x0, y0, x1, y1)
|
||||||
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ui *Ui) AddKeyListener(listener KeyListener, key Key) {
|
func (ui *Ui) AddKeyListener(listener KeyListener, key Key) {
|
||||||
|
|||||||
Reference in New Issue
Block a user