Refactor application structure and initialize core components

I decided to rewrite the program taking into account the experience gained.
This commit is contained in:
2025-06-06 14:50:16 +05:00
parent 43d794373a
commit b24155caf6
24 changed files with 1295 additions and 63 deletions

79
main.go
View File

@@ -1,76 +1,29 @@
package main
import (
_ "embed"
"fyne.io/fyne/v2"
"git.kor-elf.net/kor-elf/gui-for-ffmpeg/convertor"
error2 "git.kor-elf.net/kor-elf/gui-for-ffmpeg/error"
"git.kor-elf.net/kor-elf/gui-for-ffmpeg/handler"
"fyne.io/fyne/v2/app"
"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/controller"
"git.kor-elf.net/kor-elf/gui-for-ffmpeg/internal/ffmpeg"
"git.kor-elf.net/kor-elf/gui-for-ffmpeg/internal/resources"
"git.kor-elf.net/kor-elf/gui-for-ffmpeg/kernel"
"git.kor-elf.net/kor-elf/gui-for-ffmpeg/localizer"
"git.kor-elf.net/kor-elf/gui-for-ffmpeg/menu"
"git.kor-elf.net/kor-elf/gui-for-ffmpeg/setting"
"git.kor-elf.net/kor-elf/gui-for-ffmpeg/theme"
)
var application kernel.AppContract
var ffPathUtilities *kernel.FFPathUtilities
func init() {
appMetadata := &fyne.AppMetadata{
func main() {
appMetadata := fyne.AppMetadata{
ID: "net.kor-elf.projects.gui-for-ffmpeg",
Name: "GUI for FFmpeg",
Version: "0.9.0",
Icon: resources.IconAppLogoResource(),
}
ffPathUtilities = &kernel.FFPathUtilities{FFmpeg: "", FFprobe: "", FFplay: ""}
convertorService := kernel.NewService(ffPathUtilities)
ffplayService := kernel.NewFFplay(ffPathUtilities)
queue := kernel.NewQueueList()
application = kernel.NewApp(
appMetadata,
queue,
ffplayService,
convertorService,
)
}
func main() {
errorView := error2.NewView(application)
settingRepository := setting.NewRepository(application.GetAppFyne())
settingDirectoryForSaving := setting.NewSettingDirectoryForSaving(settingRepository)
convertorRepository := convertor.NewRepository(settingRepository)
ffPathUtilities.FFmpeg = convertorRepository.GetPathFfmpeg()
ffPathUtilities.FFprobe = convertorRepository.GetPathFfprobe()
ffPathUtilities.FFplay = convertorRepository.GetPathFfplay()
application.RunConvertor()
defer application.AfterClosing()
localizerView := localizer.NewView(application)
convertorView := convertor.NewView(application)
itemsToConvertService := kernel.NewItemsToConvert(
application.GetWindow().GetLayout().GetRightTabs().GetAddedFilesContainer(),
application.GetFFplayService(),
application.GetLocalizerService(),
)
convertorHandler := handler.NewConvertorHandler(application, convertorView, errorView, convertorRepository, settingDirectoryForSaving, itemsToConvertService)
themeRepository := theme.NewRepository(settingRepository)
themeService := theme.NewTheme(application, themeRepository)
menuView := menu.NewView(application)
menuSettingView := menu.NewViewSetting(application, themeService)
mainMenu := handler.NewMenuHandler(application, convertorHandler, menuView, menuSettingView, localizerView, themeService)
mainHandler := handler.NewMainHandler(application, convertorHandler, mainMenu)
mainHandler.Start()
application.GetWindow().SetMainMenu(mainMenu.GetMainMenu())
application.GetWindow().ShowAndRun()
app.SetMetadata(appMetadata)
fyneApp := app.New()
progressBarService := application.NewProgressBar()
appSetting := setting.NewSetting(fyneApp)
ffmpegService := ffmpeg.NewUtilities(appSetting)
myApp := application.NewApp(fyneApp, appSetting, progressBarService, ffmpegService)
mainController := controller.NewController(myApp)
mainController.Start()
myApp.Run()
}