WIP layout
parent
80fad75a59
commit
2003843965
61
main.go
61
main.go
|
@ -19,10 +19,33 @@ const (
|
|||
type UI struct {
|
||||
Mode string
|
||||
App *tview.Application
|
||||
Fields []Field
|
||||
|
||||
// UI things
|
||||
Pages *tview.Pages
|
||||
TopFlex *tview.Flex
|
||||
Field *tview.Box
|
||||
FieldBar *tview.Flex
|
||||
BottomBar *tview.Pages
|
||||
ExInput *tview.InputField
|
||||
ExOutput *tview.TextView
|
||||
}
|
||||
|
||||
func (ui *UI) handleInput(event *tcell.EventKey) *tcell.EventKey {
|
||||
return nil
|
||||
switch ui.Mode {
|
||||
case NormalMode:
|
||||
case ExMode:
|
||||
case FocusedMode:
|
||||
case SearchMode:
|
||||
default:
|
||||
panic("mode?")
|
||||
}
|
||||
return event
|
||||
}
|
||||
|
||||
type Field struct {
|
||||
Name string
|
||||
Selected bool
|
||||
}
|
||||
|
||||
func newUI() *UI {
|
||||
|
@ -30,8 +53,44 @@ func newUI() *UI {
|
|||
ui := UI{
|
||||
Mode: NormalMode,
|
||||
App: app,
|
||||
Fields: []Field{{"scratch", true}, {"test", false}},
|
||||
Pages: tview.NewPages(),
|
||||
TopFlex: tview.NewFlex(),
|
||||
Field: tview.NewBox(),
|
||||
FieldBar: tview.NewFlex(),
|
||||
BottomBar: tview.NewPages(),
|
||||
ExInput: tview.NewInputField(),
|
||||
ExOutput: tview.NewTextView(),
|
||||
}
|
||||
|
||||
app.SetInputCapture(ui.handleInput)
|
||||
|
||||
ui.TopFlex.SetDirection(tview.FlexRow)
|
||||
ui.TopFlex.AddItem(ui.Field, 0, 20, true)
|
||||
ui.TopFlex.AddItem(ui.FieldBar, 0, 1, false)
|
||||
ui.TopFlex.AddItem(ui.BottomBar, 1, -1, false)
|
||||
|
||||
ui.Pages.AddPage("main", ui.TopFlex, true, true)
|
||||
|
||||
ui.BottomBar.AddPage("output", ui.ExOutput, true, true)
|
||||
ui.BottomBar.AddPage("input", ui.ExInput, false, false)
|
||||
|
||||
fmt.Fprintln(ui.ExOutput, "porphyry has started. :q to quit")
|
||||
|
||||
ui.FieldBar.SetDirection(tview.FlexColumn)
|
||||
app.SetBeforeDrawFunc(func(_ tcell.Screen) bool {
|
||||
ui.FieldBar.Clear()
|
||||
for _, f := range ui.Fields {
|
||||
t := tview.NewTextView().SetTextStyle(tcell.StyleDefault.Bold(f.Selected))
|
||||
t.SetMaxLines(1)
|
||||
t.SetBorder(true)
|
||||
fmt.Fprintf(t, f.Name)
|
||||
ui.FieldBar.AddItem(t, 0, 1, false)
|
||||
}
|
||||
return false
|
||||
})
|
||||
|
||||
app.SetRoot(ui.Pages, true)
|
||||
return &ui
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue