uiterm: split Ui.SetView into Ui.Add, Ui.SetBounds

This commit is contained in:
Tim Cooper
2014-12-06 22:06:13 -04:00
parent 9b0214d112
commit 64cdb10ffc
2 changed files with 38 additions and 45 deletions

View File

@@ -1,6 +1,8 @@
package uiterm
import (
"errors"
"github.com/nsf/termbox-go"
)
@@ -14,6 +16,9 @@ type UiManager interface {
}
type Ui struct {
Fg Attribute
Bg Attribute
close chan bool
manager UiManager
@@ -21,9 +26,6 @@ type Ui struct {
activeElement *uiElement
keyListeners map[Key][]KeyListener
fg Attribute
bg Attribute
}
type uiElement struct {
@@ -49,7 +51,7 @@ func (ui *Ui) Close() {
func (ui *Ui) Refresh() {
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()
for _, element := range ui.elements {
element.View.draw()
@@ -74,11 +76,6 @@ func (ui *Ui) SetActive(name string) {
ui.Refresh()
}
func (ui *Ui) SetClear(fg, bg Attribute) {
ui.fg = fg
ui.bg = bg
}
func (ui *Ui) Run() error {
if termbox.IsInit {
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) {
if element, ok := ui.elements[name]; ok {
element.X0 = x0
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)
func (ui *Ui) Add(name string, view View) error {
if _, ok := ui.elements[name]; ok {
return errors.New("view already exists")
}
view.setBounds(x0, y0, x1, y1)
ui.elements[name] = &uiElement{
View: view,
}
view.uiInitialize(ui)
return nil
}
func (ui *Ui) View(name string) View {
if element, ok := ui.elements[name]; !ok {
return nil
} else {
return element.View
func (ui *Ui) SetBounds(name string, x0, y0, x1, y1 int) error {
element, ok := ui.elements[name]
if !ok {
return errors.New("view cannot be found")
}
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) {