gask/screen.go

63 lines
1.2 KiB
Go

package main
import (
termbox "github.com/nsf/termbox-go"
)
type Screen interface {
handleKeyEvent(termbox.Event) int
initialize(Bundle) error
drawScreen()
}
const (
ScreenMain = iota
ScreenTask
ScreenAbout
ScreenExit
DefaultBg = termbox.ColorBlack
DefaultFg = termbox.ColorWhite
TitleFg = termbox.ColorWhite
TitleBg = termbox.ColorBlue
CursorFg = termbox.ColorBlack
CursorBg = termbox.ColorGreen
)
func (a *AppState) BuildScreens() {
mainScreen := MainScreen{
viewPort: &ViewPort{},
}
aboutScreen := AboutScreen{}
taskScreen := TaskScreen{
viewPort: &ViewPort{},
}
a.screens = append(a.screens, &mainScreen)
a.screens = append(a.screens, &taskScreen)
a.screens = append(a.screens, &aboutScreen)
}
func (a *AppState) drawBackground(bg termbox.Attribute) {
termbox.Clear(0, bg)
}
func (a *AppState) layoutAndDrawScreen(s Screen) {
a.drawBackground(DefaultBg)
s.drawScreen()
termbox.Flush()
}
// ViewPort helps keep track of what's being displayed on the screen
type ViewPort struct {
bytesPerRow int
numberOfRows int
firstRow int
cursor int
}
func readUserInput(e chan termbox.Event) {
for {
e <- termbox.PollEvent()
}
}