byte bye ui files

This commit is contained in:
me 2024-10-10 10:12:43 +00:00
parent 577b3c5c4d
commit fefe040b6c
17 changed files with 416 additions and 496 deletions

32
src/artist_list.blp Normal file
View file

@ -0,0 +1,32 @@
using Gtk 4.0;
using Adw 1;
template $WaveletArtistList: Adw.NavigationPage {
title: _("Artists");
Adw.ToolbarView {
[top]
Adw.HeaderBar {}
Stack stack {
StackPage {
name: "loading";
child: Adw.Spinner {};
}
StackPage {
name: "ready";
child: ScrolledWindow {
ListView list_view {
factory: BuilderListItemFactory {
resource: "/eu/callcc/Wavelet/artist_list_artist.ui";
};
}
};
}
}
}
}

View file

@ -1,45 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<requires lib="gtk" version="4.0"/>
<requires lib="Adw" version="1.0"/>
<template class="WaveletArtistList" parent="AdwNavigationPage">
<property name="title" translatable="true">Artists</property>
<child>
<object class="AdwToolbarView">
<child type="top">
<object class="AdwHeaderBar"></object>
</child>
<child>
<object class="GtkStack" id="stack">
<child>
<object class="GtkStackPage">
<property name="name">loading</property>
<property name="child">
<object class="AdwSpinner"/>
</property>
</object>
</child>
<child>
<object class="GtkStackPage">
<property name="name">ready</property>
<property name="child">
<object class="GtkScrolledWindow">
<child>
<object class="GtkListView" id="list_view">
<property name="factory">
<object class="GtkBuilderListItemFactory">
<property name="resource">/eu/callcc/Wavelet/artist_list_artist.ui</property>
</object>
</property>
</object>
</child>
</object>
</property>
</object>
</child>
</object>
</child>
</object>
</child>
</template>
</interface>

View file

@ -0,0 +1,9 @@
using Gtk 4.0;
template ListItem {
child: Label {
halign: start;
label: bind template.item as <$WaveletArtist>.name;
};
}

View file

@ -1,17 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<requires lib="gtk" version="4.0"/>
<requires lib="Adw" version="1.0"/>
<template class="GtkListItem">
<property name="child">
<object class="GtkLabel">
<property name="halign">start</property>
<binding name="label">
<lookup type="WaveletArtist" name="name">
<lookup name="item">GtkListItem</lookup>
</lookup>
</binding>
</object>
</property>
</template>
</interface>

View file

@ -18,9 +18,40 @@ wavelet_deps = [
dependency('sqlite3'),
]
blueprints = custom_target('blueprints',
input: files(
'artist_list.blp',
'artist_list_artist.blp',
'play_queue.blp',
'play_queue_song.blp',
'setup.blp',
'song_list.blp',
'song_list_song.blp',
'window.blp',
),
output: [
'artist_list.ui',
'artist_list_artist.ui',
'play_queue.ui',
'play_queue_song.ui',
'setup.ui',
'song_list.ui',
'song_list_song.ui',
'window.ui',
],
command: [
find_program('blueprint-compiler'),
'batch-compile',
'@OUTDIR@',
'@CURRENT_SOURCE_DIR@',
'@INPUT@',
],
)
wavelet_sources += gnome.compile_resources('wavelet-resources',
'wavelet.gresource.xml',
c_name: 'wavelet'
c_name: 'wavelet',
dependencies: blueprints,
)
executable('wavelet', wavelet_sources,

24
src/play_queue.blp Normal file
View file

@ -0,0 +1,24 @@
using Gtk 4.0;
using Adw 1;
template $WaveletPlayQueue: Adw.NavigationPage {
title: _("Play queue");
Adw.ToolbarView {
[top]
Adw.HeaderBar {}
ScrolledWindow {
ListView list_view {
styles [
"view",
]
factory: BuilderListItemFactory {
resource: "/eu/callcc/Wavelet/play_queue_song.ui";
};
}
}
}
}

View file

@ -1,29 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<requires lib="gtk" version="4.0"/>
<requires lib="Adw" version="1.0"/>
<template class="WaveletPlayQueue" parent="AdwNavigationPage">
<property name="title" translatable="true">Play queue</property>
<child>
<object class="AdwToolbarView">
<child type="top">
<object class="AdwHeaderBar"></object>
</child>
<child>
<object class="GtkScrolledWindow">
<child>
<object class="GtkListView" id="list_view">
<style><class name="view"/></style>
<property name="factory">
<object class="GtkBuilderListItemFactory">
<property name="resource">/eu/callcc/Wavelet/play_queue_song.ui</property>
</object>
</property>
</object>
</child>
</object>
</child>
</object>
</child>
</template>
</interface>

9
src/play_queue_song.blp Normal file
View file

@ -0,0 +1,9 @@
using Gtk 4.0;
template ListItem {
child: Label {
halign: start;
label: bind template.item as <$WaveletSong>.name;
};
}

View file

@ -1,17 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<requires lib="gtk" version="4.0"/>
<requires lib="Adw" version="1.0"/>
<template class="GtkListItem">
<property name="child">
<object class="GtkLabel">
<property name="halign">start</property>
<binding name="label">
<lookup type="WaveletSong" name="name">
<lookup name="item">GtkListItem</lookup>
</lookup>
</binding>
</object>
</property>
</template>
</interface>

45
src/setup.blp Normal file
View file

@ -0,0 +1,45 @@
using Gtk 4.0;
using Adw 1;
template $WaveletSetup: Adw.NavigationPage {
title: _("Setup");
Adw.ToolbarView {
[top]
Adw.HeaderBar {}
Adw.Clamp {
child: Adw.PreferencesGroup {
title: "Authentication";
Adw.EntryRow server_url {
title: "Server URL";
input-purpose: url;
}
Adw.EntryRow username {
title: "Username";
}
Adw.PasswordEntryRow password {
title: "Password";
}
Adw.ActionRow status {
title: "Status";
subtitle: "Not connected";
styles [
"property",
]
}
Adw.ButtonRow validate {
title: "Connect and save";
sensitive: false;
}
};
}
}
}

View file

@ -1,53 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<requires lib="gtk" version="4.0"/>
<requires lib="Adw" version="1.0"/>
<template class="WaveletSetup" parent="AdwNavigationPage">
<property name="title" translatable="true">Setup</property>
<child>
<object class="AdwToolbarView">
<child type="top">
<object class="AdwHeaderBar"></object>
</child>
<child>
<object class="AdwClamp">
<property name="child">
<object class="AdwPreferencesGroup">
<property name="title">Authentication</property>
<child>
<object class="AdwEntryRow" id="server_url">
<property name="title">Server URL</property>
<property name="input-purpose">url</property>
</object>
</child>
<child>
<object class="AdwEntryRow" id="username">
<property name="title">Username</property>
</object>
</child>
<child>
<object class="AdwPasswordEntryRow" id="password">
<property name="title">Password</property>
</object>
</child>
<child>
<object class="AdwActionRow" id="status">
<property name="title">Status</property>
<property name="subtitle">Not connected</property>
<style><class name="property"/></style>
</object>
</child>
<child>
<object class="AdwButtonRow" id="validate">
<property name="title">Connect and save</property>
<property name="sensitive">False</property>
</object>
</child>
</object>
</property>
</object>
</child>
</object>
</child>
</template>
</interface>

56
src/song_list.blp Normal file
View file

@ -0,0 +1,56 @@
using Gtk 4.0;
using Adw 1;
template $WaveletSongList: Adw.NavigationPage {
title: _("Songs");
Adw.ToolbarView {
[top]
Adw.HeaderBar {}
Stack stack {
StackPage {
name: "loading";
child: Adw.Spinner {};
}
StackPage {
name: "ready";
child: ScrolledWindow {
ColumnView column_view {
ColumnViewColumn title_column {
title: "Title";
resizable: true;
factory: SignalListItemFactory {};
}
ColumnViewColumn album_column {
title: "Album";
resizable: true;
factory: SignalListItemFactory {};
}
ColumnViewColumn artist_column {
title: "Artist";
resizable: true;
factory: SignalListItemFactory {};
}
ColumnViewColumn track_column {
title: "#";
resizable: true;
factory: SignalListItemFactory {};
}
}
};
}
}
}
}

View file

@ -1,76 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<requires lib="gtk" version="4.0"/>
<requires lib="Adw" version="1.0"/>
<template class="WaveletSongList" parent="AdwNavigationPage">
<property name="title" translatable="true">Songs</property>
<child>
<object class="AdwToolbarView">
<child type="top">
<object class="AdwHeaderBar"></object>
</child>
<child>
<object class="GtkStack" id="stack">
<child>
<object class="GtkStackPage">
<property name="name">loading</property>
<property name="child">
<object class="AdwSpinner"/>
</property>
</object>
</child>
<child>
<object class="GtkStackPage">
<property name="name">ready</property>
<property name="child">
<object class="GtkScrolledWindow">
<child>
<object class="GtkColumnView" id="column_view">
<child>
<object class="GtkColumnViewColumn" id="title_column">
<property name="title">Title</property>
<property name="resizable">True</property>
<property name="factory">
<object class="GtkSignalListItemFactory"/>
</property>
</object>
</child>
<child>
<object class="GtkColumnViewColumn" id="album_column">
<property name="title">Album</property>
<property name="resizable">True</property>
<property name="factory">
<object class="GtkSignalListItemFactory"/>
</property>
</object>
</child>
<child>
<object class="GtkColumnViewColumn" id="artist_column">
<property name="title">Artist</property>
<property name="resizable">True</property>
<property name="factory">
<object class="GtkSignalListItemFactory"/>
</property>
</object>
</child>
<child>
<object class="GtkColumnViewColumn" id="track_column">
<property name="title">#</property>
<property name="resizable">True</property>
<property name="factory">
<object class="GtkSignalListItemFactory"/>
</property>
</object>
</child>
</object>
</child>
</object>
</property>
</object>
</child>
</object>
</child>
</object>
</child>
</template>
</interface>

9
src/song_list_song.blp Normal file
View file

@ -0,0 +1,9 @@
using Gtk 4.0;
template ListItem {
child: Label {
halign: start;
label: bind template.item as <$WaveletSong>.title;
};
}

View file

@ -1,17 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<requires lib="gtk" version="4.0"/>
<requires lib="Adw" version="1.0"/>
<template class="GtkListItem">
<property name="child">
<object class="GtkLabel">
<property name="halign">start</property>
<binding name="label">
<lookup type="WaveletSong" name="title">
<lookup name="item">GtkListItem</lookup>
</lookup>
</binding>
</object>
</property>
</template>
</interface>

200
src/window.blp Normal file
View file

@ -0,0 +1,200 @@
using Gtk 4.0;
using Adw 1;
template $WaveletWindow: Adw.ApplicationWindow {
title: _("Wavelet");
default-width: 800;
default-height: 600;
content: Box {
orientation: vertical;
Adw.OverlaySplitView {
vexpand: true;
[sidebar]
Adw.NavigationPage {
width-request: 100;
title: _("Wavelet");
Adw.ToolbarView {
[top]
Adw.HeaderBar {}
content: Box {
orientation: vertical;
ListBox sidebar {
styles [
"navigation-sidebar",
]
ListBoxRow sidebar_setup {
Label {
xalign: 0;
label: "Setup";
}
}
ListBoxRow sidebar_play_queue {
Label {
xalign: 0;
label: "Play queue";
}
}
}
Separator {}
ListBox {
selection-mode: none;
styles [
"navigation-sidebar",
]
Adw.ButtonRow {
title: "Shuffle all tracks";
start-icon-name: "media-playlist-shuffle";
}
}
};
}
}
[content]
Stack stack {
StackPage {
name: "setup";
title: "Setup";
child: $WaveletSetup setup {};
}
StackPage {
name: "artist_list";
title: "Artists";
child: $WaveletArtistList artist_list {};
}
StackPage {
name: "song_list";
title: "Songs";
child: $WaveletSongList song_list {};
}
StackPage {
name: "play_queue";
title: "Play queue";
child: $WaveletPlayQueue play_queue {};
}
}
}
[bottom]
Box {
orientation: horizontal;
styles [
"toolbar",
]
Image {
height-request: 100;
width-request: 100;
}
Box {
orientation: vertical;
valign: center;
Label {
halign: start;
label: "Title";
}
Label {
halign: start;
label: "Artist - Album - Year";
}
Box {
halign: start;
orientation: horizontal;
Label {
label: "00:00";
}
Scale {
orientation: horizontal;
width-request: 200;
adjustment: Adjustment {
lower: 0;
upper: 100;
value: 0;
};
}
Label {
label: "99:99";
}
}
}
Separator {
styles [
"spacer",
]
hexpand: true;
}
Button {
icon-name: "media-skip-backward";
valign: center;
}
Button {
icon-name: "media-playback-start";
valign: center;
}
Button {
icon-name: "media-skip-forward";
valign: center;
}
Button {
icon-name: "non-starred";
valign: center;
}
Button {
icon-name: "audio-volume-high";
valign: center;
}
Scale {
orientation: horizontal;
width-request: 130;
adjustment: Adjustment {
lower: 0;
upper: 100;
value: 100;
};
}
Button {
icon-name: "media-playlist-consecutive";
valign: center;
}
}
};
}

View file

@ -1,241 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<requires lib="gtk" version="4.0"/>
<requires lib="Adw" version="1.0"/>
<template class="WaveletWindow" parent="AdwApplicationWindow">
<property name="title" translatable="yes">Wavelet</property>
<property name="default-width">800</property>
<property name="default-height">600</property>
<property name="content">
<object class="GtkBox">
<property name="orientation">vertical</property>
<child>
<object class="AdwOverlaySplitView">
<property name="vexpand">true</property>
<child type="sidebar">
<object class="AdwNavigationPage">
<property name="width-request">100</property>
<property name="title" translatable="true">Wavelet</property>
<child>
<object class="AdwToolbarView">
<child type="top">
<object class="AdwHeaderBar">
</object>
</child>
<property name="content">
<object class="GtkBox">
<property name="orientation">vertical</property>
<child>
<object class="GtkListBox" id="sidebar">
<style><class name="navigation-sidebar"/></style>
<child>
<object class="GtkListBoxRow" id="sidebar_setup">
<child>
<object class="GtkLabel">
<property name="xalign">0</property>
<property name="label">Setup</property>
</object>
</child>
</object>
</child>
<child>
<object class="GtkListBoxRow" id="sidebar_play_queue">
<child>
<object class="GtkLabel">
<property name="xalign">0</property>
<property name="label">Play queue</property>
</object>
</child>
</object>
</child>
</object>
</child>
<child>
<object class="GtkSeparator">
</object>
</child>
<child>
<object class="GtkListBox">
<property name="selection-mode">none</property>
<style><class name="navigation-sidebar"/></style>
<child>
<object class="AdwButtonRow">
<property name="title">Shuffle all tracks</property>
<property name="start-icon-name">media-playlist-shuffle</property>
</object>
</child>
</object>
</child>
<child>
</child>
</object>
</property>
</object>
</child>
</object>
</child>
<child type="content">
<object class="GtkStack" id="stack">
<child>
<object class="GtkStackPage">
<property name="name">setup</property>
<property name="title">Setup</property>
<property name="child">
<object class="WaveletSetup" id="setup"/>
</property>
</object>
</child>
<child>
<object class="GtkStackPage">
<property name="name">artist_list</property>
<property name="title">Artists</property>
<property name="child">
<object class="WaveletArtistList" id="artist_list"/>
</property>
</object>
</child>
<child>
<object class="GtkStackPage">
<property name="name">song_list</property>
<property name="title">Songs</property>
<property name="child">
<object class="WaveletSongList" id="song_list"/>
</property>
</object>
</child>
<child>
<object class="GtkStackPage">
<property name="name">play_queue</property>
<property name="title">Play queue</property>
<property name="child">
<object class="WaveletPlayQueue" id="play_queue"/>
</property>
</object>
</child>
</object>
</child>
</object>
</child>
<child type="bottom">
<object class="GtkBox">
<property name="orientation">0</property>
<style>
<class name="toolbar"/>
</style>
<child>
<object class="GtkImage">
<property name="height-request">100</property>
<property name="width-request">100</property>
</object>
</child>
<child>
<object class="GtkBox">
<property name="orientation">1</property>
<property name="valign">3</property>
<child>
<object class="GtkLabel">
<property name="halign">1</property>
<property name="label">Title</property>
</object>
</child>
<child>
<object class="GtkLabel">
<property name="halign">1</property>
<property name="label">Artist - Album - Year</property>
</object>
</child>
<child>
<object class="GtkBox">
<property name="halign">1</property>
<property name="orientation">0</property>
<child>
<object class="GtkLabel">
<property name="label">00:00</property>
</object>
</child>
<child>
<object class="GtkScale">
<property name="orientation">0</property>
<property name="width-request">200</property>
<property name="adjustment">
<object class="GtkAdjustment">
<property name="lower">0</property>
<property name="upper">100</property>
<property name="value">0</property>
</object>
</property>
</object>
</child>
<child>
<object class="GtkLabel">
<property name="label">99:99</property>
</object>
</child>
</object>
</child>
</object>
</child>
<child>
<object class="GtkSeparator">
<style>
<class name="spacer"/>
</style>
<property name="hexpand">true</property>
</object>
</child>
<child>
<object class="GtkButton">
<property name="icon-name">media-skip-backward</property>
<property name="valign">3</property>
</object>
</child>
<child>
<object class="GtkButton">
<property name="icon-name">media-playback-start</property>
<property name="valign">3</property>
</object>
</child>
<child>
<object class="GtkButton">
<property name="icon-name">media-skip-forward</property>
<property name="valign">3</property>
</object>
</child>
<child>
<object class="GtkButton">
<property name="icon-name">non-starred</property>
<property name="valign">3</property>
</object>
</child>
<child>
<object class="GtkButton">
<property name="icon-name">audio-volume-high</property>
<property name="valign">3</property>
</object>
</child>
<child>
<object class="GtkScale">
<property name="orientation">0</property>
<property name="width-request">130</property>
<property name="adjustment">
<object class="GtkAdjustment">
<property name="lower">0</property>
<property name="upper">100</property>
<property name="value">100</property>
</object>
</property>
</object>
</child>
<child>
<object class="GtkButton">
<property name="icon-name">media-playlist-consecutive</property>
<property name="valign">3</property>
</object>
</child>
</object>
</child>
</object>
</property>
</template>
</interface>