Skip to content

Commit

Permalink
feat: Prepare multi-page ui
Browse files Browse the repository at this point in the history
  • Loading branch information
cluttrdev committed Dec 3, 2023
1 parent 35e8f3a commit 9652f71
Showing 1 changed file with 50 additions and 30 deletions.
80 changes: 50 additions & 30 deletions ui.go
Original file line number Diff line number Diff line change
Expand Up @@ -58,16 58,21 @@ var debug bool = false
type ui struct {
tview.Application

grid *tview.Grid
layout *tview.Grid

header *tview.TextView
footer *tview.TextView
pages *tview.Pages

// translate page
sourceLangDropDown *tview.DropDown
targetLangDropDown *tview.DropDown

inputTextArea *tview.TextArea
outputTextView *tview.TextView

sourceLangDropDown *tview.DropDown
targetLangDropDown *tview.DropDown
// glossaries page

}

func newUI() *ui {
Expand All @@ -77,38 82,23 @@ func newUI() *ui {

ui.header = tview.NewTextView().
SetTextAlign(tview.AlignLeft)

ui.sourceLangDropDown = tview.NewDropDown()
ui.targetLangDropDown = tview.NewDropDown()

ui.inputTextArea = tview.NewTextArea().
SetPlaceholder("Type to translate.")

ui.outputTextView = tview.NewTextView()
ui.outputTextView.SetChangedFunc(func() {
ui.Draw()
})
ui.header.SetBorder(true)

ui.footer = tview.NewTextView().
SetTextAlign(tview.AlignRight)
ui.footer.SetBorder(true)

grid := tview.NewGrid()

grid.
AddItem(ui.header, 0, 0, 1, 2, 0, 0, false).
AddItem(ui.sourceLangDropDown, 1, 0, 1, 1, 0, 0, false).
AddItem(ui.targetLangDropDown, 1, 1, 1, 1, 0, 0, false).
AddItem(ui.inputTextArea, 2, 0, 1, 1, 0, 0, true).
AddItem(ui.outputTextView, 2, 1, 1, 1, 0, 0, false).
AddItem(ui.footer, 3, 0, 1, 2, 0, 0, false)
ui.pages = tview.NewPages().
AddPage("translate", ui.setupTranslatePage(), true, true).
AddPage("glossaries", ui.setupGlossariesPage(), true, false)

grid.
SetColumns(0, 0).
SetBorders(true)

ui.grid = grid
ui.layout = tview.NewGrid().
SetBorders(false).
AddItem(ui.header, 0, 0, 1, 1, 0, 0, false).
AddItem(ui.pages, 1, 0, 1, 1, 0, 0, true).
AddItem(ui.footer, 2, 0, 1, 1, 0, 0, false)

ui.SetRoot(ui.grid, true)
ui.SetRoot(ui.layout, true)

ui.registerKeybindings()

Expand All @@ -120,6 110,36 @@ func newUI() *ui {
return ui
}

func (ui *ui) setupTranslatePage() tview.Primitive {
ui.sourceLangDropDown = tview.NewDropDown()
ui.targetLangDropDown = tview.NewDropDown()

ui.inputTextArea = tview.NewTextArea().
SetPlaceholder("Type to translate.")

ui.outputTextView = tview.NewTextView()
ui.outputTextView.SetChangedFunc(func() {
ui.Draw()
})

layout := tview.NewGrid().
SetRows(1, 0).
SetColumns(0, 0).
SetBorders(true).
AddItem(ui.sourceLangDropDown, 0, 0, 1, 1, 0, 0, false).
AddItem(ui.targetLangDropDown, 0, 1, 1, 1, 0, 0, false).
AddItem(ui.inputTextArea, 1, 0, 1, 1, 0, 0, true).
AddItem(ui.outputTextView, 1, 1, 1, 1, 0, 0, false)
layout.SetBorderPadding(0, 0, 0, 0)

return layout
}

func (ui *ui) setupGlossariesPage() tview.Primitive {
layout := tview.NewGrid()
return layout
}

func (ui *ui) registerKeybindings() {
ui.Application.SetInputCapture(func(event *tcell.EventKey) *tcell.EventKey {
if event.Modifiers() == tcell.ModAlt {
Expand Down Expand Up @@ -162,7 182,7 @@ func (ui *ui) adjustToScreenSize(width int, height int) bool {
headerHeight = 1
}

ui.grid.SetRows(headerHeight, 1, 0, 1)
ui.layout.SetRows(headerHeight 2, 0, 1 2)
ui.header.SetText(strings.TrimPrefix(headerText, "\n"))

if width > 96 {
Expand Down

0 comments on commit 9652f71

Please sign in to comment.