Make a choice of the encoder in the form
Made a choice of the encoder by categories: video, audio and photo.
This commit is contained in:
parent
9cdfa18fc8
commit
9bb835beaf
@ -7,11 +7,18 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func (c *controller) convertor() {
|
func (c *controller) convertor() {
|
||||||
|
formats, err := c.app.GetConvertorService().GetSupportFormats()
|
||||||
|
if err != nil {
|
||||||
|
c.startWithError(err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
content := view.Convertor(
|
content := view.Convertor(
|
||||||
c.window,
|
c.window,
|
||||||
c.addFileForConversion,
|
c.addFileForConversion,
|
||||||
c.app.GetSetting().GetDirectoryForSaving(),
|
c.app.GetSetting().GetDirectoryForSaving(),
|
||||||
c.setDirectoryForSaving,
|
c.setDirectoryForSaving,
|
||||||
|
formats,
|
||||||
)
|
)
|
||||||
c.window.SetContent(content)
|
c.window.SetContent(content)
|
||||||
}
|
}
|
||||||
|
@ -1,17 +1,18 @@
|
|||||||
package view
|
package view
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"errors"
|
|
||||||
"fyne.io/fyne/v2"
|
"fyne.io/fyne/v2"
|
||||||
"fyne.io/fyne/v2/canvas"
|
"fyne.io/fyne/v2/canvas"
|
||||||
"fyne.io/fyne/v2/container"
|
"fyne.io/fyne/v2/container"
|
||||||
"fyne.io/fyne/v2/lang"
|
"fyne.io/fyne/v2/lang"
|
||||||
"fyne.io/fyne/v2/storage"
|
"fyne.io/fyne/v2/storage"
|
||||||
"fyne.io/fyne/v2/widget"
|
"fyne.io/fyne/v2/widget"
|
||||||
|
"git.kor-elf.net/kor-elf/gui-for-ffmpeg/internal/application/convertor/encoder"
|
||||||
"git.kor-elf.net/kor-elf/gui-for-ffmpeg/internal/ffmpeg"
|
"git.kor-elf.net/kor-elf/gui-for-ffmpeg/internal/ffmpeg"
|
||||||
|
encoder2 "git.kor-elf.net/kor-elf/gui-for-ffmpeg/internal/ffmpeg/encoder"
|
||||||
|
"git.kor-elf.net/kor-elf/gui-for-ffmpeg/internal/gui/view/convertor/encoders"
|
||||||
"git.kor-elf.net/kor-elf/gui-for-ffmpeg/internal/gui/window"
|
"git.kor-elf.net/kor-elf/gui-for-ffmpeg/internal/gui/window"
|
||||||
"git.kor-elf.net/kor-elf/gui-for-ffmpeg/internal/utils"
|
"git.kor-elf.net/kor-elf/gui-for-ffmpeg/internal/utils"
|
||||||
"git.kor-elf.net/kor-elf/gui-for-ffmpeg/kernel"
|
|
||||||
"image/color"
|
"image/color"
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
@ -22,12 +23,14 @@ func Convertor(
|
|||||||
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,
|
||||||
) fyne.CanvasObject {
|
) fyne.CanvasObject {
|
||||||
form := newFormConvertor(
|
form := newFormConvertor(
|
||||||
window,
|
window,
|
||||||
addFileForConversion,
|
addFileForConversion,
|
||||||
directoryForSavingPath,
|
directoryForSavingPath,
|
||||||
directoryForSaving,
|
directoryForSaving,
|
||||||
|
formats,
|
||||||
)
|
)
|
||||||
|
|
||||||
converterVideoFilesTitle := lang.L("converterVideoFilesTitle")
|
converterVideoFilesTitle := lang.L("converterVideoFilesTitle")
|
||||||
@ -48,6 +51,7 @@ func newFormConvertor(
|
|||||||
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,
|
||||||
) *formConvertor {
|
) *formConvertor {
|
||||||
f := widget.NewForm()
|
f := widget.NewForm()
|
||||||
f.SubmitText = lang.L("converterVideoFilesSubmitTitle")
|
f.SubmitText = lang.L("converterVideoFilesSubmitTitle")
|
||||||
@ -61,6 +65,12 @@ func newFormConvertor(
|
|||||||
|
|
||||||
fileForConversion := formConvertor.newFileForConversion()
|
fileForConversion := formConvertor.newFileForConversion()
|
||||||
directoryForSavingButton := formConvertor.newDirectoryForSaving(directoryForSavingPath)
|
directoryForSavingButton := formConvertor.newDirectoryForSaving(directoryForSavingPath)
|
||||||
|
isOverwriteOutputFiles := false
|
||||||
|
checkboxOverwriteOutputFiles := widget.NewCheck(lang.L("checkboxOverwriteOutputFilesTitle"), func(b bool) {
|
||||||
|
isOverwriteOutputFiles = b
|
||||||
|
})
|
||||||
|
checkboxOverwriteOutputFiles.SetChecked(isOverwriteOutputFiles)
|
||||||
|
selectEncoder := formConvertor.newSelectEncoder(formats)
|
||||||
|
|
||||||
items := []*widget.FormItem{
|
items := []*widget.FormItem{
|
||||||
{
|
{
|
||||||
@ -78,9 +88,25 @@ func newFormConvertor(
|
|||||||
{
|
{
|
||||||
Widget: container.NewHScroll(directoryForSavingButton.message),
|
Widget: container.NewHScroll(directoryForSavingButton.message),
|
||||||
},
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
Widget: checkboxOverwriteOutputFiles,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Widget: selectEncoder.SelectFileType,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Text: lang.L("selectFormat"),
|
||||||
|
Widget: selectEncoder.SelectFormat,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Text: lang.L("selectEncoder"),
|
||||||
|
Widget: selectEncoder.SelectEncoder,
|
||||||
|
},
|
||||||
}
|
}
|
||||||
formConvertor.form.Items = items
|
formConvertor.form.Items = items
|
||||||
formConvertor.items = items
|
formConvertor.items = items
|
||||||
|
formConvertor.changeEncoder(selectEncoder.Encoder)
|
||||||
|
|
||||||
return formConvertor
|
return formConvertor
|
||||||
}
|
}
|
||||||
@ -92,17 +118,13 @@ func (f *formConvertor) getForm() *widget.Form {
|
|||||||
type fileForConversion struct {
|
type fileForConversion struct {
|
||||||
button *widget.Button
|
button *widget.Button
|
||||||
message *canvas.Text
|
message *canvas.Text
|
||||||
file *kernel.File
|
file *ffmpeg.File
|
||||||
|
|
||||||
changeCallbacks map[int]func(err error)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (f *formConvertor) newFileForConversion() *fileForConversion {
|
func (f *formConvertor) newFileForConversion() *fileForConversion {
|
||||||
message := canvas.NewText("", color.RGBA{R: 255, G: 0, B: 0, A: 255})
|
message := canvas.NewText("", color.RGBA{R: 255, G: 0, B: 0, A: 255})
|
||||||
fileForConversion := &fileForConversion{
|
fileForConversion := &fileForConversion{
|
||||||
message: message,
|
message: message,
|
||||||
|
|
||||||
changeCallbacks: map[int]func(err error){},
|
|
||||||
}
|
}
|
||||||
|
|
||||||
buttonTitle := lang.L("choose") + "\n" +
|
buttonTitle := lang.L("choose") + "\n" +
|
||||||
@ -123,7 +145,6 @@ func (f *formConvertor) newFileForConversion() *fileForConversion {
|
|||||||
fileForConversion.message.Text = err.Error()
|
fileForConversion.message.Text = err.Error()
|
||||||
fileForConversion.message.Refresh()
|
fileForConversion.message.Refresh()
|
||||||
})
|
})
|
||||||
fileForConversion.eventSelectFile(err)
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if r == nil {
|
if r == nil {
|
||||||
@ -136,8 +157,6 @@ func (f *formConvertor) newFileForConversion() *fileForConversion {
|
|||||||
Ext: r.URI().Extension(),
|
Ext: r.URI().Extension(),
|
||||||
})
|
})
|
||||||
|
|
||||||
fileForConversion.eventSelectFile(nil)
|
|
||||||
|
|
||||||
listableURI := storage.NewFileURI(filepath.Dir(r.URI().Path()))
|
listableURI := storage.NewFileURI(filepath.Dir(r.URI().Path()))
|
||||||
locationURI, _ = storage.ListerForURI(listableURI)
|
locationURI, _ = storage.ListerForURI(listableURI)
|
||||||
}, locationURI)
|
}, locationURI)
|
||||||
@ -166,8 +185,6 @@ func (f *formConvertor) newFileForConversion() *fileForConversion {
|
|||||||
Ext: uri.Extension(),
|
Ext: uri.Extension(),
|
||||||
})
|
})
|
||||||
|
|
||||||
fileForConversion.eventSelectFile(nil)
|
|
||||||
|
|
||||||
listableURI := storage.NewFileURI(filepath.Dir(uri.Path()))
|
listableURI := storage.NewFileURI(filepath.Dir(uri.Path()))
|
||||||
locationURI, _ = storage.ListerForURI(listableURI)
|
locationURI, _ = storage.ListerForURI(listableURI)
|
||||||
}
|
}
|
||||||
@ -175,7 +192,6 @@ func (f *formConvertor) newFileForConversion() *fileForConversion {
|
|||||||
if isError {
|
if isError {
|
||||||
fileForConversion.message.Text = lang.L("errorDragAndDropFile")
|
fileForConversion.message.Text = lang.L("errorDragAndDropFile")
|
||||||
utils.SetStringErrorStyle(fileForConversion.message)
|
utils.SetStringErrorStyle(fileForConversion.message)
|
||||||
fileForConversion.eventSelectFile(errors.New(fileForConversion.message.Text))
|
|
||||||
} else {
|
} else {
|
||||||
fyne.Do(func() {
|
fyne.Do(func() {
|
||||||
fileForConversion.message.Text = ""
|
fileForConversion.message.Text = ""
|
||||||
@ -238,12 +254,98 @@ func (f *formConvertor) newDirectoryForSaving(directoryForSavingPath string) *di
|
|||||||
return directoryForSaving
|
return directoryForSaving
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *fileForConversion) addChangeCallback(callback func(err error)) {
|
type selectEncoder struct {
|
||||||
c.changeCallbacks[len(c.changeCallbacks)] = callback
|
SelectFileType *widget.RadioGroup
|
||||||
|
SelectFormat *widget.Select
|
||||||
|
SelectEncoder *widget.Select
|
||||||
|
Encoder encoder2.EncoderContract
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *fileForConversion) eventSelectFile(err error) {
|
func (f *formConvertor) newSelectEncoder(formats encoder.ConvertorFormatsContract) *selectEncoder {
|
||||||
for _, changeCallback := range c.changeCallbacks {
|
selectEncoder := &selectEncoder{}
|
||||||
changeCallback(err)
|
|
||||||
|
encoderMap := map[int]encoder2.EncoderDataContract{}
|
||||||
|
selectEncoder.SelectEncoder = widget.NewSelect([]string{}, func(s string) {
|
||||||
|
if encoderMap[selectEncoder.SelectEncoder.SelectedIndex()] == nil {
|
||||||
|
return
|
||||||
}
|
}
|
||||||
|
selectEncoderData := encoderMap[selectEncoder.SelectEncoder.SelectedIndex()]
|
||||||
|
selectEncoder.Encoder = selectEncoderData.NewEncoder()
|
||||||
|
f.changeEncoder(selectEncoder.Encoder)
|
||||||
|
})
|
||||||
|
|
||||||
|
formatSelected := ""
|
||||||
|
selectEncoder.SelectFormat = widget.NewSelect([]string{}, func(s string) {
|
||||||
|
if formatSelected == s {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
formatSelected = s
|
||||||
|
format, err := formats.GetFormat(s)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
var encoderOptions []string
|
||||||
|
encoderMap = map[int]encoder2.EncoderDataContract{}
|
||||||
|
for _, e := range format.GetEncoders() {
|
||||||
|
encoderMap[len(encoderMap)] = e
|
||||||
|
encoderOptions = append(encoderOptions, lang.L("encoder_"+e.GetTitle()))
|
||||||
|
}
|
||||||
|
selectEncoder.SelectEncoder.SetOptions(encoderOptions)
|
||||||
|
selectEncoder.SelectEncoder.SetSelectedIndex(0)
|
||||||
|
})
|
||||||
|
|
||||||
|
var fileTypeOptions []string
|
||||||
|
for _, fileType := range encoder2.GetListFileType() {
|
||||||
|
fileTypeOptions = append(fileTypeOptions, fileType.Name())
|
||||||
|
}
|
||||||
|
|
||||||
|
encoderGroupVideo := lang.L("encoderGroupVideo")
|
||||||
|
encoderGroupAudio := lang.L("encoderGroupAudio")
|
||||||
|
encoderGroupImage := lang.L("encoderGroupImage")
|
||||||
|
encoderGroup := map[string]string{
|
||||||
|
encoderGroupVideo: "video",
|
||||||
|
encoderGroupAudio: "audio",
|
||||||
|
encoderGroupImage: "image",
|
||||||
|
}
|
||||||
|
selectEncoder.SelectFileType = widget.NewRadioGroup([]string{encoderGroupVideo, encoderGroupAudio, encoderGroupImage}, func(s string) {
|
||||||
|
groupCode := encoderGroup[s]
|
||||||
|
|
||||||
|
var formatOptions []string
|
||||||
|
for _, f := range formats.GetFormats() {
|
||||||
|
if groupCode != f.GetFileType().Name() {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
formatOptions = append(formatOptions, f.GetTitle())
|
||||||
|
}
|
||||||
|
selectEncoder.SelectFormat.SetOptions(formatOptions)
|
||||||
|
if groupCode == encoder2.FileType(encoder2.Video).Name() {
|
||||||
|
selectEncoder.SelectFormat.SetSelected("mp4")
|
||||||
|
} else {
|
||||||
|
selectEncoder.SelectFormat.SetSelectedIndex(0)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
selectEncoder.SelectFileType.Horizontal = true
|
||||||
|
selectEncoder.SelectFileType.Required = true
|
||||||
|
selectEncoder.SelectFileType.SetSelected(encoderGroupVideo)
|
||||||
|
|
||||||
|
return selectEncoder
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f *formConvertor) changeEncoder(encoder encoder2.EncoderContract) {
|
||||||
|
var items []*widget.FormItem
|
||||||
|
|
||||||
|
if encoders.Views[encoder.GetName()] != nil {
|
||||||
|
items = encoders.Views[encoder.GetName()](encoder)
|
||||||
|
}
|
||||||
|
|
||||||
|
f.changeItems(items)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f *formConvertor) changeItems(items []*widget.FormItem) {
|
||||||
|
fyne.Do(func() {
|
||||||
|
f.form.Items = f.items
|
||||||
|
f.form.Refresh()
|
||||||
|
f.form.Items = append(f.form.Items, items...)
|
||||||
|
f.form.Refresh()
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
64
internal/gui/view/convertor/encoders/h264_nvenc/view.go
Normal file
64
internal/gui/view/convertor/encoders/h264_nvenc/view.go
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
package h264_nvenc
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fyne.io/fyne/v2/container"
|
||||||
|
"fyne.io/fyne/v2/lang"
|
||||||
|
"fyne.io/fyne/v2/widget"
|
||||||
|
"git.kor-elf.net/kor-elf/gui-for-ffmpeg/internal/ffmpeg/encoder"
|
||||||
|
"git.kor-elf.net/kor-elf/gui-for-ffmpeg/internal/ffmpeg/encoder/h264_nvenc"
|
||||||
|
)
|
||||||
|
|
||||||
|
func View(encoder encoder.EncoderContract) []*widget.FormItem {
|
||||||
|
items := []*widget.FormItem{}
|
||||||
|
|
||||||
|
items = append(items, presetParameter(encoder)...)
|
||||||
|
|
||||||
|
return items
|
||||||
|
}
|
||||||
|
|
||||||
|
func presetParameter(encoder encoder.EncoderContract) []*widget.FormItem {
|
||||||
|
parameter, err := encoder.GetParameter("preset")
|
||||||
|
if err != nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
presets := map[string]string{}
|
||||||
|
presetsForSelect := []string{}
|
||||||
|
presetDefault := ""
|
||||||
|
|
||||||
|
for _, name := range h264_nvenc.Presets {
|
||||||
|
title := name
|
||||||
|
presetsForSelect = append(presetsForSelect, name)
|
||||||
|
presets[title] = name
|
||||||
|
if name == parameter.Get() {
|
||||||
|
presetDefault = title
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
elementSelect := widget.NewSelect(presetsForSelect, func(s string) {
|
||||||
|
if presets[s] == "" {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
parameter.Set(presets[s])
|
||||||
|
})
|
||||||
|
elementSelect.SetSelected(presetDefault)
|
||||||
|
elementSelect.Hide()
|
||||||
|
|
||||||
|
checkboxTitle := lang.L("parameterCheckbox")
|
||||||
|
elementCheckbox := widget.NewCheck(checkboxTitle, func(b bool) {
|
||||||
|
if b == true {
|
||||||
|
parameter.SetEnable()
|
||||||
|
elementSelect.Show()
|
||||||
|
return
|
||||||
|
}
|
||||||
|
parameter.SetDisable()
|
||||||
|
elementSelect.Hide()
|
||||||
|
})
|
||||||
|
|
||||||
|
return []*widget.FormItem{
|
||||||
|
{
|
||||||
|
Text: lang.L("formPreset"),
|
||||||
|
Widget: container.NewVBox(elementCheckbox, elementSelect),
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
64
internal/gui/view/convertor/encoders/libx264/view.go
Normal file
64
internal/gui/view/convertor/encoders/libx264/view.go
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
package libx264
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fyne.io/fyne/v2/container"
|
||||||
|
"fyne.io/fyne/v2/lang"
|
||||||
|
"fyne.io/fyne/v2/widget"
|
||||||
|
"git.kor-elf.net/kor-elf/gui-for-ffmpeg/internal/ffmpeg/encoder"
|
||||||
|
"git.kor-elf.net/kor-elf/gui-for-ffmpeg/internal/ffmpeg/encoder/libx264"
|
||||||
|
)
|
||||||
|
|
||||||
|
func View(encoder encoder.EncoderContract) []*widget.FormItem {
|
||||||
|
items := []*widget.FormItem{}
|
||||||
|
|
||||||
|
items = append(items, presetParameter(encoder)...)
|
||||||
|
|
||||||
|
return items
|
||||||
|
}
|
||||||
|
|
||||||
|
func presetParameter(encoder encoder.EncoderContract) []*widget.FormItem {
|
||||||
|
parameter, err := encoder.GetParameter("preset")
|
||||||
|
if err != nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
presets := map[string]string{}
|
||||||
|
presetsForSelect := []string{}
|
||||||
|
presetDefault := ""
|
||||||
|
|
||||||
|
for _, name := range libx264.Presets {
|
||||||
|
title := lang.L("preset_" + name)
|
||||||
|
presetsForSelect = append(presetsForSelect, title)
|
||||||
|
presets[title] = name
|
||||||
|
if name == parameter.Get() {
|
||||||
|
presetDefault = title
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
elementSelect := widget.NewSelect(presetsForSelect, func(s string) {
|
||||||
|
if presets[s] == "" {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
parameter.Set(presets[s])
|
||||||
|
})
|
||||||
|
elementSelect.SetSelected(presetDefault)
|
||||||
|
elementSelect.Hide()
|
||||||
|
|
||||||
|
checkboxTitle := lang.L("parameterCheckbox")
|
||||||
|
elementCheckbox := widget.NewCheck(checkboxTitle, func(b bool) {
|
||||||
|
if b == true {
|
||||||
|
parameter.SetEnable()
|
||||||
|
elementSelect.Show()
|
||||||
|
return
|
||||||
|
}
|
||||||
|
parameter.SetDisable()
|
||||||
|
elementSelect.Hide()
|
||||||
|
})
|
||||||
|
|
||||||
|
return []*widget.FormItem{
|
||||||
|
{
|
||||||
|
Text: lang.L("formPreset"),
|
||||||
|
Widget: container.NewVBox(elementCheckbox, elementSelect),
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
64
internal/gui/view/convertor/encoders/libx265/view.go
Normal file
64
internal/gui/view/convertor/encoders/libx265/view.go
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
package libx265
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fyne.io/fyne/v2/container"
|
||||||
|
"fyne.io/fyne/v2/lang"
|
||||||
|
"fyne.io/fyne/v2/widget"
|
||||||
|
"git.kor-elf.net/kor-elf/gui-for-ffmpeg/internal/ffmpeg/encoder"
|
||||||
|
"git.kor-elf.net/kor-elf/gui-for-ffmpeg/internal/ffmpeg/encoder/libx265"
|
||||||
|
)
|
||||||
|
|
||||||
|
func View(encoder encoder.EncoderContract) []*widget.FormItem {
|
||||||
|
items := []*widget.FormItem{}
|
||||||
|
|
||||||
|
items = append(items, presetParameter(encoder)...)
|
||||||
|
|
||||||
|
return items
|
||||||
|
}
|
||||||
|
|
||||||
|
func presetParameter(encoder encoder.EncoderContract) []*widget.FormItem {
|
||||||
|
parameter, err := encoder.GetParameter("preset")
|
||||||
|
if err != nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
presets := map[string]string{}
|
||||||
|
presetsForSelect := []string{}
|
||||||
|
presetDefault := ""
|
||||||
|
|
||||||
|
for _, name := range libx265.Presets {
|
||||||
|
title := lang.L("preset_" + name)
|
||||||
|
presetsForSelect = append(presetsForSelect, title)
|
||||||
|
presets[title] = name
|
||||||
|
if name == parameter.Get() {
|
||||||
|
presetDefault = title
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
elementSelect := widget.NewSelect(presetsForSelect, func(s string) {
|
||||||
|
if presets[s] == "" {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
parameter.Set(presets[s])
|
||||||
|
})
|
||||||
|
elementSelect.SetSelected(presetDefault)
|
||||||
|
elementSelect.Hide()
|
||||||
|
|
||||||
|
checkboxTitle := lang.L("parameterCheckbox")
|
||||||
|
elementCheckbox := widget.NewCheck(checkboxTitle, func(b bool) {
|
||||||
|
if b == true {
|
||||||
|
parameter.SetEnable()
|
||||||
|
elementSelect.Show()
|
||||||
|
return
|
||||||
|
}
|
||||||
|
parameter.SetDisable()
|
||||||
|
elementSelect.Hide()
|
||||||
|
})
|
||||||
|
|
||||||
|
return []*widget.FormItem{
|
||||||
|
{
|
||||||
|
Text: lang.L("formPreset"),
|
||||||
|
Widget: container.NewVBox(elementCheckbox, elementSelect),
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
@ -7,7 +7,6 @@ import (
|
|||||||
"fyne.io/fyne/v2/lang"
|
"fyne.io/fyne/v2/lang"
|
||||||
"fyne.io/fyne/v2/theme"
|
"fyne.io/fyne/v2/theme"
|
||||||
"fyne.io/fyne/v2/widget"
|
"fyne.io/fyne/v2/widget"
|
||||||
"git.kor-elf.net/kor-elf/gui-for-ffmpeg/internal/application"
|
|
||||||
"git.kor-elf.net/kor-elf/gui-for-ffmpeg/internal/application/convertor"
|
"git.kor-elf.net/kor-elf/gui-for-ffmpeg/internal/application/convertor"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -21,7 +20,7 @@ type layout struct {
|
|||||||
rContainer RightMainContainerContract
|
rContainer RightMainContainerContract
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewLayout(progressBarService application.ProgressBarContract, itemsToConvert convertor.ItemsToConvertContract, queueLayout QueueLayoutContract) LayoutContract {
|
func NewLayout(progressBarService convertor.ProgressBarContract, itemsToConvert convertor.ItemsToConvertContract, queueLayout QueueLayoutContract) LayoutContract {
|
||||||
rContainer := newRightContainer(progressBarService.GetContainer(), itemsToConvert, queueLayout)
|
rContainer := newRightContainer(progressBarService.GetContainer(), itemsToConvert, queueLayout)
|
||||||
layoutContainer := container.NewAdaptiveGrid(2, widget.NewLabel(""), rContainer.GetCanvasObject())
|
layoutContainer := container.NewAdaptiveGrid(2, widget.NewLabel(""), rContainer.GetCanvasObject())
|
||||||
|
|
||||||
|
@ -3,7 +3,6 @@ package window
|
|||||||
import (
|
import (
|
||||||
"fyne.io/fyne/v2"
|
"fyne.io/fyne/v2"
|
||||||
"fyne.io/fyne/v2/dialog"
|
"fyne.io/fyne/v2/dialog"
|
||||||
"git.kor-elf.net/kor-elf/gui-for-ffmpeg/internal/application"
|
|
||||||
"git.kor-elf.net/kor-elf/gui-for-ffmpeg/internal/application/convertor"
|
"git.kor-elf.net/kor-elf/gui-for-ffmpeg/internal/application/convertor"
|
||||||
"git.kor-elf.net/kor-elf/gui-for-ffmpeg/internal/utils"
|
"git.kor-elf.net/kor-elf/gui-for-ffmpeg/internal/utils"
|
||||||
)
|
)
|
||||||
@ -22,13 +21,13 @@ type mainWindow struct {
|
|||||||
fyneWindow fyne.Window
|
fyneWindow fyne.Window
|
||||||
layout LayoutContract
|
layout LayoutContract
|
||||||
itemsToConvert convertor.ItemsToConvertContract
|
itemsToConvert convertor.ItemsToConvertContract
|
||||||
progressBarService application.ProgressBarContract
|
progressBarService convertor.ProgressBarContract
|
||||||
queueLayout QueueLayoutContract
|
queueLayout QueueLayoutContract
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewMainWindow(
|
func NewMainWindow(
|
||||||
fyneWindow fyne.Window,
|
fyneWindow fyne.Window,
|
||||||
progressBarService application.ProgressBarContract,
|
progressBarService convertor.ProgressBarContract,
|
||||||
itemsToConvert convertor.ItemsToConvertContract,
|
itemsToConvert convertor.ItemsToConvertContract,
|
||||||
queueLayout QueueLayoutContract,
|
queueLayout QueueLayoutContract,
|
||||||
) WindowContract {
|
) WindowContract {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user