From 90f77ecc6574f7eb517f306d97dfca59a9755706 Mon Sep 17 00:00:00 2001 From: eeeXun Date: Wed, 11 Jan 2023 20:03:19 +0800 Subject: [PATCH] feat: toggle below --- README.md | 3 +++ config.go | 14 ++++++++++++++ main.go | 51 ++++++++++++++++++++++++--------------------------- ui.go | 32 +++++++++++++++++++++++--------- 4 files changed, 64 insertions(+), 36 deletions(-) diff --git a/README.md b/README.md index 5a99386..afc7716 100644 --- a/README.md +++ b/README.md @@ -60,6 +60,9 @@ Stop play sound. `` Toggle transparent. +`` +Toggle definition & Part of speech + ``, `` Cycle through the pop out widget. diff --git a/config.go b/config.go index 5a0bfcb..cf3fd35 100644 --- a/config.go +++ b/config.go @@ -2,12 +2,20 @@ package main import ( "flag" + "gtt/internal/color" "os" + + "github.com/spf13/viper" ) var ( + // argument srcLangArg *string = flag.String("src", "", "Source Language") dstLangArg *string = flag.String("dst", "", "Destination Language") + // settings + config = viper.New() + style = color.NewStyle() + hideBelow bool ) // Search XDG_CONFIG_HOME or $HOME/.config @@ -32,6 +40,7 @@ func configInit() { config.Set("source.borderColor", "red") config.Set("destination.language", "Chinese (Traditional)") config.Set("destination.borderColor", "blue") + config.Set("hide_below", false) if _, err = os.Stat(defaultConfigPath); os.IsNotExist(err) { os.MkdirAll(defaultConfigPath, os.ModePerm) } @@ -50,6 +59,7 @@ func configInit() { } else { translator.DstLang = config.GetString("destination.language") } + hideBelow = config.GetBool("hide_below") style.Theme = config.GetString("theme") style.Transparent = config.GetBool("transparent") style.SetSrcBorderColor(config.GetString("source.borderColor")). @@ -72,6 +82,10 @@ func updateConfig() { changed = true config.Set("destination.language", translator.DstLang) } + if config.GetBool("hide_below") != hideBelow { + changed = true + config.Set("hide_below", hideBelow) + } if config.GetString("theme") != style.Theme { changed = true config.Set("theme", style.Theme) diff --git a/main.go b/main.go index d1cce8c..8f48a8d 100644 --- a/main.go +++ b/main.go @@ -1,43 +1,40 @@ package main import ( - "gtt/internal/color" "gtt/internal/translate" "gtt/internal/ui" "github.com/rivo/tview" - "github.com/spf13/viper" ) var ( // Translate translator = translate.NewTranslator() // UI - app = tview.NewApplication() - srcInput = tview.NewTextArea() - dstOutput = tview.NewTextView() - defOutput = tview.NewTextArea() - posOutput = tview.NewTextArea() - srcLangDropDown = tview.NewDropDown() - dstLangDropDown = tview.NewDropDown() - langCycle = ui.NewUICycle(srcLangDropDown, dstLangDropDown) - themeDropDown = tview.NewDropDown() - transparentDropDown = tview.NewDropDown() - srcBorderDropDown = tview.NewDropDown() - dstBorderDropDown = tview.NewDropDown() - styleCycle = ui.NewUICycle(themeDropDown, transparentDropDown, srcBorderDropDown, dstBorderDropDown) - keyMapMenu = tview.NewTextView() - langButton = tview.NewButton("(1)Language") - styleButton = tview.NewButton("(2)Style") - keyMapButton = tview.NewButton("(3)KeyMap") - translateWindow = tview.NewFlex() - langWindow = tview.NewFlex() - styleWindow = tview.NewFlex() - keyMapWindow = tview.NewFlex() - mainPage = tview.NewPages() - // settings - config = viper.New() - style = color.NewStyle() + app = tview.NewApplication() + srcInput = tview.NewTextArea() + dstOutput = tview.NewTextView() + defOutput = tview.NewTextArea() + posOutput = tview.NewTextArea() + srcLangDropDown = tview.NewDropDown() + dstLangDropDown = tview.NewDropDown() + langCycle = ui.NewUICycle(srcLangDropDown, dstLangDropDown) + themeDropDown = tview.NewDropDown() + transparentDropDown = tview.NewDropDown() + srcBorderDropDown = tview.NewDropDown() + dstBorderDropDown = tview.NewDropDown() + styleCycle = ui.NewUICycle(themeDropDown, transparentDropDown, srcBorderDropDown, dstBorderDropDown) + keyMapMenu = tview.NewTextView() + langButton = tview.NewButton("(1)Language") + styleButton = tview.NewButton("(2)Style") + keyMapButton = tview.NewButton("(3)KeyMap") + translateWindow = tview.NewFlex() + translateAboveWidget = tview.NewFlex() + translateBelowWidget = tview.NewFlex() + langWindow = tview.NewFlex() + styleWindow = tview.NewFlex() + keyMapWindow = tview.NewFlex() + mainPage = tview.NewPages() ) func main() { diff --git a/ui.go b/ui.go index 74f363a..bfc9bf0 100644 --- a/ui.go +++ b/ui.go @@ -35,12 +35,25 @@ const ( Stop play sound. [#%[1]s][-] Toggle transparent. +[#%[1]s][-] + Toggle definition & Part of speech [#%[1]s], [-] Cycle through the pop out widget. [#%[1]s]<1>, <2>, <3>[-] Switch pop out window.` ) +func updateTranslateWindow() { + translateWindow.Clear() + if hideBelow { + translateWindow.AddItem(translateAboveWidget, 0, 1, true) + } else { + translateWindow.SetDirection(tview.FlexRow). + AddItem(translateAboveWidget, 0, 1, true). + AddItem(translateBelowWidget, 0, 1, false) + } +} + func updateBackgroundColor() { // input/output srcInput.SetTextStyle(tcell.StyleDefault. @@ -263,15 +276,13 @@ func uiInit() { SetTitle("Key Map") // window - translateWindow.SetDirection(tview.FlexColumn). - AddItem(tview.NewFlex().SetDirection(tview.FlexRow). - AddItem(srcInput, 0, 1, true). - AddItem(defOutput, 0, 1, false), - 0, 1, true). - AddItem(tview.NewFlex().SetDirection(tview.FlexRow). - AddItem(dstOutput, 0, 1, false). - AddItem(posOutput, 0, 1, false), - 0, 1, false) + translateAboveWidget.SetDirection(tview.FlexColumn). + AddItem(srcInput, 0, 1, true). + AddItem(dstOutput, 0, 1, false) + translateBelowWidget.SetDirection(tview.FlexColumn). + AddItem(defOutput, 0, 1, false). + AddItem(posOutput, 0, 1, false) + updateTranslateWindow() langWindow.SetDirection(tview.FlexRow). AddItem(nil, 0, 1, false). AddItem(tview.NewFlex().SetDirection(tview.FlexColumn). @@ -391,6 +402,9 @@ func mainPageHandler(event *tcell.EventKey) *tcell.EventKey { transparentDropDown.SetCurrentOption( IndexOf(strconv.FormatBool(style.Transparent), []string{"true", "false"})) + case tcell.KeyCtrlBackslash: + hideBelow = !hideBelow + updateTranslateWindow() } return event