...

Source file src/github.com/rivo/tview/demos/presentation/flex.go

Documentation: github.com/rivo/tview/demos/presentation

     1  package main
     2  
     3  import (
     4  	"github.com/gdamore/tcell/v2"
     5  	"github.com/rivo/tview"
     6  )
     7  
     8  // Flex demonstrates flexbox layout.
     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