Introduce a new UI for configuring FFmpeg, FFprobe, and FFplay paths with file selection and error handling. Add platform-specific logic for downloading and extracting FFmpeg binaries directly within the application, improving user experience.
60 lines
1.7 KiB
Go
60 lines
1.7 KiB
Go
//go:build linux
|
|
// +build linux
|
|
|
|
package gui
|
|
|
|
import (
|
|
"fyne.io/fyne/v2"
|
|
"fyne.io/fyne/v2/canvas"
|
|
"fyne.io/fyne/v2/container"
|
|
"fyne.io/fyne/v2/lang"
|
|
"fyne.io/fyne/v2/widget"
|
|
"golang.org/x/image/colornames"
|
|
"image/color"
|
|
)
|
|
|
|
func DownloadFFmpeg(donwloadFFmpeg func(progressBar *widget.ProgressBar, progressMessage *canvas.Text) error) fyne.CanvasObject {
|
|
errorDownloadFFmpegMessage := canvas.NewText("", color.RGBA{R: 255, G: 0, B: 0, A: 255})
|
|
errorDownloadFFmpegMessage.TextSize = 16
|
|
errorDownloadFFmpegMessage.TextStyle = fyne.TextStyle{Bold: true}
|
|
|
|
progressDownloadFFmpegMessage := canvas.NewText("", color.RGBA{R: 49, G: 127, B: 114, A: 255})
|
|
progressDownloadFFmpegMessage.TextSize = 16
|
|
progressDownloadFFmpegMessage.TextStyle = fyne.TextStyle{Bold: true}
|
|
|
|
progressBar := widget.NewProgressBar()
|
|
|
|
var buttonDownloadFFmpeg *widget.Button
|
|
|
|
buttonDownloadFFmpeg = widget.NewButton(lang.L("download"), func() {
|
|
fyne.Do(func() {
|
|
buttonDownloadFFmpeg.Disable()
|
|
})
|
|
go func() {
|
|
err := donwloadFFmpeg(progressBar, progressDownloadFFmpegMessage)
|
|
if err != nil {
|
|
errorDownloadFFmpegMessage.Text = err.Error()
|
|
}
|
|
fyne.Do(func() {
|
|
buttonDownloadFFmpeg.Enable()
|
|
})
|
|
}()
|
|
|
|
})
|
|
|
|
downloadFFmpegFromSiteMessage := lang.L("downloadFFmpegFromSite")
|
|
|
|
return container.NewVBox(
|
|
canvas.NewLine(colornames.Darkgreen),
|
|
widget.NewCard(lang.L("buttonDownloadFFmpeg"), "", container.NewVBox(
|
|
widget.NewRichTextFromMarkdown(
|
|
downloadFFmpegFromSiteMessage+" [https://github.com/BtbN/FFmpeg-Builds/releases](https://github.com/BtbN/FFmpeg-Builds/releases)",
|
|
),
|
|
buttonDownloadFFmpeg,
|
|
container.NewHScroll(errorDownloadFFmpegMessage),
|
|
progressDownloadFFmpegMessage,
|
|
progressBar,
|
|
)),
|
|
)
|
|
}
|