summary refs log tree commit diff stats
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)
downloadaerc-661e3ec2a4dd97d4a8a8eab4f281b088770a6af2.tar.gz
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)
+}