Add Sound Module
This commit is contained in:
62
lib/read.py
62
lib/read.py
@@ -1,5 +1,4 @@
|
||||
import json
|
||||
import os
|
||||
import re
|
||||
from typing import cast
|
||||
|
||||
@@ -31,7 +30,6 @@ from PyQt6.QtGui import (
|
||||
QTextDocument,
|
||||
QTextListFormat,
|
||||
)
|
||||
from PyQt6.QtMultimedia import QAudioOutput, QMediaDevices, QMediaPlayer
|
||||
from PyQt6.QtSql import QSqlDatabase, QSqlQuery, QSqlQueryModel
|
||||
from PyQt6.QtWidgets import QDialog, QPushButton
|
||||
|
||||
@@ -45,16 +43,12 @@ class EditDialog(QDialog, Ui_Dialog):
|
||||
sessionSignal = pyqtSignal()
|
||||
displayedWord = pyqtSignal(int)
|
||||
newParagraph = pyqtSignal(int, int)
|
||||
soundEffect = QMediaPlayer()
|
||||
|
||||
def __init__(self, session, person_id: int) -> None:
|
||||
def __init__(self, parent, session, person_id: int) -> None:
|
||||
self.session = session
|
||||
super(EditDialog, self).__init__()
|
||||
super(EditDialog, self).__init__(parent)
|
||||
print(self.parent())
|
||||
self.person_id = person_id
|
||||
if not QResource.registerResource(
|
||||
os.path.join(os.path.dirname(__file__), "../ui/resources.rcc"), "/"
|
||||
):
|
||||
raise Exception("Unable to register resources.rcc")
|
||||
styleSheet = QResource(":/display.css").data().decode("utf-8")
|
||||
self.setupUi(self)
|
||||
#
|
||||
@@ -63,16 +57,6 @@ class EditDialog(QDialog, Ui_Dialog):
|
||||
#
|
||||
# End overrides
|
||||
#
|
||||
audioOutput = QAudioOutput()
|
||||
dev = None
|
||||
for output in QMediaDevices.audioOutputs():
|
||||
if output.id().data().decode("UTF-8") == "virt-input":
|
||||
dev = output
|
||||
break
|
||||
if dev:
|
||||
audioOutput.setDevice(dev)
|
||||
self.audioOutput = audioOutput
|
||||
self.soundEffect.setAudioOutput(audioOutput)
|
||||
self.load_book(self.person_id)
|
||||
blockNumber = self.block
|
||||
self.paraEdit.setReadOnly(True)
|
||||
@@ -101,10 +85,6 @@ class EditDialog(QDialog, Ui_Dialog):
|
||||
#
|
||||
self.displayedWord.connect(self.session.addWord)
|
||||
self.newParagraph.connect(self.session.addBlock)
|
||||
|
||||
self.soundEffect.errorOccurred.connect(self.mediaError)
|
||||
self.soundEffect.playbackStateChanged.connect(self.changedState)
|
||||
self.soundEffect.mediaStatusChanged.connect(self.changedStatus)
|
||||
return
|
||||
|
||||
#
|
||||
@@ -140,33 +120,6 @@ class EditDialog(QDialog, Ui_Dialog):
|
||||
self.setDefEdit(selection, word_id, definition)
|
||||
return
|
||||
|
||||
@pyqtSlot(QMediaPlayer.MediaStatus)
|
||||
def changedStatus(self, status):
|
||||
if status == QMediaPlayer.MediaStatus.LoadedMedia:
|
||||
self.soundEffect.play()
|
||||
audioOutput = self.soundEffect.audioOutput()
|
||||
if not audioOutput:
|
||||
self.soundEffect.setAudioOutput(self.audioOutput)
|
||||
audioOutput = self.audioOutput
|
||||
audioDevice = audioOutput.device()
|
||||
print(status)
|
||||
return
|
||||
|
||||
@pyqtSlot(QMediaPlayer.PlaybackState)
|
||||
def changedState(self, status):
|
||||
audioOutput = self.soundEffect.audioOutput()
|
||||
if not audioOutput:
|
||||
return
|
||||
audioDevice = audioOutput.device()
|
||||
print(status)
|
||||
return
|
||||
|
||||
@pyqtSlot(QMediaPlayer.Error, str)
|
||||
def mediaError(self, error, string):
|
||||
print(error)
|
||||
print(string)
|
||||
return
|
||||
|
||||
@pyqtSlot()
|
||||
def sessionAction(self) -> None:
|
||||
self.sessionSignal.emit()
|
||||
@@ -214,13 +167,8 @@ class EditDialog(QDialog, Ui_Dialog):
|
||||
print("Looking for audio")
|
||||
for entry in self.phonetics:
|
||||
if len(entry["audio"]) > 0:
|
||||
self.soundEffect.setSource(QUrl(entry["audio"]))
|
||||
if (
|
||||
self.soundEffect.mediaStatus()
|
||||
== QMediaPlayer.MediaStatus.LoadedMedia
|
||||
):
|
||||
self.soundEffect.play()
|
||||
return
|
||||
# self.parent().playAlert.emit()
|
||||
self.parent().playSound.emit(entry["audio"])
|
||||
return
|
||||
|
||||
@pyqtSlot()
|
||||
|
||||
Reference in New Issue
Block a user