showHelpDialog displays the help content as a centered modal dialog
()
| 940 | |
| 941 | // showHelpDialog displays the help content as a centered modal dialog |
| 942 | func showHelpDialog() { |
| 943 | // Create help content text view |
| 944 | helpText := tview.NewTextView(). |
| 945 | SetDynamicColors(true). |
| 946 | SetText(getHelpContent()). |
| 947 | SetTextAlign(tview.AlignLeft). |
| 948 | SetWordWrap(true) |
| 949 | |
| 950 | // Make help text scrollable with modern styling |
| 951 | helpText.SetScrollable(true) |
| 952 | helpText.SetBorder(true) |
| 953 | helpText.SetTitle(" ❓ Help - Press ? or q or Esc to close ") |
| 954 | helpText.SetTitleAlign(tview.AlignCenter) |
| 955 | helpText.SetBorderColor(tcell.NewRGBColor(150, 100, 255)) |
| 956 | helpText.SetBackgroundColor(tcell.NewRGBColor(10, 10, 20)) |
| 957 | |
| 958 | // Handle key events to close dialog |
| 959 | helpText.SetInputCapture(func(event *tcell.EventKey) *tcell.EventKey { |
| 960 | if event.Key() == tcell.KeyEscape || |
| 961 | (event.Key() == tcell.KeyRune && (event.Rune() == '?' || event.Rune() == 'q')) { |
| 962 | UI.RemovePage("helpDialog") |
| 963 | app.SetFocus(bufferTable) |
| 964 | return nil |
| 965 | } |
| 966 | // Allow j/k navigation in help |
| 967 | if event.Key() == tcell.KeyRune && event.Rune() == 'j' { |
| 968 | row, col := helpText.GetScrollOffset() |
| 969 | helpText.ScrollTo(row+1, col) |
| 970 | return nil |
| 971 | } |
| 972 | if event.Key() == tcell.KeyRune && event.Rune() == 'k' { |
| 973 | row, col := helpText.GetScrollOffset() |
| 974 | if row > 0 { |
| 975 | helpText.ScrollTo(row-1, col) |
| 976 | } |
| 977 | return nil |
| 978 | } |
| 979 | // gg - go to top |
| 980 | if event.Key() == tcell.KeyRune && event.Rune() == 'g' { |
| 981 | if lastKeyWasG { |
| 982 | helpText.ScrollToBeginning() |
| 983 | lastKeyWasG = false |
| 984 | return nil |
| 985 | } |
| 986 | lastKeyWasG = true |
| 987 | go func() { |
| 988 | time.Sleep(500 * time.Millisecond) |
| 989 | lastKeyWasG = false |
| 990 | }() |
| 991 | return nil |
| 992 | } |
| 993 | // G - go to bottom |
| 994 | if event.Key() == tcell.KeyRune && event.Rune() == 'G' { |
| 995 | helpText.ScrollToEnd() |
| 996 | return nil |
| 997 | } |
| 998 | // Ctrl-d/u for page scrolling |
| 999 | if event.Key() == tcell.KeyCtrlD { |
no test coverage detected