mirror of
https://github.com/AynaLivePlayer/AynaLivePlayer.git
synced 2025-12-06 10:22:50 +08:00
93 lines
2.7 KiB
Go
93 lines
2.7 KiB
Go
package gui
|
|
|
|
import (
|
|
"AynaLivePlayer/core/events"
|
|
"AynaLivePlayer/global"
|
|
"AynaLivePlayer/gui/gctx"
|
|
"AynaLivePlayer/gui/gutil"
|
|
configView "AynaLivePlayer/gui/views/config"
|
|
"AynaLivePlayer/gui/views/history"
|
|
"AynaLivePlayer/gui/views/liverooms"
|
|
"AynaLivePlayer/gui/views/player"
|
|
"AynaLivePlayer/gui/views/playlists"
|
|
"AynaLivePlayer/gui/views/search"
|
|
"AynaLivePlayer/gui/views/systray"
|
|
"AynaLivePlayer/gui/views/updater"
|
|
"AynaLivePlayer/pkg/config"
|
|
"AynaLivePlayer/pkg/eventbus"
|
|
"AynaLivePlayer/pkg/i18n"
|
|
"AynaLivePlayer/resource"
|
|
"fyne.io/fyne/v2"
|
|
"fyne.io/fyne/v2/app"
|
|
"fyne.io/fyne/v2/container"
|
|
"fyne.io/fyne/v2/dialog"
|
|
"fyne.io/fyne/v2/widget"
|
|
"os"
|
|
|
|
_logger "AynaLivePlayer/pkg/logger"
|
|
)
|
|
|
|
var logger _logger.ILogger = nil
|
|
|
|
func black_magic() {
|
|
widget.RichTextStyleStrong.TextStyle.Bold = false
|
|
}
|
|
|
|
func Initialize() {
|
|
logger = global.Logger.WithPrefix("GUI")
|
|
gctx.Logger = logger
|
|
black_magic()
|
|
logger.Info("Initializing GUI")
|
|
|
|
if config.General.CustomFonts != "" {
|
|
_ = os.Setenv("FYNE_FONT", config.GetAssetPath(config.General.CustomFonts))
|
|
}
|
|
|
|
mainApp := app.NewWithID(config.ProgramName)
|
|
MainWindow := mainApp.NewWindow(getAppTitle())
|
|
|
|
gctx.Context = gctx.NewGuiContext(mainApp, MainWindow)
|
|
gctx.Context.Init()
|
|
|
|
gctx.Context.OnMainWindowClosing(func() {
|
|
_ = config.SaveToConfigFile(config.ConfigPath)
|
|
logger.Infof("config saved to %s", config.ConfigPath)
|
|
})
|
|
|
|
updater.CreateUpdaterPopUp()
|
|
|
|
tabs := container.NewAppTabs(
|
|
container.NewTabItem(i18n.T("gui.tab.player"), player.CreateView()),
|
|
container.NewTabItem(i18n.T("gui.tab.search"), search.CreateView()),
|
|
container.NewTabItem(i18n.T("gui.tab.room"), liverooms.CreateView()),
|
|
container.NewTabItem(i18n.T("gui.tab.playlist"), playlists.CreateView()),
|
|
container.NewTabItem(i18n.T("gui.tab.history"), history.CreateView()),
|
|
container.NewTabItem(i18n.T("gui.tab.config"), configView.CreateView()),
|
|
)
|
|
|
|
tabs.SetTabLocation(container.TabLocationTop)
|
|
MainWindow.SetIcon(resource.ImageIcon)
|
|
MainWindow.SetContent(tabs)
|
|
MainWindow.Resize(fyne.NewSize(config.General.Width, config.General.Height))
|
|
MainWindow.SetFixedSize(config.General.FixedSize)
|
|
|
|
// todo: fix, window were created even if not show. this block gui from closing
|
|
// i can't create sub window before the main window shows.
|
|
// setupPlayerWindow()
|
|
|
|
// register error
|
|
global.EventBus.Subscribe(gctx.EventChannel,
|
|
events.ErrorUpdate, "gui.show_error", gutil.ThreadSafeHandler(func(e *eventbus.Event) {
|
|
err := e.Data.(events.ErrorUpdateEvent).Error
|
|
logger.Warnf("gui received error event: %v, %v", err, err == nil)
|
|
if err == nil {
|
|
return
|
|
}
|
|
dialog.ShowError(err, MainWindow)
|
|
}))
|
|
|
|
if config.General.ShowSystemTray {
|
|
systray.SetupSysTray()
|
|
}
|
|
}
|