NewHelpModal creates a new help modal.
(keys config.KeyBindings)
| 21 | |
| 22 | // NewHelpModal creates a new help modal. |
| 23 | func NewHelpModal(keys config.KeyBindings) *HelpModal { |
| 24 | textView := tview.NewTextView(). |
| 25 | SetDynamicColors(true). |
| 26 | SetScrollable(true). |
| 27 | SetWrap(false) |
| 28 | |
| 29 | textView.SetBorder(true). |
| 30 | SetTitle(" pvetui - Help & Keybindings "). |
| 31 | SetTitleColor(theme.Colors.Primary). |
| 32 | SetBorderColor(theme.Colors.Border) |
| 33 | |
| 34 | helpText := buildHelpText(keys) |
| 35 | textView.SetText(helpText) |
| 36 | |
| 37 | // Create a flex container to center the text view with better proportions |
| 38 | flex := tview.NewFlex(). |
| 39 | SetDirection(tview.FlexColumn). |
| 40 | AddItem(nil, 0, 1, false). // Left padding |
| 41 | AddItem(tview.NewFlex().SetDirection(tview.FlexRow). |
| 42 | AddItem(nil, 0, 1, false). // Top padding |
| 43 | AddItem(textView, 0, 10, true). // Main content |
| 44 | AddItem(nil, 0, 1, false), // Bottom padding |
| 45 | 0, 8, true). // Main column |
| 46 | AddItem(nil, 0, 1, false) // Right padding |
| 47 | |
| 48 | pages := tview.NewPages() |
| 49 | pages.AddPage("help-content", flex, true, true) |
| 50 | |
| 51 | return &HelpModal{ |
| 52 | Pages: pages, |
| 53 | textView: textView, |
| 54 | } |
| 55 | } |
| 56 | |
| 57 | // buildHelpText constructs the formatted and aligned help text. |
| 58 | func buildHelpText(keys config.KeyBindings) string { |
no test coverage detected