diff --git a/res/resources.xml b/res/resources.xml
index d59dcd3..51b79bd 100644
--- a/res/resources.xml
+++ b/res/resources.xml
@@ -18,6 +18,8 @@
ui/recording_selector.ui
ui/recording_selector_screen.ui
ui/section_editor.ui
+ ui/tracks_editor.ui
+ ui/track_editor.ui
ui/window.ui
ui/work_editor.ui
ui/work_screen.ui
diff --git a/res/ui/track_editor.ui b/res/ui/track_editor.ui
new file mode 100644
index 0000000..eac3a38
--- /dev/null
+++ b/res/ui/track_editor.ui
@@ -0,0 +1,69 @@
+
+
+
+
+
+
diff --git a/res/ui/tracks_editor.ui b/res/ui/tracks_editor.ui
new file mode 100644
index 0000000..94168aa
--- /dev/null
+++ b/res/ui/tracks_editor.ui
@@ -0,0 +1,280 @@
+
+
+
+
+
+ False
+ True
+ 400
+ 300
+ dialog
+
+
+
+ True
+ False
+ 18
+ 12
+ 6
+
+
+ True
+ False
+ end
+ Recording
+
+
+ 0
+ 0
+
+
+
+
+ True
+ True
+ True
+ True
+
+
+ True
+ False
+ False
+ crossfade
+ True
+
+
+ True
+ False
+ start
+ Select …
+
+
+ unselected
+
+
+
+
+ True
+ False
+ vertical
+
+
+ True
+ False
+ start
+ Work
+ end
+
+
+
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ False
+ 0.5
+ start
+ Performers
+ end
+
+
+ False
+ True
+ 1
+
+
+
+
+ selected
+ 1
+
+
+
+
+
+
+ 1
+ 0
+
+
+
+
+ True
+ False
+ True
+ 6
+
+
+ True
+ True
+ in
+
+
+
+
+
+ True
+ True
+ 0
+
+
+
+
+ True
+ False
+ vertical
+ 6
+
+
+ True
+ True
+ True
+
+
+ True
+ False
+ list-add-symbolic
+
+
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ True
+ True
+
+
+ True
+ False
+ edit-symbolic
+
+
+
+
+ False
+ True
+ 2
+
+
+
+
+ True
+ True
+ True
+
+
+ True
+ False
+ list-remove-symbolic
+
+
+
+
+ False
+ True
+ 3
+
+
+
+
+ True
+ True
+ True
+
+
+ True
+ False
+ go-down-symbolic
+
+
+
+
+ False
+ True
+ end
+ 4
+
+
+
+
+ True
+ True
+ True
+
+
+ True
+ False
+ go-up-symbolic
+
+
+
+
+ False
+ True
+ end
+ 5
+
+
+
+
+ False
+ True
+ 1
+
+
+
+
+ 0
+ 1
+ 2
+
+
+
+
+
+
+
+
+
diff --git a/res/ui/window.ui b/res/ui/window.ui
index 68dd11b..f15c310 100644
--- a/res/ui/window.ui
+++ b/res/ui/window.ui
@@ -193,6 +193,10 @@
Add recording
win.add-recording
+ -
+ Add tracks
+ win.add-tracks
+
diff --git a/src/backend.rs b/src/backend.rs
index ae1f9af..ba01df3 100644
--- a/src/backend.rs
+++ b/src/backend.rs
@@ -2,6 +2,8 @@ use super::database::*;
use anyhow::Result;
use futures_channel::oneshot;
use futures_channel::oneshot::Sender;
+use std::cell::RefCell;
+use std::path::PathBuf;
enum BackendAction {
UpdatePerson(Person, Sender>),
@@ -32,10 +34,11 @@ use BackendAction::*;
pub struct Backend {
action_sender: std::sync::mpsc::Sender,
+ music_library_path: RefCell