Remove language selection to a new settings section.
This commit is contained in:
parent
883bf376b0
commit
712ec2f182
@ -17,6 +17,7 @@ type MenuHandler struct {
|
|||||||
app kernel.AppContract
|
app kernel.AppContract
|
||||||
convertorHandler ConvertorHandlerContract
|
convertorHandler ConvertorHandlerContract
|
||||||
menuView menu.ViewContract
|
menuView menu.ViewContract
|
||||||
|
menuViewSetting menu.ViewSettingContract
|
||||||
localizerView localizer.ViewContract
|
localizerView localizer.ViewContract
|
||||||
localizerRepository localizer.RepositoryContract
|
localizerRepository localizer.RepositoryContract
|
||||||
}
|
}
|
||||||
@ -25,6 +26,7 @@ func NewMenuHandler(
|
|||||||
app kernel.AppContract,
|
app kernel.AppContract,
|
||||||
convertorHandler ConvertorHandlerContract,
|
convertorHandler ConvertorHandlerContract,
|
||||||
menuView menu.ViewContract,
|
menuView menu.ViewContract,
|
||||||
|
menuViewSetting menu.ViewSettingContract,
|
||||||
localizerView localizer.ViewContract,
|
localizerView localizer.ViewContract,
|
||||||
localizerRepository localizer.RepositoryContract,
|
localizerRepository localizer.RepositoryContract,
|
||||||
) *MenuHandler {
|
) *MenuHandler {
|
||||||
@ -32,6 +34,7 @@ func NewMenuHandler(
|
|||||||
app: app,
|
app: app,
|
||||||
convertorHandler: convertorHandler,
|
convertorHandler: convertorHandler,
|
||||||
menuView: menuView,
|
menuView: menuView,
|
||||||
|
menuViewSetting: menuViewSetting,
|
||||||
localizerView: localizerView,
|
localizerView: localizerView,
|
||||||
localizerRepository: localizerRepository,
|
localizerRepository: localizerRepository,
|
||||||
}
|
}
|
||||||
@ -53,11 +56,11 @@ func (h MenuHandler) getMenuSettings() *fyne.Menu {
|
|||||||
quit.Label = text
|
quit.Label = text
|
||||||
})
|
})
|
||||||
|
|
||||||
languageSelection := fyne.NewMenuItem(h.app.GetLocalizerService().GetMessage(&i18n.LocalizeConfig{
|
settingsSelection := fyne.NewMenuItem(h.app.GetLocalizerService().GetMessage(&i18n.LocalizeConfig{
|
||||||
MessageID: "changeLanguage",
|
MessageID: "settings",
|
||||||
}), h.LanguageSelection)
|
}), h.settingsSelection)
|
||||||
h.app.GetLocalizerService().AddChangeCallback("changeLanguage", func(text string) {
|
h.app.GetLocalizerService().AddChangeCallback("settings", func(text string) {
|
||||||
languageSelection.Label = text
|
settingsSelection.Label = text
|
||||||
})
|
})
|
||||||
|
|
||||||
ffPathSelection := fyne.NewMenuItem(h.app.GetLocalizerService().GetMessage(&i18n.LocalizeConfig{
|
ffPathSelection := fyne.NewMenuItem(h.app.GetLocalizerService().GetMessage(&i18n.LocalizeConfig{
|
||||||
@ -69,7 +72,7 @@ func (h MenuHandler) getMenuSettings() *fyne.Menu {
|
|||||||
|
|
||||||
settings := fyne.NewMenu(h.app.GetLocalizerService().GetMessage(&i18n.LocalizeConfig{
|
settings := fyne.NewMenu(h.app.GetLocalizerService().GetMessage(&i18n.LocalizeConfig{
|
||||||
MessageID: "settings",
|
MessageID: "settings",
|
||||||
}), languageSelection, ffPathSelection, quit)
|
}), settingsSelection, ffPathSelection, quit)
|
||||||
h.app.GetLocalizerService().AddChangeCallback("settings", func(text string) {
|
h.app.GetLocalizerService().AddChangeCallback("settings", func(text string) {
|
||||||
settings.Label = text
|
settings.Label = text
|
||||||
settings.Refresh()
|
settings.Refresh()
|
||||||
@ -140,3 +143,22 @@ func (h MenuHandler) LanguageSelection() {
|
|||||||
h.convertorHandler.MainConvertor()
|
h.convertorHandler.MainConvertor()
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (h MenuHandler) settingsSelection() {
|
||||||
|
save := func(setting *menu.SettingForm) error {
|
||||||
|
err := h.app.GetLocalizerService().SetCurrentLanguage(setting.Language)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
_, err = h.localizerRepository.Save(setting.Language.Code)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
h.convertorHandler.MainConvertor()
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
cancel := func() {
|
||||||
|
h.convertorHandler.MainConvertor()
|
||||||
|
}
|
||||||
|
h.menuViewSetting.Main(save, cancel)
|
||||||
|
}
|
||||||
|
@ -422,6 +422,10 @@ other = "License information"
|
|||||||
hash = "sha1-359fff328717c05104e51a2d29f05bf1875d26b7"
|
hash = "sha1-359fff328717c05104e51a2d29f05bf1875d26b7"
|
||||||
other = "Licenses from other products used in the program"
|
other = "Licenses from other products used in the program"
|
||||||
|
|
||||||
|
[menuSettingsLanguage]
|
||||||
|
hash = "sha1-ed3f0e507a5b4ed0649d7c768fe0d47413d839ba"
|
||||||
|
other = "Language"
|
||||||
|
|
||||||
[or]
|
[or]
|
||||||
hash = "sha1-30bb0333ca1583110e4ced513b5d2455b86f529b"
|
hash = "sha1-30bb0333ca1583110e4ced513b5d2455b86f529b"
|
||||||
other = "or"
|
other = "or"
|
||||||
|
@ -422,6 +422,10 @@ other = "Лицензия туралы ақпарат"
|
|||||||
hash = "sha1-359fff328717c05104e51a2d29f05bf1875d26b7"
|
hash = "sha1-359fff328717c05104e51a2d29f05bf1875d26b7"
|
||||||
other = "Бағдарламада пайдаланылатын басқа өнімдердің лицензиялары"
|
other = "Бағдарламада пайдаланылатын басқа өнімдердің лицензиялары"
|
||||||
|
|
||||||
|
[menuSettingsLanguage]
|
||||||
|
hash = "sha1-ed3f0e507a5b4ed0649d7c768fe0d47413d839ba"
|
||||||
|
other = "Тіл"
|
||||||
|
|
||||||
[or]
|
[or]
|
||||||
hash = "sha1-30bb0333ca1583110e4ced513b5d2455b86f529b"
|
hash = "sha1-30bb0333ca1583110e4ced513b5d2455b86f529b"
|
||||||
other = "немесе"
|
other = "немесе"
|
||||||
|
@ -104,6 +104,7 @@ languageSelectionFormHead = "Переключить язык"
|
|||||||
languageSelectionHead = "Выберите язык"
|
languageSelectionHead = "Выберите язык"
|
||||||
licenseLink = "Сведения о лицензии"
|
licenseLink = "Сведения о лицензии"
|
||||||
licenseLinkOther = "Лицензии от других продуктов, которые используются в программе"
|
licenseLinkOther = "Лицензии от других продуктов, которые используются в программе"
|
||||||
|
menuSettingsLanguage = "Язык"
|
||||||
or = "или"
|
or = "или"
|
||||||
parameterCheckbox = "Включить параметр"
|
parameterCheckbox = "Включить параметр"
|
||||||
pathToFfmpeg = "Путь к FFmpeg:"
|
pathToFfmpeg = "Путь к FFmpeg:"
|
||||||
|
3
main.go
3
main.go
@ -111,7 +111,8 @@ func main() {
|
|||||||
|
|
||||||
localizerRepository := localizer.NewRepository(settingRepository)
|
localizerRepository := localizer.NewRepository(settingRepository)
|
||||||
menuView := menu.NewView(application)
|
menuView := menu.NewView(application)
|
||||||
mainMenu := handler.NewMenuHandler(application, convertorHandler, menuView, localizerView, localizerRepository)
|
menuSettingView := menu.NewViewSetting(application)
|
||||||
|
mainMenu := handler.NewMenuHandler(application, convertorHandler, menuView, menuSettingView, localizerView, localizerRepository)
|
||||||
|
|
||||||
mainHandler := handler.NewMainHandler(application, convertorHandler, mainMenu, localizerRepository)
|
mainHandler := handler.NewMainHandler(application, convertorHandler, mainMenu, localizerRepository)
|
||||||
mainHandler.Start()
|
mainHandler.Start()
|
||||||
|
88
menu/view_setting.go
Normal file
88
menu/view_setting.go
Normal file
@ -0,0 +1,88 @@
|
|||||||
|
package menu
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fyne.io/fyne/v2"
|
||||||
|
"fyne.io/fyne/v2/canvas"
|
||||||
|
"fyne.io/fyne/v2/widget"
|
||||||
|
"git.kor-elf.net/kor-elf/gui-for-ffmpeg/kernel"
|
||||||
|
"github.com/nicksnyder/go-i18n/v2/i18n"
|
||||||
|
"image/color"
|
||||||
|
)
|
||||||
|
|
||||||
|
type ViewSettingContract interface {
|
||||||
|
Main(
|
||||||
|
save func(*SettingForm) error,
|
||||||
|
cancel func(),
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
type SettingForm struct {
|
||||||
|
Language kernel.Lang
|
||||||
|
}
|
||||||
|
|
||||||
|
type ViewSetting struct {
|
||||||
|
app kernel.AppContract
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewViewSetting(app kernel.AppContract) *ViewSetting {
|
||||||
|
return &ViewSetting{
|
||||||
|
app: app,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (v ViewSetting) Main(save func(*SettingForm) error, cancel func()) {
|
||||||
|
errorMessage := canvas.NewText("", color.RGBA{R: 255, G: 0, B: 0, A: 255})
|
||||||
|
errorMessage.TextSize = 16
|
||||||
|
errorMessage.TextStyle = fyne.TextStyle{Bold: true}
|
||||||
|
|
||||||
|
viewSettingForm := &SettingForm{
|
||||||
|
Language: v.app.GetLocalizerService().GetCurrentLanguage().Lang,
|
||||||
|
}
|
||||||
|
|
||||||
|
languageItems := []string{}
|
||||||
|
langByTitle := map[string]kernel.Lang{}
|
||||||
|
for _, language := range v.app.GetLocalizerService().GetLanguages() {
|
||||||
|
languageItems = append(languageItems, language.Title)
|
||||||
|
langByTitle[language.Title] = language
|
||||||
|
}
|
||||||
|
selectLanguages := widget.NewSelect(languageItems, func(s string) {
|
||||||
|
if lang, ok := langByTitle[s]; ok {
|
||||||
|
viewSettingForm.Language = lang
|
||||||
|
}
|
||||||
|
})
|
||||||
|
selectLanguages.Selected = v.app.GetLocalizerService().GetCurrentLanguage().Lang.Title
|
||||||
|
|
||||||
|
form := &widget.Form{
|
||||||
|
Items: []*widget.FormItem{
|
||||||
|
{
|
||||||
|
Text: v.app.GetLocalizerService().GetMessage(&i18n.LocalizeConfig{
|
||||||
|
MessageID: "menuSettingsLanguage",
|
||||||
|
}),
|
||||||
|
Widget: selectLanguages,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Widget: errorMessage,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
SubmitText: v.app.GetLocalizerService().GetMessage(&i18n.LocalizeConfig{
|
||||||
|
MessageID: "save",
|
||||||
|
}),
|
||||||
|
OnSubmit: func() {
|
||||||
|
err := save(viewSettingForm)
|
||||||
|
if err != nil {
|
||||||
|
errorMessage.Text = err.Error()
|
||||||
|
}
|
||||||
|
},
|
||||||
|
}
|
||||||
|
if cancel != nil {
|
||||||
|
form.OnCancel = cancel
|
||||||
|
form.CancelText = v.app.GetLocalizerService().GetMessage(&i18n.LocalizeConfig{
|
||||||
|
MessageID: "cancel",
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
messageHead := v.app.GetLocalizerService().GetMessage(&i18n.LocalizeConfig{
|
||||||
|
MessageID: "settings",
|
||||||
|
})
|
||||||
|
v.app.GetWindow().SetContent(widget.NewCard(messageHead, "", form))
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user