forked from tslocum/cview
46 lines
1.1 KiB
Go
46 lines
1.1 KiB
Go
// Demo code for the Grid primitive.
|
|
package main
|
|
|
|
import (
|
|
"code.rocketnine.space/tslocum/cview"
|
|
)
|
|
|
|
func main() {
|
|
app := cview.NewApplication()
|
|
defer app.HandlePanic()
|
|
|
|
app.EnableMouse(true)
|
|
|
|
newPrimitive := func(text string) cview.Primitive {
|
|
tv := cview.NewTextView()
|
|
tv.SetTextAlign(cview.AlignCenter)
|
|
tv.SetText(text)
|
|
return tv
|
|
}
|
|
menu := newPrimitive("Menu")
|
|
main := newPrimitive("Main content")
|
|
sideBar := newPrimitive("Side Bar")
|
|
|
|
grid := cview.NewGrid()
|
|
grid.SetRows(3, 0, 3)
|
|
grid.SetColumns(30, 0, 30)
|
|
grid.SetBorders(true)
|
|
grid.AddItem(newPrimitive("Header"), 0, 0, 1, 3, 0, 0, false)
|
|
grid.AddItem(newPrimitive("Footer"), 2, 0, 1, 3, 0, 0, false)
|
|
|
|
// Layout for screens narrower than 100 cells (menu and side bar are hidden).
|
|
grid.AddItem(menu, 0, 0, 0, 0, 0, 0, false)
|
|
grid.AddItem(main, 1, 0, 1, 3, 0, 0, false)
|
|
grid.AddItem(sideBar, 0, 0, 0, 0, 0, 0, false)
|
|
|
|
// Layout for screens wider than 100 cells.
|
|
grid.AddItem(menu, 1, 0, 1, 1, 0, 100, false)
|
|
grid.AddItem(main, 1, 1, 1, 1, 0, 100, false)
|
|
grid.AddItem(sideBar, 1, 2, 1, 1, 0, 100, false)
|
|
|
|
app.SetRoot(grid, true)
|
|
if err := app.Run(); err != nil {
|
|
panic(err)
|
|
}
|
|
}
|