From 11726900f7234bf4a081d155772e85082be673e3 Mon Sep 17 00:00:00 2001 From: "Christopher T. Johnson" Date: Mon, 18 Dec 2023 09:25:57 -0500 Subject: [PATCH] Sounds starting to work --- lib/person.py | 10 ++++------ lib/read.py | 44 ++++++++++++++++++++++++++++++++++++++------ 2 files changed, 42 insertions(+), 12 deletions(-) diff --git a/lib/person.py b/lib/person.py index 701b3dc..8a29a39 100644 --- a/lib/person.py +++ b/lib/person.py @@ -236,8 +236,7 @@ class PersonDialog(QDialog, Ui_Dialog): start = datetime.fromisoformat(self.sessionCombo.currentText()) msg["Subject"] = f"TT English, Session: {start.date().isoformat()}" msg["From"] = "Christopher T. Johnson " - # msg["To"] = self.emailEdit.text().strip() - msg["To"] = "cjohnson@troglodite.com" + msg["To"] = self.emailEdit.text().strip() msg.set_content("There is a html message you should read") msg.add_alternative(self.inliner.inline(html), subtype="html") server = smtplib.SMTP(secrets.SMTP_HOST, secrets.SMTP_PORT) @@ -363,12 +362,11 @@ class PersonDialog(QDialog, Ui_Dialog): def makeDefinitions(self) -> str: query = QSqlQuery() query.prepare( - "SELECT w.word, w.definition FROM sessions s " - "LEFT JOIN session_word sw " - "ON (s.session_id = s.session_id) " + "SELECT w.word, w.definition " + "FROM session_word sw " "LEFT JOIN words w " "ON (sw.word_id = w.word_id) " - "WHERE s.session_id = :session_id " + "WHERE sw.session_id = :session_id " "ORDER BY w.word" ) diff --git a/lib/read.py b/lib/read.py index fdfe870..225af60 100644 --- a/lib/read.py +++ b/lib/read.py @@ -95,6 +95,7 @@ class EditDialog(QDialog, Ui_Dialog): # self.sessionBtn.clicked.connect(self.sessionAction) self.sessionBtn.clicked.connect(self.session.timerAction) self.paraEdit.verticalScrollBar().valueChanged.connect(self.scrollSlot) + self.defEdit.selectionChanged.connect(self.recursiveDef) # # Connect signals # @@ -106,9 +107,39 @@ class EditDialog(QDialog, Ui_Dialog): self.soundEffect.mediaStatusChanged.connect(self.changedStatus) return + # + # Events + # + # # slots # + @pyqtSlot() + def recursiveDef(self): + cursor = self.defEdit.textCursor() + selection = cursor.selectedText().strip() + if len(selection) <= 0: + return + query = QSqlQuery() + query.prepare("SELECT * FROM words " "WHERE word = :word") + query.bindValue(":word", selection) + if not query.exec(): + query_error() + if not query.next(): + response = requests.get( + f"https://api.dictionaryapi.dev/api/v2/entries/en/{selection}" + ) + if response.status_code != 200: + return + definitions = json.loads(response.content.decode("utf-8")) + definition = definitions[0] + word_id = None + else: + definition = query.value("definition") + word_id = query.value("word_id") + self.setDefEdit(selection, word_id, definition) + return + @pyqtSlot(QMediaPlayer.MediaStatus) def changedStatus(self, status): if status == QMediaPlayer.MediaStatus.LoadedMedia: @@ -117,9 +148,7 @@ class EditDialog(QDialog, Ui_Dialog): if not audioOutput: self.soundEffect.setAudioOutput(self.audioOutput) audioOutput = self.audioOutput - print(f"{status} No audioOutput???") audioDevice = audioOutput.device() - print(audioDevice.description(), audioDevice.id().data()) print(status) return @@ -127,10 +156,8 @@ class EditDialog(QDialog, Ui_Dialog): def changedState(self, status): audioOutput = self.soundEffect.audioOutput() if not audioOutput: - print(f"{status} No AudioOutput") return audioDevice = audioOutput.device() - print(audioDevice.description(), audioDevice.id().data()) print(status) return @@ -155,7 +182,7 @@ class EditDialog(QDialog, Ui_Dialog): cursor = self.paraEdit.textCursor() fmt = cursor.charFormat() if not fmt.fontUnderline(): - self.addword() + self.addWord() cursor = self.paraEdit.textCursor() textBlock = self.paraEdit.document().findBlock(cursor.position()) blockNum = textBlock.blockNumber() @@ -586,6 +613,10 @@ class EditDialog(QDialog, Ui_Dialog): return word = query.value("word") definition = json.loads(query.value("definition")) + self.setDefEdit(word, query.value("word_id"), definition) + return + + def setDefEdit(self, word, word_id, definition): if "phonetics" in definition: self.phonetics = definition["phonetics"] else: @@ -595,7 +626,8 @@ class EditDialog(QDialog, Ui_Dialog): cursor.insertHtml(self.defToHtml(word, definition)) cursor.setPosition(0) self.defEdit.setTextCursor(cursor) - self.displayedWord.emit(query.value("word_id")) + if word_id: + self.displayedWord.emit(word_id) return def showDefinition(self) -> None: