Skip to content

Commit 1eca8b0

Browse files
committed
FFmpeg UI improvement. Fix language change for Windows and Mac
1 parent 1c563c6 commit 1eca8b0

File tree

5 files changed

+53
-27
lines changed

5 files changed

+53
-27
lines changed

internal/gui/gui.go

Lines changed: 30 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -128,26 +128,27 @@ func Start(ctx context.Context, s *FyneScreen) {
128128

129129
s.Hotkeys = true
130130
tabs.OnSelected = func(t *container.TabItem) {
131-
s.TranscodeCheckBox.Enable()
132-
if err := utils.CheckFFmpeg(s.ffmpegPath); err != nil {
133-
s.TranscodeCheckBox.SetChecked(false)
134-
s.TranscodeCheckBox.Disable()
135-
s.SelectInternalSubs.Options = []string{}
136-
s.SelectInternalSubs.PlaceHolder = lang.L("No Embedded Subs")
137-
s.SelectInternalSubs.ClearSelected()
138-
s.SelectInternalSubs.Disable()
139-
}
131+
if t.Text == "Go2TV" {
132+
s.Hotkeys = true
133+
s.TranscodeCheckBox.Enable()
134+
135+
if err := utils.CheckFFmpeg(s.ffmpegPath); err != nil {
136+
s.TranscodeCheckBox.SetChecked(false)
137+
s.TranscodeCheckBox.Disable()
138+
s.SelectInternalSubs.Options = []string{}
139+
s.SelectInternalSubs.PlaceHolder = lang.L("No Embedded Subs")
140+
s.SelectInternalSubs.ClearSelected()
141+
s.SelectInternalSubs.Disable()
142+
}
140143

141-
if s.ffmpegPathChanged {
142-
furi, err := storage.ParseURI("file://" + s.mediafile)
143-
if err == nil {
144-
go selectMediaFile(s, furi)
144+
if s.ffmpegPathChanged {
145+
furi, err := storage.ParseURI("file://" + s.mediafile)
146+
if err == nil {
147+
go selectMediaFile(s, furi)
148+
}
149+
s.ffmpegPathChanged = false
145150
}
146-
s.ffmpegPathChanged = false
147-
}
148151

149-
if t.Text == "Go2TV" {
150-
s.Hotkeys = true
151152
return
152153
}
153154
s.Hotkeys = false
@@ -244,16 +245,24 @@ func (p *FyneScreen) Fini() {
244245
}
245246
}
246247

247-
func InitFyneNewScreen(version string) *FyneScreen {
248+
func initFyneNewScreen(version string) *FyneScreen {
248249
go2tv := app.NewWithID("app.go2tv.go2tv")
249250

251+
// Hack. Ongoing discussion in https://github.com/fyne-io/fyne/issues/5333
252+
var content []byte
250253
switch go2tv.Preferences().String("Language") {
251254
case "中文(简体)":
252-
os.Setenv("LANG", "zh_CN.UTF-8")
255+
content, _ = translations.ReadFile("translations/zh.json")
253256
case "English":
254-
os.Setenv("LANG", "en_US.UTF-8")
257+
content, _ = translations.ReadFile("translations/en.json")
258+
}
259+
260+
if content != nil {
261+
name := lang.SystemLocale().LanguageString()
262+
lang.AddTranslations(fyne.NewStaticResource(name+".json", content))
263+
} else {
264+
lang.AddTranslationsFS(translations, "translations")
255265
}
256-
lang.AddTranslationsFS(translations, "translations")
257266

258267
go2tv.SetIcon(fyne.NewStaticResource("icon", go2TVIcon510))
259268

internal/gui/gui_mobile.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -121,8 +121,7 @@ func (p *FyneScreen) Fini() {
121121
}
122122
}
123123

124-
// InitFyneNewScreen .
125-
func InitFyneNewScreen(v string) *FyneScreen {
124+
func initFyneNewScreen(v string) *FyneScreen {
126125
go2tv := app.NewWithID("app.go2tv.go2tv")
127126
go2tv.Settings().SetTheme(go2tvTheme{"Dark"})
128127

internal/gui/newGUI.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,5 +5,5 @@ package gui
55

66
// NewFyneScreen .
77
func NewFyneScreen(version string) *FyneScreen {
8-
return InitFyneNewScreen(version)
8+
return initFyneNewScreen(version)
99
}

internal/gui/newGUI_windows.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import (
77
// NewFyneScreen .
88
func NewFyneScreen(version string) *FyneScreen {
99
hideConsole()
10-
return InitFyneNewScreen(version)
10+
return initFyneNewScreen(version)
1111
}
1212

1313
func hideConsole() {

internal/gui/settings.go

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
package gui
55

66
import (
7+
"path/filepath"
78
"runtime"
89
"time"
910

@@ -54,6 +55,22 @@ func settingsWindow(s *FyneScreen) fyne.CanvasObject {
5455
ffmpegText := widget.NewLabel("ffmpeg " + lang.L("Path"))
5556
ffmpegTextEntry := widget.NewEntry()
5657

58+
ffmpegFolderSelect := widget.NewButtonWithIcon("", theme.FolderOpenIcon(), func() {
59+
dialog.ShowFolderOpen(func(lu fyne.ListableURI, err error) {
60+
if err != nil {
61+
dialog.ShowError(err, w)
62+
return
63+
}
64+
if lu == nil {
65+
return
66+
}
67+
68+
p := filepath.ToSlash(lu.Path() + string(filepath.Separator) + "ffmpeg")
69+
ffmpegTextEntry.SetText(p)
70+
}, w)
71+
})
72+
ffmpegPathControls := container.New(layout.NewBorderLayout(nil, nil, nil, ffmpegFolderSelect), ffmpegFolderSelect, ffmpegTextEntry)
73+
5774
ffmpegTextEntry.Text = func() string {
5875
if fyne.CurrentApp().Preferences().String("ffmpeg") != "" {
5976
return fyne.CurrentApp().Preferences().String("ffmpeg")
@@ -62,7 +79,7 @@ func settingsWindow(s *FyneScreen) fyne.CanvasObject {
6279
os := runtime.GOOS
6380
switch os {
6481
case "windows":
65-
return `C:\ffmpeg\bin\ffmpeg`
82+
return "C:/ffmpeg/bin/ffmpeg"
6683
case "linux":
6784
return "ffmpeg"
6885
case "darwin":
@@ -73,6 +90,7 @@ func settingsWindow(s *FyneScreen) fyne.CanvasObject {
7390

7491
}()
7592
ffmpegTextEntry.Refresh()
93+
7694
s.ffmpegPath = ffmpegTextEntry.Text
7795

7896
ffmpegTextEntry.OnChanged = func(update string) {
@@ -144,7 +162,7 @@ func settingsWindow(s *FyneScreen) fyne.CanvasObject {
144162

145163
dropdownTheme.Refresh()
146164

147-
return container.New(layout.NewFormLayout(), themeText, dropdownTheme, languageText, dropdownLanguage, gaplessText, gaplessdropdown, ffmpegText, ffmpegTextEntry, debugText, debugExport)
165+
return container.New(layout.NewFormLayout(), themeText, dropdownTheme, languageText, dropdownLanguage, gaplessText, gaplessdropdown, ffmpegText, ffmpegPathControls, debugText, debugExport)
148166
}
149167

150168
func saveDebugLogs(f fyne.URIWriteCloser, s *FyneScreen) {

0 commit comments

Comments
 (0)