Added an action to the submit button.

This commit is contained in:
Leonid Nikitin 2025-06-08 19:19:50 +05:00
parent e48f363de0
commit df8095fb16
Signed by: kor-elf
GPG Key ID: DAB5355A11C22541

View File

@ -18,19 +18,33 @@ import (
"path/filepath" "path/filepath"
) )
type ConvertSetting struct {
DirectoryForSave string
OverwriteOutputFiles bool
Format string
Encoder encoder2.EncoderContract
}
func Convertor( func Convertor(
window window.WindowContract, window window.WindowContract,
addFileForConversion func(file ffmpeg.File), addFileForConversion func(file ffmpeg.File),
directoryForSavingPath string, directoryForSavingPath string,
directoryForSaving func(path string), directoryForSaving func(path string),
formats encoder.ConvertorFormatsContract, formats encoder.ConvertorFormatsContract,
addToConversion func(convertSetting ConvertSetting) error,
) fyne.CanvasObject { ) fyne.CanvasObject {
conversionMessage := canvas.NewText("", color.RGBA{R: 255, G: 0, B: 0, A: 255})
conversionMessage.TextSize = 16
conversionMessage.TextStyle = fyne.TextStyle{Bold: true}
form := newFormConvertor( form := newFormConvertor(
window, window,
addFileForConversion, addFileForConversion,
directoryForSavingPath, directoryForSavingPath,
directoryForSaving, directoryForSaving,
formats, formats,
addToConversion,
conversionMessage,
) )
converterVideoFilesTitle := lang.L("converterVideoFilesTitle") converterVideoFilesTitle := lang.L("converterVideoFilesTitle")
@ -40,6 +54,7 @@ func Convertor(
type formConvertor struct { type formConvertor struct {
form *widget.Form form *widget.Form
items []*widget.FormItem items []*widget.FormItem
conversionMessage *canvas.Text
window window.WindowContract window window.WindowContract
addFileForConversion func(file ffmpeg.File) addFileForConversion func(file ffmpeg.File)
@ -52,6 +67,8 @@ func newFormConvertor(
directoryForSavingPath string, directoryForSavingPath string,
directoryForSaving func(path string), directoryForSaving func(path string),
formats encoder.ConvertorFormatsContract, formats encoder.ConvertorFormatsContract,
addToConversion func(convertSetting ConvertSetting) error,
conversionMessage *canvas.Text,
) *formConvertor { ) *formConvertor {
f := widget.NewForm() f := widget.NewForm()
f.SubmitText = lang.L("converterVideoFilesSubmitTitle") f.SubmitText = lang.L("converterVideoFilesSubmitTitle")
@ -61,6 +78,7 @@ func newFormConvertor(
window: window, window: window,
addFileForConversion: addFileForConversion, addFileForConversion: addFileForConversion,
directoryForSaving: directoryForSaving, directoryForSaving: directoryForSaving,
conversionMessage: conversionMessage,
} }
fileForConversion := formConvertor.newFileForConversion() fileForConversion := formConvertor.newFileForConversion()
@ -109,11 +127,50 @@ func newFormConvertor(
formConvertor.changeEncoder(selectEncoder.Encoder) formConvertor.changeEncoder(selectEncoder.Encoder)
selectEncoder.ChangeEncoder = formConvertor.changeEncoder selectEncoder.ChangeEncoder = formConvertor.changeEncoder
formConvertor.form.OnSubmit = func() {
formConvertor.conversionMessage.Text = ""
if len(directoryForSavingButton.path) == 0 {
formConvertor.conversionMessage.Text = lang.L("errorSelectedFolderSave")
return
}
if len(selectEncoder.SelectFormat.Selected) == 0 {
formConvertor.conversionMessage.Text = lang.L("errorSelectedFormat")
return
}
if selectEncoder.Encoder == nil {
formConvertor.conversionMessage.Text = lang.L("errorSelectedEncoder")
return
}
fileForConversion.button.Disable()
directoryForSavingButton.button.Disable()
formConvertor.form.Disable()
err := addToConversion(ConvertSetting{
DirectoryForSave: directoryForSavingButton.path,
OverwriteOutputFiles: isOverwriteOutputFiles,
Format: selectEncoder.SelectFormat.Selected,
Encoder: selectEncoder.Encoder,
})
if err != nil {
formConvertor.conversionMessage.Text = err.Error()
}
fileForConversion.button.Enable()
directoryForSavingButton.button.Enable()
formConvertor.form.Enable()
}
return formConvertor return formConvertor
} }
func (f *formConvertor) getForm() *widget.Form { func (f *formConvertor) getForm() fyne.CanvasObject {
return f.form return container.NewVBox(
f.form,
container.NewHScroll(f.conversionMessage),
)
} }
type fileForConversion struct { type fileForConversion struct {