Add splitter to filter page and save to options

This commit is contained in:
Veronica Berglyd Olsen
2023-05-13 17:59:43 +02:00
parent a9d5974346
commit 50f653fefb
2 changed files with 73 additions and 4 deletions
+3
View File
@@ -60,6 +60,9 @@ VALID_MAP = {
}, },
"GuiWordList": {"winWidth", "winHeight"}, "GuiWordList": {"winWidth", "winHeight"},
"GuiNovelView": {"lastCol", "lastColSize"}, "GuiNovelView": {"lastCol", "lastColSize"},
"GuiBuildManuscript": {
"winWidth", "winHeight", "treeWidth", "filterWidth"
},
} }
+70 -4
View File
@@ -31,7 +31,8 @@ from PyQt5.QtGui import QIcon
from PyQt5.QtCore import QSize, Qt, pyqtSlot from PyQt5.QtCore import QSize, Qt, pyqtSlot
from PyQt5.QtWidgets import ( from PyQt5.QtWidgets import (
QAbstractItemView, QDialog, QHBoxLayout, QHeaderView, QPushButton, QAbstractItemView, QDialog, QHBoxLayout, QHeaderView, QPushButton,
QStackedWidget, QTreeWidget, QTreeWidgetItem, QVBoxLayout, QWidget QSplitter, QStackedWidget, QTreeWidget, QTreeWidgetItem, QVBoxLayout,
QWidget
) )
from novelwriter.core.buildsettings import BuildSettings, FilterMode from novelwriter.core.buildsettings import BuildSettings, FilterMode
@@ -67,10 +68,18 @@ class GuiBuildManuscript(QDialog):
self.setWindowTitle(self.tr("Build Manuscript")) self.setWindowTitle(self.tr("Build Manuscript"))
self.setMinimumWidth(self.mainConf.pxInt(700)) self.setMinimumWidth(self.mainConf.pxInt(700))
self.setMinimumHeight(self.mainConf.pxInt(600)) self.setMinimumHeight(self.mainConf.pxInt(400))
# Style # Style
mPx = self.mainConf.pxInt(150) mPx = self.mainConf.pxInt(150)
wWin = self.mainConf.pxInt(900)
hWin = self.mainConf.pxInt(600)
pOptions = self.theProject.options
self.resize(
self.mainConf.pxInt(pOptions.getInt("GuiBuildManuscript", "winWidth", wWin)),
self.mainConf.pxInt(pOptions.getInt("GuiBuildManuscript", "winHeight", hWin))
)
# Options SideBar # Options SideBar
# =============== # ===============
@@ -159,6 +168,40 @@ class GuiBuildManuscript(QDialog):
self.toolStack.setCurrentWidget(self.buildTabODT) self.toolStack.setCurrentWidget(self.buildTabODT)
return return
##
# Events
##
def closeEvent(self, event):
"""Capture the user closing the window so we can save settings.
"""
self._saveSettings()
event.accept()
return
##
# Internal Functions
##
def _saveSettings(self):
"""Save the various user settings.
"""
logger.debug("Saving GuiBuildManuscript settings")
winWidth = self.mainConf.rpxInt(self.width())
winHeight = self.mainConf.rpxInt(self.height())
treeWidth, filterWidth = self.optTabSelect.mainSplitSizes()
pOptions = self.theProject.options
pOptions.setValue("GuiBuildManuscript", "winWidth", winWidth)
pOptions.setValue("GuiBuildManuscript", "winHeight", winHeight)
pOptions.setValue("GuiBuildManuscript", "treeWidth", treeWidth)
pOptions.setValue("GuiBuildManuscript", "filterWidth", filterWidth)
pOptions.saveSettings()
return
# END Class GuiBuildManuscript # END Class GuiBuildManuscript
@@ -250,18 +293,41 @@ class GuiBuildFilterTab(QWidget):
self.filterOpt.switchToggled.connect(self._applyFilterSwitch) self.filterOpt.switchToggled.connect(self._applyFilterSwitch)
# Assemble # Assemble
# ========
pOptions = self.theProject.options
wTree = self.mainConf.pxInt(pOptions.getInt("GuiBuildManuscript", "treeWidth", 0))
fTree = self.mainConf.pxInt(pOptions.getInt("GuiBuildManuscript", "filterWidth", 0))
self.selectionBox = QVBoxLayout() self.selectionBox = QVBoxLayout()
self.selectionBox.addLayout(self.modeBox) self.selectionBox.addLayout(self.modeBox)
self.selectionBox.addWidget(self.filterOpt) self.selectionBox.addWidget(self.filterOpt)
self.selectionBox.setContentsMargins(0, 0, 0, 0)
self.selectionWidget = QWidget()
self.selectionWidget.setLayout(self.selectionBox)
self.mainSplit = QSplitter()
self.mainSplit.addWidget(self.optTree)
self.mainSplit.addWidget(self.selectionWidget)
if wTree > 0:
self.mainSplit.setSizes([wTree, fTree])
self.outerBox = QHBoxLayout() self.outerBox = QHBoxLayout()
self.outerBox.addWidget(self.optTree) self.outerBox.addWidget(self.mainSplit)
self.outerBox.addLayout(self.selectionBox)
self.setLayout(self.outerBox) self.setLayout(self.outerBox)
return return
def mainSplitSizes(self):
"""Extract the sizes of the main splitter.
"""
sizes = self.mainSplit.sizes()
if len(sizes) < 2:
return 0, 0
return sizes[0], sizes[1]
def populateTree(self): def populateTree(self):
"""Build the tree of project items. """Build the tree of project items.
""" """