The language selection is remembered.
Added a setting for changing the language.
This commit is contained in:
@@ -17,6 +17,9 @@ type ViewContract interface {
|
||||
Main(
|
||||
runConvert func(setting HandleConvertSetting, progressbar *widget.ProgressBar) error,
|
||||
)
|
||||
SelectFFPath(
|
||||
func(ffmpegPath string, ffprobePath string) error,
|
||||
)
|
||||
}
|
||||
|
||||
type View struct {
|
||||
|
109
src/convertor/view_setting.go
Normal file
109
src/convertor/view_setting.go
Normal file
@@ -0,0 +1,109 @@
|
||||
package convertor
|
||||
|
||||
import (
|
||||
"ffmpegGui/helper"
|
||||
"fyne.io/fyne/v2"
|
||||
"fyne.io/fyne/v2/canvas"
|
||||
"fyne.io/fyne/v2/container"
|
||||
"fyne.io/fyne/v2/dialog"
|
||||
"fyne.io/fyne/v2/widget"
|
||||
"github.com/nicksnyder/go-i18n/v2/i18n"
|
||||
"image/color"
|
||||
"net/url"
|
||||
)
|
||||
|
||||
func (v View) SelectFFPath(save func(ffmpegPath string, ffprobePath string) error) {
|
||||
errorMessage := canvas.NewText("", color.RGBA{255, 0, 0, 255})
|
||||
errorMessage.TextSize = 16
|
||||
errorMessage.TextStyle = fyne.TextStyle{Bold: true}
|
||||
|
||||
ffmpegPath, buttonFFmpeg, buttonFFmpegMessage := v.getButtonSelectFile()
|
||||
ffprobePath, buttonFFprobe, buttonFFprobeMessage := v.getButtonSelectFile()
|
||||
|
||||
link := widget.NewHyperlink("https://ffmpeg.org/download.html", &url.URL{
|
||||
Scheme: "https",
|
||||
Host: "ffmpeg.org",
|
||||
Path: "download.html",
|
||||
})
|
||||
|
||||
form := &widget.Form{
|
||||
Items: []*widget.FormItem{
|
||||
{
|
||||
Text: v.localizerService.GetMessage(&i18n.LocalizeConfig{
|
||||
MessageID: "titleDownloadLink",
|
||||
}),
|
||||
Widget: link,
|
||||
},
|
||||
{
|
||||
Text: v.localizerService.GetMessage(&i18n.LocalizeConfig{
|
||||
MessageID: "pathToFfmpeg",
|
||||
}),
|
||||
Widget: buttonFFmpeg,
|
||||
},
|
||||
{
|
||||
Widget: buttonFFmpegMessage,
|
||||
},
|
||||
{
|
||||
Text: v.localizerService.GetMessage(&i18n.LocalizeConfig{
|
||||
MessageID: "pathToFfprobe",
|
||||
}),
|
||||
Widget: buttonFFprobe,
|
||||
},
|
||||
{
|
||||
Widget: buttonFFprobeMessage,
|
||||
},
|
||||
{
|
||||
Widget: errorMessage,
|
||||
},
|
||||
},
|
||||
SubmitText: v.localizerService.GetMessage(&i18n.LocalizeConfig{
|
||||
MessageID: "save",
|
||||
}),
|
||||
OnSubmit: func() {
|
||||
err := save(string(*ffmpegPath), string(*ffprobePath))
|
||||
if err != nil {
|
||||
errorMessage.Text = err.Error()
|
||||
}
|
||||
},
|
||||
}
|
||||
selectFFPathTitle := v.localizerService.GetMessage(&i18n.LocalizeConfig{
|
||||
MessageID: "selectFFPathTitle",
|
||||
})
|
||||
v.w.SetContent(widget.NewCard(selectFFPathTitle, "", container.NewVBox(form)))
|
||||
}
|
||||
|
||||
func (v View) getButtonSelectFile() (filePath *string, button *widget.Button, buttonMessage *canvas.Text) {
|
||||
path := ""
|
||||
filePath = &path
|
||||
|
||||
buttonMessage = canvas.NewText("", color.RGBA{255, 0, 0, 255})
|
||||
buttonMessage.TextSize = 16
|
||||
buttonMessage.TextStyle = fyne.TextStyle{Bold: true}
|
||||
|
||||
buttonTitle := v.localizerService.GetMessage(&i18n.LocalizeConfig{
|
||||
MessageID: "choose",
|
||||
})
|
||||
|
||||
button = widget.NewButton(buttonTitle, func() {
|
||||
fileDialog := dialog.NewFileOpen(
|
||||
func(r fyne.URIReadCloser, err error) {
|
||||
if err != nil {
|
||||
buttonMessage.Text = err.Error()
|
||||
setStringErrorStyle(buttonMessage)
|
||||
return
|
||||
}
|
||||
if r == nil {
|
||||
return
|
||||
}
|
||||
|
||||
path = r.URI().Path()
|
||||
|
||||
buttonMessage.Text = r.URI().Path()
|
||||
setStringSuccessStyle(buttonMessage)
|
||||
}, v.w)
|
||||
helper.FileDialogResize(fileDialog, v.w)
|
||||
fileDialog.Show()
|
||||
})
|
||||
|
||||
return
|
||||
}
|
Reference in New Issue
Block a user