package main import "github.com/nsf/termbox-go" // Screen is a basic structure for all of the applications screens type Screen interface { handleEvent(event termbox.Event) int performLayout(style Style) drawScreen(style Style) } func drawBackground(bg termbox.Attribute) { termbox.Clear(0, bg) } func layoutAndDrawScreen(screen Screen, style Style) { screen.performLayout(style) drawBackground(style.defaultBg) screen.drawScreen(style) termbox.Flush() } // Style holds a bunch of termbox attributes to help keep a consistent theme type Style struct { defaultBg termbox.Attribute defaultFg termbox.Attribute titleFg termbox.Attribute titleBg termbox.Attribute cursorFg termbox.Attribute cursorBg termbox.Attribute }