Add trove auto save function
This commit is contained in:
parent
01e9780bb8
commit
a67b9c48c2
2 changed files with 41 additions and 14 deletions
|
|
@ -1,5 +1,6 @@
|
|||
"""Tool Supporting Basic Editor Functions"""
|
||||
from typing import cast, Protocol
|
||||
from PySide6.QtCore import QTimer
|
||||
from PySide6.QtWidgets import QTextEdit, QVBoxLayout
|
||||
|
||||
import trovedb.trove as tr
|
||||
|
|
@ -16,7 +17,33 @@ class ToolBasicEditor(Tool):
|
|||
|
||||
self._text_edit = QTextEdit()
|
||||
layout.addWidget(self._text_edit)
|
||||
|
||||
self._content_dirty = False
|
||||
self._auto_save_timer = QTimer(self)
|
||||
self._auto_save_timer.setSingleShot(True)
|
||||
self._auto_save_timer.setInterval(2000) # 2 seconds after typing stops
|
||||
self._auto_save_timer.timeout.connect(self._perform_auto_save)
|
||||
|
||||
self._text_edit.textChanged.connect(self._schedule_auto_save)
|
||||
|
||||
self.refresh()
|
||||
|
||||
def refresh(self):
|
||||
self._text_edit.setPlainText(self.note.read_content().decode("utf-8"))
|
||||
self._content_dirty = False
|
||||
|
||||
def _schedule_auto_save(self):
|
||||
self._content_dirty = True
|
||||
self._auto_save_timer.stop()
|
||||
self._auto_save_timer.start()
|
||||
|
||||
def _perform_auto_save(self):
|
||||
if self._content_dirty:
|
||||
content = self._text_edit.toPlainText().encode("utf-8")
|
||||
self.note.write_content(content)
|
||||
self._content_dirty = False
|
||||
|
||||
def closeEvent(self, event):
|
||||
if self._content_dirty:
|
||||
self._perform_auto_save()
|
||||
super().closeEvent(event)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue