Commit Graph

743 Commits

Author SHA1 Message Date
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