|
|
@@ -1,14 +1,19 @@
|
|
|
from PyQt5 import QtWidgets
|
|
|
from PyQt5.QtCore import pyqtSignal
|
|
|
from PyQt5.QtGui import QFont
|
|
|
-from PyQt5.QtWidgets import QTextEdit
|
|
|
+from PyQt5.QtWidgets import QTextEdit, QApplication
|
|
|
|
|
|
+from core.repositories import SessionRepository
|
|
|
from ui.qt.widgets.frame_notes_ui import Ui_frameNotes
|
|
|
|
|
|
|
|
|
class FrameNotes(QtWidgets.QFrame):
|
|
|
+ notesChanged = pyqtSignal()
|
|
|
+
|
|
|
def __init__(self, parent=None):
|
|
|
super().__init__(parent)
|
|
|
+ self.dirty = False
|
|
|
+ self.playlist = None
|
|
|
self.createWidgets()
|
|
|
|
|
|
def createWidgets(self):
|
|
|
@@ -33,6 +38,9 @@ class FrameNotes(QtWidgets.QFrame):
|
|
|
self.ui.btnUndo.clicked.connect(self.ui.sessionNotes.undo)
|
|
|
self.ui.btnRedo.clicked.connect(self.ui.sessionNotes.redo)
|
|
|
|
|
|
+ self.ui.sessionNotes.textChanged.connect(self.notes_changed)
|
|
|
+ QtWidgets.qApp.focusChanged.connect(self.focus_changed)
|
|
|
+
|
|
|
# A list of all format-related widgets/actions, so we can disable/enable signals when updating.
|
|
|
self._format_actions = [
|
|
|
self.ui.btnBold,
|
|
|
@@ -63,9 +71,35 @@ class FrameNotes(QtWidgets.QFrame):
|
|
|
"""
|
|
|
# # Disable signals for all format widgets, so changing values here does not trigger further formatting.
|
|
|
self._block_signals(self._format_actions, True)
|
|
|
-
|
|
|
self.ui.btnItalic.setChecked(self.ui.sessionNotes.fontItalic())
|
|
|
self.ui.btnItalic.setChecked(self.ui.sessionNotes.fontUnderline())
|
|
|
self.ui.btnBold.setChecked(self.ui.sessionNotes.fontWeight() == QFont.Bold)
|
|
|
-
|
|
|
self._block_signals(self._format_actions, False)
|
|
|
+
|
|
|
+ def notes(self):
|
|
|
+ return self.ui.sessionNotes.toHtml()
|
|
|
+
|
|
|
+ def set_notes(self, html):
|
|
|
+ self.ui.sessionNotes.textChanged.disconnect(self.notes_changed)
|
|
|
+ self.ui.sessionNotes.setHtml(html)
|
|
|
+ self.ui.sessionNotes.textChanged.connect(self.notes_changed)
|
|
|
+
|
|
|
+ def set_playlist(self, playlist):
|
|
|
+ self.playlist = playlist
|
|
|
+ self.set_notes(playlist.notes)
|
|
|
+
|
|
|
+ def focus_changed(self, old, now):
|
|
|
+ if old is self.ui.sessionNotes and self.dirty:
|
|
|
+ self.save()
|
|
|
+
|
|
|
+ def notes_changed(self):
|
|
|
+ self.dirty = True
|
|
|
+
|
|
|
+ def save(self):
|
|
|
+ print("save notes")
|
|
|
+ notes = self.notes()
|
|
|
+ session_repo = SessionRepository()
|
|
|
+ self.playlist.notes = notes
|
|
|
+ session_repo.commit()
|
|
|
+ self.dirty = False
|
|
|
+
|