Let the novel selector replace the novel tree label
This commit is contained in:
@@ -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
|
||||||
|
|
||||||
##
|
##
|
||||||
|
|||||||
@@ -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):
|
||||||
|
|||||||
@@ -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):
|
||||||
|
|||||||
Reference in New Issue
Block a user