Let the novel selector replace the novel tree label
This commit is contained in:
@@ -67,19 +67,33 @@ class NovelSelector(QComboBox):
|
||||
self._blockSignal = False
|
||||
return
|
||||
|
||||
def updateList(self):
|
||||
def updateList(self, includeAll=False, prefix=None):
|
||||
"""Rebuild the list of novel items.
|
||||
"""
|
||||
self._blockSignal = True
|
||||
self.clear()
|
||||
|
||||
icon = self._theme.getIcon(nwLabels.CLASS_ICON[nwItemClass.NOVEL])
|
||||
handle = self.currentData()
|
||||
for tHandle, nwItem in self._project.tree.iterRoots(nwItemClass.NOVEL):
|
||||
self.addItem(icon, nwItem.itemName, tHandle)
|
||||
self.insertSeparator(self.count())
|
||||
self.addItem(icon, self.tr("All Novel Folders"), "")
|
||||
if prefix:
|
||||
name = prefix.format(nwItem.itemName)
|
||||
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.setEnabled(self.count() > 1)
|
||||
self._blockSignal = False
|
||||
|
||||
return
|
||||
|
||||
##
|
||||
|
||||
@@ -31,11 +31,11 @@ import novelwriter
|
||||
from enum import Enum
|
||||
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.QtWidgets import (
|
||||
QAbstractItemView, QActionGroup, QFrame, QHBoxLayout, QHeaderView, QLabel,
|
||||
QMenu, QSizePolicy, QToolButton, QToolTip, QTreeWidget, QTreeWidgetItem,
|
||||
QAbstractItemView, QActionGroup, QFrame, QHBoxLayout, QHeaderView, QMenu,
|
||||
QSizePolicy, QToolButton, QToolTip, QTreeWidget, QTreeWidgetItem,
|
||||
QVBoxLayout, QWidget
|
||||
)
|
||||
|
||||
@@ -200,17 +200,15 @@ class GuiNovelToolBar(QWidget):
|
||||
self.setContentsMargins(0, 0, 0, 0)
|
||||
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
|
||||
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.setMinimumWidth(self.mainConf.pxInt(150))
|
||||
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)
|
||||
|
||||
# Refresh Button
|
||||
@@ -238,7 +236,6 @@ class GuiNovelToolBar(QWidget):
|
||||
|
||||
# Assemble
|
||||
self.outerBox = QHBoxLayout()
|
||||
self.outerBox.addWidget(self.viewLabel)
|
||||
self.outerBox.addWidget(self.novelValue)
|
||||
self.outerBox.addWidget(self.tbRefresh)
|
||||
self.outerBox.addWidget(self.tbMore)
|
||||
@@ -275,10 +272,15 @@ class GuiNovelToolBar(QWidget):
|
||||
"QToolButton:hover {{border: none; background: rgba({1},{2},{3},0.2);}}"
|
||||
).format(self.mainConf.pxInt(2), fadeCol.red(), fadeCol.green(), fadeCol.blue())
|
||||
|
||||
self.novelValue.updateList()
|
||||
self.tbRefresh.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
|
||||
|
||||
def clearContent(self):
|
||||
@@ -290,7 +292,7 @@ class GuiNovelToolBar(QWidget):
|
||||
def buildNovelRootMenu(self):
|
||||
"""Build the novel root menu.
|
||||
"""
|
||||
self.novelValue.updateList()
|
||||
self.novelValue.updateList(prefix=self.novelPrefix)
|
||||
return
|
||||
|
||||
def setCurrentRoot(self, rootHandle):
|
||||
|
||||
@@ -275,7 +275,7 @@ class GuiOutlineToolBar(QToolBar):
|
||||
"""
|
||||
self.setStyleSheet("QToolBar {border: 0px;}")
|
||||
|
||||
self.novelValue.updateList()
|
||||
self.novelValue.updateList(includeAll=True)
|
||||
self.aRefresh.setIcon(self.mainTheme.getIcon("refresh"))
|
||||
self.tbColumns.setIcon(self.mainTheme.getIcon("menu"))
|
||||
|
||||
@@ -284,7 +284,7 @@ class GuiOutlineToolBar(QToolBar):
|
||||
def populateNovelList(self):
|
||||
"""Relaod the content of the novel list.
|
||||
"""
|
||||
self.novelValue.updateList()
|
||||
self.novelValue.updateList(includeAll=True)
|
||||
return
|
||||
|
||||
def setCurrentRoot(self, rootHandle):
|
||||
|
||||
Reference in New Issue
Block a user