Add trove auto save function

This commit is contained in:
Andrew Mulbrook 2026-03-26 16:08:10 -05:00
parent 01e9780bb8
commit a67b9c48c2
2 changed files with 41 additions and 14 deletions

View file

@ -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)