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
Anna Schumaker
3566db7ede
header: Add Title and Subtitle widgets
...
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-07-23 12:51:54 -04:00
Anna Schumaker
5fc2944aec
header: Add a header bar to the window
...
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-07-23 12:51:54 -04:00
Anna Schumaker
5f23e34972
window: Set title and window icon
...
The window icon doesn't exist at this point, but set the name based on
what it will be called once we configure the icon theme properly
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-07-23 12:51:54 -04:00
Anna Schumaker
6f3558a83e
window: Handle user maximize / unmaximize
...
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-07-23 12:51:54 -04:00
Anna Schumaker
1c70390449
window: Handle user resizes
...
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-07-23 12:51:54 -04:00
Anna Schumaker
2455d577df
UI: Start basic files for GtkApplication and GtkWindows
...
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-07-23 12:51:54 -04:00
Anna Schumaker
1ed25e7d36
lib: Use the new version features for data files
...
This lets us use a different directory for debugging
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-07-23 12:51:38 -04:00
Anna Schumaker
f08ce13a69
lib: Create a file for getting the current version
...
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-07-23 12:51:36 -04:00
Anna Schumaker
52a36a2f83
lib: Add an artistsort() function to the Metadata class
...
This is used to get the sort order for artists or album artists,
depending on which is set.
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-07-23 12:51:35 -04:00
Anna Schumaker
b75d43a304
lib: Create a Counter object
...
With increment() and decrement() functions that can be used to change
the GtkAdjustment's value. These functions return None if the value did
not change.
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-07-23 12:51:34 -04:00
Anna Schumaker
fc82beca3d
lib: Don't allow adding a track to a tag multiple times
...
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-07-23 12:51:33 -04:00
Anna Schumaker
54498f174a
lib: Track the runtime of Tags
...
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-07-23 12:51:31 -04:00