diff --git a/cmd/WiiUDownloader/main.go b/cmd/WiiUDownloader/main.go index 42fc65d..59d8a30 100644 --- a/cmd/WiiUDownloader/main.go +++ b/cmd/WiiUDownloader/main.go @@ -7,6 +7,8 @@ import ( "runtime" wiiudownloader "github.com/Xpl0itU/WiiUDownloader" + "github.com/gotk3/gotk3/glib" + "github.com/gotk3/gotk3/gtk" ) func main() { @@ -31,8 +33,18 @@ func main() { os.Setenv("GSETTINGS_SCHEMA_DIR", filePath) } } - win := NewMainWindow(wiiudownloader.GetTitleEntries(wiiudownloader.TITLE_CATEGORY_GAME), logger) + gtk.Init(nil) - win.ShowAll() - Main() + app, err := gtk.ApplicationNew("io.github.xpl0itu.wiiudownloader", glib.APPLICATION_FLAGS_NONE) + if err != nil { + logger.Fatal(err.Error()) + } + app.Connect("activate", func() { + win := NewMainWindow(app, wiiudownloader.GetTitleEntries(wiiudownloader.TITLE_CATEGORY_GAME), logger) + win.ShowAll() + app.AddWindow(win.window) + app.GetActiveWindow().Show() + }) + app.Run(nil) + app.Quit() } diff --git a/cmd/WiiUDownloader/mainwindow.go b/cmd/WiiUDownloader/mainwindow.go index e05bc86..30a7aad 100644 --- a/cmd/WiiUDownloader/mainwindow.go +++ b/cmd/WiiUDownloader/mainwindow.go @@ -26,7 +26,7 @@ const ( ) type MainWindow struct { - window *gtk.Window + window *gtk.ApplicationWindow treeView *gtk.TreeView titles []wiiudownloader.TitleEntry searchEntry *gtk.Entry @@ -41,16 +41,14 @@ type MainWindow struct { lastSearchText string } -func NewMainWindow(entries []wiiudownloader.TitleEntry, logger *wiiudownloader.Logger) *MainWindow { - gtk.Init(nil) - +func NewMainWindow(app *gtk.Application, entries []wiiudownloader.TitleEntry, logger *wiiudownloader.Logger) *MainWindow { gSettings, err := gtk.SettingsGetDefault() if err != nil { logger.Error(err.Error()) } gSettings.SetProperty("gtk-application-prefer-dark-theme", isDarkMode()) - win, err := gtk.WindowNew(gtk.WINDOW_TOPLEVEL) + win, err := gtk.ApplicationWindowNew(app) if err != nil { logger.Fatal("Unable to create window:", err) } @@ -425,7 +423,7 @@ func (mw *MainWindow) ShowAll() { mw.window.Add(mainvBox) - mw.window.ShowAll() + mainvBox.ShowAll() } func (mw *MainWindow) onRegionChange(button *gtk.CheckButton, region uint8) { @@ -791,7 +789,3 @@ queueProcessingLoop: return nil } - -func Main() { - gtk.Main() -} diff --git a/downloader.go b/downloader.go index d394229..2f9b2b9 100644 --- a/downloader.go +++ b/downloader.go @@ -33,7 +33,7 @@ type ProgressWindow struct { cancelled bool } -func CreateProgressWindow(parent *gtk.Window) (ProgressWindow, error) { +func CreateProgressWindow(parent *gtk.ApplicationWindow) (ProgressWindow, error) { win, err := gtk.WindowNew(gtk.WINDOW_TOPLEVEL) if err != nil { return ProgressWindow{}, err