58 lines
805 B
Go
58 lines
805 B
Go
package ui
|
|
|
|
import (
|
|
tb "github.com/nsf/termbox-go"
|
|
|
|
"git.sr.ht/~sircmpwn/aerc2/config"
|
|
)
|
|
|
|
const (
|
|
Valid = 0
|
|
InvalidateTabs = 1 << iota
|
|
InvalidateSidebar
|
|
InvalidateStatusBar
|
|
)
|
|
|
|
const (
|
|
InvalidateAll = InvalidateTabs | InvalidateSidebar | InvalidateStatusBar
|
|
)
|
|
|
|
type Geometry struct {
|
|
Row int
|
|
Col int
|
|
Width int
|
|
Height int
|
|
}
|
|
|
|
type AercTab interface {
|
|
Name() string
|
|
Invalid() bool
|
|
Render(at Geometry)
|
|
SetParent(parent *UIState)
|
|
}
|
|
|
|
type UIState struct {
|
|
Config *config.AercConfig
|
|
Exit bool
|
|
InvalidPanes uint
|
|
|
|
Panes struct {
|
|
TabList Geometry
|
|
TabView Geometry
|
|
Sidebar Geometry
|
|
StatusBar Geometry
|
|
}
|
|
|
|
Tabs []AercTab
|
|
SelectedTab int
|
|
|
|
Prompt struct {
|
|
Prompt *string
|
|
Text *string
|
|
Index int
|
|
Scroll int
|
|
}
|
|
|
|
tbEvents chan tb.Event
|
|
}
|