v/GTT
1
0
mirror of https://github.com/eeeXun/GTT.git synced 2025-05-17 00:00:16 -07:00

refactor: replace AddItem with attachItems

attachItems implements adding multi items & centering items
This commit is contained in:
eeeXun 2023-01-29 11:45:01 +08:00
parent a44d329cc7
commit f9775ba89e

88
ui.go
View File

@ -45,6 +45,13 @@ const (
Switch pop out window.` Switch pop out window.`
) )
type Item struct {
item tview.Primitive
fixedSize int
proportion int
focus bool
}
func updateTranslateWindow() { func updateTranslateWindow() {
translateWindow.Clear() translateWindow.Clear()
if hideBelow { if hideBelow {
@ -211,6 +218,21 @@ func attachButton() *tview.Flex {
AddItem(nil, 0, 1, false) AddItem(nil, 0, 1, false)
} }
// If center is true, it will center the items
func attachItems(center bool, direction int, items ...Item) *tview.Flex {
container := tview.NewFlex().SetDirection(direction)
if center {
container.AddItem(nil, 0, 1, false)
}
for _, item := range items {
container.AddItem(item.item, item.fixedSize, item.proportion, item.focus)
}
if center {
container.AddItem(nil, 0, 1, false)
}
return container
}
func uiInit() { func uiInit() {
// input/output // input/output
srcInput.SetBorder(true) srcInput.SetBorder(true)
@ -269,54 +291,44 @@ func uiInit() {
updateTranslateWindow() updateTranslateWindow()
langPopOut.SetDirection(tview.FlexRow). langPopOut.SetDirection(tview.FlexRow).
AddItem(nil, 0, 1, false). AddItem(nil, 0, 1, false).
AddItem(tview.NewFlex().SetDirection(tview.FlexColumn). AddItem(attachItems(true, tview.FlexColumn,
AddItem(nil, 0, 1, false). Item{item: attachItems(false, tview.FlexRow,
AddItem(tview.NewFlex().SetDirection(tview.FlexRow). Item{item: attachItems(true, tview.FlexColumn,
AddItem(tview.NewFlex().SetDirection(tview.FlexColumn). Item{item: attachItems(false, tview.FlexRow,
AddItem(nil, 0, 1, false). Item{item: translatorDropDown, fixedSize: 0, proportion: 1, focus: true}),
AddItem(tview.NewFlex().SetDirection(tview.FlexRow). fixedSize: 0, proportion: 2, focus: true}),
AddItem(translatorDropDown, 0, 1, true), fixedSize: 1, proportion: 1, focus: true},
0, 2, true). Item{item: attachItems(false, tview.FlexColumn,
AddItem(nil, 0, 1, false), Item{item: srcLangDropDown, fixedSize: 0, proportion: 1, focus: false},
1, 1, true). Item{item: dstLangDropDown, fixedSize: 0, proportion: 1, focus: false}),
AddItem(tview.NewFlex().SetDirection(tview.FlexColumn). fixedSize: 0, proportion: 1, focus: false}),
AddItem(srcLangDropDown, langStrMaxLength, 1, false). fixedSize: 2 * langStrMaxLength, proportion: 1, focus: true}),
AddItem(dstLangDropDown, langStrMaxLength, 1, false),
0, 1, false),
2*langStrMaxLength, 1, true).
AddItem(nil, 0, 1, false),
popOutWindowHeight, 1, true). popOutWindowHeight, 1, true).
AddItem(attachButton(), 1, 1, false). AddItem(attachButton(), 1, 1, false).
AddItem(nil, 0, 1, false) AddItem(nil, 0, 1, false)
stylePopOut.SetDirection(tview.FlexRow). stylePopOut.SetDirection(tview.FlexRow).
AddItem(nil, 0, 1, false). AddItem(nil, 0, 1, false).
AddItem(tview.NewFlex().SetDirection(tview.FlexColumn). AddItem(attachItems(true, tview.FlexColumn,
AddItem(nil, 0, 1, false). Item{item: attachItems(false, tview.FlexRow,
AddItem(tview.NewFlex().SetDirection(tview.FlexRow). Item{item: attachItems(true, tview.FlexColumn,
AddItem(tview.NewFlex().SetDirection(tview.FlexColumn). Item{item: attachItems(false, tview.FlexRow,
AddItem(nil, 0, 1, false). Item{item: themeDropDown, fixedSize: 0, proportion: 1, focus: true},
AddItem(tview.NewFlex().SetDirection(tview.FlexRow). Item{item: transparentDropDown, fixedSize: 0, proportion: 1, focus: false},
AddItem(themeDropDown, 0, 1, true). Item{item: hideBelowDropDown, fixedSize: 0, proportion: 1, focus: false}),
AddItem(transparentDropDown, 0, 1, false). fixedSize: 0, proportion: 1, focus: true}),
AddItem(hideBelowDropDown, 0, 1, false), fixedSize: 3, proportion: 1, focus: true},
0, 1, true). Item{item: attachItems(false, tview.FlexColumn,
AddItem(nil, 0, 1, false), Item{item: srcBorderDropDown, fixedSize: 0, proportion: 1, focus: false},
3, 1, true). Item{item: dstBorderDropDown, fixedSize: 0, proportion: 1, focus: false}),
AddItem(tview.NewFlex().SetDirection(tview.FlexColumn). fixedSize: 0, proportion: 1, focus: false}),
AddItem(srcBorderDropDown, 0, 1, false). fixedSize: 2 * langStrMaxLength, proportion: 1, focus: true}),
AddItem(dstBorderDropDown, 0, 1, false),
0, 1, false),
2*langStrMaxLength, 1, true).
AddItem(nil, 0, 1, false),
popOutWindowHeight, 1, true). popOutWindowHeight, 1, true).
AddItem(attachButton(), 1, 1, false). AddItem(attachButton(), 1, 1, false).
AddItem(nil, 0, 1, false) AddItem(nil, 0, 1, false)
keyMapPopOut.SetDirection(tview.FlexRow). keyMapPopOut.SetDirection(tview.FlexRow).
AddItem(nil, 0, 1, false). AddItem(nil, 0, 1, false).
AddItem(tview.NewFlex().SetDirection(tview.FlexColumn). AddItem(attachItems(true, tview.FlexColumn,
AddItem(nil, 0, 1, false). Item{item: keyMapMenu, fixedSize: 2 * langStrMaxLength, proportion: 1, focus: true}),
AddItem(keyMapMenu, 2*langStrMaxLength, 1, true).
AddItem(nil, 0, 1, false),
popOutWindowHeight, 1, true). popOutWindowHeight, 1, true).
AddItem(attachButton(), 1, 1, false). AddItem(attachButton(), 1, 1, false).
AddItem(nil, 0, 1, false) AddItem(nil, 0, 1, false)