Skip to content

Commit a77183a

Browse files
refactor: bump python to 3.12
1 parent 6626ac6 commit a77183a

File tree

7 files changed

+221
-222
lines changed

7 files changed

+221
-222
lines changed

.tool-versions

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
python 3.11.11
1+
python 3.12.11
22
uv 0.8.8
33
zig 0.14.0

core/controls/player_core.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@ def __init__(self, db: MusicDatabase, queue_manager: QueueManager, queue_view=No
2424
self.window = None
2525
self.favorites_manager = None
2626
self.current_file = None # Track currently playing file
27+
self.queue_handler = None # Will be set by MusicPlayer
28+
self.active_view = None # Will be set by MusicPlayer
2729

2830
# Set up end of track event handler
2931
self.media_player.event_manager().event_attach(vlc.EventType.MediaPlayerEndReached, self._on_track_end)
@@ -58,6 +60,9 @@ def play_pause(self) -> None:
5860
self._update_track_info()
5961
# Refresh colors to update play/pause indicator
6062
self._refresh_colors_callback()
63+
# Update play button icon
64+
if hasattr(self.progress_bar, 'controls') and hasattr(self.progress_bar.controls, 'update_play_button'):
65+
self.progress_bar.controls.update_play_button(True)
6166
try:
6267
from core.logging import controls_logger
6368
from eliot import log_message
@@ -72,6 +77,17 @@ def play_pause(self) -> None:
7277
filepath = self.queue_manager.queue_items[self.queue_manager.current_index]
7378
self._play_file(filepath)
7479
else:
80+
# Try to populate queue from current view (works in any library section)
81+
if self.queue_handler:
82+
# Get all tracks from current view
83+
all_filepaths = self.queue_handler._get_all_filepaths_from_view()
84+
if all_filepaths:
85+
# Populate queue and play first track
86+
track_to_play = self.queue_manager.populate_and_play(all_filepaths, 0)
87+
if track_to_play:
88+
self._play_file(track_to_play)
89+
return
90+
# Fallback: try to get current filepath
7591
filepath = self._get_current_filepath()
7692
if filepath:
7793
self._play_file(filepath)
@@ -81,6 +97,9 @@ def play_pause(self) -> None:
8197
self.is_playing = False
8298
# Refresh colors to update play/pause indicator
8399
self._refresh_colors_callback()
100+
# Update play button icon
101+
if hasattr(self.progress_bar, 'controls') and hasattr(self.progress_bar.controls, 'update_play_button'):
102+
self.progress_bar.controls.update_play_button(False)
84103
try:
85104
from core.logging import controls_logger
86105
from eliot import log_message

core/player/__init__.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -287,6 +287,10 @@ def _init_manager_modules(self):
287287
# Share the active view tracking
288288
self.queue_handler.active_view = self.active_view
289289

290+
# Connect queue handler and active view to player_core for media key queue population
291+
self.player_core.queue_handler = self.queue_handler
292+
self.player_core.active_view = self.active_view
293+
290294
# Progress Controller
291295
self.progress_controller = PlayerProgressController(
292296
window=self.window,
@@ -315,6 +319,7 @@ def _init_manager_modules(self):
315319
load_recently_played_callback=lambda: self.library_handler.load_recently_played(),
316320
refresh_colors_callback=lambda: self.ui_manager.refresh_colors(self.player_core),
317321
_item_filepath_map=self._item_filepath_map,
322+
library_handler=self.library_handler,
318323
)
319324
# Share the active view tracking
320325
self.event_handlers.active_view = self.active_view

core/player/handlers.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ def __init__(
2727
load_recently_played_callback,
2828
refresh_colors_callback,
2929
_item_filepath_map,
30+
library_handler=None,
3031
):
3132
"""Initialize the event handlers.
3233
@@ -64,6 +65,7 @@ def __init__(
6465
self.load_recently_played = load_recently_played_callback
6566
self.refresh_colors = refresh_colors_callback
6667
self._item_filepath_map = _item_filepath_map
68+
self.library_handler = library_handler
6769
self.active_view = 'library'
6870

6971
def handle_drop(self, event):
@@ -378,10 +380,8 @@ def perform_search(self, search_text):
378380
return
379381

380382
if rows:
381-
# Need to populate queue view - this is handled by the library manager
382-
# but we need access to _populate_queue_view from PlayerLibraryManager
383-
# For now, we'll just refresh the library
384-
self.load_library()
383+
# Populate queue view with search results
384+
self.library_handler._populate_queue_view(rows)
385385
self.refresh_colors()
386386

387387
def clear_search(self):

pyproject.toml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ authors = [
66
{ name = "pythoninthegrass", email = "4097471+pythoninthegrass@users.noreply.github.com" }
77
]
88

9-
requires-python = ">=3.11,<3.12"
9+
requires-python = ">=3.12,<3.13"
1010

1111
dependencies = [
1212
"customtkinter>=5.2.2",
@@ -21,15 +21,15 @@ dependencies = [
2121
"python-vlc>=3.0.21203",
2222
"tk>=0.1.0",
2323
"tkinterdnd2>=0.4.2",
24-
"ziggy-pydust>=0.25.1",
24+
"ziggy-pydust==0.25.1",
2525
]
2626

2727
[project.optional-dependencies]
2828
dev = [
2929
"pyclean>=3.1.0",
3030
"ruff>=0.9.6",
3131
"watchdog>=6.0.0",
32-
"ziggy-pydust>=0.25.1",
32+
"ziggy-pydust==0.25.1",
3333
]
3434

3535
test = [

ruff.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,8 @@ exclude = [
3737
"venv",
3838
]
3939

40-
# Assume Python 3.13
41-
target-version = "py313"
40+
# Assume Python 3.12
41+
target-version = "py312"
4242

4343
[format]
4444
# Use spaces instead of tabs

0 commit comments

Comments
 (0)