package controller import ( "fyne.io/fyne/v2" "git.kor-elf.net/kor-elf/gui-for-ffmpeg/internal/application" "git.kor-elf.net/kor-elf/gui-for-ffmpeg/internal/application/setting" "git.kor-elf.net/kor-elf/gui-for-ffmpeg/internal/gui/menu" "git.kor-elf.net/kor-elf/gui-for-ffmpeg/internal/gui/view" "git.kor-elf.net/kor-elf/gui-for-ffmpeg/internal/gui/window" ) type ControllerContract interface { Start() } type controller struct { app application.AppContract window window.WindowContract } func NewController(app application.AppContract) ControllerContract { fyneWindow := app.FyneApp().NewWindow("GUI for FFmpeg") fyneWindow.SetMaster() queueLayout := window.NewQueueLayout(app.GetFFmpegService()) app.GetQueueService().AddListener(queueLayout) return &controller{ app: app, window: window.NewMainWindow( fyneWindow, app.GetProgressBarService(), app.GetItemsToConvert(), queueLayout, ), } } func (c *controller) Start() { isDefault, err := c.initLanguage() if err != nil { c.startWithError(err) c.window.Show() return } c.app.GetSetting().ThemeInit() if isDefault { languages := c.app.GetSetting().GetLanguages() content := view.StartWithoutSupportLang(languages, func(lang setting.Lang) { err = c.app.GetSetting().SetLang(lang) if err != nil { c.startWithError(err) return } c.initLayout() c.verificareaFFmpeg() }) c.window.SetContent(content) c.window.Show() return } c.initLayout() c.verificareaFFmpeg() c.window.Show() } func (c *controller) verificareaFFmpeg() { if !c.app.GetFFmpegService().UtilityCheck() { c.settingConvertor(false) return } c.convertor() } func (c *controller) initLanguage() (isDefault bool, err error) { lang, isDefault := c.app.GetSetting().GetCurrentLangOrDefaultLang() err = setting.ChangeLang(lang) return isDefault, err } func (c *controller) initLayout() { c.window.SetMainMenu(fyne.NewMainMenu( menu.MainMenuSettings( c.actionMainSettings, c.actionSettingConvertor, ), menu.MainMenuHelp( c.actionAbout, c.actionHelpFFplay, ), )) c.window.InitLayout() }