from PySide6.QtCore import Qt from PySide6.QtGui import QAction, QKeySequence from PySide6.QtWidgets import ( QLabel, QMainWindow, QSplitter, QStatusBar, QToolBar, QVBoxLayout, QWidget ) from .settings import get_settings from trovedb import trove as tr from .note_browser import NoteBrowser 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 splitter = QSplitter(Qt.Orientation.Horizontal) self._note_browser = NoteBrowser(trove) splitter.addWidget(self._note_browser) self._tool = QLabel("View/Edit Tool") splitter.addWidget(self._tool) layout.addWidget(splitter, stretch=1) # ── 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)