Add FFmpeg utilities configuration UI and automated downloading

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.
This commit is contained in:
2025-06-07 01:30:32 +05:00
parent b24155caf6
commit c60b9f7b0c
22 changed files with 1118 additions and 37 deletions

11
internal/utils/dialog.go Normal file
View File

@@ -0,0 +1,11 @@
package utils
import (
"fyne.io/fyne/v2"
"fyne.io/fyne/v2/dialog"
)
func FileDialogResize(fileDialog *dialog.FileDialog, w fyne.Window) {
contentSize := w.Content().Size()
fileDialog.Resize(fyne.Size{Width: contentSize.Width - 50, Height: contentSize.Height - 50})
}

View File

@@ -0,0 +1,8 @@
//go:build !windows
// +build !windows
package utils
func PathSeparator() string {
return "/"
}

View File

@@ -0,0 +1,8 @@
//go:build windows
// +build windows
package utils
func PathSeparator() string {
return "\\"
}

View File

@@ -0,0 +1,12 @@
//go:build !windows
// +build !windows
package utils
import (
"os/exec"
)
func PrepareBackgroundCommand(cmd *exec.Cmd) {
}

View File

@@ -0,0 +1,13 @@
//go:build windows
// +build windows
package utils
import (
"os/exec"
"syscall"
)
func PrepareBackgroundCommand(cmd *exec.Cmd) {
cmd.SysProcAttr = &syscall.SysProcAttr{HideWindow: true}
}

21
internal/utils/text.go Normal file
View File

@@ -0,0 +1,21 @@
package utils
import (
"fyne.io/fyne/v2"
"fyne.io/fyne/v2/canvas"
"image/color"
)
func SetStringErrorStyle(text *canvas.Text) {
fyne.Do(func() {
text.Color = color.RGBA{R: 255, G: 0, B: 0, A: 255}
text.Refresh()
})
}
func SetStringSuccessStyle(text *canvas.Text) {
fyne.Do(func() {
text.Color = color.RGBA{R: 49, G: 127, B: 114, A: 255}
text.Refresh()
})
}