Merge branch 'dev'

This commit is contained in:
Keith Edmunds 2024-04-05 11:23:59 +01:00
commit 1a5bd638c0
3 changed files with 48 additions and 23 deletions

View File

@ -1123,33 +1123,15 @@ class Window(QMainWindow, Ui_MainWindow):
# Restore volume if -3dB active # Restore volume if -3dB active
if self.btnDrop3db.isChecked(): if self.btnDrop3db.isChecked():
log.debug("Reset -3db button")
self.btnDrop3db.setChecked(False) self.btnDrop3db.setChecked(False)
# Show closing volume graph
if track_sequence.now.fade_graph:
track_sequence.now.fade_graph.plot()
else:
log.error("No fade_graph")
# Play (new) current track # Play (new) current track
if not track_sequence.now.path: if not track_sequence.now.path:
log.error("No path for next track") log.error("No path for next track")
return return
self.music.play(track_sequence.now.path, position) self.music.play(track_sequence.now.path, position)
# Note that track is playing
track_sequence.now.start()
self.playing = True
# Disable play next controls
self.catch_return_key = True
# Notify model
self.active_proxy_model().current_track_started()
# Update headers
self.update_headers()
# Ensure 100% volume # Ensure 100% volume
# For as-yet unknown reasons. sometimes the volume gets # For as-yet unknown reasons. sometimes the volume gets
# reset to zero within 200mS or so of starting play. This # reset to zero within 200mS or so of starting play. This
@ -1164,6 +1146,36 @@ class Window(QMainWindow, Ui_MainWindow):
break break
sleep(0.1) sleep(0.1)
# TODO: remove sleep() calls - used to try to isolate bug #223
# Show closing volume graph
sleep(1)
if track_sequence.now.fade_graph:
track_sequence.now.fade_graph.plot()
else:
log.error("No fade_graph")
# Note that track is playing
sleep(1)
log.error("set track_sequence")
track_sequence.now.start()
self.playing = True
# Disable play next controls
sleep(1)
log.error("catch return key")
self.catch_return_key = True
self.show_status_message("Play controls: Disabled", 0)
# Notify model
sleep(1)
log.error("active_proxy_model().current_track_started()")
self.active_proxy_model().current_track_started()
# Update headers
sleep(1)
log.error("update headers")
self.update_headers()
def preview(self) -> None: def preview(self) -> None:
""" """
Preview selected or next track. We use a different mechanism to Preview selected or next track. We use a different mechanism to
@ -1477,6 +1489,7 @@ class Window(QMainWindow, Ui_MainWindow):
# Enable controls # Enable controls
self.catch_return_key = False self.catch_return_key = False
self.show_status_message("Play controls: Enabled", 0)
def tab_change(self): def tab_change(self):
"""Called when active tab changed""" """Called when active tab changed"""
@ -1557,6 +1570,7 @@ class Window(QMainWindow, Ui_MainWindow):
if self.frame_silent.styleSheet() != css_silence: if self.frame_silent.styleSheet() != css_silence:
self.frame_silent.setStyleSheet(css_silence) self.frame_silent.setStyleSheet(css_silence)
self.catch_return_key = False self.catch_return_key = False
self.show_status_message("Play controls: Enabled", 0)
# Set warning colour on time to silence box when fade starts # Set warning colour on time to silence box when fade starts
elif time_to_fade <= 500: elif time_to_fade <= 500:
css_fade = f"background: {Config.COLOUR_WARNING_TIMER}" css_fade = f"background: {Config.COLOUR_WARNING_TIMER}"
@ -1569,6 +1583,7 @@ class Window(QMainWindow, Ui_MainWindow):
f"background: {Config.COLOUR_WARNING_TIMER}" f"background: {Config.COLOUR_WARNING_TIMER}"
) )
self.catch_return_key = False self.catch_return_key = False
self.show_status_message("Play controls: Enabled", 0)
else: else:
self.frame_silent.setStyleSheet("") self.frame_silent.setStyleSheet("")
self.frame_fade.setStyleSheet("") self.frame_fade.setStyleSheet("")

View File

@ -160,7 +160,7 @@ class PipeClient():
def _write_pipe_open(self) -> None: def _write_pipe_open(self) -> None:
"""Open _write_pipe.""" """Open _write_pipe."""
self._write_pipe = open(WRITE_NAME, 'w', encoding='ascii') self._write_pipe = open(WRITE_NAME, 'w')
def _read_thread_start(self) -> None: def _read_thread_start(self) -> None:
"""Start read_pipe thread.""" """Start read_pipe thread."""
@ -204,7 +204,7 @@ class PipeClient():
"""Read FIFO in worker thread.""" """Read FIFO in worker thread."""
# Thread will wait at this read until it connects. # Thread will wait at this read until it connects.
# Connection should occur as soon as _write_pipe has connected. # Connection should occur as soon as _write_pipe has connected.
with open(READ_NAME, 'r', encoding='ascii') as read_pipe: with open(READ_NAME, 'r') as read_pipe:
message = '' message = ''
pipe_ok = True pipe_ok = True
while pipe_ok: while pipe_ok:

View File

@ -2,11 +2,10 @@
from __future__ import annotations from __future__ import annotations
import obsws_python as obs # type: ignore import obsws_python as obs # type: ignore
import re import re
from dataclasses import dataclass
from datetime import datetime, timedelta from datetime import datetime, timedelta
from enum import auto, Enum from enum import auto, Enum
from operator import attrgetter from operator import attrgetter
from pprint import pprint from time import sleep
from random import shuffle from random import shuffle
from typing import List, Optional from typing import List, Optional
@ -273,14 +272,21 @@ class PlaylistModel(QAbstractTableModel):
) )
return return
# TODO: remove sleep/log calls, used to debug #223
# Check for OBS scene change # Check for OBS scene change
sleep(1)
log.error("Call OBS scene change")
self.obs_scene_change(row_number) self.obs_scene_change(row_number)
with Session() as session: with Session() as session:
# Update Playdates in database # Update Playdates in database
sleep(1)
log.error("update playdates")
Playdates(session, track_sequence.now.track_id) Playdates(session, track_sequence.now.track_id)
# Mark track as played in playlist # Mark track as played in playlist
sleep(1)
log.error("Mark track as played")
plr = session.get(PlaylistRows, track_sequence.now.plr_id) plr = session.get(PlaylistRows, track_sequence.now.plr_id)
if plr: if plr:
plr.played = True plr.played = True
@ -289,6 +295,8 @@ class PlaylistModel(QAbstractTableModel):
log.error(f"Can't retrieve plr, {track_sequence.now.plr_id=}") log.error(f"Can't retrieve plr, {track_sequence.now.plr_id=}")
# Update track times # Update track times
sleep(1)
log.error("Update track times")
if prd: if prd:
prd.start_time = track_sequence.now.start_time prd.start_time = track_sequence.now.start_time
prd.end_time = track_sequence.now.end_time prd.end_time = track_sequence.now.end_time
@ -305,6 +313,8 @@ class PlaylistModel(QAbstractTableModel):
# Find next track # Find next track
# Get all unplayed track rows # Get all unplayed track rows
sleep(1)
log.error("Find next track")
next_row = None next_row = None
unplayed_rows = self.get_unplayed_rows() unplayed_rows = self.get_unplayed_rows()
if unplayed_rows: if unplayed_rows: