mirror of https://github.com/rivo/tview
Revert "Publishing the new `TextArea` primitive"
parent
3d42e9b328
commit
0d48f2a536
@ -1 +0,0 @@
|
||||
![Screenshot](screenshot.png)
|
@ -1,133 +0,0 @@
|
||||
// Demo code for the TextArea primitive.
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"github.com/gdamore/tcell/v2"
|
||||
"github.com/rivo/tview"
|
||||
)
|
||||
|
||||
func main() {
|
||||
app := tview.NewApplication()
|
||||
|
||||
textArea := tview.NewTextArea().
|
||||
SetPlaceholder("Enter text here...")
|
||||
textArea.SetTitle("Text Area").SetBorder(true)
|
||||
helpInfo := tview.NewTextView().
|
||||
SetText(" Press F1 for help, press Ctrl-C to exit")
|
||||
position := tview.NewTextView().
|
||||
SetDynamicColors(true).
|
||||
SetTextAlign(tview.AlignRight)
|
||||
pages := tview.NewPages()
|
||||
|
||||
updateInfos := func() {
|
||||
fromRow, fromColumn, toRow, toColumn := textArea.GetCursor()
|
||||
if fromRow == toRow && fromColumn == toColumn {
|
||||
position.SetText(fmt.Sprintf("Row: [yellow]%d[white], Column: [yellow]%d ", fromRow, fromColumn))
|
||||
} else {
|
||||
position.SetText(fmt.Sprintf("[red]From[white] Row: [yellow]%d[white], Column: [yellow]%d[white] - [red]To[white] Row: [yellow]%d[white], To Column: [yellow]%d ", fromRow, fromColumn, toRow, toColumn))
|
||||
}
|
||||
}
|
||||
|
||||
textArea.SetMovedFunc(updateInfos)
|
||||
updateInfos()
|
||||
|
||||
mainView := tview.NewGrid().
|
||||
SetRows(0, 1).
|
||||
AddItem(textArea, 0, 0, 1, 2, 0, 0, true).
|
||||
AddItem(helpInfo, 1, 0, 1, 1, 0, 0, false).
|
||||
AddItem(position, 1, 1, 1, 1, 0, 0, false)
|
||||
|
||||
help1 := tview.NewTextView().
|
||||
SetDynamicColors(true).
|
||||
SetText(`[green]Navigation
|
||||
|
||||
[yellow]Left arrow[white]: Move left.
|
||||
[yellow]Right arrow[white]: Move right.
|
||||
[yellow]Down arrow[white]: Move down.
|
||||
[yellow]Up arrow[white]: Move up.
|
||||
[yellow]Ctrl-A, Home[white]: Move to the beginning of the current line.
|
||||
[yellow]Ctrl-E, End[white]: Move to the end of the current line.
|
||||
[yellow]Ctrl-F, page down[white]: Move down by one page.
|
||||
[yellow]Ctrl-B, page up[white]: Move up by one page.
|
||||
[yellow]Alt-Up arrow[white]: Scroll the page up.
|
||||
[yellow]Alt-Down arrow[white]: Scroll the page down.
|
||||
[yellow]Alt-Left arrow[white]: Scroll the page to the left.
|
||||
[yellow]Alt-Right arrow[white]: Scroll the page to the right.
|
||||
[yellow]Alt-B, Ctrl-Left arrow[white]: Move back by one word.
|
||||
[yellow]Alt-F, Ctrl-Right arrow[white]: Move forward by one word.
|
||||
|
||||
[blue]Press Enter for more help, press Escape to return.`)
|
||||
help2 := tview.NewTextView().
|
||||
SetDynamicColors(true).
|
||||
SetText(`[green]Editing[white]
|
||||
|
||||
Type to enter text.
|
||||
[yellow]Ctrl-H, Backspace[white]: Delete the left character.
|
||||
[yellow]Ctrl-D, Delete[white]: Delete the right character.
|
||||
[yellow]Ctrl-K[white]: Delete until the end of the line.
|
||||
[yellow]Ctrl-W[white]: Delete the rest of the word.
|
||||
[yellow]Ctrl-U[white]: Delete the current line.
|
||||
|
||||
[blue]Press Enter for more help, press Escape to return.`)
|
||||
help3 := tview.NewTextView().
|
||||
SetDynamicColors(true).
|
||||
SetText(`[green]Selecting Text[white]
|
||||
|
||||
Move while holding Shift or drag the mouse.
|
||||
Double-click to select a word.
|
||||
|
||||
[green]Clipboard
|
||||
|
||||
[yellow]Ctrl-Q[white]: Copy.
|
||||
[yellow]Ctrl-X[white]: Cut.
|
||||
[yellow]Ctrl-V[white]: Paste.
|
||||
|
||||
[green]Undo
|
||||
|
||||
[yellow]Ctrl-Z[white]: Undo.
|
||||
[yellow]Ctrl-Y[white]: Redo.
|
||||
|
||||
[blue]Press Enter for more help, press Escape to return.`)
|
||||
help := tview.NewFrame(help1).
|
||||
SetBorders(1, 1, 0, 0, 2, 2)
|
||||
help.SetBorder(true).
|
||||
SetTitle("Help").
|
||||
SetInputCapture(func(event *tcell.EventKey) *tcell.EventKey {
|
||||
if event.Key() == tcell.KeyEscape {
|
||||
pages.SwitchToPage("main")
|
||||
return nil
|
||||
} else if event.Key() == tcell.KeyEnter {
|
||||
switch {
|
||||
case help.GetPrimitive() == help1:
|
||||
help.SetPrimitive(help2)
|
||||
case help.GetPrimitive() == help2:
|
||||
help.SetPrimitive(help3)
|
||||
case help.GetPrimitive() == help3:
|
||||
help.SetPrimitive(help1)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
return event
|
||||
})
|
||||
|
||||
pages.AddAndSwitchToPage("main", mainView, true).
|
||||
AddPage("help", tview.NewGrid().
|
||||
SetColumns(0, 64, 0).
|
||||
SetRows(0, 22, 0).
|
||||
AddItem(help, 1, 1, 1, 1, 0, 0, true), true, false)
|
||||
|
||||
app.SetInputCapture(func(event *tcell.EventKey) *tcell.EventKey {
|
||||
if event.Key() == tcell.KeyF1 {
|
||||
pages.ShowPage("help") //TODO: Check when clicking outside help window with the mouse. Then clicking help again.
|
||||
return nil
|
||||
}
|
||||
return event
|
||||
})
|
||||
|
||||
if err := app.SetRoot(pages,
|
||||
true).EnableMouse(true).Run(); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
}
|
Binary file not shown.
Before Width: | Height: | Size: 88 KiB |
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue