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)