...
1 package main
2
3 import (
4 "github.com/gdamore/tcell/v2"
5 "github.com/rivo/tview"
6 )
7
8
9 func Flex(nextSlide func()) (title string, content tview.Primitive) {
10 modalShown := false
11 pages := tview.NewPages()
12 flex := tview.NewFlex().
13 AddItem(tview.NewBox().SetBorder(true).SetTitle("Flexible width, twice of middle column"), 0, 2, true).
14 AddItem(tview.NewFlex().
15 SetDirection(tview.FlexRow).
16 AddItem(tview.NewBox().SetBorder(true).SetTitle("Flexible width"), 0, 1, false).
17 AddItem(tview.NewBox().SetBorder(true).SetTitle("Fixed height"), 15, 1, false).
18 AddItem(tview.NewBox().SetBorder(true).SetTitle("Flexible height"), 0, 1, false), 0, 1, false).
19 AddItem(tview.NewBox().SetBorder(true).SetTitle("Fixed width"), 30, 1, false)
20 flex.SetInputCapture(func(event *tcell.EventKey) *tcell.EventKey {
21 if modalShown {
22 nextSlide()
23 modalShown = false
24 } else {
25 pages.ShowPage("modal")
26 modalShown = true
27 }
28 return event
29 })
30 modal := tview.NewModal().
31 SetText("Resize the window to see the effect of the flexbox parameters").
32 AddButtons([]string{"Ok"}).SetDoneFunc(func(buttonIndex int, buttonLabel string) {
33 pages.HidePage("modal")
34 })
35 pages.AddPage("flex", flex, true, true).
36 AddPage("modal", modal, false, false)
37 return "Flex", pages
38 }
39
View as plain text