Let the novel selector replace the novel tree label

This commit is contained in:
Veronica Berglyd Olsen
2022-11-18 02:01:55 +01:00
parent 5c7c820fef
commit 039b2095f0
3 changed files with 35 additions and 19 deletions
+18 -4
View File
@@ -67,19 +67,33 @@ class NovelSelector(QComboBox):
self._blockSignal = False self._blockSignal = False
return return
def updateList(self): def updateList(self, includeAll=False, prefix=None):
"""Rebuild the list of novel items. """Rebuild the list of novel items.
""" """
self._blockSignal = True self._blockSignal = True
self.clear() self.clear()
icon = self._theme.getIcon(nwLabels.CLASS_ICON[nwItemClass.NOVEL]) icon = self._theme.getIcon(nwLabels.CLASS_ICON[nwItemClass.NOVEL])
handle = self.currentData() handle = self.currentData()
for tHandle, nwItem in self._project.tree.iterRoots(nwItemClass.NOVEL): for tHandle, nwItem in self._project.tree.iterRoots(nwItemClass.NOVEL):
self.addItem(icon, nwItem.itemName, tHandle) if prefix:
self.insertSeparator(self.count()) name = prefix.format(nwItem.itemName)
self.addItem(icon, self.tr("All Novel Folders"), "") self.addItem(name, tHandle)
else:
name = nwItem.itemName
self.addItem(icon, nwItem.itemName, tHandle)
if includeAll:
self.insertSeparator(self.count())
if prefix:
self.addItem(prefix.format(self.tr("All Novel Folders")), "")
else:
self.addItem(icon, self.tr("All Novel Folders"), "")
self.setHandle(handle) self.setHandle(handle)
self.setEnabled(self.count() > 1)
self._blockSignal = False self._blockSignal = False
return return
## ##
+15 -13
View File
@@ -31,11 +31,11 @@ import novelwriter
from enum import Enum from enum import Enum
from time import time from time import time
from PyQt5.QtGui import QPalette from PyQt5.QtGui import QFont, QPalette
from PyQt5.QtCore import Qt, QSize, pyqtSlot, pyqtSignal from PyQt5.QtCore import Qt, QSize, pyqtSlot, pyqtSignal
from PyQt5.QtWidgets import ( from PyQt5.QtWidgets import (
QAbstractItemView, QActionGroup, QFrame, QHBoxLayout, QHeaderView, QLabel, QAbstractItemView, QActionGroup, QFrame, QHBoxLayout, QHeaderView, QMenu,
QMenu, QSizePolicy, QToolButton, QToolTip, QTreeWidget, QTreeWidgetItem, QSizePolicy, QToolButton, QToolTip, QTreeWidget, QTreeWidgetItem,
QVBoxLayout, QWidget QVBoxLayout, QWidget
) )
@@ -200,17 +200,15 @@ class GuiNovelToolBar(QWidget):
self.setContentsMargins(0, 0, 0, 0) self.setContentsMargins(0, 0, 0, 0)
self.setAutoFillBackground(True) self.setAutoFillBackground(True)
# Widget Label
self.viewLabel = QLabel("<b>%s</b>" % self.tr("Novel Outline"))
self.viewLabel.setContentsMargins(0, 0, 0, 0)
self.viewLabel.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
# Novel Selector # Novel Selector
selFont = self.font() selFont = self.font()
selFont.setPointSize(int(0.9 * selFont.pointSize())) selFont.setWeight(QFont.Bold)
self.novelPrefix = self.tr("Outline of {0}")
self.novelValue = NovelSelector(self, self.theProject, self.mainTheme) self.novelValue = NovelSelector(self, self.theProject, self.mainTheme)
self.novelValue.setMinimumWidth(self.mainConf.pxInt(150))
self.novelValue.setFont(selFont) self.novelValue.setFont(selFont)
self.novelValue.setMinimumWidth(self.mainConf.pxInt(150))
self.novelValue.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
self.novelValue.setToolTip(self.tr("Click to change root folder"))
self.novelValue.novelSelectionChanged.connect(self.setCurrentRoot) self.novelValue.novelSelectionChanged.connect(self.setCurrentRoot)
# Refresh Button # Refresh Button
@@ -238,7 +236,6 @@ class GuiNovelToolBar(QWidget):
# Assemble # Assemble
self.outerBox = QHBoxLayout() self.outerBox = QHBoxLayout()
self.outerBox.addWidget(self.viewLabel)
self.outerBox.addWidget(self.novelValue) self.outerBox.addWidget(self.novelValue)
self.outerBox.addWidget(self.tbRefresh) self.outerBox.addWidget(self.tbRefresh)
self.outerBox.addWidget(self.tbMore) self.outerBox.addWidget(self.tbMore)
@@ -275,10 +272,15 @@ class GuiNovelToolBar(QWidget):
"QToolButton:hover {{border: none; background: rgba({1},{2},{3},0.2);}}" "QToolButton:hover {{border: none; background: rgba({1},{2},{3},0.2);}}"
).format(self.mainConf.pxInt(2), fadeCol.red(), fadeCol.green(), fadeCol.blue()) ).format(self.mainConf.pxInt(2), fadeCol.red(), fadeCol.green(), fadeCol.blue())
self.novelValue.updateList()
self.tbRefresh.setStyleSheet(buttonStyle) self.tbRefresh.setStyleSheet(buttonStyle)
self.tbMore.setStyleSheet(buttonStyle) self.tbMore.setStyleSheet(buttonStyle)
self.novelValue.setStyleSheet(
"QComboBox {border-style: none; padding-left: 0;} "
"QComboBox::drop-down {border-style: none}"
)
self.novelValue.updateList(prefix=self.novelPrefix)
return return
def clearContent(self): def clearContent(self):
@@ -290,7 +292,7 @@ class GuiNovelToolBar(QWidget):
def buildNovelRootMenu(self): def buildNovelRootMenu(self):
"""Build the novel root menu. """Build the novel root menu.
""" """
self.novelValue.updateList() self.novelValue.updateList(prefix=self.novelPrefix)
return return
def setCurrentRoot(self, rootHandle): def setCurrentRoot(self, rootHandle):
+2 -2
View File
@@ -275,7 +275,7 @@ class GuiOutlineToolBar(QToolBar):
""" """
self.setStyleSheet("QToolBar {border: 0px;}") self.setStyleSheet("QToolBar {border: 0px;}")
self.novelValue.updateList() self.novelValue.updateList(includeAll=True)
self.aRefresh.setIcon(self.mainTheme.getIcon("refresh")) self.aRefresh.setIcon(self.mainTheme.getIcon("refresh"))
self.tbColumns.setIcon(self.mainTheme.getIcon("menu")) self.tbColumns.setIcon(self.mainTheme.getIcon("menu"))
@@ -284,7 +284,7 @@ class GuiOutlineToolBar(QToolBar):
def populateNovelList(self): def populateNovelList(self):
"""Relaod the content of the novel list. """Relaod the content of the novel list.
""" """
self.novelValue.updateList() self.novelValue.updateList(includeAll=True)
return return
def setCurrentRoot(self, rootHandle): def setCurrentRoot(self, rootHandle):