From b7c0307f6b6b27163098b10a60c797caec7a6803 Mon Sep 17 00:00:00 2001 From: Olli Date: Thu, 26 Feb 2026 10:41:33 +0100 Subject: [PATCH] Add GTK application implementation --- data/data.go | 32 + data/gtk.css | 5 - data/icons/meson.build | 7 - data/ui/album-headerbar.ui | 7 +- data/ui/connection-panel.ui | 91 ++- data/ui/cover-panel.ui | 4 +- data/ui/library-panel.ui | 68 +-- data/ui/playlist-panel.ui | 54 +- data/ui/server-panel.ui | 4 +- data/ui/shortcuts-dialog.ui | 4 +- data/ui/window.ui | 17 +- data/xyz.suruatoel.mcg.gresource.xml | 15 - data/xyz.suruatoel.mcg.gschema.xml | 63 -- .../scalable/apps => }/xyz.suruatoel.mcg.svg | 0 go.mod | 7 + go.sum | 6 + internal/gui/albumheaderbar.go | 42 ++ internal/gui/application.go | 151 +++++ internal/gui/config.go | 78 +++ internal/gui/connectionpanel.go | 58 ++ internal/gui/coverloader.go | 188 ++++++ internal/gui/coverpanel.go | 343 +++++++++++ internal/gui/librarypanel.go | 563 ++++++++++++++++++ internal/gui/pictureitemfactory.go | 78 +++ internal/gui/playlistpanel.go | 358 +++++++++++ internal/gui/serverpanel.go | 115 ++++ internal/gui/shortcutsdialog.go | 23 + internal/gui/window.go | 454 ++++++++++++++ main.go | 9 + 29 files changed, 2571 insertions(+), 273 deletions(-) create mode 100644 data/data.go delete mode 100644 data/icons/meson.build delete mode 100644 data/xyz.suruatoel.mcg.gresource.xml delete mode 100644 data/xyz.suruatoel.mcg.gschema.xml rename data/{icons/hicolor/scalable/apps => }/xyz.suruatoel.mcg.svg (100%) create mode 100644 internal/gui/albumheaderbar.go create mode 100644 internal/gui/application.go create mode 100644 internal/gui/config.go create mode 100644 internal/gui/connectionpanel.go create mode 100644 internal/gui/coverloader.go create mode 100644 internal/gui/coverpanel.go create mode 100644 internal/gui/librarypanel.go create mode 100644 internal/gui/pictureitemfactory.go create mode 100644 internal/gui/playlistpanel.go create mode 100644 internal/gui/serverpanel.go create mode 100644 internal/gui/shortcutsdialog.go create mode 100644 internal/gui/window.go diff --git a/data/data.go b/data/data.go new file mode 100644 index 0000000..5076620 --- /dev/null +++ b/data/data.go @@ -0,0 +1,32 @@ +package data + +import ( + _ "embed" +) + +//go:embed ui/window.ui +var WindowXML string + +//go:embed ui/shortcuts-dialog.ui +var ShortcutsDialogXML string + +//go:embed ui/connection-panel.ui +var ConnectionPanelXML string + +//go:embed ui/server-panel.ui +var ServerPanelXML string + +//go:embed ui/cover-panel.ui +var CoverPanelXML string + +//go:embed ui/playlist-panel.ui +var PlaylistPanelXML string + +//go:embed ui/album-headerbar.ui +var AlbumHeaderbarXML string + +//go:embed ui/library-panel.ui +var LibraryPanelXML string + +//go:embed gtk.css +var MainCSS string diff --git a/data/gtk.css b/data/gtk.css index 1b361de..aa3357b 100644 --- a/data/gtk.css +++ b/data/gtk.css @@ -1,6 +1,5 @@ #content_stack { box-shadow:inset 4px 4px 10px rgba(0,0,0,0.3); - background-image:url('noise-texture.png'); } #port_spinner { @@ -30,10 +29,6 @@ font-weight:bold; } -window.fullscreen #cover_box { - background: black; -} - #cover_info_revealer { background-color:alpha(@theme_bg_color, 0.8); box-shadow:0 0 10px @theme_bg_color; diff --git a/data/icons/meson.build b/data/icons/meson.build deleted file mode 100644 index 20bdb7c..0000000 --- a/data/icons/meson.build +++ /dev/null @@ -1,7 +0,0 @@ -application_id = 'xyz.suruatoel.mcg' - -scalable_dir = join_paths('hicolor', 'scalable', 'apps') -install_data( - join_paths(scalable_dir, ('@0@.svg').format(application_id)), - install_dir: join_paths(get_option('datadir'), 'icons', scalable_dir) -) diff --git a/data/ui/album-headerbar.ui b/data/ui/album-headerbar.ui index bda26a8..8a1be95 100644 --- a/data/ui/album-headerbar.ui +++ b/data/ui/album-headerbar.ui @@ -2,7 +2,7 @@ - + diff --git a/data/ui/connection-panel.ui b/data/ui/connection-panel.ui index d9e7364..42a280c 100644 --- a/data/ui/connection-panel.ui +++ b/data/ui/connection-panel.ui @@ -9,79 +9,58 @@ 1 100 - - horizontal - 6 - - + diff --git a/data/ui/cover-panel.ui b/data/ui/cover-panel.ui index d869e76..f42cfe7 100644 --- a/data/ui/cover-panel.ui +++ b/data/ui/cover-panel.ui @@ -19,7 +19,7 @@ - + diff --git a/data/ui/library-panel.ui b/data/ui/library-panel.ui index b835e3f..2ef262d 100644 --- a/data/ui/library-panel.ui +++ b/data/ui/library-panel.ui @@ -26,13 +26,11 @@ 0 0 False - update library - @@ -53,7 +51,6 @@ sort by artist False sort_year - @@ -61,14 +58,12 @@ sort by title False sort_year - sort by year False - @@ -76,7 +71,6 @@ sort by modification False sort_year - @@ -86,7 +80,6 @@ True False True - @@ -108,9 +101,6 @@ system-search-symbolic - @@ -119,7 +109,6 @@ True True Select multiple albums - object-select-symbolic @@ -145,7 +134,7 @@ -