Add trove auto save function
This commit is contained in:
parent
01e9780bb8
commit
a67b9c48c2
2 changed files with 41 additions and 14 deletions
|
|
@ -22,20 +22,20 @@ class TroveMainWindow(QMainWindow):
|
||||||
self.setWindowTitle("Trove")
|
self.setWindowTitle("Trove")
|
||||||
|
|
||||||
# ── Toolbar ──
|
# ── Toolbar ──
|
||||||
toolbar = QToolBar("Main")
|
# toolbar = QToolBar("Main")
|
||||||
toolbar.setObjectName("maintoolbar")
|
# toolbar.setObjectName("maintoolbar")
|
||||||
toolbar.setMovable(False)
|
# toolbar.setMovable(False)
|
||||||
self.addToolBar(toolbar)
|
# self.addToolBar(toolbar)
|
||||||
|
#
|
||||||
new_action = QAction("New", self)
|
# new_action = QAction("New", self)
|
||||||
new_action.setShortcut(QKeySequence.StandardKey.New)
|
# new_action.setShortcut(QKeySequence.StandardKey.New)
|
||||||
toolbar.addAction(new_action)
|
# toolbar.addAction(new_action)
|
||||||
|
#
|
||||||
save_action = QAction("Save", self)
|
# save_action = QAction("Save", self)
|
||||||
save_action.setShortcut(QKeySequence.StandardKey.Save)
|
# save_action.setShortcut(QKeySequence.StandardKey.Save)
|
||||||
toolbar.addAction(save_action)
|
# toolbar.addAction(save_action)
|
||||||
|
#
|
||||||
toolbar.addSeparator()
|
# toolbar.addSeparator()
|
||||||
|
|
||||||
# ── Central layout ──
|
# ── Central layout ──
|
||||||
central = QWidget()
|
central = QWidget()
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
"""Tool Supporting Basic Editor Functions"""
|
"""Tool Supporting Basic Editor Functions"""
|
||||||
from typing import cast, Protocol
|
from typing import cast, Protocol
|
||||||
|
from PySide6.QtCore import QTimer
|
||||||
from PySide6.QtWidgets import QTextEdit, QVBoxLayout
|
from PySide6.QtWidgets import QTextEdit, QVBoxLayout
|
||||||
|
|
||||||
import trovedb.trove as tr
|
import trovedb.trove as tr
|
||||||
|
|
@ -16,7 +17,33 @@ class ToolBasicEditor(Tool):
|
||||||
|
|
||||||
self._text_edit = QTextEdit()
|
self._text_edit = QTextEdit()
|
||||||
layout.addWidget(self._text_edit)
|
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()
|
self.refresh()
|
||||||
|
|
||||||
def refresh(self):
|
def refresh(self):
|
||||||
self._text_edit.setPlainText(self.note.read_content().decode("utf-8"))
|
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