Anna Schumaker
52eca7fd20
trackdb: Add special Tags for user-controlled playlists
...
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-07-23 12:55:03 -04:00
Anna Schumaker
11c9f0b267
trackdb: Retry saving if something goes wrong
...
Occasionally we have a problem with tags changing during pickling. If
this happens, reschedule the save for later and hope it doesn't happen
again
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-07-23 12:52:48 -04:00
Anna Schumaker
d1456b14bd
trackdb: Fix setting tags when loading tracks
...
We have to do this as a separate step once the tagstores have been set
in tagdb/tags.py
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-07-23 12:52:48 -04:00
Anna Schumaker
ba64910ef9
trackdb: Clean up test_trackdb.py
...
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-07-23 12:52:48 -04:00
Anna Schumaker
c27d4d5ce1
trackdb: Clean up __init__.py file
...
And use the new tags.get_state() and tag.set_state() functions
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-07-23 12:52:48 -04:00
Anna Schumaker
0b4c440d66
trackdb: Give tags a get_state() and set_state() function
...
To be used during save and reload
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-07-23 12:52:48 -04:00
Anna Schumaker
7d4e92faa8
trackdb: Move LibraryPaths into the __init__.py file
...
And rename to LibraryTag
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-07-23 12:52:48 -04:00
Anna Schumaker
85727d786b
trackdb: Clean up library test
...
Prepare to move it over to a different file
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-07-23 12:52:48 -04:00
Anna Schumaker
fc647cd9b1
trackdb: Move the LibraryStore into the trackdb/__init__.py file
...
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-07-23 12:52:48 -04:00
Anna Schumaker
647a1955e5
trackdb: Remove the trackdb.track.TrackUpdated publisher
...
And prefer using the one from the TrackAllocator
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-07-23 12:52:48 -04:00
Anna Schumaker
109b1b7c62
trackdb: Use the LibraryStore for library paths
...
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-07-23 12:52:48 -04:00
Anna Schumaker
2199ff819c
trackdb: Give LibraryPaths a clear() function
...
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-07-23 12:52:48 -04:00
Anna Schumaker
8d6d4a0b44
trackdb: Give tracks an about_to_remove() function
...
And have the TrackAllocator call it before removing tracks
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-07-23 12:52:48 -04:00
Anna Schumaker
ec72f186bb
trackdb: Have LibraryPaths inherit from Tag
...
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-07-23 12:52:48 -04:00
Anna Schumaker
e5f9ac2556
trackdb: Use a thread.Thread for LibraryPath scanning
...
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-07-23 12:52:48 -04:00
Anna Schumaker
9d90ba2c47
trackdb: Pass pathlib.Path()s to the LibraryPath constructor
...
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-07-23 12:52:48 -04:00
Anna Schumaker
30f5aa18df
trackdb: Remove unused LibraryPath.add_track() function
...
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-07-23 12:52:48 -04:00
Anna Schumaker
31902a8b44
trackdb: Use the TrackAllocator Added and Removed publishers directly
...
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-07-23 12:52:48 -04:00
Anna Schumaker
235c7998dc
trackdb: Convert LibraryPath.tracks into a list
...
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-07-23 12:52:48 -04:00
Anna Schumaker
c089bfc721
trackdb: Remove LibraryPath __getitem__() function
...
And use the TrackAllocator for this instead
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-07-23 12:52:48 -04:00
Anna Schumaker
51a1078b4d
trackdb: Rename LibraryPath.path to LibraryPath.name
...
So it matches the name of the field in the Tag class
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-07-23 12:52:48 -04:00
Anna Schumaker
219a3184b0
trackdb: Use a TagSuperStore for Years
...
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-07-23 12:52:48 -04:00
Anna Schumaker
d2a5d940bf
trackdb: Use a TagStore for Decades
...
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-07-23 12:52:48 -04:00
Anna Schumaker
0e23e25edf
trackdb: Use a TagStore for Genres
...
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-07-23 12:52:48 -04:00
Anna Schumaker
f98d8bd4dc
trackdb: Use TagSuperStore for Albums
...
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-07-23 12:52:48 -04:00
Anna Schumaker
d342cb398a
trackdb: Use TagStore for Artists
...
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-07-23 12:52:48 -04:00
Anna Schumaker
71ae845a99
trackdb: Use the TrackAllocator during scanning
...
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-07-23 12:52:48 -04:00
Anna Schumaker
8a412ca6dc
trackdb: Give TrackAllocators a played() function
...
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-07-23 12:52:48 -04:00
Anna Schumaker
518e3cf9ad
trackdb: Give TrackAllocators an autoremove() function
...
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-07-23 12:52:48 -04:00
Anna Schumaker
eb6eb0180b
trackdb: Give TrackAllocators a len() function
...
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-07-23 12:52:48 -04:00
Anna Schumaker
c5e317b737
trackdb: Give TrackAllocators a function to list tracks in a library
...
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-07-23 12:52:48 -04:00
Anna Schumaker
b3b39d2fc4
trackdb: Give state functions to the TrackAllocator
...
So that we don't try to pickle out things that can't be pickled
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-07-23 12:52:48 -04:00
Anna Schumaker
7d310acd8c
trackdb: Add a TrackAllocator() class
...
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-07-23 12:52:48 -04:00
Anna Schumaker
96fb4e86e7
trackdb: Use the new Metadata class for reading track metadata
...
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-07-23 12:52:48 -04:00
Anna Schumaker
f4a1ef67e8
trackdb: Store the LibraryPath pointer in the track
...
This makes it so tracks can get to their libraries directly
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-07-23 12:52:48 -04:00
Anna Schumaker
8fcd84e7d3
trackdb: Remove tags dict() from tracks
...
Just set and get these values directly
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-07-23 12:52:48 -04:00
Anna Schumaker
ebf7eb6abc
trackdb: Ride the bus instead of an idle queue
...
This lets us schedule saving on a regular interval instead of waiting
for the user to be idle.
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-07-23 12:52:48 -04:00
Anna Schumaker
ba5f21b0c0
Icons: Add our custom icons to the search path
...
But only when we're running in debug mode. Running while installed
should use the icons from the default search path
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-07-23 12:51:54 -04:00
Anna Schumaker
d98eca8533
pulser: Hide the pulser when not pulsing
...
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-07-23 12:51:54 -04:00
Anna Schumaker
dc86b1c32e
pulser: Pulse for busses, too
...
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-07-23 12:51:54 -04:00
Anna Schumaker
fd43952d54
pulser: Pulse when threads are started
...
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-07-23 12:51:54 -04:00
Anna Schumaker
85b5c964a6
sidebar: Save the current page
...
And initialize to the Library page to make adding that first directory
easier for the user.
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-07-23 12:51:54 -04:00
Anna Schumaker
a00701e722
sidebar: Implement a custom sidebar switcher
...
I'm not a fan of either of the built-in stack switching widgets, so I
implemented my own to take up less space on the side.
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-07-23 12:51:54 -04:00
Anna Schumaker
aff3fade6f
sidebar: Begin sidebar widgets
...
They involve a stack and a vbox where toggle buttons will eventually be
placed.
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-07-23 12:51:54 -04:00
Anna Schumaker
5275feecf3
runtime: Handle changing the runtime label
...
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-07-23 12:51:54 -04:00
Anna Schumaker
f40d72c05b
runtime: Handle changing the visible count label
...
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-07-23 12:51:54 -04:00
Anna Schumaker
b10851496c
runtime: Add widgets for runtime and visible tracks
...
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-07-23 12:51:54 -04:00
Anna Schumaker
5556ed163c
pulser: Add a progress bar to the UI window
...
The intention is to pulse it whenever a background thread is running. I
also add a horizontal separator to show that this is a separate area
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-07-23 12:51:54 -04:00
Anna Schumaker
9339ce22bb
pane: Add a GtkPane to the Window's grid
...
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-07-23 12:51:54 -04:00
Anna Schumaker
ac5c8c30d8
window: Add a GtkGrid as the window's main child
...
We'll pack in more widgets later
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-07-23 12:51:54 -04:00