summary refs log tree commit diff stats
path: root/ui/ui.go
diff options
context:
space:
mode:
Diffstat (limited to 'ui/ui.go')
-rw-r--r--ui/ui.go79
1 files changed, 0 insertions, 79 deletions
diff --git a/ui/ui.go b/ui/ui.go
deleted file mode 100644
index 9ea037c..0000000
--- a/ui/ui.go
+++ /dev/null
@@ -1,79 +0,0 @@
-package ui
-
-import (
-	tb "github.com/nsf/termbox-go"
-
-	"git.sr.ht/~sircmpwn/aerc2/config"
-)
-
-type UI struct {
-	Exit    bool
-	Content Drawable
-	ctx     *Context
-
-	interactive []Interactive
-
-	tbEvents      chan tb.Event
-	invalidations chan interface{}
-}
-
-func Initialize(conf *config.AercConfig, content Drawable) (*UI, error) {
-	if err := tb.Init(); err != nil {
-		return nil, err
-	}
-	width, height := tb.Size()
-	state := UI{
-		Content: content,
-		ctx:     NewContext(width, height),
-
-		tbEvents:      make(chan tb.Event, 10),
-		invalidations: make(chan interface{}),
-	}
-	tb.SetInputMode(tb.InputEsc | tb.InputMouse)
-	tb.SetOutputMode(tb.Output256)
-	go (func() {
-		for !state.Exit {
-			state.tbEvents <- tb.PollEvent()
-		}
-	})()
-	go (func() { state.invalidations <- nil })()
-	content.OnInvalidate(func(_ Drawable) {
-		go (func() { state.invalidations <- nil })()
-	})
-	return &state, nil
-}
-
-func (state *UI) Close() {
-	tb.Close()
-}
-
-func (state *UI) Tick() bool {
-	select {
-	case event := <-state.tbEvents:
-		switch event.Type {
-		case tb.EventKey:
-			if event.Key == tb.KeyEsc {
-				state.Exit = true
-			}
-		case tb.EventResize:
-			tb.Clear(tb.ColorDefault, tb.ColorDefault)
-			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()
-	default:
-		return false
-	}
-	return true
-}
-
-func (state *UI) AddInteractive(i Interactive) {
-	state.interactive = append(state.interactive, i)
-}