mirror of
https://github.com/eeeXun/GTT.git
synced 2025-05-21 01:50:36 -07:00
rename
This commit is contained in:
parent
5444866489
commit
97b43733d9
36
main.go
36
main.go
@ -9,15 +9,15 @@ var (
|
|||||||
// Translate
|
// Translate
|
||||||
translator = NewTranslator()
|
translator = NewTranslator()
|
||||||
// UI
|
// UI
|
||||||
app = tview.NewApplication()
|
app = tview.NewApplication()
|
||||||
src_box = tview.NewTextArea()
|
srcBox = tview.NewTextArea()
|
||||||
dst_box = tview.NewTextView()
|
dstBox = tview.NewTextView()
|
||||||
src_dropdown = tview.NewDropDown()
|
srcDropDown = tview.NewDropDown()
|
||||||
dst_dropdown = tview.NewDropDown()
|
dstDropDown = tview.NewDropDown()
|
||||||
translate_page = tview.NewFlex()
|
translateWindow = tview.NewFlex()
|
||||||
lang_page = tview.NewFlex()
|
langWindow = tview.NewFlex()
|
||||||
pages = tview.NewPages()
|
mainPage = tview.NewPages()
|
||||||
window Window
|
window Window
|
||||||
// config
|
// config
|
||||||
config = viper.New()
|
config = viper.New()
|
||||||
theme string
|
theme string
|
||||||
@ -29,22 +29,22 @@ func main() {
|
|||||||
configInit()
|
configInit()
|
||||||
window.colorInit()
|
window.colorInit()
|
||||||
uiInit()
|
uiInit()
|
||||||
translate_page.SetDirection(tview.FlexColumn).
|
translateWindow.SetDirection(tview.FlexColumn).
|
||||||
AddItem(src_box, 0, 1, true).
|
AddItem(srcBox, 0, 1, true).
|
||||||
AddItem(dst_box, 0, 1, false)
|
AddItem(dstBox, 0, 1, false)
|
||||||
lang_page.SetDirection(tview.FlexRow).
|
langWindow.SetDirection(tview.FlexRow).
|
||||||
AddItem(nil, 0, 1, false).
|
AddItem(nil, 0, 1, false).
|
||||||
AddItem(tview.NewFlex().SetDirection(tview.FlexColumn).
|
AddItem(tview.NewFlex().SetDirection(tview.FlexColumn).
|
||||||
AddItem(nil, 0, 1, false).
|
AddItem(nil, 0, 1, false).
|
||||||
AddItem(src_dropdown, 32, 1, true).
|
AddItem(srcDropDown, 32, 1, true).
|
||||||
AddItem(dst_dropdown, 32, 1, false).
|
AddItem(dstDropDown, 32, 1, false).
|
||||||
AddItem(nil, 0, 1, false), 20, 1, true).
|
AddItem(nil, 0, 1, false), 20, 1, true).
|
||||||
AddItem(nil, 0, 1, false)
|
AddItem(nil, 0, 1, false)
|
||||||
|
|
||||||
pages.AddPage("translate_page", translate_page, true, true)
|
mainPage.AddPage("translatePage", translateWindow, true, true)
|
||||||
pages.AddPage("lang_page", lang_page, true, false)
|
mainPage.AddPage("langPage", langWindow, true, false)
|
||||||
|
|
||||||
if err := app.SetRoot(pages, true).
|
if err := app.SetRoot(mainPage, true).
|
||||||
EnableMouse(true).Run(); err != nil {
|
EnableMouse(true).Run(); err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
|
98
ui.go
98
ui.go
@ -6,24 +6,24 @@ import (
|
|||||||
|
|
||||||
func updateBackground() {
|
func updateBackground() {
|
||||||
// box
|
// box
|
||||||
src_box.SetBackgroundColor(window.src.background_color)
|
srcBox.SetBackgroundColor(window.src.background_color)
|
||||||
src_box.SetTextStyle(tcell.StyleDefault.
|
srcBox.SetTextStyle(tcell.StyleDefault.
|
||||||
Background(window.src.background_color).
|
Background(window.src.background_color).
|
||||||
Foreground(window.src.foreground_color))
|
Foreground(window.src.foreground_color))
|
||||||
|
|
||||||
dst_box.SetBackgroundColor(window.dst.background_color)
|
dstBox.SetBackgroundColor(window.dst.background_color)
|
||||||
|
|
||||||
// dropdown
|
// dropdown
|
||||||
src_dropdown.SetBackgroundColor(window.src.background_color)
|
srcDropDown.SetBackgroundColor(window.src.background_color)
|
||||||
src_dropdown.SetListStyles(tcell.StyleDefault.
|
srcDropDown.SetListStyles(tcell.StyleDefault.
|
||||||
Background(window.src.background_color).
|
Background(window.src.background_color).
|
||||||
Foreground(window.src.foreground_color),
|
Foreground(window.src.foreground_color),
|
||||||
tcell.StyleDefault.
|
tcell.StyleDefault.
|
||||||
Background(window.src.selected_color).
|
Background(window.src.selected_color).
|
||||||
Foreground(window.src.prefix_color))
|
Foreground(window.src.prefix_color))
|
||||||
|
|
||||||
dst_dropdown.SetBackgroundColor(window.dst.background_color)
|
dstDropDown.SetBackgroundColor(window.dst.background_color)
|
||||||
dst_dropdown.SetListStyles(tcell.StyleDefault.
|
dstDropDown.SetListStyles(tcell.StyleDefault.
|
||||||
Background(window.src.background_color).
|
Background(window.src.background_color).
|
||||||
Foreground(window.src.foreground_color),
|
Foreground(window.src.foreground_color),
|
||||||
tcell.StyleDefault.
|
tcell.StyleDefault.
|
||||||
@ -33,42 +33,42 @@ func updateBackground() {
|
|||||||
|
|
||||||
// update title and option
|
// update title and option
|
||||||
func updateTitle() {
|
func updateTitle() {
|
||||||
src_box.SetTitle(translator.srcLang)
|
srcBox.SetTitle(translator.srcLang)
|
||||||
dst_box.SetTitle(translator.dstLang)
|
dstBox.SetTitle(translator.dstLang)
|
||||||
src_dropdown.SetCurrentOption(IndexOf(translator.srcLang, Lang))
|
srcDropDown.SetCurrentOption(IndexOf(translator.srcLang, Lang))
|
||||||
src_dropdown.SetTitle(translator.srcLang)
|
srcDropDown.SetTitle(translator.srcLang)
|
||||||
dst_dropdown.SetCurrentOption(IndexOf(translator.dstLang, Lang))
|
dstDropDown.SetCurrentOption(IndexOf(translator.dstLang, Lang))
|
||||||
dst_dropdown.SetTitle(translator.dstLang)
|
dstDropDown.SetTitle(translator.dstLang)
|
||||||
}
|
}
|
||||||
|
|
||||||
func uiInit() {
|
func uiInit() {
|
||||||
// box
|
// box
|
||||||
src_box.SetBorder(true).
|
srcBox.SetBorder(true).
|
||||||
SetBorderColor(window.src.border_color).
|
SetBorderColor(window.src.border_color).
|
||||||
SetTitleColor(window.src.border_color)
|
SetTitleColor(window.src.border_color)
|
||||||
src_box.SetSelectedStyle(tcell.StyleDefault.
|
srcBox.SetSelectedStyle(tcell.StyleDefault.
|
||||||
Background(window.src.selected_color).
|
Background(window.src.selected_color).
|
||||||
Foreground(window.src.foreground_color))
|
Foreground(window.src.foreground_color))
|
||||||
|
|
||||||
dst_box.SetBorder(true).
|
dstBox.SetBorder(true).
|
||||||
SetBorderColor(window.dst.border_color).
|
SetBorderColor(window.dst.border_color).
|
||||||
SetTitleColor(window.dst.border_color)
|
SetTitleColor(window.dst.border_color)
|
||||||
dst_box.SetTextColor(window.dst.foreground_color)
|
dstBox.SetTextColor(window.dst.foreground_color)
|
||||||
|
|
||||||
// dropdown
|
// dropdown
|
||||||
src_dropdown.SetOptions(Lang, nil)
|
srcDropDown.SetOptions(Lang, nil)
|
||||||
src_dropdown.SetFieldBackgroundColor(window.src.selected_color).
|
srcDropDown.SetFieldBackgroundColor(window.src.selected_color).
|
||||||
SetFieldTextColor(window.src.foreground_color).
|
SetFieldTextColor(window.src.foreground_color).
|
||||||
SetPrefixTextColor(window.dst.prefix_color)
|
SetPrefixTextColor(window.dst.prefix_color)
|
||||||
src_dropdown.SetBorder(true).
|
srcDropDown.SetBorder(true).
|
||||||
SetBorderColor(window.src.border_color).
|
SetBorderColor(window.src.border_color).
|
||||||
SetTitleColor(window.src.border_color)
|
SetTitleColor(window.src.border_color)
|
||||||
|
|
||||||
dst_dropdown.SetOptions(Lang, nil)
|
dstDropDown.SetOptions(Lang, nil)
|
||||||
dst_dropdown.SetFieldBackgroundColor(window.src.selected_color).
|
dstDropDown.SetFieldBackgroundColor(window.src.selected_color).
|
||||||
SetFieldTextColor(window.src.foreground_color).
|
SetFieldTextColor(window.src.foreground_color).
|
||||||
SetPrefixTextColor(window.dst.prefix_color)
|
SetPrefixTextColor(window.dst.prefix_color)
|
||||||
dst_dropdown.SetBorder(true).
|
dstDropDown.SetBorder(true).
|
||||||
SetBorderColor(window.dst.border_color).
|
SetBorderColor(window.dst.border_color).
|
||||||
SetTitleColor(window.dst.border_color)
|
SetTitleColor(window.dst.border_color)
|
||||||
|
|
||||||
@ -76,11 +76,11 @@ func uiInit() {
|
|||||||
updateTitle()
|
updateTitle()
|
||||||
|
|
||||||
// handler
|
// handler
|
||||||
pages.SetInputCapture(pagesHandler)
|
mainPage.SetInputCapture(pagesHandler)
|
||||||
translate_page.SetInputCapture(translatePageHandler)
|
translateWindow.SetInputCapture(translatePageHandler)
|
||||||
src_dropdown.SetDoneFunc(srcDropDownHandler).
|
srcDropDown.SetDoneFunc(srcDropDownHandler).
|
||||||
SetSelectedFunc(srcSelected)
|
SetSelectedFunc(srcSelected)
|
||||||
dst_dropdown.SetDoneFunc(dstDropDownHandler).
|
dstDropDown.SetDoneFunc(dstDropDownHandler).
|
||||||
SetSelectedFunc(dstSelected)
|
SetSelectedFunc(dstSelected)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -108,41 +108,41 @@ func translatePageHandler(event *tcell.EventKey) *tcell.EventKey {
|
|||||||
|
|
||||||
switch key {
|
switch key {
|
||||||
case tcell.KeyEsc:
|
case tcell.KeyEsc:
|
||||||
pages.ShowPage("lang_page")
|
mainPage.ShowPage("langPage")
|
||||||
case tcell.KeyCtrlJ:
|
case tcell.KeyCtrlJ:
|
||||||
message := src_box.GetText()
|
message := srcBox.GetText()
|
||||||
if len(message) > 0 {
|
if len(message) > 0 {
|
||||||
result, err := translator.Translate(message)
|
result, err := translator.Translate(message)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
dst_box.SetText(err.Error())
|
dstBox.SetText(err.Error())
|
||||||
} else {
|
} else {
|
||||||
dst_box.SetText(result)
|
dstBox.SetText(result)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
case tcell.KeyCtrlQ:
|
case tcell.KeyCtrlQ:
|
||||||
src_box.SetText("", true)
|
srcBox.SetText("", true)
|
||||||
case tcell.KeyCtrlS:
|
case tcell.KeyCtrlS:
|
||||||
translator.srcLang, translator.dstLang = translator.dstLang, translator.srcLang
|
translator.srcLang, translator.dstLang = translator.dstLang, translator.srcLang
|
||||||
updateTitle()
|
updateTitle()
|
||||||
src_text := src_box.GetText()
|
src_text := srcBox.GetText()
|
||||||
dst_text := dst_box.GetText(false)
|
dst_text := dstBox.GetText(false)
|
||||||
if len(dst_text) > 0 {
|
if len(dst_text) > 0 {
|
||||||
// GetText of Box contains "\n" if it has words
|
// GetText of Box contains "\n" if it has words
|
||||||
src_box.SetText(dst_text[:len(dst_text)-1], true)
|
srcBox.SetText(dst_text[:len(dst_text)-1], true)
|
||||||
} else {
|
} else {
|
||||||
src_box.SetText(dst_text, true)
|
srcBox.SetText(dst_text, true)
|
||||||
}
|
}
|
||||||
dst_box.SetText(src_text)
|
dstBox.SetText(src_text)
|
||||||
case tcell.KeyCtrlO:
|
case tcell.KeyCtrlO:
|
||||||
// play source sound
|
// play source sound
|
||||||
if translator.soundLock.Available() {
|
if translator.soundLock.Available() {
|
||||||
message := src_box.GetText()
|
message := srcBox.GetText()
|
||||||
if len(message) > 0 {
|
if len(message) > 0 {
|
||||||
translator.soundLock.Acquire()
|
translator.soundLock.Acquire()
|
||||||
go func() {
|
go func() {
|
||||||
err := translator.PlaySound(translator.srcLang, message)
|
err := translator.PlaySound(translator.srcLang, message)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
src_box.SetText(err.Error(), true)
|
srcBox.SetText(err.Error(), true)
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
}
|
}
|
||||||
@ -151,13 +151,13 @@ func translatePageHandler(event *tcell.EventKey) *tcell.EventKey {
|
|||||||
case tcell.KeyCtrlP:
|
case tcell.KeyCtrlP:
|
||||||
// play destination sound
|
// play destination sound
|
||||||
if translator.soundLock.Available() {
|
if translator.soundLock.Available() {
|
||||||
message := dst_box.GetText(false)
|
message := dstBox.GetText(false)
|
||||||
if len(message) > 0 {
|
if len(message) > 0 {
|
||||||
translator.soundLock.Acquire()
|
translator.soundLock.Acquire()
|
||||||
go func() {
|
go func() {
|
||||||
err := translator.PlaySound(translator.dstLang, message)
|
err := translator.PlaySound(translator.dstLang, message)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
dst_box.SetText(err.Error())
|
dstBox.SetText(err.Error())
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
}
|
}
|
||||||
@ -172,30 +172,30 @@ func translatePageHandler(event *tcell.EventKey) *tcell.EventKey {
|
|||||||
|
|
||||||
func srcSelected(text string, index int) {
|
func srcSelected(text string, index int) {
|
||||||
translator.srcLang = text
|
translator.srcLang = text
|
||||||
src_box.SetTitle(text)
|
srcBox.SetTitle(text)
|
||||||
src_dropdown.SetTitle(text)
|
srcDropDown.SetTitle(text)
|
||||||
}
|
}
|
||||||
|
|
||||||
func dstSelected(text string, index int) {
|
func dstSelected(text string, index int) {
|
||||||
translator.dstLang = text
|
translator.dstLang = text
|
||||||
dst_box.SetTitle(text)
|
dstBox.SetTitle(text)
|
||||||
dst_dropdown.SetTitle(text)
|
dstDropDown.SetTitle(text)
|
||||||
}
|
}
|
||||||
|
|
||||||
func srcDropDownHandler(key tcell.Key) {
|
func srcDropDownHandler(key tcell.Key) {
|
||||||
switch key {
|
switch key {
|
||||||
case tcell.KeyTAB:
|
case tcell.KeyTAB:
|
||||||
app.SetFocus(dst_dropdown)
|
app.SetFocus(dstDropDown)
|
||||||
case tcell.KeyEsc:
|
case tcell.KeyEsc:
|
||||||
pages.HidePage("lang_page")
|
mainPage.HidePage("langPage")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func dstDropDownHandler(key tcell.Key) {
|
func dstDropDownHandler(key tcell.Key) {
|
||||||
switch key {
|
switch key {
|
||||||
case tcell.KeyTAB:
|
case tcell.KeyTAB:
|
||||||
app.SetFocus(src_dropdown)
|
app.SetFocus(srcDropDown)
|
||||||
case tcell.KeyEsc:
|
case tcell.KeyEsc:
|
||||||
pages.HidePage("lang_page")
|
mainPage.HidePage("langPage")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user