77 lines
2.3 KiB
Python
77 lines
2.3 KiB
Python
from PySide6.QtCore import Qt
|
|
from PySide6.QtGui import QAction, QKeySequence
|
|
from PySide6.QtWidgets import (
|
|
QMainWindow,
|
|
QSplitter,
|
|
QStatusBar,
|
|
QToolBar,
|
|
QVBoxLayout,
|
|
QWidget
|
|
)
|
|
|
|
from .settings import get_settings
|
|
|
|
from trovedb import trove as tr
|
|
|
|
from .note_browser import NoteBrowser
|
|
from .note_tool_stack import NoteToolStack
|
|
|
|
class TroveMainWindow(QMainWindow):
|
|
def __init__(self, trove: tr.Trove):
|
|
super().__init__()
|
|
self.setWindowTitle("Trove")
|
|
|
|
# ── Toolbar ──
|
|
# toolbar = QToolBar("Main")
|
|
# toolbar.setObjectName("maintoolbar")
|
|
# toolbar.setMovable(False)
|
|
# self.addToolBar(toolbar)
|
|
#
|
|
# new_action = QAction("New", self)
|
|
# new_action.setShortcut(QKeySequence.StandardKey.New)
|
|
# toolbar.addAction(new_action)
|
|
#
|
|
# save_action = QAction("Save", self)
|
|
# save_action.setShortcut(QKeySequence.StandardKey.Save)
|
|
# toolbar.addAction(save_action)
|
|
#
|
|
# toolbar.addSeparator()
|
|
|
|
# ── Central layout ──
|
|
central = QWidget()
|
|
self.setCentralWidget(central)
|
|
layout = QVBoxLayout(central)
|
|
layout.setContentsMargins(0, 0, 0, 0)
|
|
layout.setSpacing(0)
|
|
|
|
# Horizontal splitter: tree | editor
|
|
self._splitter = QSplitter(Qt.Orientation.Horizontal)
|
|
|
|
self._note_browser = NoteBrowser(trove)
|
|
self._splitter.addWidget(self._note_browser)
|
|
|
|
self._tool_stack = NoteToolStack()
|
|
self._splitter.addWidget(self._tool_stack)
|
|
|
|
layout.addWidget(self._splitter, stretch=1)
|
|
|
|
self._note_browser.activeNoteChanged.connect(self._tool_stack.onNoteSelected)
|
|
|
|
# ── Status bar ──
|
|
self.setStatusBar(QStatusBar())
|
|
self.statusBar().showMessage("Ready")
|
|
|
|
def closeEvent(self, event):
|
|
settings = get_settings()
|
|
settings.setValue("window/geometry", self.saveGeometry())
|
|
settings.setValue("window/state", self.saveState())
|
|
super().closeEvent(event)
|
|
|
|
def restore_settings(self):
|
|
settings = get_settings()
|
|
geometry = settings.value("window/geometry")
|
|
state = settings.value("window/state")
|
|
if geometry:
|
|
self.restoreGeometry(geometry)
|
|
if state:
|
|
self.restoreState(state)
|