Move resources and data to UI crate

This commit is contained in:
Elias Projahn 2021-02-07 10:05:47 +01:00
parent fdc5bc72a8
commit 3e130985c4
35 changed files with 5 additions and 5 deletions

View file

@ -0,0 +1,8 @@
[Desktop Entry]
Name=Musicus
Icon=de.johrpan.musicus
Exec=musicus
Terminal=false
Type=Application
Categories=GTK;
StartupNotify=true

View file

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<schemalist gettext-domain="musicus">
<schema id="de.johrpan.musicus" path="/de/johrpan/musicus/">
<key name="music-library-path" type="s">
<default>""</default>
<summary>Path to the music library folder</summary>
</key>
<key name="server-url" type="s">
<default>"https://musicus.johrpan.de"</default>
<summary>URL of the Musicus server to use</summary>
</key>
</schema>
</schemalist>

View file

@ -0,0 +1,74 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="128"
height="128"
viewBox="0 0 33.866666 33.866668"
version="1.1"
id="svg8"
inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)"
sodipodi:docname="musicus.svg">
<defs
id="defs2" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="3.6046466"
inkscape:cx="31.109369"
inkscape:cy="42.493912"
inkscape:document-units="px"
inkscape:current-layer="layer1"
inkscape:document-rotation="0"
showgrid="true"
inkscape:window-width="1396"
inkscape:window-height="1016"
inkscape:window-x="50"
inkscape:window-y="27"
inkscape:window-maximized="0"
units="px">
<inkscape:grid
type="xygrid"
id="grid851"
spacingx="1.0583333"
spacingy="1.0583333"
empspacing="4" />
</sodipodi:namedview>
<metadata
id="metadata5">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Ebene 1"
inkscape:groupmode="layer"
id="layer1">
<circle
style="fill:#303030;fill-opacity:1;stroke:none;stroke-width:0.2;stroke-opacity:0.5;opacity:1"
id="path853"
cx="16.933332"
cy="16.933332"
r="15.874999" />
<path
d="M 13.553183,9.5568091 C 13.056762,12.40878 12.41526,15.765311 11.641666,19.579166 11.112514,19.117684 10.363554,18.82791 9.5303854,18.82791 c -1.6023905,0 -2.9013699,1.06575 -2.9013699,2.380533 0,1.314781 1.2989794,2.380531 2.9013699,2.380531 1.6023916,0 2.6414696,-0.72268 2.9013706,-2.380531 0.371458,-2.606532 0.693542,-4.484063 1.272743,-8.053734 h 0.08454 c 0.97349,2.045774 1.97525,4.277025 3.004977,6.691673 l 1.051893,-2.149423 c -1.146154,-2.433005 -2.36032,-5.134786 -3.650597,-8.1403239 z m 9.830992,0 c -1.922644,3.9360329 -4.028599,8.2312419 -5.872099,11.9996389 0.214174,0.478841 0.213832,0.473733 0.706271,0.806455 1.391414,-3.185731 2.821015,-6.23621 4.287978,-9.15126 l 0.07567,0.0096 c 0.497372,3.746054 0.852824,6.812033 1.066876,9.198452 0.195174,-0.03778 0.513002,-0.05658 0.953701,-0.05658 0.52257,0 0.881268,0.01883 1.076442,0.05658 -0.705145,-4.230869 -1.308981,-8.518284 -1.812675,-12.8625029 z"
id="path4"
inkscape:connector-curvature="0"
style="fill:#ffc107;fill-opacity:1;stroke-width:0.349035" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 3 KiB

View file

@ -0,0 +1,68 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="16"
height="16"
viewBox="0 0 4.2333332 4.2333332"
version="1.1"
id="svg2197"
inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)"
sodipodi:docname="musicus_symbolic.svg">
<defs
id="defs2191" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="31.083523"
inkscape:cx="9.8959183"
inkscape:cy="9.0432761"
inkscape:document-units="px"
inkscape:current-layer="layer1"
inkscape:document-rotation="0"
showgrid="true"
inkscape:window-width="1396"
inkscape:window-height="1016"
inkscape:window-x="236"
inkscape:window-y="185"
inkscape:window-maximized="0"
units="px">
<inkscape:grid
type="xygrid"
id="grid2786"
spacingx="0.52916665"
spacingy="0.52916665"
empspacing="2" />
</sodipodi:namedview>
<metadata
id="metadata2194">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Ebene 1"
inkscape:groupmode="layer"
id="layer1">
<path
d="M 1.6109484,0.75244585 C 1.5144212,1.3069954 1.3896858,1.9596541 1.2392649,2.7012366 1.1363746,2.6115036 0.99074332,2.5551592 0.82873813,2.5551592 c -0.31157571,0 -0.56415494,0.207229 -0.56415494,0.4628812 0,0.2556517 0.25257923,0.4628809 0.56415494,0.4628809 0.31157607,0 0.51361887,-0.1405212 0.56415527,-0.4628809 C 1.4651224,2.511215 1.5277477,2.1461397 1.6403711,1.4520373 h 0.016433 c 0.1892954,0.397789 0.3840822,0.8316432 0.5843067,1.3011582 L 2.4456455,2.3352522 C 2.2227823,1.8621681 1.9866947,1.3368218 1.7358073,0.7524119 Z m 1.9115815,0 C 3.1486824,1.5177853 2.7391913,2.3529645 2.380733,3.0857081 2.42238,3.1788171 2.422311,3.1778251 2.5180621,3.2425184 2.7886154,2.6230712 3.0665935,2.0299227 3.3518361,1.4631079 l 0.014716,0.00186 c 0.09671,0.7283991 0.1658266,1.3245612 0.2074481,1.7885873 0.037951,-0.00736 0.09975,-0.011014 0.1854421,-0.011014 0.1016105,0 0.1713582,0.00368 0.2093077,0.011014 C 3.8316365,2.4308883 3.7142245,1.5972244 3.6162839,0.7525155 Z"
id="path4"
inkscape:connector-curvature="0"
style="fill:#000000;fill-opacity:1;stroke-width:0.0678681" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.8 KiB

View file

@ -0,0 +1,41 @@
datadir = get_option('datadir')
scalable_dir = join_paths('icons', 'hicolor', 'scalable', 'apps')
install_data(
join_paths(scalable_dir, 'de.johrpan.musicus.svg'),
install_dir: join_paths(datadir, scalable_dir),
)
symbolic_dir = join_paths('icons', 'hicolor', 'symbolic', 'apps')
install_data(
join_paths(symbolic_dir, 'de.johrpan.musicus-symbolic.svg'),
install_dir: join_paths(datadir, symbolic_dir),
)
desktop_file = i18n.merge_file(
input: 'de.johrpan.musicus.desktop.in',
output: 'de.johrpan.musicus.desktop',
type: 'desktop',
po_dir: '../po',
install: true,
install_dir: join_paths(datadir, 'applications')
)
desktop_utils = find_program('desktop-file-validate', required: false)
if desktop_utils.found()
test('Validate desktop file', desktop_utils,
args: [desktop_file]
)
endif
install_data('de.johrpan.musicus.gschema.xml',
install_dir: join_paths(get_option('datadir'), 'glib-2.0/schemas')
)
compile_schemas = find_program('glib-compile-schemas', required: false)
if compile_schemas.found()
test('Validate schema file', compile_schemas,
args: ['--strict', '--dry-run', meson.current_source_dir()]
)
endif

View file

@ -0,0 +1 @@
de

View file

@ -0,0 +1,77 @@
res/ui/ensemble_editor.ui
res/ui/ensemble_screen.ui
res/ui/ensemble_selector.ui
res/ui/instrument_editor.ui
res/ui/instrument_selector.ui
res/ui/part_editor.ui
res/ui/performance_editor.ui
res/ui/person_editor.ui
res/ui/person_list.ui
res/ui/person_screen.ui
res/ui/person_selector.ui
res/ui/player_bar.ui
res/ui/player_screen.ui
res/ui/poe_list.ui
res/ui/preferences.ui
res/ui/recording_editor.ui
res/ui/recording_screen.ui
res/ui/recording_selector_screen.ui
res/ui/recording_selector.ui
res/ui/section_editor.ui
res/ui/track_editor.ui
res/ui/tracks_editor.ui
res/ui/window.ui
res/ui/work_editor.ui
res/ui/work_screen.ui
res/ui/work_selector.ui
res/ui/work_selector_screen.ui
src/database/database.rs
src/database/models.rs
src/database/mod.rs
src/database/schema.rs
src/database/tables.rs
src/dialogs/about.rs
src/dialogs/ensemble_editor.rs
src/dialogs/ensemble_selector.rs
src/dialogs/instrument_editor.rs
src/dialogs/instrument_selector.rs
src/dialogs/mod.rs
src/dialogs/person_editor.rs
src/dialogs/person_selector.rs
src/dialogs/preferences.rs
src/dialogs/recording/mod.rs
src/dialogs/recording/performance_editor.rs
src/dialogs/recording/recording_dialog.rs
src/dialogs/recording/recording_editor_dialog.rs
src/dialogs/recording/recording_editor.rs
src/dialogs/recording/recording_selector_person_screen.rs
src/dialogs/recording/recording_selector.rs
src/dialogs/recording/recording_selector_work_screen.rs
src/dialogs/track_editor.rs
src/dialogs/tracks_editor.rs
src/dialogs/work/mod.rs
src/dialogs/work/part_editor.rs
src/dialogs/work/section_editor.rs
src/dialogs/work/work_dialog.rs
src/dialogs/work/work_editor_dialog.rs
src/dialogs/work/work_editor.rs
src/dialogs/work/work_selector_person_screen.rs
src/dialogs/work/work_selector.rs
src/screens/ensemble_screen.rs
src/screens/mod.rs
src/screens/person_screen.rs
src/screens/player_screen.rs
src/screens/recording_screen.rs
src/screens/work_screen.rs
src/widgets/list.rs
src/widgets/mod.rs
src/widgets/navigator.rs
src/widgets/person_list.rs
src/widgets/player_bar.rs
src/widgets/poe_list.rs
src/widgets/selector_row.rs
src/backend.rs
src/main.rs
src/player.rs
src/window.rs

387
crates/musicus/po/de.po Normal file
View file

@ -0,0 +1,387 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-11-08 20:12+0100\n"
"PO-Revision-Date: 2020-11-08 20:13+0100\n"
"Last-Translator: \n"
"Language-Team: \n"
"Language: de\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 2.4.1\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: res/ui/ensemble_editor.ui:20 res/ui/performance_editor.ui:196
#: res/ui/performance_editor.ui:227
msgid "Ensemble"
msgstr "Ensemble"
#: res/ui/ensemble_editor.ui:23 res/ui/instrument_editor.ui:23
#: res/ui/part_editor.ui:25 res/ui/performance_editor.ui:23
#: res/ui/person_editor.ui:23 res/ui/recording_editor.ui:17
#: res/ui/section_editor.ui:23 res/ui/track_editor.ui:24
#: res/ui/tracks_editor.ui:39 res/ui/work_editor.ui:17
msgid "Cancel"
msgstr "Abbrechen"
#: res/ui/ensemble_editor.ui:31 res/ui/instrument_editor.ui:31
#: res/ui/part_editor.ui:33 res/ui/performance_editor.ui:31
#: res/ui/person_editor.ui:31 res/ui/recording_editor.ui:25
#: res/ui/section_editor.ui:31 res/ui/track_editor.ui:32
#: res/ui/tracks_editor.ui:24 res/ui/work_editor.ui:25
msgid "Save"
msgstr "Speichern"
#: res/ui/ensemble_editor.ui:64 res/ui/instrument_editor.ui:64
msgid "Name"
msgstr "Name"
#: res/ui/ensemble_screen.ui:90 res/ui/work_screen.ui:90
msgid "Search recordings …"
msgstr "Aufnahmen durchsuchen …"
#: res/ui/ensemble_screen.ui:145 res/ui/person_screen.ui:196
#: res/ui/work_screen.ui:145
msgid "Recordings"
msgstr "Aufnahmen"
#: res/ui/ensemble_screen.ui:188 res/ui/work_screen.ui:188
#: src/dialogs/recording/recording_selector_work_screen.rs:38
#: src/screens/ensemble_screen.rs:53 src/screens/person_screen.rs:77
#: src/screens/work_screen.rs:54
msgid "No recordings found."
msgstr "Keine Aufnahmen gefunden."
#: res/ui/ensemble_selector.ui:22
msgid "Select ensemble"
msgstr "Ensemble auswählen"
#: res/ui/ensemble_selector.ui:84
msgid "No ensembles found."
msgstr "Keine Ensembles gefunden."
#: res/ui/instrument_editor.ui:20
msgid "Instrument"
msgstr "Instrument"
#: res/ui/instrument_selector.ui:22
msgid "Select instrument"
msgstr "Instrument auswählen"
#: res/ui/instrument_selector.ui:84
msgid "No instruments found."
msgstr "Keine Instrumente gefunden."
#: res/ui/part_editor.ui:22
msgid "Work part"
msgstr "Werkabschnitt"
#: res/ui/part_editor.ui:70 res/ui/work_editor.ui:84
msgid "Composer"
msgstr "Komponist"
#: res/ui/part_editor.ui:93 res/ui/player_bar.ui:118
#: res/ui/player_screen.ui:160 res/ui/section_editor.ui:64
#: res/ui/work_editor.ui:106
msgid "Title"
msgstr "Titel"
#: res/ui/part_editor.ui:116 res/ui/performance_editor.ui:87
#: res/ui/performance_editor.ui:170 res/ui/performance_editor.ui:214
#: res/ui/recording_editor.ui:81 res/ui/tracks_editor.ui:93
#: res/ui/work_editor.ui:69 src/dialogs/recording/performance_editor.rs:150
#: src/dialogs/recording/performance_editor.rs:160
#: src/dialogs/recording/performance_editor.rs:170
#: src/dialogs/work/part_editor.rs:166
msgid "Select …"
msgstr "Auswählen …"
#: res/ui/part_editor.ui:159 res/ui/recording_editor.ui:119
#: res/ui/work_editor.ui:119
msgid "Overview"
msgstr "Überblick"
#: res/ui/part_editor.ui:247 res/ui/work_editor.ui:207
msgid "Instruments"
msgstr "Instrumente"
#: res/ui/performance_editor.ui:20
msgid "Performance"
msgstr "Auftritt"
#: res/ui/performance_editor.ui:64
msgid "Role"
msgstr "Rolle"
#: res/ui/performance_editor.ui:128
msgid "Type"
msgstr "Typ"
#: res/ui/performance_editor.ui:151 res/ui/performance_editor.ui:183
#: res/ui/person_editor.ui:20
msgid "Person"
msgstr "Person"
#: res/ui/person_editor.ui:64
msgid "First name"
msgstr "Vorname"
#: res/ui/person_editor.ui:87
msgid "Last name"
msgstr "Nachname"
#: res/ui/person_list.ui:28
msgid "Search persons …"
msgstr "Personen durchsuchen …"
#: res/ui/person_screen.ui:90
msgid "Search works and recordings …"
msgstr "Werke und Aufnahmen durchsuchen …"
#: res/ui/person_screen.ui:151
msgid "Works"
msgstr "Werke"
#: res/ui/person_screen.ui:246
msgid "No works or recordings found."
msgstr "Keine Werke oder Aufnahmen gefunden."
#: res/ui/person_selector.ui:22
msgid "Select person"
msgstr "Person auswählen"
#: res/ui/player_bar.ui:135 res/ui/player_screen.ui:177
msgid "Subtitle"
msgstr "Untertitel"
#: res/ui/player_bar.ui:181 res/ui/player_bar.ui:205
#: res/ui/player_screen.ui:229 res/ui/player_screen.ui:257
msgid "0:00"
msgstr "0:00"
#: res/ui/player_bar.ui:193
msgid "/"
msgstr "/"
#: res/ui/player_screen.ui:24
msgid "Player"
msgstr "Wiedergabe"
#: res/ui/poe_list.ui:28
msgid "Search persons and ensembles …"
msgstr "Personen und Ensembles durchsuchen …"
#: res/ui/preferences.ui:16
msgid "General"
msgstr "Allgemein"
#: res/ui/preferences.ui:21
msgid "Music library"
msgstr "Musikbibliothek"
#: res/ui/preferences.ui:27
msgid "Music library folder"
msgstr "Ordner der Musikbibliothek"
#: res/ui/preferences.ui:29
msgid "None selected"
msgstr "Keiner ausgewählt"
#: res/ui/preferences.ui:32
msgid "Select"
msgstr "Auswählen"
#: res/ui/recording_editor.ui:14 res/ui/tracks_editor.ui:68
msgid "Recording"
msgstr "Aufnahme"
#: res/ui/recording_editor.ui:63
msgid "Comment"
msgstr "Kommentar"
#: res/ui/recording_editor.ui:106 res/ui/tracks_editor.ui:109
#: res/ui/work_editor.ui:14
msgid "Work"
msgstr "Werk"
#: res/ui/recording_editor.ui:226 res/ui/tracks_editor.ui:127
msgid "Performers"
msgstr "Interpreten"
#: res/ui/recording_screen.ui:98 res/ui/tracks_editor.ui:21
msgid "Tracks"
msgstr "Tracks"
#: res/ui/recording_screen.ui:127
msgid "Add to playlist"
msgstr "Zur Wiedergabeliste hinzufügen"
#: res/ui/recording_selector.ui:27 res/ui/work_selector.ui:26
msgid "Select a composer on the left."
msgstr "Wählen Sie einen Komponisten aus."
#: res/ui/recording_selector.ui:51
msgid "Select a recording"
msgstr "Aufnahme auswählen"
#: res/ui/section_editor.ui:20
msgid "Work section"
msgstr "Werkteil"
#: res/ui/track_editor.ui:21
msgid "Track"
msgstr "Track"
#: res/ui/track_editor.ui:70
msgid "Select a recording of a work with multiple parts."
msgstr "Wählen Sie eine Aufnahme eines mehrteiligen Werks aus."
#: res/ui/window.ui:51 res/ui/window.ui:141
msgid "Welcome to Musicus!"
msgstr "Willkommen bei Musicus!"
#: res/ui/window.ui:67
msgid ""
"Get startet by selecting something from the sidebar or adding new things to "
"your library using the button in the top left corner."
msgstr ""
"Legen Sie los, indem Sie etwas in der Seitenleiste auswählen oder fügen Sie "
"mit dem Knopf oben links neue Aufnahmen zu Ihrer Musikbibliothek hinzu."
#: res/ui/window.ui:104 res/ui/window.ui:252 src/dialogs/about.rs:10
msgid "Musicus"
msgstr "Musicus"
#: res/ui/window.ui:157
msgid ""
"Get startet by selecting the folder containing your music files! Musicus "
"will create a new database there or open one that already exists."
msgstr ""
"Wählen Sie als Erstes den Ordner aus, worin sich Ihre Musik befindet. "
"Musicus wird dort eine neue Datenbank anlegen oder eine bereits existierende "
"öffnen."
#: res/ui/window.ui:170
msgid "Select folder"
msgstr "Ordner auswählen"
#: res/ui/window.ui:331
msgid "Preferences"
msgstr "Einstellungen"
#: res/ui/window.ui:335
msgid "About Musicus"
msgstr "Über Musicus"
#: res/ui/work_editor.ui:373
msgid "Structure"
msgstr "Struktur"
#: res/ui/work_selector.ui:51
msgid "Select a work"
msgstr "Werk auswählen"
#: src/dialogs/about.rs:12
msgid "The classical music player and organizer."
msgstr "Das Programm zum Abspielen und Organisieren von Klassik."
#: src/dialogs/about.rs:14
msgid "Further information and source code"
msgstr "Weitere Informationen und Quellcode"
#: src/dialogs/preferences.rs:30 src/window.rs:70
msgid "Select music library folder"
msgstr "Ordner der Musikbibliothek auswählen"
#: src/dialogs/recording/recording_editor.rs:54
msgid "No performers added."
msgstr "Keine Interpreten hinzugefügt."
#: src/dialogs/recording/recording_selector_person_screen.rs:39
#: src/dialogs/work/work_selector_person_screen.rs:36
#: src/screens/person_screen.rs:57
msgid "No works found."
msgstr "Keine Werke gefunden."
#: src/dialogs/tracks_editor.rs:60
msgid "Add some tracks."
msgstr "Fügen Sie Tracks hinzu."
#: src/dialogs/tracks_editor.rs:118
msgid "Select audio files"
msgstr "Audiodateien auswählen"
#: src/dialogs/tracks_editor.rs:236 src/screens/player_screen.rs:230
#: src/screens/recording_screen.rs:79
msgid "Unknown"
msgstr "Unbekannt"
#: src/dialogs/work/part_editor.rs:49 src/dialogs/work/work_editor.rs:69
msgid "No instruments added."
msgstr "Keine Instrumente hinzugefügt."
#: src/dialogs/work/work_editor.rs:72
msgid "No work parts added."
msgstr "Keine Werkabschnitte hinzugefügt."
#: src/screens/ensemble_screen.rs:35
msgid "Edit ensemble"
msgstr "Ensemble bearbeiten"
#: src/screens/ensemble_screen.rs:41
msgid "Delete ensemble"
msgstr "Ensemble löschen"
#: src/screens/person_screen.rs:39
msgid "Edit person"
msgstr "Person bearbeiten"
#: src/screens/person_screen.rs:45
msgid "Delete person"
msgstr "Person löschen"
#: src/screens/recording_screen.rs:36
msgid "Edit recording"
msgstr "Aufnahme bearbeiten"
#: src/screens/recording_screen.rs:42
msgid "Delete recording"
msgstr "Aufnahme löschen"
#: src/screens/recording_screen.rs:48
msgid "Edit tracks"
msgstr "Tracks bearbeiten"
#: src/screens/recording_screen.rs:54
msgid "Delete tracks"
msgstr "Tracks löschen"
#: src/screens/recording_screen.rs:69
msgid "No tracks found."
msgstr "Keine Tracks gefunden."
#: src/screens/work_screen.rs:36
msgid "Edit work"
msgstr "Werk bearbeiten"
#: src/screens/work_screen.rs:42
msgid "Delete work"
msgstr "Werk löschen"
#: src/widgets/person_list.rs:26
msgid "No persons found."
msgstr "Keine Personen gefunden."
#: src/widgets/poe_list.rs:41
msgid "No persons or ensembles found."
msgstr "Keine Personen oder Ensembles gefunden."
#~ msgid "Search works …"
#~ msgstr "Werke durchsuchen …"

View file

@ -0,0 +1 @@
i18n.gettext('musicus', preset: 'glib')

View file

@ -0,0 +1,378 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the musicus package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: musicus\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-11-08 20:12+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: res/ui/ensemble_editor.ui:20 res/ui/performance_editor.ui:196
#: res/ui/performance_editor.ui:227
msgid "Ensemble"
msgstr ""
#: res/ui/ensemble_editor.ui:23 res/ui/instrument_editor.ui:23
#: res/ui/part_editor.ui:25 res/ui/performance_editor.ui:23
#: res/ui/person_editor.ui:23 res/ui/recording_editor.ui:17
#: res/ui/section_editor.ui:23 res/ui/track_editor.ui:24
#: res/ui/tracks_editor.ui:39 res/ui/work_editor.ui:17
msgid "Cancel"
msgstr ""
#: res/ui/ensemble_editor.ui:31 res/ui/instrument_editor.ui:31
#: res/ui/part_editor.ui:33 res/ui/performance_editor.ui:31
#: res/ui/person_editor.ui:31 res/ui/recording_editor.ui:25
#: res/ui/section_editor.ui:31 res/ui/track_editor.ui:32
#: res/ui/tracks_editor.ui:24 res/ui/work_editor.ui:25
msgid "Save"
msgstr ""
#: res/ui/ensemble_editor.ui:64 res/ui/instrument_editor.ui:64
msgid "Name"
msgstr ""
#: res/ui/ensemble_screen.ui:90 res/ui/work_screen.ui:90
msgid "Search recordings …"
msgstr ""
#: res/ui/ensemble_screen.ui:145 res/ui/person_screen.ui:196
#: res/ui/work_screen.ui:145
msgid "Recordings"
msgstr ""
#: res/ui/ensemble_screen.ui:188 res/ui/work_screen.ui:188
#: src/dialogs/recording/recording_selector_work_screen.rs:38
#: src/screens/ensemble_screen.rs:53 src/screens/person_screen.rs:77
#: src/screens/work_screen.rs:54
msgid "No recordings found."
msgstr ""
#: res/ui/ensemble_selector.ui:22
msgid "Select ensemble"
msgstr ""
#: res/ui/ensemble_selector.ui:84
msgid "No ensembles found."
msgstr ""
#: res/ui/instrument_editor.ui:20
msgid "Instrument"
msgstr ""
#: res/ui/instrument_selector.ui:22
msgid "Select instrument"
msgstr ""
#: res/ui/instrument_selector.ui:84
msgid "No instruments found."
msgstr ""
#: res/ui/part_editor.ui:22
msgid "Work part"
msgstr ""
#: res/ui/part_editor.ui:70 res/ui/work_editor.ui:84
msgid "Composer"
msgstr ""
#: res/ui/part_editor.ui:93 res/ui/player_bar.ui:118
#: res/ui/player_screen.ui:160 res/ui/section_editor.ui:64
#: res/ui/work_editor.ui:106
msgid "Title"
msgstr ""
#: res/ui/part_editor.ui:116 res/ui/performance_editor.ui:87
#: res/ui/performance_editor.ui:170 res/ui/performance_editor.ui:214
#: res/ui/recording_editor.ui:81 res/ui/tracks_editor.ui:93
#: res/ui/work_editor.ui:69 src/dialogs/recording/performance_editor.rs:150
#: src/dialogs/recording/performance_editor.rs:160
#: src/dialogs/recording/performance_editor.rs:170
#: src/dialogs/work/part_editor.rs:166
msgid "Select …"
msgstr ""
#: res/ui/part_editor.ui:159 res/ui/recording_editor.ui:119
#: res/ui/work_editor.ui:119
msgid "Overview"
msgstr ""
#: res/ui/part_editor.ui:247 res/ui/work_editor.ui:207
msgid "Instruments"
msgstr ""
#: res/ui/performance_editor.ui:20
msgid "Performance"
msgstr ""
#: res/ui/performance_editor.ui:64
msgid "Role"
msgstr ""
#: res/ui/performance_editor.ui:128
msgid "Type"
msgstr ""
#: res/ui/performance_editor.ui:151 res/ui/performance_editor.ui:183
#: res/ui/person_editor.ui:20
msgid "Person"
msgstr ""
#: res/ui/person_editor.ui:64
msgid "First name"
msgstr ""
#: res/ui/person_editor.ui:87
msgid "Last name"
msgstr ""
#: res/ui/person_list.ui:28
msgid "Search persons …"
msgstr ""
#: res/ui/person_screen.ui:90
msgid "Search works and recordings …"
msgstr ""
#: res/ui/person_screen.ui:151
msgid "Works"
msgstr ""
#: res/ui/person_screen.ui:246
msgid "No works or recordings found."
msgstr ""
#: res/ui/person_selector.ui:22
msgid "Select person"
msgstr ""
#: res/ui/player_bar.ui:135 res/ui/player_screen.ui:177
msgid "Subtitle"
msgstr ""
#: res/ui/player_bar.ui:181 res/ui/player_bar.ui:205
#: res/ui/player_screen.ui:229 res/ui/player_screen.ui:257
msgid "0:00"
msgstr ""
#: res/ui/player_bar.ui:193
msgid "/"
msgstr ""
#: res/ui/player_screen.ui:24
msgid "Player"
msgstr ""
#: res/ui/poe_list.ui:28
msgid "Search persons and ensembles …"
msgstr ""
#: res/ui/preferences.ui:16
msgid "General"
msgstr ""
#: res/ui/preferences.ui:21
msgid "Music library"
msgstr ""
#: res/ui/preferences.ui:27
msgid "Music library folder"
msgstr ""
#: res/ui/preferences.ui:29
msgid "None selected"
msgstr ""
#: res/ui/preferences.ui:32
msgid "Select"
msgstr ""
#: res/ui/recording_editor.ui:14 res/ui/tracks_editor.ui:68
msgid "Recording"
msgstr ""
#: res/ui/recording_editor.ui:63
msgid "Comment"
msgstr ""
#: res/ui/recording_editor.ui:106 res/ui/tracks_editor.ui:109
#: res/ui/work_editor.ui:14
msgid "Work"
msgstr ""
#: res/ui/recording_editor.ui:226 res/ui/tracks_editor.ui:127
msgid "Performers"
msgstr ""
#: res/ui/recording_screen.ui:98 res/ui/tracks_editor.ui:21
msgid "Tracks"
msgstr ""
#: res/ui/recording_screen.ui:127
msgid "Add to playlist"
msgstr ""
#: res/ui/recording_selector.ui:27 res/ui/work_selector.ui:26
msgid "Select a composer on the left."
msgstr ""
#: res/ui/recording_selector.ui:51
msgid "Select a recording"
msgstr ""
#: res/ui/section_editor.ui:20
msgid "Work section"
msgstr ""
#: res/ui/track_editor.ui:21
msgid "Track"
msgstr ""
#: res/ui/track_editor.ui:70
msgid "Select a recording of a work with multiple parts."
msgstr ""
#: res/ui/window.ui:51 res/ui/window.ui:141
msgid "Welcome to Musicus!"
msgstr ""
#: res/ui/window.ui:67
msgid ""
"Get startet by selecting something from the sidebar or adding new things to "
"your library using the button in the top left corner."
msgstr ""
#: res/ui/window.ui:104 res/ui/window.ui:252 src/dialogs/about.rs:10
msgid "Musicus"
msgstr ""
#: res/ui/window.ui:157
msgid ""
"Get startet by selecting the folder containing your music files! Musicus "
"will create a new database there or open one that already exists."
msgstr ""
#: res/ui/window.ui:170
msgid "Select folder"
msgstr ""
#: res/ui/window.ui:331
msgid "Preferences"
msgstr ""
#: res/ui/window.ui:335
msgid "About Musicus"
msgstr ""
#: res/ui/work_editor.ui:373
msgid "Structure"
msgstr ""
#: res/ui/work_selector.ui:51
msgid "Select a work"
msgstr ""
#: src/dialogs/about.rs:12
msgid "The classical music player and organizer."
msgstr ""
#: src/dialogs/about.rs:14
msgid "Further information and source code"
msgstr ""
#: src/dialogs/preferences.rs:30 src/window.rs:70
msgid "Select music library folder"
msgstr ""
#: src/dialogs/recording/recording_editor.rs:54
msgid "No performers added."
msgstr ""
#: src/dialogs/recording/recording_selector_person_screen.rs:39
#: src/dialogs/work/work_selector_person_screen.rs:36
#: src/screens/person_screen.rs:57
msgid "No works found."
msgstr ""
#: src/dialogs/tracks_editor.rs:60
msgid "Add some tracks."
msgstr ""
#: src/dialogs/tracks_editor.rs:118
msgid "Select audio files"
msgstr ""
#: src/dialogs/tracks_editor.rs:236 src/screens/player_screen.rs:230
#: src/screens/recording_screen.rs:79
msgid "Unknown"
msgstr ""
#: src/dialogs/work/part_editor.rs:49 src/dialogs/work/work_editor.rs:69
msgid "No instruments added."
msgstr ""
#: src/dialogs/work/work_editor.rs:72
msgid "No work parts added."
msgstr ""
#: src/screens/ensemble_screen.rs:35
msgid "Edit ensemble"
msgstr ""
#: src/screens/ensemble_screen.rs:41
msgid "Delete ensemble"
msgstr ""
#: src/screens/person_screen.rs:39
msgid "Edit person"
msgstr ""
#: src/screens/person_screen.rs:45
msgid "Delete person"
msgstr ""
#: src/screens/recording_screen.rs:36
msgid "Edit recording"
msgstr ""
#: src/screens/recording_screen.rs:42
msgid "Delete recording"
msgstr ""
#: src/screens/recording_screen.rs:48
msgid "Edit tracks"
msgstr ""
#: src/screens/recording_screen.rs:54
msgid "Delete tracks"
msgstr ""
#: src/screens/recording_screen.rs:69
msgid "No tracks found."
msgstr ""
#: src/screens/work_screen.rs:36
msgid "Edit work"
msgstr ""
#: src/screens/work_screen.rs:42
msgid "Delete work"
msgstr ""
#: src/widgets/person_list.rs:26
msgid "No persons found."
msgstr ""
#: src/widgets/poe_list.rs:41
msgid "No persons or ensembles found."
msgstr ""

View file

@ -0,0 +1,9 @@
pkgdatadir = join_paths(get_option('prefix'), get_option('datadir'), meson.project_name())
gnome = import('gnome')
resources = gnome.compile_resources('musicus',
'musicus.gresource.xml',
gresource_bundle: true,
install: true,
install_dir: pkgdatadir,
)

View file

@ -0,0 +1,26 @@
<?xml version="1.0" encoding="UTF-8"?>
<gresources>
<gresource prefix="/de/johrpan/musicus">
<file preprocess="xml-stripblanks">ui/editor.ui</file>
<file preprocess="xml-stripblanks">ui/login_dialog.ui</file>
<file preprocess="xml-stripblanks">ui/main_screen.ui</file>
<file preprocess="xml-stripblanks">ui/medium_editor.ui</file>
<file preprocess="xml-stripblanks">ui/performance_editor.ui</file>
<file preprocess="xml-stripblanks">ui/player_bar.ui</file>
<file preprocess="xml-stripblanks">ui/player_screen.ui</file>
<file preprocess="xml-stripblanks">ui/preferences.ui</file>
<file preprocess="xml-stripblanks">ui/recording_editor.ui</file>
<file preprocess="xml-stripblanks">ui/register_dialog.ui</file>
<file preprocess="xml-stripblanks">ui/screen.ui</file>
<file preprocess="xml-stripblanks">ui/section.ui</file>
<file preprocess="xml-stripblanks">ui/selector.ui</file>
<file preprocess="xml-stripblanks">ui/server_dialog.ui</file>
<file preprocess="xml-stripblanks">ui/source_selector.ui</file>
<file preprocess="xml-stripblanks">ui/track_editor.ui</file>
<file preprocess="xml-stripblanks">ui/track_selector.ui</file>
<file preprocess="xml-stripblanks">ui/track_set_editor.ui</file>
<file preprocess="xml-stripblanks">ui/work_editor.ui</file>
<file preprocess="xml-stripblanks">ui/work_part_editor.ui</file>
<file preprocess="xml-stripblanks">ui/work_section_editor.ui</file>
</gresource>
</gresources>

View file

@ -0,0 +1,125 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<requires lib="gtk" version="4.0"/>
<requires lib="libadwaita" version="1.0"/>
<object class="GtkStack" id="widget">
<property name="transition-type">crossfade</property>
<child>
<object class="GtkStackPage">
<property name="name">content</property>
<property name="child">
<object class="GtkBox">
<property name="orientation">vertical</property>
<child>
<object class="AdwHeaderBar">
<property name="show-start-title-buttons">false</property>
<property name="show-end-title-buttons">false</property>
<property name="title-widget">
<object class="AdwWindowTitle" id="window_title"/>
</property>
<child>
<object class="GtkButton" id="back_button">
<property name="label" translatable="yes">Cancel</property>
</object>
</child>
<child type="end">
<object class="GtkButton" id="save_button">
<property name="label" translatable="yes">Save</property>
<style>
<class name="suggested-action"/>
</style>
</object>
</child>
</object>
</child>
<child>
<object class="GtkScrolledWindow">
<property name="vexpand">true</property>
<child>
<object class="AdwClamp">
<child>
<object class="GtkBox" id="content_box">
<property name="orientation">vertical</property>
<property name="margin-start">12</property>
<property name="margin-end">12</property>
<property name="margin-bottom">36</property>
</object>
</child>
</object>
</child>
</object>
</child>
</object>
</property>
</object>
</child>
<child>
<object class="GtkStackPage">
<property name="name">loading</property>
<property name="child">
<object class="GtkBox">
<property name="orientation">vertical</property>
<child>
<object class="AdwHeaderBar">
<property name="show-start-title-buttons">false</property>
<property name="show-end-title-buttons">false</property>
<property name="title-widget">
<object class="AdwWindowTitle">
<property name="title" translatable="true">Loading</property>
</object>
</property>
</object>
</child>
<child>
<object class="GtkSpinner">
<property name="hexpand">true</property>
<property name="vexpand">true</property>
<property name="halign">center</property>
<property name="valign">center</property>
<property name="width-request">32</property>
<property name="height-request">32</property>
<property name="spinning">true</property>
</object>
</child>
</object>
</property>
</object>
</child>
<child>
<object class="GtkStackPage">
<property name="name">error</property>
<property name="child">
<object class="GtkBox">
<property name="orientation">vertical</property>
<child>
<object class="AdwHeaderBar">
<property name="show-start-title-buttons">false</property>
<property name="show-end-title-buttons">false</property>
<property name="title-widget">
<object class="AdwWindowTitle">
<property name="title" translatable="yes">Error</property>
</object>
</property>
</object>
</child>
<child>
<object class="AdwStatusPage" id="status_page">
<property name="icon-name">network-error-symbolic</property>
<property name="title">Error</property>
<child>
<object class="GtkButton" id="try_again_button">
<property name="label" translatable="yes">Try again</property>
<property name="hexpand">true</property>
<property name="vexpand">true</property>
<property name="halign">center</property>
<property name="valign">center</property>
</object>
</child>
</object>
</child>
</object>
</property>
</object>
</child>
</object>
</interface>

View file

@ -0,0 +1,223 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<requires lib="gtk" version="4.0"/>
<requires lib="libadwaita" version="1.0"/>
<object class="GtkStack" id="widget">
<property name="transition-type">crossfade</property>
<child>
<object class="GtkStackPage">
<property name="name">content</property>
<property name="child">
<object class="GtkBox">
<property name="orientation">vertical</property>
<child>
<object class="AdwHeaderBar">
<property name="show-start-title-buttons">false</property>
<property name="show-end-title-buttons">false</property>
<property name="title-widget">
<object class="GtkLabel">
</object>
</property>
<child>
<object class="GtkButton" id="cancel_button">
<property name="label" translatable="yes">Cancel</property>
</object>
</child>
<child type="end">
<object class="GtkButton" id="login_button">
<property name="label" translatable="yes">Login</property>
<style>
<class name="suggested-action"/>
</style>
</object>
</child>
</object>
</child>
<child>
<object class="GtkInfoBar" id="info_bar">
<property name="revealed">False</property>
</object>
</child>
<child>
<object class="GtkScrolledWindow">
<property name="vexpand">true</property>
<child>
<object class="AdwClamp">
<property name="margin-start">12</property>
<property name="margin-end">12</property>
<property name="margin-top">18</property>
<property name="margin-bottom">12</property>
<property name="maximum-size">800</property>
<child>
<object class="GtkBox">
<property name="orientation">vertical</property>
<property name="spacing">12</property>
<child>
<object class="GtkLabel">
<property name="halign">start</property>
<property name="label" translatable="yes">Login to existing account</property>
<attributes>
<attribute name="weight" value="bold"/>
</attributes>
</object>
</child>
<child>
<object class="GtkFrame">
<property name="valign">start</property>
<child>
<object class="GtkListBox">
<property name="selection-mode">none</property>
<child>
<object class="AdwActionRow">
<property name="activatable">True</property>
<property name="title" translatable="yes">Username</property>
<property name="activatable-widget">username_entry</property>
<child>
<object class="GtkEntry" id="username_entry">
<property name="valign">center</property>
<property name="hexpand">True</property>
</object>
</child>
</object>
</child>
<child>
<object class="AdwActionRow">
<property name="activatable">True</property>
<property name="title" translatable="yes">Password</property>
<property name="activatable-widget">password_entry</property>
<child>
<object class="GtkEntry" id="password_entry">
<property name="valign">center</property>
<property name="hexpand">True</property>
<property name="visibility">False</property>
<property name="input-purpose">password</property>
</object>
</child>
</object>
</child>
</object>
</child>
</object>
</child>
<child>
<object class="GtkBox" id="register_box">
<property name="orientation">vertical</property>
<property name="spacing">12</property>
<child>
<object class="GtkLabel">
<property name="halign">start</property>
<property name="label" translatable="yes">Create a new account</property>
<attributes>
<attribute name="weight" value="bold"/>
</attributes>
</object>
</child>
<child>
<object class="GtkFrame">
<property name="valign">start</property>
<child>
<object class="GtkListBox">
<property name="selection-mode">none</property>
<child>
<object class="AdwActionRow">
<property name="activatable">True</property>
<property name="title" translatable="yes">Register a new account</property>
<property name="activatable-widget">register_button</property>
<child>
<object class="GtkButton" id="register_button">
<property name="label" translatable="yes">Start</property>
<property name="valign">center</property>
</object>
</child>
</object>
</child>
</object>
</child>
</object>
</child>
</object>
</child>
<child>
<object class="GtkBox" id="logout_box">
<property name="orientation">vertical</property>
<property name="spacing">12</property>
<property name="visible">false</property>
<child>
<object class="GtkLabel">
<property name="halign">start</property>
<property name="label" translatable="yes">Logout</property>
<attributes>
<attribute name="weight" value="bold"/>
</attributes>
</object>
</child>
<child>
<object class="GtkFrame">
<property name="valign">start</property>
<child>
<object class="GtkListBox">
<property name="selection-mode">none</property>
<child>
<object class="AdwActionRow">
<property name="activatable">True</property>
<property name="title" translatable="yes">Don't use an account</property>
<property name="activatable-widget">logout_button</property>
<child>
<object class="GtkButton" id="logout_button">
<property name="label" translatable="yes">Logout</property>
<property name="valign">center</property>
</object>
</child>
</object>
</child>
</object>
</child>
</object>
</child>
</object>
</child>
</object>
</child>
</object>
</child>
</object>
</child>
</object>
</property>
</object>
</child>
<child>
<object class="GtkStackPage">
<property name="name">loading</property>
<property name="child">
<object class="GtkBox">
<property name="orientation">vertical</property>
<child>
<object class="AdwHeaderBar">
<property name="show-start-title-buttons">false</property>
<property name="show-end-title-buttons">false</property>
<property name="title-widget">
<object class="GtkLabel">
<property name="label" translatable="yes">Login</property>
<style>
<class name="title"/>
</style>
</object>
</property>
</object>
</child>
<child>
<object class="GtkSpinner">
<property name="spinning">true</property>
<property name="hexpand">true</property>
<property name="vexpand">true</property>
<property name="halign">center</property>
<property name="valign">center</property>
</object>
</child>
</object>
</property>
</object>
</child>
</object>
</interface>

View file

@ -0,0 +1,147 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<requires lib="gtk" version="4.0" />
<requires lib="libadwaita" version="1.0" />
<object class="GtkBox" id="empty_screen">
<property name="orientation">vertical</property>
<child>
<object class="AdwHeaderBar">
<property name="title-widget">
<object class="GtkLabel"/>
</property>
</object>
</child>
<child>
<object class="AdwStatusPage">
<property name="icon-name">folder-music-symbolic</property>
<property name="title" translatable="yes">Welcome to Musicus!</property>
<property name="description" translatable="yes">Get startet by selecting something from the sidebar or adding new things to your library using the button in the top left corner.</property>
<property name="vexpand">true</property>
</object>
</child>
</object>
<object class="GtkBox" id="widget">
<property name="orientation">vertical</property>
<child>
<object class="AdwLeaflet" id="leaflet">
<property name="vexpand">true</property>
<child>
<object class="AdwLeafletPage">
<property name="name">sidebar</property>
<property name="child">
<object class="GtkBox">
<property name="hexpand">False</property>
<property name="orientation">vertical</property>
<child>
<object class="AdwHeaderBar">
<property name="show-start-title-buttons">false</property>
<property name="show-end-title-buttons">false</property>
<property name="title-widget">
<object class="GtkLabel">
<property name="label">Musicus</property>
<style>
<class name="title"/>
</style>
</object>
</property>
<child>
<object class="GtkButton" id="add_button">
<property name="receives-default">True</property>
<child>
<object class="GtkImage">
<property name="icon-name">list-add-symbolic</property>
</object>
</child>
</object>
</child>
<child type="end">
<object class="GtkMenuButton">
<property name="receives-default">True</property>
<property name="icon-name">open-menu-symbolic</property>
<property name="menu-model">menu</property>
</object>
</child>
</object>
</child>
<child>
<object class="GtkSearchBar">
<property name="search-mode-enabled">True</property>
<child>
<object class="AdwClamp">
<property name="maximum-size">400</property>
<property name="tightening-threshold">300</property>
<property name="hexpand">true</property>
<child>
<object class="GtkSearchEntry" id="search_entry">
<property name="placeholder-text" translatable="yes">Search persons and ensembles …</property>
</object>
</child>
</object>
</child>
</object>
</child>
<child>
<object class="GtkStack" id="stack">
<property name="hexpand">True</property>
<property name="transition-type">crossfade</property>
<child>
<object class="GtkStackPage">
<property name="name">loading</property>
<property name="child">
<object class="GtkSpinner">
<property name="spinning">True</property>
<property name="hexpand">True</property>
<property name="vexpand">True</property>
<property name="halign">center</property>
<property name="valign">center</property>
</object>
</property>
</object>
</child>
<child>
<object class="GtkStackPage">
<property name="name">content</property>
<property name="child">
<object class="GtkScrolledWindow" id="scroll">
<child>
<placeholder/>
</child>
</object>
</property>
</object>
</child>
</object>
</child>
</object>
</property>
</object>
</child>
<child>
<object class="AdwLeafletPage">
<property name="navigatable">False</property>
<property name="child">
<object class="GtkSeparator">
<property name="orientation">vertical</property>
<style>
<class name="sidebar" />
</style>
</object>
</property>
</object>
</child>
</object>
</child>
</object>
<menu id="menu">
<section>
<item>
<attribute name="label" translatable="yes">Preferences</attribute>
<attribute name="action">widget.preferences</attribute>
</item>
<item>
<attribute name="label" translatable="yes">About Musicus</attribute>
<attribute name="action">widget.about</attribute>
</item>
</section>
</menu>
</interface>

View file

@ -0,0 +1,169 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<requires lib="gtk" version="4.0"/>
<requires lib="libadwaita" version="1.0"/>
<object class="GtkStack" id="widget">
<property name="transition-type">crossfade</property>
<child>
<object class="GtkStackPage">
<property name="name">content</property>
<property name="child">
<object class="GtkBox">
<property name="orientation">vertical</property>
<child>
<object class="AdwHeaderBar">
<property name="show-start-title-buttons">false</property>
<property name="show-end-title-buttons">false</property>
<property name="title-widget">
<object class="GtkLabel">
<property name="label" translatable="yes">Import music</property>
<style>
<class name="title"/>
</style>
</object>
</property>
<child>
<object class="GtkButton" id="back_button">
<property name="icon-name">go-previous-symbolic</property>
</object>
</child>
<child type="end">
<object class="GtkButton" id="done_button">
<property name="sensitive">False</property>
<child>
<object class="GtkStack" id="done_stack">
<property name="transition-type">crossfade</property>
<child>
<object class="GtkSpinner" id="spinner">
<property name="spinning">True</property>
</object>
</child>
<child>
<object class="GtkImage" id="done">
<property name="icon-name">object-select-symbolic</property>
</object>
</child>
</object>
</child>
<style>
<class name="suggested-action"/>
</style>
</object>
</child>
</object>
</child>
<child>
<object class="GtkInfoBar" id="info_bar">
<property name="revealed">False</property>
</object>
</child>
<child>
<object class="GtkScrolledWindow">
<property name="vexpand">True</property>
<child>
<object class="AdwClamp">
<child>
<object class="GtkBox">
<property name="margin-start">6</property>
<property name="margin-end">6</property>
<property name="margin-bottom">6</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkLabel">
<property name="halign">start</property>
<property name="margin-top">12</property>
<property name="margin-bottom">6</property>
<property name="label" translatable="yes">Medium</property>
<attributes>
<attribute name="weight" value="bold"/>
</attributes>
</object>
</child>
<child>
<object class="GtkFrame">
<child>
<object class="GtkListBox">
<property name="selection-mode">none</property>
<child>
<object class="AdwActionRow" id="name_row">
<property name="activatable">True</property>
<property name="title" translatable="yes">Name of the medium</property>
<property name="activatable-widget">name_entry</property>
<child>
<object class="GtkEntry" id="name_entry">
<property name="valign">center</property>
<property name="hexpand">True</property>
</object>
</child>
</object>
</child>
<child>
<object class="AdwActionRow">
<property name="activatable">True</property>
<property name="title" translatable="yes">Publish to the server</property>
<property name="activatable-widget">publish_switch</property>
<child>
<object class="GtkSwitch" id="publish_switch">
<property name="valign">center</property>
<property name="active">True</property>
</object>
</child>
</object>
</child>
</object>
</child>
</object>
</child>
<child>
<object class="GtkBox">
<property name="orientation">horizontal</property>
<property name="margin-top">12</property>
<property name="margin-bottom">6</property>
<child>
<object class="GtkLabel">
<property name="halign">start</property>
<property name="valign">end</property>
<property name="hexpand">True</property>
<property name="label" translatable="yes">Recordings</property>
<attributes>
<attribute name="weight" value="bold"/>
</attributes>
</object>
</child>
<child>
<object class="GtkButton" id="add_button">
<property name="has-frame">false</property>
<property name="icon-name">list-add-symbolic</property>
</object>
</child>
</object>
</child>
<child>
<object class="GtkFrame" id="frame"/>
</child>
</object>
</child>
</object>
</child>
</object>
</child>
</object>
</property>
</object>
</child>
<child>
<object class="GtkStackPage">
<property name="name">loading</property>
<property name="child">
<object class="GtkSpinner">
<property name="spinning">true</property>
<property name="hexpand">true</property>
<property name="vexpand">true</property>
<property name="halign">center</property>
<property name="valign">center</property>
</object>
</property>
</object>
</child>
</object>
</interface>

View file

@ -0,0 +1,107 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<requires lib="gtk" version="4.0"/>
<requires lib="libadwaita" version="1.0"/>
<object class="GtkBox" id="widget">
<property name="orientation">vertical</property>
<child>
<object class="AdwHeaderBar">
<property name="show-start-title-buttons">false</property>
<property name="show-end-title-buttons">false</property>
<property name="title-widget">
<object class="GtkLabel">
<property name="label" translatable="yes">Performance</property>
<style>
<class name="title"/>
</style>
</object>
</property>
<child>
<object class="GtkButton" id="back_button">
<property name="icon-name">go-previous-symbolic</property>
</object>
</child>
<child type="end">
<object class="GtkButton" id="save_button">
<property name="sensitive">False</property>
<property name="icon-name">object-select-symbolic</property>
<style>
<class name="suggested-action"/>
</style>
</object>
</child>
</object>
</child>
<child>
<object class="GtkScrolledWindow">
<property name="vexpand">true</property>
<child>
<object class="AdwClamp">
<property name="margin-start">12</property>
<property name="margin-end">12</property>
<property name="margin-top">18</property>
<property name="margin-bottom">12</property>
<property name="maximum-size">500</property>
<property name="tightening-threshold">300</property>
<child>
<object class="GtkFrame">
<property name="valign">start</property>
<child>
<object class="GtkListBox">
<property name="selection-mode">none</property>
<child>
<object class="AdwActionRow" id="person_row">
<property name="activatable">True</property>
<property name="title" translatable="yes">Select a person</property>
<property name="activatable-widget">person_button</property>
<child>
<object class="GtkButton" id="person_button">
<property name="label" translatable="yes">Select</property>
<property name="valign">center</property>
</object>
</child>
</object>
</child>
<child>
<object class="AdwActionRow" id="ensemble_row">
<property name="activatable">True</property>
<property name="title" translatable="yes">Select an ensemble</property>
<property name="activatable-widget">ensemble_button</property>
<child>
<object class="GtkButton" id="ensemble_button">
<property name="label" translatable="yes">Select</property>
<property name="valign">center</property>
</object>
</child>
</object>
</child>
<child>
<object class="AdwActionRow" id="role_row">
<property name="activatable">True</property>
<property name="title" translatable="yes">Select a role</property>
<property name="activatable-widget">role_button</property>
<child>
<object class="GtkButton" id="reset_role_button">
<property name="visible">false</property>
<property name="icon-name">user-trash-symbolic</property>
<property name="valign">center</property>
</object>
</child>
<child>
<object class="GtkButton" id="role_button">
<property name="label" translatable="yes">Select</property>
<property name="valign">center</property>
</object>
</child>
</object>
</child>
</object>
</child>
</object>
</child>
</object>
</child>
</object>
</child>
</object>
</interface>

View file

@ -0,0 +1,116 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<requires lib="gtk" version="4.0"/>
<object class="GtkImage" id="play_image">
<property name="icon-name">media-playback-start-symbolic</property>
</object>
<object class="GtkRevealer" id="widget">
<property name="transition-type">slide-up</property>
<child>
<object class="GtkBox">
<property name="orientation">vertical</property>
<child>
<object class="GtkSeparator"/>
</child>
<child>
<object class="GtkBox">
<property name="margin-top">6</property>
<property name="margin-bottom">6</property>
<property name="margin-start">6</property>
<property name="margin-end">6</property>
<property name="spacing">12</property>
<child>
<object class="GtkBox">
<property name="valign">center</property>
<property name="spacing">6</property>
<child>
<object class="GtkButton" id="previous_button">
<property name="sensitive">False</property>
<child>
<object class="GtkImage">
<property name="icon-name">media-skip-backward-symbolic</property>
</object>
</child>
</object>
</child>
<child>
<object class="GtkButton" id="play_button">
<child>
<object class="GtkImage" id="pause_image">
<property name="icon-name">media-playback-pause-symbolic</property>
</object>
</child>
</object>
</child>
<child>
<object class="GtkButton" id="next_button">
<property name="sensitive">False</property>
<property name="receives-default">True</property>
<child>
<object class="GtkImage">
<property name="icon-name">media-skip-forward-symbolic</property>
</object>
</child>
</object>
</child>
</object>
</child>
<child>
<object class="GtkBox">
<property name="orientation">vertical</property>
<property name="hexpand">True</property>
<child>
<object class="GtkLabel" id="title_label">
<property name="halign">start</property>
<property name="label" translatable="yes">Title</property>
<property name="ellipsize">end</property>
<attributes>
<attribute name="weight" value="bold"/>
</attributes>
</object>
</child>
<child>
<object class="GtkLabel" id="subtitle_label">
<property name="halign">start</property>
<property name="label" translatable="yes">Subtitle</property>
<property name="ellipsize">end</property>
</object>
</child>
</object>
</child>
<child>
<object class="GtkBox">
<property name="spacing">2</property>
<child>
<object class="GtkLabel" id="position_label">
<property name="label" translatable="yes">0:00</property>
</object>
</child>
<child>
<object class="GtkLabel">
<property name="label" translatable="yes">/</property>
</object>
</child>
<child>
<object class="GtkLabel" id="duration_label">
<property name="label" translatable="yes">0:00</property>
</object>
</child>
</object>
</child>
<child>
<object class="GtkButton" id="playlist_button">
<property name="valign">center</property>
<child>
<object class="GtkImage">
<property name="icon-name">view-list-bullet-symbolic</property>
</object>
</child>
</object>
</child>
</object>
</child>
</object>
</child>
</object>
</interface>

View file

@ -0,0 +1,158 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<requires lib="gtk" version="4.0"/>
<requires lib="libadwaita" version="1.0"/>
<object class="GtkImage" id="play_image">
<property name="icon-name">media-playback-start-symbolic</property>
</object>
<object class="GtkAdjustment" id="position">
<property name="upper">1</property>
<property name="step-increment">0.01</property>
<property name="page-increment">0.05</property>
</object>
<object class="GtkBox" id="widget">
<property name="orientation">vertical</property>
<child>
<object class="AdwHeaderBar">
<property name="title-widget">
<object class="GtkLabel">
<property name="label" translatable="yes">Player</property>
<style>
<class name="title"/>
</style>
</object>
</property>
<child>
<object class="GtkButton" id="back_button">
<child>
<object class="GtkImage">
<property name="icon-name">go-previous-symbolic</property>
</object>
</child>
</object>
</child>
</object>
</child>
<child>
<object class="GtkScrolledWindow">
<property name="vexpand">true</property>
<child>
<object class="AdwClamp">
<property name="margin-start">12</property>
<property name="margin-end">12</property>
<property name="margin-top">18</property>
<property name="margin-bottom">12</property>
<property name="maximum-size">800</property>
<child>
<object class="GtkBox">
<property name="orientation">vertical</property>
<property name="spacing">12</property>
<child>
<object class="GtkBox">
<property name="spacing">12</property>
<child>
<object class="GtkBox">
<property name="valign">center</property>
<property name="spacing">6</property>
<child>
<object class="GtkButton" id="previous_button">
<property name="sensitive">False</property>
<child>
<object class="GtkImage">
<property name="icon-name">media-skip-backward-symbolic</property>
</object>
</child>
</object>
</child>
<child>
<object class="GtkButton" id="play_button">
<property name="receives-default">True</property>
<child>
<object class="GtkImage" id="pause_image">
<property name="icon-name">media-playback-pause-symbolic</property>
</object>
</child>
</object>
</child>
<child>
<object class="GtkButton" id="next_button">
<property name="sensitive">False</property>
<property name="receives-default">True</property>
<child>
<object class="GtkImage">
<property name="icon-name">media-skip-forward-symbolic</property>
</object>
</child>
</object>
</child>
</object>
</child>
<child>
<object class="GtkBox">
<property name="orientation">vertical</property>
<property name="hexpand">True</property>
<child>
<object class="GtkLabel" id="title_label">
<property name="halign">start</property>
<property name="label" translatable="yes">Title</property>
<property name="ellipsize">end</property>
<attributes>
<attribute name="weight" value="bold"/>
</attributes>
</object>
</child>
<child>
<object class="GtkLabel" id="subtitle_label">
<property name="halign">start</property>
<property name="label" translatable="yes">Subtitle</property>
<property name="ellipsize">end</property>
</object>
</child>
</object>
</child>
<child>
<object class="GtkButton" id="stop_button">
<property name="receives-default">True</property>
<property name="valign">center</property>
<child>
<object class="GtkImage">
<property name="icon-name">media-playback-stop-symbolic</property>
</object>
</child>
</object>
</child>
</object>
</child>
<child>
<object class="GtkBox">
<property name="spacing">6</property>
<child>
<object class="GtkLabel" id="position_label">
<property name="label" translatable="yes">0:00</property>
</object>
</child>
<child>
<object class="GtkScale" id="position_scale">
<property name="adjustment">position</property>
<property name="hexpand">True</property>
</object>
</child>
<child>
<object class="GtkLabel" id="duration_label">
<property name="label" translatable="yes">0:00</property>
</object>
</child>
</object>
</child>
<child>
<object class="GtkFrame" id="frame">
</object>
</child>
</object>
</child>
</object>
</child>
</object>
</child>
</object>
</interface>

View file

@ -0,0 +1,74 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<requires lib="gtk" version="4.0"/>
<requires lib="libadwaita" version="1.0"/>
<object class="AdwPreferencesWindow" id="window">
<property name="modal">True</property>
<property name="default-width">400</property>
<property name="default-height">400</property>
<child>
<object class="AdwPreferencesPage">
<property name="title" translatable="yes">General</property>
<child>
<object class="AdwPreferencesGroup">
<property name="title" translatable="yes">Music library</property>
<child>
<object class="AdwActionRow" id="music_library_path_row">
<property name="title" translatable="yes">Music library folder</property>
<property name="activatable-widget">select_music_library_path_button</property>
<property name="subtitle" translatable="yes">None selected</property>
<child>
<object class="GtkButton" id="select_music_library_path_button">
<property name="label" translatable="yes">Select</property>
<property name="receives-default">True</property>
<property name="valign">center</property>
</object>
</child>
</object>
</child>
</object>
</child>
<child>
<object class="AdwPreferencesGroup">
<property name="title" translatable="yes">Server connection</property>
<child>
<object class="AdwActionRow" id="url_row">
<property name="title" translatable="yes">Server URL</property>
<property name="activatable-widget">url_button</property>
<property name="subtitle" translatable="yes">Not set</property>
<child>
<object class="GtkButton" id="url_button">
<property name="label" translatable="yes">Change</property>
<property name="receives-default">True</property>
<property name="valign">center</property>
</object>
</child>
</object>
</child>
<child>
<object class="AdwActionRow" id="login_row">
<property name="title" translatable="yes">Login credentials</property>
<property name="activatable-widget">login_button</property>
<property name="subtitle" translatable="yes">Not logged in</property>
<child>
<object class="GtkButton" id="login_button">
<property name="label" translatable="yes">Change</property>
<property name="receives-default">True</property>
<property name="valign">center</property>
</object>
</child>
</object>
</child>
</object>
</child>
</object>
</child>
</object>
<object class="GtkSizeGroup">
<widgets>
<widget name="select_music_library_path_button"/>
<widget name="url_button"/>
<widget name="login_button"/>
</widgets>
</object>
</interface>

View file

@ -0,0 +1,190 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<requires lib="gtk" version="4.0"/>
<requires lib="libadwaita" version="1.0"/>
<object class="GtkStack" id="widget">
<child>
<object class="GtkStackPage">
<property name="name">content</property>
<property name="child">
<object class="GtkBox">
<property name="orientation">vertical</property>
<child>
<object class="AdwHeaderBar">
<property name="show-start-title-buttons">false</property>
<property name="show-end-title-buttons">false</property>
<property name="title-widget">
<object class="GtkLabel">
<property name="label" translatable="yes">Recording</property>
<style>
<class name="title"/>
</style>
</object>
</property>
<child>
<object class="GtkButton" id="back_button">
<property name="icon-name">go-previous-symbolic</property>
</object>
</child>
<child type="end">
<object class="GtkButton" id="save_button">
<property name="sensitive">False</property>
<property name="icon-name">object-select-symbolic</property>
<style>
<class name="suggested-action"/>
</style>
</object>
</child>
</object>
</child>
<child>
<object class="GtkInfoBar" id="info_bar">
<property name="revealed">False</property>
</object>
</child>
<child>
<object class="GtkScrolledWindow">
<property name="vexpand">true</property>
<child>
<object class="AdwClamp">
<property name="margin-start">12</property>
<property name="margin-end">12</property>
<property name="margin-top">18</property>
<property name="margin-bottom">12</property>
<child>
<object class="GtkBox">
<property name="margin-start">6</property>
<property name="margin-end">6</property>
<property name="margin-bottom">6</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkLabel">
<property name="halign">start</property>
<property name="margin-top">12</property>
<property name="margin-bottom">6</property>
<property name="label" translatable="yes">Overview</property>
<attributes>
<attribute name="weight" value="bold"/>
</attributes>
</object>
</child>
<child>
<object class="GtkFrame">
<child>
<object class="GtkListBox">
<property name="selection-mode">none</property>
<child>
<object class="AdwActionRow" id="work_row">
<property name="activatable">True</property>
<property name="title" translatable="yes">Select a work</property>
<property name="activatable-widget">work_button</property>
<child>
<object class="GtkButton" id="work_button">
<property name="label" translatable="yes">Select</property>
<property name="valign">center</property>
</object>
</child>
</object>
</child>
<child>
<object class="AdwActionRow">
<property name="activatable">True</property>
<property name="title" translatable="yes">Comment</property>
<property name="activatable-widget">comment_entry</property>
<child>
<object class="GtkEntry" id="comment_entry">
<property name="valign">center</property>
<property name="hexpand">True</property>
</object>
</child>
</object>
</child>
<child>
<object class="AdwActionRow">
<property name="activatable">True</property>
<property name="title" translatable="yes">Publish to the server</property>
<property name="activatable-widget">upload_switch</property>
<child>
<object class="GtkSwitch" id="upload_switch">
<property name="valign">center</property>
<property name="active">True</property>
</object>
</child>
</object>
</child>
</object>
</child>
</object>
</child>
<child>
<object class="GtkBox">
<property name="orientation">horizontal</property>
<property name="margin-top">12</property>
<property name="margin-bottom">6</property>
<child>
<object class="GtkLabel">
<property name="halign">start</property>
<property name="valign">end</property>
<property name="hexpand">True</property>
<property name="label" translatable="yes">Performers</property>
<attributes>
<attribute name="weight" value="bold"/>
</attributes>
</object>
</child>
<child>
<object class="GtkButton" id="add_performer_button">
<property name="has-frame">false</property>
<property name="icon-name">list-add-symbolic</property>
</object>
</child>
</object>
</child>
<child>
<object class="GtkFrame" id="performance_frame"/>
</child>
</object>
</child>
</object>
</child>
</object>
</child>
</object>
</property>
</object>
</child>
<child>
<object class="GtkStackPage">
<property name="name">loading</property>
<property name="child">
<object class="GtkBox">
<property name="orientation">vertical</property>
<child>
<object class="AdwHeaderBar">
<property name="show-start-title-buttons">false</property>
<property name="show-end-title-buttons">false</property>
<property name="title-widget">
<object class="GtkLabel">
<property name="label" translatable="yes">Recording</property>
<style>
<class name="title"/>
</style>
</object>
</property>
</object>
</child>
<child>
<object class="GtkSpinner">
<property name="hexpand">true</property>
<property name="vexpand">true</property>
<property name="halign">center</property>
<property name="valign">center</property>
<property name="spinning">true</property>
</object>
</child>
</object>
</property>
</object>
</child>
</object>
</interface>

View file

@ -0,0 +1,233 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<requires lib="gtk" version="4.0"/>
<requires lib="libadwaita" version="1.0"/>
<object class="GtkStack" id="widget">
<property name="transition-type">crossfade</property>
<child>
<object class="GtkStackPage">
<property name="name">loading</property>
<property name="child">
<object class="GtkBox">
<property name="orientation">vertical</property>
<child>
<object class="AdwHeaderBar">
<property name="show-start-title-buttons">false</property>
<property name="show-end-title-buttons">false</property>
<property name="title-widget">
<object class="GtkLabel">
<property name="label" translatable="yes">Register</property>
<style>
<class name="title"/>
</style>
</object>
</property>
</object>
</child>
<child>
<object class="GtkSpinner">
<property name="spinning">true</property>
<property name="hexpand">true</property>
<property name="vexpand">true</property>
<property name="halign">center</property>
<property name="valign">center</property>
</object>
</child>
</object>
</property>
</object>
</child>
<child>
<object class="GtkStackPage">
<property name="name">content</property>
<property name="child">
<object class="GtkBox">
<property name="orientation">vertical</property>
<child>
<object class="AdwHeaderBar">
<property name="show-start-title-buttons">false</property>
<property name="show-end-title-buttons">false</property>
<property name="title-widget">
<object class="GtkLabel">
</object>
</property>
<child>
<object class="GtkButton" id="cancel_button">
<property name="icon-name">go-previous-symbolic</property>
</object>
</child>
<child type="end">
<object class="GtkButton" id="register_button">
<property name="label" translatable="yes">Create account</property>
<style>
<class name="suggested-action"/>
</style>
</object>
</child>
</object>
</child>
<child>
<object class="GtkInfoBar" id="info_bar">
<property name="revealed">False</property>
</object>
</child>
<child>
<object class="GtkScrolledWindow">
<property name="vexpand">true</property>
<child>
<object class="AdwClamp">
<property name="margin-start">12</property>
<property name="margin-end">12</property>
<property name="margin-top">18</property>
<property name="margin-bottom">12</property>
<property name="maximum-size">800</property>
<child>
<object class="GtkBox">
<property name="orientation">vertical</property>
<property name="spacing">12</property>
<child>
<object class="GtkLabel">
<property name="halign">start</property>
<property name="label" translatable="yes">Personal data</property>
<attributes>
<attribute name="weight" value="bold"/>
</attributes>
</object>
</child>
<child>
<object class="GtkFrame">
<property name="valign">start</property>
<child>
<object class="GtkListBox">
<property name="selection-mode">none</property>
<child>
<object class="AdwActionRow">
<property name="activatable">True</property>
<property name="title" translatable="yes">Username</property>
<property name="activatable-widget">username_entry</property>
<child>
<object class="GtkEntry" id="username_entry">
<property name="valign">center</property>
<property name="hexpand">True</property>
</object>
</child>
</object>
</child>
<child>
<object class="AdwActionRow">
<property name="activatable">True</property>
<property name="title" translatable="yes">E-mail (optional)</property>
<property name="activatable-widget">email_entry</property>
<child>
<object class="GtkEntry" id="email_entry">
<property name="valign">center</property>
<property name="hexpand">True</property>
</object>
</child>
</object>
</child>
</object>
</child>
</object>
</child>
<child>
<object class="GtkLabel">
<property name="halign">start</property>
<property name="label" translatable="yes">Password</property>
<attributes>
<attribute name="weight" value="bold"/>
</attributes>
</object>
</child>
<child>
<object class="GtkFrame">
<property name="valign">start</property>
<child>
<object class="GtkListBox">
<property name="selection-mode">none</property>
<child>
<object class="AdwActionRow">
<property name="activatable">True</property>
<property name="title" translatable="yes">Password</property>
<property name="activatable-widget">password_entry</property>
<child>
<object class="GtkEntry" id="password_entry">
<property name="valign">center</property>
<property name="hexpand">True</property>
<property name="visibility">False</property>
<property name="input-purpose">password</property>
</object>
</child>
</object>
</child>
<child>
<object class="AdwActionRow">
<property name="activatable">True</property>
<property name="title" translatable="yes">Repeat password</property>
<property name="activatable-widget">repeat_password_entry</property>
<child>
<object class="GtkEntry" id="repeat_password_entry">
<property name="valign">center</property>
<property name="hexpand">True</property>
<property name="visibility">False</property>
<property name="input-purpose">password</property>
</object>
</child>
</object>
</child>
</object>
</child>
</object>
</child>
<child>
<object class="GtkLabel">
<property name="halign">start</property>
<property name="label" translatable="yes">Captcha</property>
<attributes>
<attribute name="weight" value="bold"/>
</attributes>
</object>
</child>
<child>
<object class="GtkFrame">
<property name="valign">start</property>
<child>
<object class="GtkListBox">
<property name="selection-mode">none</property>
<child>
<object class="AdwActionRow" id="captcha_row">
<property name="title-lines">0</property>
<property name="subtitle" translatable="yes">Feel free to look for the answer online!</property>
</object>
</child>
<child>
<object class="AdwActionRow">
<property name="activatable">True</property>
<property name="title" translatable="yes">Your answer</property>
<property name="activatable-widget">captcha_entry</property>
<child>
<object class="GtkEntry" id="captcha_entry">
<property name="valign">center</property>
<property name="hexpand">True</property>
<property name="visibility">False</property>
<property name="activates-default">True</property>
</object>
</child>
</object>
</child>
</object>
</child>
</object>
</child>
</object>
</child>
</object>
</child>
</object>
</child>
</object>
</property>
</object>
</child>
</object>
</interface>

View file

@ -0,0 +1,86 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<requires lib="gtk" version="4.0"/>
<requires lib="libadwaita" version="1.0"/>
<object class="GtkBox" id="widget">
<property name="orientation">vertical</property>
<child>
<object class="AdwHeaderBar">
<property name="title-widget">
<object class="AdwWindowTitle" id="window_title"/>
</property>
<child>
<object class="GtkButton" id="back_button">
<property name="icon-name">go-previous-symbolic</property>
</object>
</child>
<child type="end">
<object class="GtkMenuButton">
<property name="menu-model">menu</property>
<property name="icon-name">view-more-symbolic</property>
</object>
</child>
<child type="end">
<object class="GtkToggleButton" id="search_button">
<property name="icon-name">edit-find-symbolic</property>
</object>
</child>
</object>
</child>
<child>
<object class="GtkSearchBar">
<property name="search-mode-enabled" bind-source="search_button" bind-property="active" bind-flags="bidirectional|sync-create">False</property>
<child>
<object class="AdwClamp">
<property name="hexpand">true</property>
<child>
<object class="GtkSearchEntry" id="search_entry"/>
</child>
</object>
</child>
</object>
</child>
<child>
<object class="GtkStack" id="stack">
<child>
<object class="GtkStackPage">
<property name="name">loading</property>
<property name="child">
<object class="GtkSpinner">
<property name="hexpand">true</property>
<property name="vexpand">true</property>
<property name="halign">center</property>
<property name="valign">center</property>
<property name="width-request">32</property>
<property name="height-request">32</property>
<property name="spinning">true</property>
</object>
</property>
</object>
</child>
<child>
<object class="GtkStackPage">
<property name="name">content</property>
<property name="child">
<object class="GtkScrolledWindow">
<child>
<object class="AdwClamp">
<child>
<object class="GtkBox" id="content_box">
<property name="orientation">vertical</property>
<property name="margin-start">12</property>
<property name="margin-end">12</property>
<property name="margin-bottom">36</property>
</object>
</child>
</object>
</child>
</object>
</property>
</object>
</child>
</object>
</child>
</object>
<menu id="menu"/>
</interface>

View file

@ -0,0 +1,41 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<requires lib="gtk" version="4.0"/>
<object class="GtkBox" id="widget">
<property name="orientation">vertical</property>
<property name="spacing">6</property>
<child>
<object class="GtkBox" id="title_box">
<property name="spacing">12</property>
<child>
<object class="GtkBox">
<property name="orientation">vertical</property>
<property name="margin-top">18</property>
<property name="valign">end</property>
<property name="hexpand">true</property>
<child>
<object class="GtkLabel" id="title_label">
<property name="ellipsize">end</property>
<property name="xalign">0.0</property>
<attributes>
<attribute name="weight" value="bold"/>
</attributes>
</object>
</child>
<child>
<object class="GtkLabel" id="subtitle_label">
<property name="wrap">true</property>
<property name="xalign">0.0</property>
<property name="visible">false</property>
<property name="margin-bottom">6</property>
</object>
</child>
</object>
</child>
</object>
</child>
<child>
<object class="GtkFrame" id="frame"/>
</child>
</object>
</interface>

View file

@ -0,0 +1,175 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<requires lib="gtk" version="4.0"/>
<requires lib="libadwaita" version="1.0"/>
<object class="GtkBox" id="widget">
<property name="width-request">250</property>
<property name="hexpand">False</property>
<property name="orientation">vertical</property>
<child>
<object class="AdwHeaderBar" id="header">
<property name="show-start-title-buttons">false</property>
<property name="show-end-title-buttons">false</property>
<property name="title-widget">
<object class="GtkBox">
<property name="orientation">vertical</property>
<property name="valign">center</property>
<child>
<object class="GtkLabel" id="title_label">
<style>
<class name="title"/>
</style>
</object>
</child>
<child>
<object class="GtkLabel" id="subtitle_label">
<property name="visible">false</property>
<style>
<class name="subtitle"/>
</style>
</object>
</child>
</object>
</property>
<child>
<object class="GtkButton" id="back_button">
<property name="icon-name">go-previous-symbolic</property>
</object>
</child>
<child type="end">
<object class="GtkButton" id="add_button">
<property name="icon-name">list-add-symbolic</property>
</object>
</child>
</object>
</child>
<child>
<object class="GtkSearchBar">
<property name="search-mode-enabled">True</property>
<child>
<object class="AdwClamp">
<property name="maximum-size">500</property>
<property name="tightening-threshold">300</property>
<property name="hexpand">true</property>
<child>
<object class="GtkBox">
<property name="orientation">vertical</property>
<property name="spacing">6</property>
<child>
<object class="GtkSearchEntry" id="search_entry">
<property name="placeholder-text" translatable="yes">Search …</property>
</object>
</child>
<child>
<object class="GtkCheckButton" id="server_check_button">
<property name="label" translatable="yes">Use the Musicus server</property>
<property name="halign">start</property>
<property name="active">True</property>
</object>
</child>
</object>
</child>
</object>
</child>
</object>
</child>
<child>
<object class="GtkStack" id="stack">
<property name="hhomogeneous">False</property>
<property name="vhomogeneous">False</property>
<property name="transition-type">crossfade</property>
<property name="interpolate-size">True</property>
<child>
<object class="GtkStackPage">
<property name="name">loading</property>
<property name="child">
<object class="GtkSpinner">
<property name="margin-top">12</property>
<property name="halign">center</property>
<property name="valign">start</property>
<property name="spinning">True</property>
</object>
</property>
</object>
</child>
<child>
<object class="GtkStackPage">
<property name="name">content</property>
<property name="child">
<object class="GtkScrolledWindow">
<property name="height-request">200</property>
<property name="vexpand">true</property>
<child>
<object class="AdwClamp">
<property name="maximum-size">500</property>
<property name="tightening-threshold">300</property>
<child>
<object class="GtkFrame" id="frame">
<property name="valign">start</property>
<property name="margin-start">6</property>
<property name="margin-end">6</property>
<property name="margin-top">12</property>
<property name="margin-bottom">6</property>
</object>
</child>
</object>
</child>
</object>
</property>
</object>
</child>
<child>
<object class="GtkStackPage">
<property name="name">error</property>
<property name="child">
<object class="GtkBox">
<property name="halign">center</property>
<property name="valign">center</property>
<property name="margin-start">18</property>
<property name="margin-end">18</property>
<property name="margin-top">18</property>
<property name="margin-bottom">18</property>
<property name="orientation">vertical</property>
<property name="spacing">18</property>
<child>
<object class="GtkImage">
<property name="opacity">0.5</property>
<property name="pixel-size">80</property>
<property name="icon-name">network-error-symbolic</property>
</object>
</child>
<child>
<object class="GtkLabel">
<property name="opacity">0.5</property>
<property name="label" translatable="yes">An error occured!</property>
<attributes>
<attribute name="size" value="16384"/>
</attributes>
</object>
</child>
<child>
<object class="GtkLabel">
<property name="opacity">0.5</property>
<property name="label" translatable="yes">The server was not reachable or responded with an error. Please check your internet connection.</property>
<property name="justify">center</property>
<property name="wrap">True</property>
<property name="max-width-chars">40</property>
</object>
</child>
<child>
<object class="GtkButton" id="try_again_button">
<property name="label" translatable="yes">Try again</property>
<property name="halign">center</property>
<style>
<class name="suggested-action"/>
</style>
</object>
</child>
</object>
</property>
</object>
</child>
</object>
</child>
</object>
</interface>

View file

@ -0,0 +1,59 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<requires lib="gtk" version="4.0"/>
<requires lib="libadwaita" version="1.0"/>
<object class="AdwWindow" id="window">
<property name="modal">True</property>
<child>
<object class="GtkBox">
<property name="orientation">vertical</property>
<child>
<object class="AdwHeaderBar">
<property name="show-start-title-buttons">false</property>
<property name="show-end-title-buttons">false</property>
<property name="title-widget">
<object class="GtkLabel">
<property name="label" translatable="yes">Server</property>
<style>
<class name="title"/>
</style>
</object>
</property>
<child>
<object class="GtkButton" id="cancel_button">
<property name="label" translatable="yes">Cancel</property>
</object>
</child>
<child type="end">
<object class="GtkButton" id="set_button">
<property name="label" translatable="yes">Set</property>
<property name="has-default">True</property>
<style>
<class name="suggested-action"/>
</style>
</object>
</child>
</object>
</child>
<child>
<object class="GtkListBox">
<property name="selection-mode">none</property>
<child>
<object class="AdwActionRow">
<property name="activatable">True</property>
<property name="title" translatable="yes">URL</property>
<property name="activatable-widget">url_entry</property>
<child>
<object class="GtkEntry" id="url_entry">
<property name="valign">center</property>
<property name="hexpand">True</property>
</object>
</child>
</object>
</child>
</object>
</child>
</object>
</child>
</object>
</interface>

View file

@ -0,0 +1,126 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<requires lib="gtk" version="4.0"/>
<requires lib="libadwaita" version="1.0"/>
<object class="GtkStack" id="widget">
<property name="transition-type">crossfade</property>
<child>
<object class="GtkStackPage">
<property name="name">content</property>
<property name="child">
<object class="GtkBox">
<property name="orientation">vertical</property>
<child>
<object class="AdwHeaderBar">
<property name="show-start-title-buttons">false</property>
<property name="show-end-title-buttons">false</property>
<property name="title-widget">
<object class="AdwWindowTitle" id="window_title"/>
</property>
<child>
<object class="GtkButton" id="back_button">
<property name="icon-name">go-previous-symbolic</property>
</object>
</child>
</object>
</child>
<child>
<object class="AdwStatusPage">
<property name="vexpand">true</property>
<property name="icon-name">folder-music-symbolic</property>
<property name="title" translatable="yes">Import music</property>
<property name="description" translatable="yes">Select the source which contains the new audio files below.</property>
<child>
<object class="GtkBox">
<property name="orientation">horizontal</property>
<property name="homogeneous">true</property>
<property name="spacing">6</property>
<property name="halign">center</property>
<child>
<object class="GtkButton" id="folder_button">
<property name="label" translatable="true">Select folder</property>
</object>
</child>
<child>
<object class="GtkButton" id="disc_button">
<property name="label" translatable="true">Copy audio CD</property>
</object>
</child>
</object>
</child>
</object>
</child>
</object>
</property>
</object>
</child>
<child>
<object class="GtkStackPage">
<property name="name">loading</property>
<property name="child">
<object class="GtkBox">
<property name="orientation">vertical</property>
<child>
<object class="AdwHeaderBar">
<property name="show-start-title-buttons">false</property>
<property name="show-end-title-buttons">false</property>
<property name="title-widget">
<object class="AdwWindowTitle">
<property name="title" translatable="true">Loading</property>
</object>
</property>
</object>
</child>
<child>
<object class="GtkSpinner">
<property name="hexpand">true</property>
<property name="vexpand">true</property>
<property name="halign">center</property>
<property name="valign">center</property>
<property name="width-request">32</property>
<property name="height-request">32</property>
<property name="spinning">true</property>
</object>
</child>
</object>
</property>
</object>
</child>
<child>
<object class="GtkStackPage">
<property name="name">error</property>
<property name="child">
<object class="GtkBox">
<property name="orientation">vertical</property>
<child>
<object class="AdwHeaderBar">
<property name="show-start-title-buttons">false</property>
<property name="show-end-title-buttons">false</property>
<property name="title-widget">
<object class="AdwWindowTitle">
<property name="title" translatable="yes">Error</property>
</object>
</property>
</object>
</child>
<child>
<object class="AdwStatusPage" id="status_page">
<property name="icon-name">dialog-error-symbolic</property>
<property name="title">Error</property>
<child>
<object class="GtkButton" id="try_again_button">
<property name="label" translatable="yes">Try again</property>
<property name="hexpand">true</property>
<property name="vexpand">true</property>
<property name="halign">center</property>
<property name="valign">center</property>
</object>
</child>
</object>
</child>
</object>
</property>
</object>
</child>
</object>
</interface>

View file

@ -0,0 +1,53 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<requires lib="gtk" version="4.0"/>
<requires lib="libadwaita" version="1.0"/>
<object class="GtkBox" id="widget">
<property name="orientation">vertical</property>
<child>
<object class="AdwHeaderBar">
<property name="show-start-title-buttons">false</property>
<property name="show-end-title-buttons">false</property>
<property name="title-widget">
<object class="GtkLabel">
<property name="label" translatable="yes">Track</property>
<style>
<class name="title"/>
</style>
</object>
</property>
<child>
<object class="GtkButton" id="back_button">
<property name="icon-name">go-previous-symbolic</property>
</object>
</child>
<child type="end">
<object class="GtkButton" id="select_button">
<property name="icon-name">object-select-symbolic</property>
<style>
<class name="suggested-action"/>
</style>
</object>
</child>
</object>
</child>
<child>
<object class="GtkScrolledWindow">
<property name="vexpand">True</property>
<child>
<object class="AdwClamp">
<child>
<object class="GtkFrame" id="parts_frame">
<property name="valign">start</property>
<property name="margin-top">12</property>
<property name="margin-start">6</property>
<property name="margin-end">6</property>
<property name="margin-bottom">6</property>
</object>
</child>
</object>
</child>
</object>
</child>
</object>
</interface>

View file

@ -0,0 +1,54 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<requires lib="gtk" version="4.0"/>
<requires lib="libadwaita" version="1.0"/>
<object class="GtkBox" id="widget">
<property name="orientation">vertical</property>
<child>
<object class="AdwHeaderBar">
<property name="show-start-title-buttons">false</property>
<property name="show-end-title-buttons">false</property>
<property name="title-widget">
<object class="GtkLabel">
<property name="label" translatable="yes">Select tracks</property>
<style>
<class name="title"/>
</style>
</object>
</property>
<child>
<object class="GtkButton" id="back_button">
<property name="icon-name">go-previous-symbolic</property>
</object>
</child>
<child type="end">
<object class="GtkButton" id="select_button">
<property name="sensitive">False</property>
<property name="icon-name">object-select-symbolic</property>
<style>
<class name="suggested-action"/>
</style>
</object>
</child>
</object>
</child>
<child>
<object class="GtkScrolledWindow">
<property name="vexpand">True</property>
<child>
<object class="AdwClamp">
<child>
<object class="GtkFrame" id="tracks_frame">
<property name="valign">start</property>
<property name="margin-top">12</property>
<property name="margin-start">6</property>
<property name="margin-end">6</property>
<property name="margin-bottom">6</property>
</object>
</child>
</object>
</child>
</object>
</child>
</object>
</interface>

View file

@ -0,0 +1,113 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<requires lib="gtk" version="4.0"/>
<requires lib="libadwaita" version="1.0"/>
<object class="GtkBox" id="widget">
<property name="orientation">vertical</property>
<child>
<object class="AdwHeaderBar">
<property name="show-start-title-buttons">false</property>
<property name="show-end-title-buttons">false</property>
<property name="title-widget">
<object class="GtkLabel">
<property name="label" translatable="yes">Import music</property>
<style>
<class name="title"/>
</style>
</object>
</property>
<child>
<object class="GtkButton" id="back_button">
<property name="icon-name">go-previous-symbolic</property>
</object>
</child>
<child type="end">
<object class="GtkButton" id="save_button">
<property name="icon-name">object-select-symbolic</property>
<property name="sensitive">False</property>
<style>
<class name="suggested-action"/>
</style>
</object>
</child>
</object>
</child>
<child>
<object class="GtkScrolledWindow">
<property name="vexpand">True</property>
<child>
<object class="AdwClamp">
<child>
<object class="GtkBox">
<property name="margin-start">6</property>
<property name="margin-end">6</property>
<property name="margin-bottom">6</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkLabel">
<property name="halign">start</property>
<property name="margin-top">12</property>
<property name="margin-bottom">6</property>
<property name="label" translatable="yes">Recording</property>
<attributes>
<attribute name="weight" value="bold"/>
</attributes>
</object>
</child>
<child>
<object class="GtkFrame">
<child>
<object class="GtkListBox">
<property name="selection-mode">none</property>
<child>
<object class="AdwActionRow" id="recording_row">
<property name="activatable">True</property>
<property name="title" translatable="yes">Select a recording</property>
<property name="activatable-widget">select_recording_button</property>
<child>
<object class="GtkButton" id="select_recording_button">
<property name="label" translatable="yes">Select</property>
<property name="valign">center</property>
</object>
</child>
</object>
</child>
</object>
</child>
</object>
</child>
<child>
<object class="GtkBox">
<property name="orientation">horizontal</property>
<property name="margin-top">12</property>
<property name="margin-bottom">6</property>
<child>
<object class="GtkLabel">
<property name="halign">start</property>
<property name="valign">end</property>
<property name="hexpand">True</property>
<property name="label" translatable="yes">Tracks</property>
<attributes>
<attribute name="weight" value="bold"/>
</attributes>
</object>
</child>
<child>
<object class="GtkButton" id="edit_tracks_button">
<property name="has-frame">false</property>
<property name="icon-name">document-edit-symbolic</property>
</object>
</child>
</object>
</child>
<child>
<object class="GtkFrame" id="tracks_frame"/>
</child>
</object>
</child>
</object>
</child>
</object>
</child>
</object>
</interface>

View file

@ -0,0 +1,223 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<requires lib="gtk" version="4.0"/>
<requires lib="libadwaita" version="1.0"/>
<object class="GtkStack" id="widget">
<child>
<object class="GtkStackPage">
<property name="name">content</property>
<property name="child">
<object class="GtkBox">
<property name="orientation">vertical</property>
<child>
<object class="AdwHeaderBar">
<property name="show-start-title-buttons">false</property>
<property name="show-end-title-buttons">false</property>
<property name="title-widget">
<object class="GtkLabel">
<property name="label" translatable="yes">Work</property>
<style>
<class name="title"/>
</style>
</object>
</property>
<child>
<object class="GtkButton" id="back_button">
<property name="icon-name">go-previous-symbolic</property>
</object>
</child>
<child type="end">
<object class="GtkButton" id="save_button">
<property name="sensitive">False</property>
<property name="icon-name">object-select-symbolic</property>
<style>
<class name="suggested-action"/>
</style>
</object>
</child>
</object>
</child>
<child>
<object class="GtkInfoBar" id="info_bar">
<property name="revealed">False</property>
</object>
</child>
<child>
<object class="GtkScrolledWindow">
<property name="vexpand">true</property>
<child>
<object class="AdwClamp">
<property name="margin-start">12</property>
<property name="margin-end">12</property>
<property name="margin-top">18</property>
<property name="margin-bottom">12</property>
<child>
<object class="GtkBox">
<property name="margin-start">6</property>
<property name="margin-end">6</property>
<property name="margin-bottom">6</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkLabel">
<property name="halign">start</property>
<property name="margin-top">12</property>
<property name="margin-bottom">6</property>
<property name="label" translatable="yes">Overview</property>
<attributes>
<attribute name="weight" value="bold"/>
</attributes>
</object>
</child>
<child>
<object class="GtkFrame">
<child>
<object class="GtkListBox">
<property name="selection-mode">none</property>
<child>
<object class="AdwActionRow" id="composer_row">
<property name="activatable">True</property>
<property name="title" translatable="yes">Select a composer</property>
<property name="activatable-widget">composer_button</property>
<child>
<object class="GtkButton" id="composer_button">
<property name="label" translatable="yes">Select</property>
<property name="valign">center</property>
</object>
</child>
</object>
</child>
<child>
<object class="AdwActionRow">
<property name="activatable">True</property>
<property name="title" translatable="yes">Title</property>
<property name="activatable-widget">title_entry</property>
<child>
<object class="GtkEntry" id="title_entry">
<property name="valign">center</property>
<property name="hexpand">True</property>
</object>
</child>
</object>
</child>
<child>
<object class="AdwActionRow">
<property name="activatable">True</property>
<property name="title" translatable="yes">Publish to the server</property>
<property name="activatable-widget">upload_switch</property>
<child>
<object class="GtkSwitch" id="upload_switch">
<property name="valign">center</property>
<property name="active">True</property>
</object>
</child>
</object>
</child>
</object>
</child>
</object>
</child>
<child>
<object class="GtkBox">
<property name="orientation">horizontal</property>
<property name="margin-top">12</property>
<property name="margin-bottom">6</property>
<child>
<object class="GtkLabel">
<property name="halign">start</property>
<property name="valign">end</property>
<property name="hexpand">True</property>
<property name="label" translatable="yes">Instruments</property>
<attributes>
<attribute name="weight" value="bold"/>
</attributes>
</object>
</child>
<child>
<object class="GtkButton" id="add_instrument_button">
<property name="has-frame">false</property>
<property name="icon-name">list-add-symbolic</property>
</object>
</child>
</object>
</child>
<child>
<object class="GtkFrame" id="instrument_frame"/>
</child>
<child>
<object class="GtkBox">
<property name="orientation">horizontal</property>
<property name="margin-top">12</property>
<property name="margin-bottom">6</property>
<child>
<object class="GtkLabel">
<property name="halign">start</property>
<property name="valign">end</property>
<property name="hexpand">True</property>
<property name="label" translatable="yes">Structure</property>
<attributes>
<attribute name="weight" value="bold"/>
</attributes>
</object>
</child>
<child>
<object class="GtkButton" id="add_section_button">
<property name="has-frame">false</property>
<property name="icon-name">folder-new-symbolic</property>
</object>
</child>
<child>
<object class="GtkButton" id="add_part_button">
<property name="has-frame">false</property>
<property name="icon-name">list-add-symbolic</property>
</object>
</child>
</object>
</child>
<child>
<object class="GtkFrame" id="structure_frame"/>
</child>
</object>
</child>
</object>
</child>
</object>
</child>
</object>
</property>
</object>
</child>
<child>
<object class="GtkStackPage">
<property name="name">loading</property>
<property name="child">
<object class="GtkBox">
<property name="orientation">vertical</property>
<child>
<object class="AdwHeaderBar">
<property name="show-start-title-buttons">false</property>
<property name="show-end-title-buttons">false</property>
<property name="title-widget">
<object class="GtkLabel">
<property name="label" translatable="yes">Work</property>
<style>
<class name="title"/>
</style>
</object>
</property>
</object>
</child>
<child>
<object class="GtkSpinner">
<property name="hexpand">true</property>
<property name="vexpand">true</property>
<property name="halign">center</property>
<property name="valign">center</property>
<property name="spinning">True</property>
</object>
</child>
</object>
</property>
</object>
</child>
</object>
</interface>

View file

@ -0,0 +1,78 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<requires lib="gtk" version="4.0"/>
<requires lib="libadwaita" version="1.0"/>
<object class="GtkBox" id="widget">
<property name="orientation">vertical</property>
<child>
<object class="AdwHeaderBar">
<property name="show-start-title-buttons">false</property>
<property name="show-end-title-buttons">false</property>
<property name="title-widget">
<object class="GtkLabel">
<property name="label" translatable="yes">Work part</property>
<style>
<class name="title"/>
</style>
</object>
</property>
<child>
<object class="GtkButton" id="back_button">
<property name="icon-name">go-previous-symbolic</property>
</object>
</child>
<child type="end">
<object class="GtkButton" id="save_button">
<property name="icon-name">object-select-symbolic</property>
<style>
<class name="suggested-action"/>
</style>
</object>
</child>
</object>
</child>
<child>
<object class="GtkInfoBar" id="info_bar">
<property name="revealed">False</property>
</object>
</child>
<child>
<object class="GtkScrolledWindow">
<property name="vexpand">true</property>
<child>
<object class="AdwClamp">
<property name="margin-start">12</property>
<property name="margin-end">12</property>
<property name="margin-top">18</property>
<property name="margin-bottom">12</property>
<property name="maximum-size">500</property>
<property name="tightening-threshold">300</property>
<child>
<object class="GtkFrame">
<property name="valign">start</property>
<child>
<object class="GtkListBox">
<property name="selection-mode">none</property>
<child>
<object class="AdwActionRow">
<property name="activatable">True</property>
<property name="title" translatable="yes">Title</property>
<property name="activatable-widget">title_entry</property>
<child>
<object class="GtkEntry" id="title_entry">
<property name="valign">center</property>
<property name="hexpand">True</property>
</object>
</child>
</object>
</child>
</object>
</child>
</object>
</child>
</object>
</child>
</object>
</child>
</object>
</interface>

View file

@ -0,0 +1,78 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<requires lib="gtk" version="4.0"/>
<requires lib="libadwaita" version="1.0"/>
<object class="GtkBox" id="widget">
<property name="orientation">vertical</property>
<child>
<object class="AdwHeaderBar">
<property name="show-start-title-buttons">false</property>
<property name="show-end-title-buttons">false</property>
<property name="title-widget">
<object class="GtkLabel">
<property name="label" translatable="yes">Work section</property>
<style>
<class name="title"/>
</style>
</object>
</property>
<child>
<object class="GtkButton" id="back_button">
<property name="icon-name">go-previous-symbolic</property>
</object>
</child>
<child type="end">
<object class="GtkButton" id="save_button">
<property name="icon-name">object-select-symbolic</property>
<style>
<class name="suggested-action"/>
</style>
</object>
</child>
</object>
</child>
<child>
<object class="GtkInfoBar" id="info_bar">
<property name="revealed">False</property>
</object>
</child>
<child>
<object class="GtkScrolledWindow">
<property name="vexpand">true</property>
<child>
<object class="AdwClamp">
<property name="margin-start">12</property>
<property name="margin-end">12</property>
<property name="margin-top">18</property>
<property name="margin-bottom">12</property>
<property name="maximum-size">500</property>
<property name="tightening-threshold">300</property>
<child>
<object class="GtkFrame">
<property name="valign">start</property>
<child>
<object class="GtkListBox">
<property name="selection-mode">none</property>
<child>
<object class="AdwActionRow">
<property name="activatable">True</property>
<property name="title" translatable="yes">Title</property>
<property name="activatable-widget">title_entry</property>
<child>
<object class="GtkEntry" id="title_entry">
<property name="valign">center</property>
<property name="hexpand">True</property>
</object>
</child>
</object>
</child>
</object>
</child>
</object>
</child>
</object>
</child>
</object>
</child>
</object>
</interface>

View file

@ -1,7 +1,7 @@
use anyhow::Result;
pub fn init() -> Result<()> {
let bytes = glib::Bytes::from(include_bytes!("/home/johrpan/.var/app/org.gnome.Builder/cache/gnome-builder/projects/musicus/builds/de.johrpan.musicus.json-flatpak-org.gnome.Platform-x86_64-master-master/res/musicus.gresource").as_ref());
let bytes = glib::Bytes::from(include_bytes!("/home/johrpan/.var/app/org.gnome.Builder/cache/gnome-builder/projects/musicus/builds/de.johrpan.musicus.json-flatpak-org.gnome.Platform-x86_64-master-master/crates/musicus/res/musicus.gresource").as_ref());
let resource = gio::Resource::from_data(&bytes)?;
gio::resources_register(&resource);