aboutsummaryrefslogtreecommitdiff
path: root/ui/ui.go
diff options
context:
space:
mode:
authorDrew DeVault <sir@cmpwn.com>2018-02-26 22:41:54 -0500
committerDrew DeVault <sir@cmpwn.com>2018-02-26 22:42:01 -0500
commit661e3ec2a4dd97d4a8a8eab4f281b088770a6af2 (patch)
tree1f94f9a168642617690934deba2e5b712abb1834 /ui/ui.go
parent07f7cac2f3c5b7b74d16296d5afb57ff7e908130 (diff)
Implement basic ex line input
TODO: - scrolling - commit/cancel - command history (via an external command history provider) - tab completion (via an external tab completion provider)
Diffstat (limited to 'ui/ui.go')
-rw-r--r--ui/ui.go11
1 files changed, 11 insertions, 0 deletions
diff --git a/ui/ui.go b/ui/ui.go
index d1d2ca3..9ea037c 100644
--- a/ui/ui.go
+++ b/ui/ui.go
@@ -11,6 +11,8 @@ type UI struct {
Content Drawable
ctx *Context
+ interactive []Interactive
+
tbEvents chan tb.Event
invalidations chan interface{}
}
@@ -58,6 +60,11 @@ func (state *UI) Tick() bool {
state.ctx = NewContext(event.Width, event.Height)
state.Content.Invalidate()
}
+ if state.interactive != nil {
+ for _, i := range state.interactive {
+ i.Event(event)
+ }
+ }
case <-state.invalidations:
state.Content.Draw(state.ctx)
tb.Flush()
@@ -66,3 +73,7 @@ func (state *UI) Tick() bool {
}
return true
}
+
+func (state *UI) AddInteractive(i Interactive) {
+ state.interactive = append(state.interactive, i)
+}