//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, )), ) }